From bf604774c0f09897865c1b1bf58ede18db32e298 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 23 Jan 2025 16:10:01 -0500 Subject: [PATCH 001/157] [WIP] Multiple Profile Handlers --- .../command/profile/CommandHelpProfile.java | 70 +++++++ .../command/profile/CommandProfile.java | 140 ++++++++++++++ .../command/profile/CommandProfileBase.java | 148 +++++++++++++++ .../controllers/ProfileController.java | 179 ++++++++++++++++++ .../kamkeel/controllers/data/CNPCData.java | 38 ++++ .../controllers/data/IProfileData.java | 29 +++ .../kamkeel/controllers/data/Profile.java | 64 +++++++ .../java/kamkeel/controllers/data/Slot.java | 72 +++++++ src/main/java/noppes/npcs/CustomNpcs.java | 7 + .../noppes/npcs/ScriptPlayerEventHandler.java | 1 + .../java/noppes/npcs/ServerTickHandler.java | 2 + 11 files changed, 750 insertions(+) create mode 100644 src/main/java/kamkeel/command/profile/CommandHelpProfile.java create mode 100644 src/main/java/kamkeel/command/profile/CommandProfile.java create mode 100644 src/main/java/kamkeel/command/profile/CommandProfileBase.java create mode 100644 src/main/java/kamkeel/controllers/ProfileController.java create mode 100644 src/main/java/kamkeel/controllers/data/CNPCData.java create mode 100644 src/main/java/kamkeel/controllers/data/IProfileData.java create mode 100644 src/main/java/kamkeel/controllers/data/Profile.java create mode 100644 src/main/java/kamkeel/controllers/data/Slot.java diff --git a/src/main/java/kamkeel/command/profile/CommandHelpProfile.java b/src/main/java/kamkeel/command/profile/CommandHelpProfile.java new file mode 100644 index 000000000..fe228dfa1 --- /dev/null +++ b/src/main/java/kamkeel/command/profile/CommandHelpProfile.java @@ -0,0 +1,70 @@ +package kamkeel.command.profile; + +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.ChatComponentTranslation; + +import java.lang.reflect.Method; +import java.util.Map.Entry; + +public class CommandHelpProfile extends CommandProfileBase { + private CommandProfile parent; + + public CommandHelpProfile(CommandProfile parent){ + this.parent = parent; + } + + @Override + public String getCommandName() { + return "help"; + } + + @Override + public String getDescription() { + return "help [command]"; + } + + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if(args.length == 0){ + sendMessage(sender, "\u00A78------ \u00A7aProfile Commands \u00A78------"); + for(Entry entry : parent.map.entrySet()){ + sendMessage(sender, "\u00A77> " + "\u00A7e" + entry.getKey() + "\u00A78: \u00A77" + entry.getValue().getCommandUsage(sender)); + } + return; + } + + CommandProfileBase command = parent.getCommand(args); + if(command == null){ + sendError(sender, "Unknown command " + args[0]); + return; + } + + if(command.subcommands.isEmpty()){ + sender.addChatMessage(new ChatComponentTranslation(command.getCommandUsage(sender))); + return; + } + + Method m = null; + if(args.length > 1){ + m = command.subcommands.get(args[1].toLowerCase()); + } + if(m == null){ + sendMessage(sender, "\u00A78------ \u00A7a" + command.getCommandName().toUpperCase() + " SubCommands \u00A78------"); + sendMessage(sender, "\u00A77Usage: \u00A76" + command.getUsage()); + for(Entry entry : command.subcommands.entrySet()){ + sender.addChatMessage(new ChatComponentTranslation("\u00A77> " + "\u00A7e" + entry.getKey() + "\u00A78: \u00A77" + entry.getValue().getAnnotation(SubCommand.class).desc())); + } + sender.addChatMessage(new ChatComponentTranslation("\u00A78Permission:\u00A77 " + CommandProfile.getCommandPermission(command.getCommandName()))); + } + else{ + sendMessage(sender, "\u00A78------ \u00A7b" + command.getCommandName().toUpperCase() + "." + args[1].toUpperCase() + " Command \u00A78------"); + SubCommand sc = m.getAnnotation(SubCommand.class); + sender.addChatMessage(new ChatComponentTranslation("\u00A77" + sc.desc())); + if(!sc.usage().isEmpty()) + sender.addChatMessage(new ChatComponentTranslation("\u00A77Usage: \u00A76" + sc.usage())); + sender.addChatMessage(new ChatComponentTranslation("\u00A78Permission:\u00A77 " + getSubCommandPermission(args[1]))); + } + } +} diff --git a/src/main/java/kamkeel/command/profile/CommandProfile.java b/src/main/java/kamkeel/command/profile/CommandProfile.java new file mode 100644 index 000000000..0d0076f16 --- /dev/null +++ b/src/main/java/kamkeel/command/profile/CommandProfile.java @@ -0,0 +1,140 @@ +package kamkeel.command.profile; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.server.MinecraftServer; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.scripted.CustomNPCsException; + +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class CommandProfile extends CommandBase { + + public Map map = new HashMap(); + public CommandHelpProfile help = new CommandHelpProfile(this); + public String[] alias = {"profile"}; + + public CommandProfile(){ + registerCommand(help); + } + + public void registerCommand(CommandProfileBase command){ + String name = command.getCommandName().toLowerCase(); + if(map.containsKey(name)) + throw new CustomNPCsException("Already a subcommand with the name: " + name); + map.put(name, command); + } + + @Override + public String getCommandName() { + return "profile"; + } + + @Override + public List getCommandAliases() + { + return Arrays.asList(alias); + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "Use as /profile subcommand"; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if(args.length == 0){ + help.processCommand(sender, args); + return; + } + + CommandProfileBase command = getCommand(args); + if(command == null) + throw new CommandException("Unknown command " + args[0]); + + args = Arrays.copyOfRange(args, 1, args.length); + if(command.subcommands.isEmpty() || !command.runSubCommands()){ + if(!canSendCommand(sender, command)) + throw new CommandException("You are not allowed to use this command: " + command); + command.canRun(sender, command.getUsage(), args); + command.processCommand(sender, args); + return; + } + + if(args.length == 0){ + help.processCommand(sender, new String[]{command.getCommandName()}); + return; + } + + command.processSubCommand(sender, args[0], Arrays.copyOfRange(args, 1, args.length)); + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args){ + if(args.length == 1) + return CommandBase.getListOfStringsMatchingLastWord(args, map.keySet().toArray(new String[map.size()])); + CommandProfileBase command = getCommand(args); + if(command == null) + return null; + if(args.length == 2 && command.runSubCommands()) + return CommandBase.getListOfStringsMatchingLastWord(args, command.subcommands.keySet().toArray(new String[command.subcommands.keySet().size()])); + String[] useArgs = command.getUsage().split(" "); + if(command.runSubCommands()) { + Method m = command.subcommands.get(args[1].toLowerCase()); + if(m != null) { + useArgs = m.getAnnotation(CommandProfileBase.SubCommand.class).usage().split(" "); + } + } + if(args.length <= useArgs.length + 2) { + if(args.length - 3 >= 0){ + String usage = useArgs[args.length - 3]; + if(usage.equals("") || usage.equals("[player]")) { + return CommandBase.getListOfStringsMatchingLastWord(args, MinecraftServer.getServer().getAllUsernames()); + } + } + } + return command.addTabCompletionOptions(sender, Arrays.copyOfRange(args, 1, args.length)); + } + + public CommandProfileBase getCommand(String[] args){ + if(args.length == 0) + return null; + return map.get(args[0].toLowerCase()); + } + + @Override + public int getRequiredPermissionLevel(){ + return 0; + } + + public static String getCommandPermission(String command){ + return "profile.kamkeel." + command.toLowerCase(); + } + + public static String getUniversalPermission(){ + return "profile.kamkeel.*"; + } + + public static boolean canSendCommand(ICommandSender sender, CommandProfileBase command){ + if(sender.canCommandSenderUseCommand(command.getRequiredPermissionLevel(), getUniversalPermission())){ + return true; + } + + if(sender.canCommandSenderUseCommand(command.getRequiredPermissionLevel(), getCommandPermission(command.getCommandName()))){ + return true; + } + + if(sender instanceof EntityPlayer){ + return CustomNpcsPermissions.hasCustomPermission((EntityPlayer) sender, getCommandPermission(command.getCommandName())); + } + + return false; + } +} + diff --git a/src/main/java/kamkeel/command/profile/CommandProfileBase.java b/src/main/java/kamkeel/command/profile/CommandProfileBase.java new file mode 100644 index 000000000..270c2db73 --- /dev/null +++ b/src/main/java/kamkeel/command/profile/CommandProfileBase.java @@ -0,0 +1,148 @@ +package kamkeel.command.profile; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentTranslation; +import noppes.npcs.CustomNpcsPermissions; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public abstract class CommandProfileBase extends CommandBase{ + public Map subcommands = new HashMap(); + + public CommandProfileBase(){ + for (Method m : this.getClass().getDeclaredMethods()) { + SubCommand sc = m.getAnnotation(SubCommand.class); + if (sc != null) { + String name = sc.name(); + if (name.equals("")) + name = m.getName(); + subcommands.put(name.toLowerCase(), m); + } + } + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return getDescription(); + } + + public abstract String getDescription(); + + /** + * @return Should return a string in the format of [arg4] where <> is a required parameter and [] optional + */ + public String getUsage(){ + return ""; + } + + public boolean runSubCommands(){ + return !subcommands.isEmpty(); + } + + protected static void sendMessage(ICommandSender sender, String message, Object... obs) { + sender.addChatMessage(new ChatComponentTranslation(message, obs)); + } + + protected static void sendResult(ICommandSender sender, String message, Object... obs) { + sender.addChatMessage(new ChatComponentTranslation("\u00A76[\u00A7eCNPC+\u00A76]\u00A77 " + message, obs)); + } + + protected static void sendError(ICommandSender sender, String message, Object... obs) { + sender.addChatMessage(new ChatComponentTranslation("\u00A76[\u00A7eCNPC+\u00A76]\u00A74 Error:\u00A7c " + message, obs)); + } + + @Retention(value = RetentionPolicy.RUNTIME) + @Target(ElementType.METHOD) + public @interface SubCommand { + + String name() default ""; + + /** + * @return Should return a string in the format of [arg4] where <> is a required parameter and [] optional + */ + String usage() default ""; + + String desc(); + + int permission() default 2; + } + + public void processSubCommand(ICommandSender sender, String command, String[] args) throws CommandException { + Method m = subcommands.get(command.toLowerCase()); + if(m == null) + throw new CommandException("Unknown subcommand " + command); + + SubCommand sc = m.getAnnotation(SubCommand.class); + if(!canSendCommand(sender, sc, command)) + throw new CommandException("You are not allowed to use this command: " + command); + + canRun(sender, sc.usage(), args); + try { + m.invoke(this, sender, args); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void canRun(ICommandSender sender, String usage, String[] args) throws CommandException{ + String[] np = usage.split(" "); + List required = new ArrayList(); + for(int i = 0; i < np.length; i++){ + String command = np[i]; + if(command.startsWith("<")){ + required.add(command); + } + if(command.equals("") && args.length > i){ + CommandBase.getPlayer(sender, args[i]); //throws PlayerNotFoundException if no player is found + } + + } + if (args.length < required.size()) { + throw new CommandException("Missing parameter: " + required.get(args.length)); + } + } + + public int getRequiredPermissionLevel(){ + return 2; + } + + public String getSubCommandPermission(String subCommand){ + return "cnpc.kamkeel." + getCommandName().toLowerCase() + "." + subCommand.toLowerCase(); + } + + public String getSubUniversalPermission(){ + return "cnpc.kamkeel." + getCommandName().toLowerCase() + "*"; + } + + public boolean canSendCommand(ICommandSender sender, SubCommand command, String subCommand){ + if(sender.canCommandSenderUseCommand(command.permission(), getSubUniversalPermission())){ + return true; + } + + if(sender.canCommandSenderUseCommand(command.permission(), getSubCommandPermission(subCommand))){ + return true; + } + + if(sender instanceof EntityPlayer){ + return CustomNpcsPermissions.hasCustomPermission((EntityPlayer) sender, getSubCommandPermission(subCommand)); + } + + return false; + } +} diff --git a/src/main/java/kamkeel/controllers/ProfileController.java b/src/main/java/kamkeel/controllers/ProfileController.java new file mode 100644 index 000000000..6fbb874e1 --- /dev/null +++ b/src/main/java/kamkeel/controllers/ProfileController.java @@ -0,0 +1,179 @@ +package kamkeel.controllers; + +import kamkeel.controllers.data.IProfileData; +import kamkeel.controllers.data.Profile; +import kamkeel.controllers.data.Slot; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; +import noppes.npcs.LogWriter; +import noppes.npcs.util.CustomNPCsThreader; +import noppes.npcs.util.NBTJsonUtil; + +import java.io.File; +import java.io.FileOutputStream; +import java.util.HashMap; +import java.util.UUID; + +public class ProfileController { + + public static HashMap profileTypes; + public static HashMap activeProfiles; + + public static String profile_directory = "profiles"; + + public ProfileController(){ + profileTypes = new HashMap<>(); + activeProfiles = new HashMap<>(); + } + + /** + * Register during ServerStartEvent() + * + * @param type - IProfile Type to always Save/Load + * @return true/false if profile was successfully added + */ + public static boolean registerProfileType(IProfileData type){ + if(profileTypes.containsKey(type.getTagName())) + return false; + + profileTypes.put(type.getTagName(), type); + return true; + } + + public static File getProfileDir(){ + try{ + File file = new File(CustomNpcs.getWorldSaveDirectory(), profile_directory); + if(!file.exists()) + file.mkdir(); + return file; + } + catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static synchronized void login(EntityPlayer player){ + if(player == null) + return; + + Profile profile; + if(activeProfiles.containsKey(player.getUniqueID())){ + profile = activeProfiles.get(player.getUniqueID()); + profile.player = player; + } else { + NBTTagCompound profileCompound = load(player); + profile = new Profile(player, profileCompound); + activeProfiles.put(player.getUniqueID(), profile); + } + } + + public static synchronized NBTTagCompound load(EntityPlayer player) { + File saveDir = getProfileDir(); + String filename = player.getUniqueID().toString(); + filename += ".dat"; + try { + File file = new File(saveDir, filename); + if(file.exists()){ + return NBTJsonUtil.loadNBTData(file); + } + } catch (Exception e) { + LogWriter.error("Error loading profile file: " + filename, e); + } + return new NBTTagCompound(); + } + + public static synchronized void save(EntityPlayer player, Profile profile) { + CustomNPCsThreader.customNPCThread.execute(() -> { + final NBTTagCompound compound = profile.writeToNBT(); + final String filename = player.getUniqueID() + ".dat"; + try { + File saveDir = getProfileDir(); + File file = new File(saveDir, filename + "_new"); + File file1 = new File(saveDir, filename); + CompressedStreamTools.writeCompressed(compound, new FileOutputStream(file)); + if(file1.exists()){ + file1.delete(); + } + file.renameTo(file1); + } catch (Exception e) { + LogWriter.except(e); + } + }); + } + + public void changeSlot(EntityPlayer player, int slotNumber){ + if(!activeProfiles.containsKey(player.getUniqueID())) + return; + + Profile profile = activeProfiles.get(player.getUniqueID()); + if(profile.currentID == slotNumber) + return; + + // Saves Current Slot Data + saveSlotData(player); + + // Sets Player to New Slot + changePlayerSlot(player, slotNumber); + + // Save Slot File + save(player, profile); + } + + public void saveSlotData(EntityPlayer player){ + if(!activeProfiles.containsKey(player.getUniqueID())) + return; + + NBTTagCompound dataCompound; + Slot slot; + + Profile profile = activeProfiles.get(player.getUniqueID()); + if(!profile.slots.isEmpty() && profile.slots.containsKey(profile.currentID)){ + slot = profile.slots.get(profile.currentID); + dataCompound = (NBTTagCompound) slot.getCompound().copy(); + } else { + slot = new Slot(profile.currentID, "Slot 1"); + dataCompound = new NBTTagCompound(); + } + + for(IProfileData profileData : profileTypes.values()){ + NBTTagCompound cloned = (NBTTagCompound) profileData.getCurrentNBT(player).copy(); + dataCompound.setTag(profileData.getTagName(), cloned); + } + + slot.setCompound(dataCompound); + } + + public void changePlayerSlot(EntityPlayer player, int id){ + if(!activeProfiles.containsKey(player.getUniqueID())) + return; + + NBTTagCompound slotCompound; + Slot slot; + Profile profile = activeProfiles.get(player.getUniqueID()); + if(!profile.slots.isEmpty() && profile.slots.containsKey(id)){ + slot = profile.slots.get(id); + slotCompound = (NBTTagCompound) slot.getCompound().copy(); + } else { + slot = new Slot(id, "Slot " + id); + slot.setCompound(new NBTTagCompound()); + slotCompound = new NBTTagCompound(); + } + + slot.setLastLoaded(System.currentTimeMillis()); + profile.slots.put(id, slot); + + for(IProfileData profileData : profileTypes.values()){ + if(slotCompound.hasKey(profileData.getTagName())){ + profileData.setNBT(player, slotCompound.getCompoundTag(profileData.getTagName())); + } else { + profileData.setNBT(player, new NBTTagCompound()); + } + profileData.save(player); + } + + profile.currentID = id; + } +} diff --git a/src/main/java/kamkeel/controllers/data/CNPCData.java b/src/main/java/kamkeel/controllers/data/CNPCData.java new file mode 100644 index 000000000..12c820b3c --- /dev/null +++ b/src/main/java/kamkeel/controllers/data/CNPCData.java @@ -0,0 +1,38 @@ +package kamkeel.controllers.data; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.data.PlayerData; + +public class CNPCData implements IProfileData { + + @Override + public String getTagName() { + return "CustomNPC+"; + } + + @Override + public NBTTagCompound getCurrentNBT(EntityPlayer player) { + PlayerData customNPCData = PlayerData.get(player); + return customNPCData.getNBT(); + } + + @Override + public void save(EntityPlayer player) { + PlayerData customNPCData = PlayerData.get(player); + customNPCData.save(); + } + + @Override + public void setNBT(EntityPlayer player, NBTTagCompound replace) { + PlayerData customNPCData = PlayerData.get(player); + if(replace.hasNoTags()){ + PlayerData newData = new PlayerData(); + newData.player = player; + customNPCData.setNBT((NBTTagCompound) newData.getNBT().copy()); + } + else { + customNPCData.setNBT(replace); + } + } +} diff --git a/src/main/java/kamkeel/controllers/data/IProfileData.java b/src/main/java/kamkeel/controllers/data/IProfileData.java new file mode 100644 index 000000000..52653dc53 --- /dev/null +++ b/src/main/java/kamkeel/controllers/data/IProfileData.java @@ -0,0 +1,29 @@ +package kamkeel.controllers.data; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; + +public interface IProfileData { + + /** + * Do not use the tag: - Name, lastLoaded, ID + * + * @return The Save Tag utilized in the Profile + */ + public String getTagName(); + + /** + * @return NBTTagCompound of their Current Data for a given Entity Player + */ + public NBTTagCompound getCurrentNBT(EntityPlayer player); + + /** + * Called immediately after setNBT() Replaces existing NBT + */ + public void save(EntityPlayer player); + + /** + * Replaces their Current Data operation when changing Profiles + */ + public void setNBT(EntityPlayer player, NBTTagCompound replace); +} diff --git a/src/main/java/kamkeel/controllers/data/Profile.java b/src/main/java/kamkeel/controllers/data/Profile.java new file mode 100644 index 000000000..d812cef47 --- /dev/null +++ b/src/main/java/kamkeel/controllers/data/Profile.java @@ -0,0 +1,64 @@ +package kamkeel.controllers.data; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; + +import java.util.HashMap; +import java.util.Set; +import java.util.UUID; + +public class Profile { + + public EntityPlayer player; + public int currentID; + public HashMap slots = new HashMap<>(); + + private NBTTagCompound profileCompound; + + public Profile(EntityPlayer player, NBTTagCompound compound){ + this.player = player; + this.profileCompound = compound; + + if(compound.hasKey("CurrentID")){ + this.currentID = compound.getInteger("CurrentID"); + } else { + this.currentID = 1; + } + + if (compound.hasKey("Slots")) { + // Load Slots + NBTTagCompound slotsCompound = compound.getCompoundTag("Slots"); + for (String key : (Set) slotsCompound.func_150296_c()) { + int slotID = Integer.parseInt(key); + NBTTagCompound slotNBT = slotsCompound.getCompoundTag(key); + Slot slot = Slot.fromNBT(slotID, slotNBT); + slots.put(slotID, slot); + } + } + } + + public NBTTagCompound writeToNBT() { + NBTTagCompound fullCompound = new NBTTagCompound(); + + if(this.player != null) + fullCompound.setString("Name", player.getCommandSenderName()); + fullCompound.setInteger("CurrentID", currentID); + + if(!slots.isEmpty()){ + NBTTagCompound slotsCompound = new NBTTagCompound(); + for (HashMap.Entry entry : slots.entrySet()) { + int id = entry.getKey(); + Slot slot = entry.getValue(); + slot.setId(id); + + NBTTagCompound slotTag = slot.toNBT(); + slotsCompound.setTag(String.valueOf(id), slotTag); + } + + fullCompound.setTag("Slots", slotsCompound); + } + return fullCompound; + } +} diff --git a/src/main/java/kamkeel/controllers/data/Slot.java b/src/main/java/kamkeel/controllers/data/Slot.java new file mode 100644 index 000000000..592497f54 --- /dev/null +++ b/src/main/java/kamkeel/controllers/data/Slot.java @@ -0,0 +1,72 @@ +package kamkeel.controllers.data; + +import kamkeel.controllers.ProfileController; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; + +public class Slot { + + private int id; + private String name; + private long lastLoaded; + private NBTTagCompound compound; + + public Slot(int id, String name) { + this.id = id; + this.name = name; + } + + public Slot(int id, String name, NBTTagCompound compound, long last) { + this.id = id; + this.name = name; + this.compound = compound; + this.lastLoaded = last; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public long getLastLoaded() { + return lastLoaded; + } + + public void setLastLoaded(long lastLoaded) { + this.lastLoaded = lastLoaded; + } + + public NBTTagCompound getCompound() { + return compound; + } + + public void setCompound(NBTTagCompound compound) { + this.compound = compound; + } + + public NBTTagCompound toNBT() { + NBTTagCompound slotNBT = new NBTTagCompound(); + slotNBT.setString("Name", name); + slotNBT.setLong("LastLoaded", lastLoaded); + slotNBT.setTag("Data", compound); + return slotNBT; + } + + public static Slot fromNBT(int id, NBTTagCompound slotNBT) { + String name = slotNBT.getString("Name"); + long lastLoaded = slotNBT.getLong("LastLoaded"); + NBTTagCompound compound = slotNBT.getCompoundTag("Data"); + return new Slot(id, name, compound, lastLoaded); + } +} diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 45c49e810..15ba66a7a 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -11,6 +11,8 @@ import cpw.mods.fml.common.registry.EntityRegistry; import foxz.command.CommandNoppes; import kamkeel.addon.AddonManager; import kamkeel.command.CommandKamkeel; +import kamkeel.controllers.ProfileController; +import kamkeel.controllers.data.CNPCData; import kamkeel.developer.Developer; import net.minecraft.block.Block; import net.minecraft.block.BlockIce; @@ -205,6 +207,11 @@ public class CustomNpcs { new SpawnController(); new LinkedNpcController(); new AnimationController(); + + // Profile Controller + new ProfileController(); + ProfileController.registerProfileType(new CNPCData()); + ScriptController.Instance.loadStoredData(); ScriptController.Instance.loadForgeScripts(); ScriptController.Instance.loadGlobalNPCScripts(); diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index fb825beae..8ae6a17ee 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -5,6 +5,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.relauncher.Side; +import kamkeel.controllers.ProfileController; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; diff --git a/src/main/java/noppes/npcs/ServerTickHandler.java b/src/main/java/noppes/npcs/ServerTickHandler.java index 14d33b0a1..2b0e79be7 100644 --- a/src/main/java/noppes/npcs/ServerTickHandler.java +++ b/src/main/java/noppes/npcs/ServerTickHandler.java @@ -4,6 +4,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; +import kamkeel.controllers.ProfileController; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; import net.minecraft.world.WorldServer; @@ -52,6 +53,7 @@ public class ServerTickHandler { } SyncController.syncPlayer(player); + ProfileController.login(player); } @SubscribeEvent From f6e3f867e00db124365c110e3466a9d8a5665873 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 23 Jan 2025 17:06:12 -0500 Subject: [PATCH 002/157] Remove Redundancy --- src/main/java/kamkeel/controllers/data/Profile.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/main/java/kamkeel/controllers/data/Profile.java b/src/main/java/kamkeel/controllers/data/Profile.java index d812cef47..94726b5b9 100644 --- a/src/main/java/kamkeel/controllers/data/Profile.java +++ b/src/main/java/kamkeel/controllers/data/Profile.java @@ -2,12 +2,9 @@ package kamkeel.controllers.data; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.nbt.NBTTagString; import java.util.HashMap; import java.util.Set; -import java.util.UUID; public class Profile { @@ -15,12 +12,8 @@ public class Profile { public int currentID; public HashMap slots = new HashMap<>(); - private NBTTagCompound profileCompound; - public Profile(EntityPlayer player, NBTTagCompound compound){ this.player = player; - this.profileCompound = compound; - if(compound.hasKey("CurrentID")){ this.currentID = compound.getInteger("CurrentID"); } else { From 10edf72ed95b47d16f51071476902d346422bf2c Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 23 Jan 2025 17:45:05 -0500 Subject: [PATCH 003/157] Profile Change Command --- .../command/profile/CommandProfileChange.java | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/main/java/kamkeel/command/profile/CommandProfileChange.java diff --git a/src/main/java/kamkeel/command/profile/CommandProfileChange.java b/src/main/java/kamkeel/command/profile/CommandProfileChange.java new file mode 100644 index 000000000..286f23cea --- /dev/null +++ b/src/main/java/kamkeel/command/profile/CommandProfileChange.java @@ -0,0 +1,62 @@ +package kamkeel.command.profile; + +import kamkeel.controllers.ProfileController; +import kamkeel.controllers.data.Profile; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; + +public class CommandProfileChange extends CommandProfileBase { + + + @Override + public String getCommandName() { + return "change"; + } + + @Override + public String getDescription() { + return "change profiles"; + } + + @Override + public String getUsage() { + return ""; + } + + @Override + public boolean runSubCommands(){ + return false; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + + if(!(sender instanceof EntityPlayer)){ + sendError(sender, "This command can only be sent by a player"); + return; + } + + int slotID; + try { + slotID = Integer.parseInt(args[0]); + } catch (NumberFormatException ex) { + sendError(sender, "Slot ID must be a number: " + args[1]); + return; + } + + // TODO: Check if the player has permission to switch to this slot + EntityPlayerMP player = (EntityPlayerMP) sender; + + Profile profile = ProfileController.activeProfiles.get(player.getUniqueID()); + if(profile == null){ + sendError(sender, "Could not find a valid profile file"); + return; + } + + ProfileController.changePlayerSlot(player, slotID); + // TODO: Add Cooldown to successful operation + sendResult(sender, String.format("Switched to Slot \u00A7b%d\u00A77", slotID)); + } +} From 52aa1a75c1bd1d03e222093fac7eda7bb599a523 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 23 Jan 2025 17:45:13 -0500 Subject: [PATCH 004/157] Profile Change Command Completed --- .../kamkeel/command/profile/CommandProfile.java | 1 + .../command/profile/CommandProfileBase.java | 4 ++-- .../kamkeel/controllers/ProfileController.java | 17 +++++++---------- .../java/kamkeel/controllers/data/CNPCData.java | 1 + src/main/java/noppes/npcs/CustomNpcs.java | 2 ++ 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/kamkeel/command/profile/CommandProfile.java b/src/main/java/kamkeel/command/profile/CommandProfile.java index 0d0076f16..a8a19de4b 100644 --- a/src/main/java/kamkeel/command/profile/CommandProfile.java +++ b/src/main/java/kamkeel/command/profile/CommandProfile.java @@ -22,6 +22,7 @@ public class CommandProfile extends CommandBase { public CommandProfile(){ registerCommand(help); + registerCommand(new CommandProfileChange()); } public void registerCommand(CommandProfileBase command){ diff --git a/src/main/java/kamkeel/command/profile/CommandProfileBase.java b/src/main/java/kamkeel/command/profile/CommandProfileBase.java index 270c2db73..24487dba2 100644 --- a/src/main/java/kamkeel/command/profile/CommandProfileBase.java +++ b/src/main/java/kamkeel/command/profile/CommandProfileBase.java @@ -123,11 +123,11 @@ public abstract class CommandProfileBase extends CommandBase{ } public String getSubCommandPermission(String subCommand){ - return "cnpc.kamkeel." + getCommandName().toLowerCase() + "." + subCommand.toLowerCase(); + return "profile.kamkeel." + getCommandName().toLowerCase() + "." + subCommand.toLowerCase(); } public String getSubUniversalPermission(){ - return "cnpc.kamkeel." + getCommandName().toLowerCase() + "*"; + return "profile.kamkeel." + getCommandName().toLowerCase() + "*"; } public boolean canSendCommand(ICommandSender sender, SubCommand command, String subCommand){ diff --git a/src/main/java/kamkeel/controllers/ProfileController.java b/src/main/java/kamkeel/controllers/ProfileController.java index 6fbb874e1..a5f9a86da 100644 --- a/src/main/java/kamkeel/controllers/ProfileController.java +++ b/src/main/java/kamkeel/controllers/ProfileController.java @@ -104,7 +104,7 @@ public class ProfileController { }); } - public void changeSlot(EntityPlayer player, int slotNumber){ + public static void changeSlot(EntityPlayer player, int slotNumber){ if(!activeProfiles.containsKey(player.getUniqueID())) return; @@ -122,7 +122,7 @@ public class ProfileController { save(player, profile); } - public void saveSlotData(EntityPlayer player){ + public static void saveSlotData(EntityPlayer player){ if(!activeProfiles.containsKey(player.getUniqueID())) return; @@ -134,8 +134,9 @@ public class ProfileController { slot = profile.slots.get(profile.currentID); dataCompound = (NBTTagCompound) slot.getCompound().copy(); } else { - slot = new Slot(profile.currentID, "Slot 1"); + slot = new Slot(profile.currentID, "Slot " + profile.currentID); dataCompound = new NBTTagCompound(); + slot.setCompound(dataCompound); } for(IProfileData profileData : profileTypes.values()){ @@ -146,7 +147,7 @@ public class ProfileController { slot.setCompound(dataCompound); } - public void changePlayerSlot(EntityPlayer player, int id){ + public static void changePlayerSlot(EntityPlayer player, int id){ if(!activeProfiles.containsKey(player.getUniqueID())) return; @@ -158,19 +159,15 @@ public class ProfileController { slotCompound = (NBTTagCompound) slot.getCompound().copy(); } else { slot = new Slot(id, "Slot " + id); - slot.setCompound(new NBTTagCompound()); slotCompound = new NBTTagCompound(); + slot.setCompound(slotCompound); } slot.setLastLoaded(System.currentTimeMillis()); profile.slots.put(id, slot); for(IProfileData profileData : profileTypes.values()){ - if(slotCompound.hasKey(profileData.getTagName())){ - profileData.setNBT(player, slotCompound.getCompoundTag(profileData.getTagName())); - } else { - profileData.setNBT(player, new NBTTagCompound()); - } + profileData.setNBT(player, slotCompound.getCompoundTag(profileData.getTagName())); profileData.save(player); } diff --git a/src/main/java/kamkeel/controllers/data/CNPCData.java b/src/main/java/kamkeel/controllers/data/CNPCData.java index 12c820b3c..fc1ae9d72 100644 --- a/src/main/java/kamkeel/controllers/data/CNPCData.java +++ b/src/main/java/kamkeel/controllers/data/CNPCData.java @@ -34,5 +34,6 @@ public class CNPCData implements IProfileData { else { customNPCData.setNBT(replace); } + customNPCData.updateClient = true; } } diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 15ba66a7a..ce5577197 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -11,6 +11,7 @@ import cpw.mods.fml.common.registry.EntityRegistry; import foxz.command.CommandNoppes; import kamkeel.addon.AddonManager; import kamkeel.command.CommandKamkeel; +import kamkeel.command.profile.CommandProfile; import kamkeel.controllers.ProfileController; import kamkeel.controllers.data.CNPCData; import kamkeel.developer.Developer; @@ -260,6 +261,7 @@ public class CustomNpcs { public void serverstart(FMLServerStartingEvent event) { event.registerServerCommand(new CommandNoppes()); event.registerServerCommand(new CommandKamkeel()); + event.registerServerCommand(new CommandProfile()); } private void registerNpc(Class cl, String name) { From c7c981f4a7a7c6cc4d470c5dcb9c8d92681480c5 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 23 Jan 2025 17:56:53 -0500 Subject: [PATCH 005/157] Profile Work --- .../command/profile/CommandProfileChange.java | 1 - .../gui/player/inventory/GuiProfiles.java | 197 ++++++++++++++++++ 2 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 src/main/java/noppes/npcs/client/gui/player/inventory/GuiProfiles.java diff --git a/src/main/java/kamkeel/command/profile/CommandProfileChange.java b/src/main/java/kamkeel/command/profile/CommandProfileChange.java index 286f23cea..8cda00afc 100644 --- a/src/main/java/kamkeel/command/profile/CommandProfileChange.java +++ b/src/main/java/kamkeel/command/profile/CommandProfileChange.java @@ -32,7 +32,6 @@ public class CommandProfileChange extends CommandProfileBase { @Override public void processCommand(ICommandSender sender, String[] args) throws CommandException { - if(!(sender instanceof EntityPlayer)){ sendError(sender, "This command can only be sent by a player"); return; diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiProfiles.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiProfiles.java new file mode 100644 index 000000000..d874a4e19 --- /dev/null +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiProfiles.java @@ -0,0 +1,197 @@ +package noppes.npcs.client.gui.player.inventory; + +import net.minecraft.client.gui.GuiButton; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import noppes.npcs.NoppesUtilPlayer; +import noppes.npcs.client.CustomNpcResourceListener; +import noppes.npcs.client.gui.util.GuiButtonNextPage; +import noppes.npcs.client.gui.util.IGuiData; +import noppes.npcs.constants.EnumPlayerPacket; +import noppes.npcs.controllers.data.Faction; +import noppes.npcs.controllers.data.PlayerFactionData; +import org.lwjgl.opengl.GL11; +import tconstruct.client.tabs.AbstractTab; + +import java.util.ArrayList; + +public class GuiProfiles extends GuiCNPCInventory implements IGuiData { + + private final ResourceLocation resource = new ResourceLocation("customnpcs","textures/gui/standardbg.png"); + + private ArrayList playerFactions = new ArrayList(); + + private int page = 0; + private int pages = 1; + + private GuiButtonNextPage buttonNextPage; + private GuiButtonNextPage buttonPreviousPage; + + public GuiProfiles() { + super(); + xSize = 280; + ySize = 180; + this.drawDefaultBackground = false; + title = ""; + NoppesUtilPlayer.sendData(EnumPlayerPacket.FactionsGet); + } + + @Override + public void initGui() + { + super.initGui(); + + this.buttonList.add(buttonNextPage = new GuiButtonNextPage(1, (guiLeft + (xSize + 35) / 2) + 25, guiTop + 170, true)); + this.buttonList.add(buttonPreviousPage = new GuiButtonNextPage(2, (guiLeft + (xSize + 35) / 2) - 40, guiTop + 170, false)); + updateButtons(); + } + + @Override + public void drawScreen(int i, int j, float f) + { + drawDefaultBackground(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + mc.renderEngine.bindTexture(resource); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, 252, 195); + drawTexturedModalRect(guiLeft + 252, guiTop, 188, 0, 67, 195); + + if(playerFactions.isEmpty()){ + String noFaction = StatCollector.translateToLocal("faction.nostanding"); + fontRendererObj.drawString(noFaction,guiLeft + (xSize - fontRendererObj.getStringWidth(noFaction)) / 2,guiTop + 80, CustomNpcResourceListener.DefaultTextColor); + } + else + renderScreen(); + + super.drawScreen(i, j, f); + + } + + private void renderScreen(){ + int size = 10; + if(playerFactions.size() % 10 != 0 && page == pages) + size = playerFactions.size() % 10; + + int hLine = 5; + if(size < 5){ + hLine = size; + } + + int count = -1; + for(int id = 0 ; id < size; id++){ + count++; + + Faction faction = playerFactions.get((page - 1) * 10 + id); + String name = faction.name; + String points = " : " + faction.defaultPoints; + + String standing = StatCollector.translateToLocal("faction.friendly"); + int color = 0x00FF00; + if(faction.defaultPoints < faction.neutralPoints){ + standing = StatCollector.translateToLocal("faction.unfriendly"); + color = 0xFF0000; + points += "/" + faction.neutralPoints; + } + else if(faction.defaultPoints < faction.friendlyPoints){ + standing = StatCollector.translateToLocal("faction.neutral"); + color = 0xF2FF00; + points += "/" + faction.friendlyPoints; + } + else{ + points += "/-"; + } + + drawVerticalLine(guiLeft + (xSize + 45) / 2, (guiTop + ySize - 15), guiTop + 13, 0xFF000000 + CustomNpcResourceListener.DefaultTextColor); + if(count < 5){ + drawHorizontalLine(guiLeft + 2, guiLeft + xSize + 35, guiTop + 14 + count * 30, 0xFF000000 + CustomNpcResourceListener.DefaultTextColor); + fontRendererObj.drawString(name, guiLeft + (xSize + 45 - fontRendererObj.getStringWidth(name)) / 4, guiTop + 19 + count * 30, faction.color); + + fontRendererObj.drawString(standing, (guiLeft + (xSize + 45) / 4) - fontRendererObj.getStringWidth(standing), guiTop + 33 + count * 30, color); + fontRendererObj.drawString(points, (guiLeft + (xSize + 45) / 4), guiTop + 33 + count * 30, CustomNpcResourceListener.DefaultTextColor); + } + else { + fontRendererObj.drawString(name, guiLeft + 3*(xSize + 45 - fontRendererObj.getStringWidth(name)) / 4, guiTop + 19 + (count - 5) * 30, faction.color); + + fontRendererObj.drawString(standing, (guiLeft + 3*(xSize + 45) / 4) - fontRendererObj.getStringWidth(standing) - 10, guiTop + 33 + (count - 5) * 30, color); + fontRendererObj.drawString(points, (guiLeft + 3*(xSize + 45) / 4) - 10, guiTop + 33 + (count - 5) * 30, CustomNpcResourceListener.DefaultTextColor); + } + + drawHorizontalLine(guiLeft + 2, guiLeft + xSize + 35, guiTop + 14 + hLine * 30, 0xFF000000 + CustomNpcResourceListener.DefaultTextColor); + } + + if(pages > 1){ + String s = page +"/" + pages; + fontRendererObj.drawString(s, guiLeft + (xSize + 45 - fontRendererObj.getStringWidth(s)) / 2, guiTop + 175, CustomNpcResourceListener.DefaultTextColor); + } + } + + @Override + protected void actionPerformed(GuiButton guibutton){ + if(guibutton instanceof AbstractTab) + return; + + if (guibutton.id >= 100 && guibutton.id <= 105) { + super.actionPerformed(guibutton); + return; + } + if(!(guibutton instanceof GuiButtonNextPage)) + return; + int id = guibutton.id; + if(id == 1){ + page++; + } + if(id == 2){ + page--; + } + updateButtons(); + } + private void updateButtons(){ + buttonNextPage.setVisible(page < pages); + buttonPreviousPage.setVisible(page > 1); + } + protected void drawGuiContainerBackgroundLayer(float f, int i, int j) + { + + } + + @Override + public void keyTyped(char c, int i) + { + if (i == 1 || isInventoryKey(i)) + { + close(); + } + } + @Override + public void save() { + } + @Override + public void setGuiData(NBTTagCompound compound) { + playerFactions = new ArrayList(); + + NBTTagList list = compound.getTagList("FactionList", 10); + for(int i = 0; i < list.tagCount(); i++){ + Faction faction = new Faction(); + faction.readNBT(list.getCompoundTagAt(i)); + playerFactions.add(faction); + } + PlayerFactionData data = new PlayerFactionData(); + data.loadNBTData(compound); + for(int id : data.factionData.keySet()){ + int points = data.factionData.get(id); + for(Faction faction : playerFactions){ + if(faction.id == id) + faction.defaultPoints = points; + } + } + + pages = (playerFactions.size() - 1) / 10 ; + pages++; + + page = 1; + + updateButtons(); + } + +} From 62482c307c9474fb20307e479bcb67d39bf39adb Mon Sep 17 00:00:00 2001 From: Kam Date: Fri, 24 Jan 2025 00:29:11 -0500 Subject: [PATCH 006/157] Profile Tab + Config Sync --- .../java/noppes/npcs/client/PacketHandlerClient.java | 4 ++++ .../client/gui/player/inventory/GuiCNPCInventory.java | 11 +++++++++++ src/main/java/noppes/npcs/config/ConfigMain.java | 6 ++++++ .../java/noppes/npcs/constants/EnumPacketClient.java | 1 + .../java/noppes/npcs/controllers/SyncController.java | 11 +++++++++++ 5 files changed, 33 insertions(+) diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index 07f025119..b64066ff1 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -136,6 +136,10 @@ public class PacketHandlerClient extends PacketHandlerServer{ SyncController.clientSyncRemove(synctype, id); } + else if(type == EnumPacketClient.SYNC_CONFIG){ + NBTTagCompound configNBT = Server.readNBT(buffer); + SyncController.receiveConfigs(configNBT); + } else if(type == EnumPacketClient.MARK_DATA){ Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(buffer.readInt()); if(!(entity instanceof EntityNPCInterface)) diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java index 8dbb2345c..e289f6294 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java @@ -8,6 +8,7 @@ import net.minecraft.util.ResourceLocation; import noppes.npcs.client.gui.util.GuiMenuSideButton; import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.config.ConfigClient; +import noppes.npcs.config.ConfigMain; import tconstruct.client.tabs.InventoryTabCustomNpc; import tconstruct.client.tabs.TabRegistry; @@ -67,6 +68,16 @@ public class GuiCNPCInventory extends GuiNPCInterface { addButton(dbcButton); } + if(ConfigMain.EnableProfiles){ + y += 21; + GuiMenuSideButton profileButton = new GuiMenuSideButton(105, guiLeft + xSize + 37, this.guiTop + y, 22, 22, ""); + profileButton.rightSided = true; + profileButton.active = activeTab == 5; + profileButton.renderIconPosX = 80; + profileButton.renderResource = specialIcons; + addButton(profileButton); + } + y += 21; GuiMenuSideButton clientButton = new GuiMenuSideButton(103, guiLeft + xSize + 37, this.guiTop + y, 22, 22, ""); clientButton.rightSided = true; diff --git a/src/main/java/noppes/npcs/config/ConfigMain.java b/src/main/java/noppes/npcs/config/ConfigMain.java index 046b77da0..e3437c610 100644 --- a/src/main/java/noppes/npcs/config/ConfigMain.java +++ b/src/main/java/noppes/npcs/config/ConfigMain.java @@ -17,6 +17,7 @@ public class ConfigMain public final static String NPC = "NPC"; public final static String UPDATE = "Update"; public final static String PARTY = "PARTY"; + public final static String PROFILES = "Profile"; /** * General Main Properties @@ -79,6 +80,8 @@ public class ConfigMain public static Property DefaultMaxPartySizeProperty; public static int DefaultMaxPartySize = 4; + public static boolean EnableProfiles = true; + /** * General NPC Properties **/ @@ -216,6 +219,9 @@ public class ConfigMain TrackedQuestUpdateFrequencyProperty = config.get(UPDATE, "Tracked Quest Update Frequency", 5, "How often in seconds to update a players tracked quest. [Only applies to Item Quest currently]"); TrackedQuestUpdateFrequency = TrackedQuestUpdateFrequencyProperty.getInt(5); + // PROFILES + EnableProfiles = config.get(PROFILES, "Enable Profiles", true, "Allow the use of character Profiles").getBoolean(true); + // Convert to Legacy if(CustomNpcs.legacyExist){ EnableUpdateChecker = LegacyConfig.EnableUpdateChecker; diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index 85705569e..dc6ff6880 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -56,6 +56,7 @@ public enum EnumPacketClient { SYNC_WEAPON, MARK_DATA, SYNC_ADD, SYNC_END, SYNC_UPDATE, SYNC_REMOVE, SYNC_PLAYER, + SYNC_CONFIG, DBC_FORM, LARGE_NBT_PART, LARGE_NBT_END, PARTY_DATA diff --git a/src/main/java/noppes/npcs/controllers/SyncController.java b/src/main/java/noppes/npcs/controllers/SyncController.java index 94d9efe73..8ebf881e5 100644 --- a/src/main/java/noppes/npcs/controllers/SyncController.java +++ b/src/main/java/noppes/npcs/controllers/SyncController.java @@ -7,6 +7,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.NoppesUtilServer; import noppes.npcs.Server; +import noppes.npcs.config.ConfigMain; import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.SyncType; import noppes.npcs.controllers.data.*; @@ -15,6 +16,16 @@ import java.util.HashMap; public class SyncController { + public static void syncConfigs(EntityPlayerMP player){ + NBTTagCompound nbtTagCompound = new NBTTagCompound(); + nbtTagCompound.setBoolean("Profiles", true); + Server.sendData(player, EnumPacketClient.SYNC_CONFIG, nbtTagCompound); + } + + public static void receiveConfigs(NBTTagCompound compound){ + ConfigMain.EnableProfiles = compound.getBoolean("Profiles"); + } + public static void syncPlayer(EntityPlayerMP player){ NBTTagList list = new NBTTagList(); NBTTagCompound compound = new NBTTagCompound(); From 435c31ddda80fa73cf998df27217692d74100678 Mon Sep 17 00:00:00 2001 From: Kam Date: Fri, 24 Jan 2025 12:35:34 -0500 Subject: [PATCH 007/157] Link Profiles --- .../npcs/client/gui/player/inventory/GuiCNPCInventory.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java index e289f6294..53e0d7ae6 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java @@ -110,6 +110,10 @@ public class GuiCNPCInventory extends GuiNPCInterface { activeTab = 4; mc.displayGuiScreen(DBCClient.Instance.inventoryGUI()); } + if (guibutton.id == 105 && activeTab != 5) { + activeTab = 5; + mc.displayGuiScreen(new GuiProfiles()); + } } } From db9ac7f7c44effffda0fc85fcc229e78bc672301 Mon Sep 17 00:00:00 2001 From: Kam Date: Sat, 25 Jan 2025 19:41:54 -0500 Subject: [PATCH 008/157] Upgraded Barrel & Campfire Models --- .../noppes/npcs/blocks/BlockCampfire.java | 27 ++-- .../model/blocks/barrel/BarrelCore.java | 69 ---------- .../model/blocks/barrel/BarrelTrim.java | 47 ------- .../model/blocks/barrel/ModelBarrel.java | 80 +++++++++++ .../blocks/campfire/ModelCampfireFlame.java | 57 ++++++++ .../blocks/campfire/ModelCampfireLog.java | 51 +++++++ .../blocks/campfire/ModelCampfireStone.java | 57 ++++++++ .../ModelLegacyBarrel.java} | 38 +++--- .../ModelLegacyBarrelLid.java} | 16 +-- .../renderer/blocks/BlockBarrelRenderer.java | 125 +++++++++++++----- .../blocks/BlockCampfireRenderer.java | 59 +++++++-- .../blocks/BlockRendererInterface.java | 15 +-- .../java/noppes/npcs/config/ConfigClient.java | 14 ++ .../customnpcs/textures/models/BarrelTrim.png | Bin 405 -> 0 bytes .../textures/models/barrel/oak_lid.png | Bin 0 -> 511 bytes .../textures/models/barrel/trim.png | Bin 0 -> 269 bytes .../customnpcs/textures/models/flame.png | Bin 0 -> 1693 bytes .../textures/models/flame.png.mcmeta | 17 +++ .../textures/models/flame_single.png | Bin 0 -> 387 bytes 19 files changed, 466 insertions(+), 206 deletions(-) delete mode 100644 src/main/java/noppes/npcs/client/model/blocks/barrel/BarrelCore.java delete mode 100644 src/main/java/noppes/npcs/client/model/blocks/barrel/BarrelTrim.java create mode 100644 src/main/java/noppes/npcs/client/model/blocks/barrel/ModelBarrel.java create mode 100644 src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireFlame.java create mode 100644 src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireLog.java create mode 100644 src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireStone.java rename src/main/java/noppes/npcs/client/model/blocks/{ModelBarrel.java => legacy/ModelLegacyBarrel.java} (94%) rename src/main/java/noppes/npcs/client/model/blocks/{ModelBarrelLit.java => legacy/ModelLegacyBarrelLid.java} (85%) delete mode 100644 src/main/resources/assets/customnpcs/textures/models/BarrelTrim.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/barrel/oak_lid.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/barrel/trim.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/flame.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/flame.png.mcmeta create mode 100644 src/main/resources/assets/customnpcs/textures/models/flame_single.png diff --git a/src/main/java/noppes/npcs/blocks/BlockCampfire.java b/src/main/java/noppes/npcs/blocks/BlockCampfire.java index 12019ee2a..a00d5fc3e 100644 --- a/src/main/java/noppes/npcs/blocks/BlockCampfire.java +++ b/src/main/java/noppes/npcs/blocks/BlockCampfire.java @@ -14,6 +14,7 @@ import noppes.npcs.CustomItems; import noppes.npcs.CustomNpcs; import noppes.npcs.NoppesUtilServer; import noppes.npcs.blocks.tiles.TileCampfire; +import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; import java.util.Random; @@ -31,14 +32,14 @@ public class BlockCampfire extends BlockLightable{ public TileEntity createNewTileEntity(World var1, int var2) { return new TileCampfire(); } - - @Override + + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9){ ItemStack item = player.inventory.getCurrentItem(); if(item == null) return true; int meta = world.getBlockMetadata(x, y, z); - + if((item.getItem() == Items.flint || item.getItem() == Items.flint_and_steel) && unlitBlock() == this){ if(world.rand.nextInt(3) == 0 && !world.isRemote) super.onBlockActivated(world, x, y, z, player, par6, par7, par8, par9); @@ -49,11 +50,11 @@ public class BlockCampfire extends BlockLightable{ item.damageItem(1, player); return true; } - + if(item.getItem() == Item.getItemFromBlock(Blocks.sand) && litBlock() == this){ super.onBlockActivated(world, x, y, z, player, par6, par7, par8, par9); } - + return true; } @@ -68,23 +69,25 @@ public class BlockCampfire extends BlockLightable{ int meta = world.getBlockMetadata(x, y, z); if(meta == 1) return; - + if(random.nextInt(36) == 0){ world.playSound(x + 0.5F, y + 0.5F, z + 0.5F, "fire.fire", 1.0F + random.nextFloat(), 0.3F + random.nextFloat() * 0.7f , false); } - + TileCampfire tile = (TileCampfire) world.getTileEntity(x, y, z); - + float xOffset = 0.5f, yOffset = 0.7f, zOffset = 0.5f; double d0 = (double)((float)x + xOffset); double d1 = (double)((float)y + yOffset); double d2 = (double)((float)z + zOffset); - + GL11.glPushMatrix(); - - CustomNpcs.proxy.spawnParticle("largesmoke", d0, d1, d2, 0.0D, 0.0D, 0.0D, 2); - CustomNpcs.proxy.spawnParticle("flame", d0, d1, d2, 0.0D, 0.0D, 0.0D, 4); + + if(ConfigClient.LegacyCampfire){ + CustomNpcs.proxy.spawnParticle("largesmoke", d0, d1, d2, 0.0D, 0.0D, 0.0D, 2); + CustomNpcs.proxy.spawnParticle("flame", d0, d1, d2, 0.0D, 0.0D, 0.0D, 4); + } GL11.glPopMatrix(); } diff --git a/src/main/java/noppes/npcs/client/model/blocks/barrel/BarrelCore.java b/src/main/java/noppes/npcs/client/model/blocks/barrel/BarrelCore.java deleted file mode 100644 index fb3aa099a..000000000 --- a/src/main/java/noppes/npcs/client/model/blocks/barrel/BarrelCore.java +++ /dev/null @@ -1,69 +0,0 @@ -package noppes.npcs.client.model.blocks.barrel; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelBox; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class BarrelCore extends ModelBase { - private final ModelRenderer bb_main; - private final ModelRenderer cube_r1; - private final ModelRenderer cube_r2; - private final ModelRenderer cube_r3; - private final ModelRenderer cube_r4; - private final ModelRenderer cube_r5; - - public BarrelCore() { - textureWidth = 64; - textureHeight = 32; - - bb_main = new ModelRenderer(this); - bb_main.setRotationPoint(0.0F, 24.0F, 0.0F); - - cube_r1 = new ModelRenderer(this); - cube_r1.setRotationPoint(0.0F, 0.0F, 0.0F); - bb_main.addChild(cube_r1); - setRotationAngle(cube_r1, 1.5708F, 0.0F, -1.5708F); - cube_r1.cubeList.add(new ModelBox(cube_r1, 6, -6, 0.0F, -5.0F, -5.0F, 0, 10, 10, 0.0F)); - - cube_r2 = new ModelRenderer(this); - cube_r2.setRotationPoint(0.0F, -14.5F, 0.0F); - bb_main.addChild(cube_r2); - setRotationAngle(cube_r2, 0.0F, 0.0F, 1.5708F); - cube_r2.cubeList.add(new ModelBox(cube_r2, 0, 2, 2.5F, -5.5F, 5.5F, 8, 11, 0, 0.0F)); - cube_r2.cubeList.add(new ModelBox(cube_r2, 8, 2, 2.5F, -5.5F, -5.5F, 8, 11, 0, 0.0F)); - cube_r2.cubeList.add(new ModelBox(cube_r2, 0, 3, -1.5F, -5.0F, -5.0F, 16, 10, 0, 0.0F)); - - cube_r3 = new ModelRenderer(this); - cube_r3.setRotationPoint(0.0F, -14.5F, 0.0F); - bb_main.addChild(cube_r3); - setRotationAngle(cube_r3, 1.5708F, 0.0F, 1.5708F); - cube_r3.cubeList.add(new ModelBox(cube_r3, 8, 2, 2.5F, -5.5F, -5.5F, 8, 11, 0, 0.0F)); - cube_r3.cubeList.add(new ModelBox(cube_r3, 0, 2, 2.5F, -5.5F, 5.5F, 8, 11, 0, 0.0F)); - cube_r3.cubeList.add(new ModelBox(cube_r3, 6, -5, -1.5F, -5.0F, -5.0F, 0, 10, 10, 0.0F)); - cube_r3.cubeList.add(new ModelBox(cube_r3, 0, 5, -1.5F, -5.0F, -5.0F, 16, 10, 0, 0.0F)); - - cube_r4 = new ModelRenderer(this); - cube_r4.setRotationPoint(0.0F, -14.5F, 0.0F); - bb_main.addChild(cube_r4); - setRotationAngle(cube_r4, -1.5708F, 0.0F, 1.5708F); - cube_r4.cubeList.add(new ModelBox(cube_r4, 0, 4, -1.5F, -5.0F, -5.0F, 16, 10, 0, 0.0F)); - - cube_r5 = new ModelRenderer(this); - cube_r5.setRotationPoint(0.0F, -8.0F, 5.0F); - bb_main.addChild(cube_r5); - setRotationAngle(cube_r5, 3.1416F, 0.0F, 1.5708F); - cube_r5.cubeList.add(new ModelBox(cube_r5, 0, 3, -8.0F, -5.0F, 0.0F, 16, 10, 0, 0.0F)); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - bb_main.render(f5); - } - - public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } -} diff --git a/src/main/java/noppes/npcs/client/model/blocks/barrel/BarrelTrim.java b/src/main/java/noppes/npcs/client/model/blocks/barrel/BarrelTrim.java deleted file mode 100644 index b5404428e..000000000 --- a/src/main/java/noppes/npcs/client/model/blocks/barrel/BarrelTrim.java +++ /dev/null @@ -1,47 +0,0 @@ -package noppes.npcs.client.model.blocks.barrel;// Made with Blockbench 4.9.4 -// Exported for Minecraft version 1.7 - 1.12 -// Paste this class into your mod and generate all required imports - - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelBox; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class BarrelTrim extends ModelBase { - private final ModelRenderer bb_main; - private final ModelRenderer cube_r1; - private final ModelRenderer cube_r2; - - public BarrelTrim() { - textureWidth = 32; - textureHeight = 32; - - bb_main = new ModelRenderer(this); - bb_main.setRotationPoint(0.0F, 24.0F, 0.0F); - bb_main.cubeList.add(new ModelBox(bb_main, 0, 7, 0.0F, -16.5F, -4.0F, 2, 1, 2, 0.0F)); - - cube_r1 = new ModelRenderer(this); - cube_r1.setRotationPoint(0.0F, -8.0F, 0.0F); - bb_main.addChild(cube_r1); - setRotationAngle(cube_r1, -1.5708F, 0.0F, 1.5708F); - cube_r1.cubeList.add(new ModelBox(cube_r1, 0, 0, -6.0F, -6.0F, -6.0F, 2, 12, 12, 0.0F)); - - cube_r2 = new ModelRenderer(this); - cube_r2.setRotationPoint(0.0F, -3.0F, 0.0F); - bb_main.addChild(cube_r2); - setRotationAngle(cube_r2, 1.5708F, 0.0F, 1.5708F); - cube_r2.cubeList.add(new ModelBox(cube_r2, 0, 0, -1.0F, -6.0F, -6.0F, 2, 12, 12, 0.0F)); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - bb_main.render(f5); - } - - public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } -} diff --git a/src/main/java/noppes/npcs/client/model/blocks/barrel/ModelBarrel.java b/src/main/java/noppes/npcs/client/model/blocks/barrel/ModelBarrel.java new file mode 100644 index 000000000..6c1a2692f --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/barrel/ModelBarrel.java @@ -0,0 +1,80 @@ +package noppes.npcs.client.model.blocks.barrel; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelBarrel extends ModelBase { + private final ModelRenderer Wall; + private final ModelRenderer cube_r1; + private final ModelRenderer cube_r2; + private final ModelRenderer cube_r3; + private final ModelRenderer Trim; + private final ModelRenderer Base; + + public ModelBarrel() { + textureWidth = 64; + textureHeight = 32; + + Wall = new ModelRenderer(this); + Wall.setRotationPoint(0.0F, 24.0F, 0.0F); + Wall.cubeList.add(new ModelBox(Wall, 0, 0, 5.0F, -16.0F, 5.0F, 1, 16, 1, 0.0F)); + Wall.cubeList.add(new ModelBox(Wall, 0, 0, 5.0F, -16.0F, -6.0F, 1, 16, 1, 0.0F)); + Wall.cubeList.add(new ModelBox(Wall, 0, 0, -6.0F, -16.0F, -6.0F, 1, 16, 1, 0.0F)); + Wall.cubeList.add(new ModelBox(Wall, 0, 0, -6.0F, -16.0F, 5.0F, 1, 16, 1, 0.0F)); + + cube_r1 = new ModelRenderer(this); + cube_r1.setRotationPoint(-6.5F, -8.0F, 0.0F); + Wall.addChild(cube_r1); + setRotationAngle(cube_r1, 1.5708F, 0.0F, 0.0F); + cube_r1.cubeList.add(new ModelBox(cube_r1, 0, 0, -0.5F, -6.0F, -8.0F, 1, 12, 16, 0.0F)); + + cube_r2 = new ModelRenderer(this); + cube_r2.setRotationPoint(0.0F, -8.0F, 6.5F); + Wall.addChild(cube_r2); + setRotationAngle(cube_r2, 0.0F, 0.0F, 1.5708F); + cube_r2.cubeList.add(new ModelBox(cube_r2, 0, 14, -8.0F, -6.0F, -0.5F, 16, 12, 1, 0.0F)); + cube_r2.cubeList.add(new ModelBox(cube_r2, 0, 14, -8.0F, -6.0F, -13.5F, 16, 12, 1, 0.0F)); + + cube_r3 = new ModelRenderer(this); + cube_r3.setRotationPoint(6.5F, -8.0F, 0.0F); + Wall.addChild(cube_r3); + setRotationAngle(cube_r3, -1.5708F, 0.0F, 0.0F); + cube_r3.cubeList.add(new ModelBox(cube_r3, 0, 0, -0.5F, -6.0F, -8.0F, 1, 12, 16, 0.0F)); + + Trim = new ModelRenderer(this); + Trim.setRotationPoint(0.0F, 24.0F, 0.0F); + Trim.cubeList.add(new ModelBox(Trim, 4, 28, -6.5F, -5.0F, 5.5F, 13, 2, 2, 0.0F)); + Trim.cubeList.add(new ModelBox(Trim, 34, 17, 5.5F, -5.0F, -6.5F, 2, 2, 13, 0.0F)); + Trim.cubeList.add(new ModelBox(Trim, 4, 28, -6.5F, -5.0F, -7.5F, 13, 2, 2, 0.0F)); + Trim.cubeList.add(new ModelBox(Trim, 34, 17, -7.5F, -5.0F, -6.5F, 2, 2, 13, 0.0F)); + Trim.cubeList.add(new ModelBox(Trim, 4, 28, -6.5F, -13.0F, -7.5F, 13, 2, 2, 0.0F)); + Trim.cubeList.add(new ModelBox(Trim, 4, 28, -6.5F, -13.0F, 5.5F, 13, 2, 2, 0.0F)); + Trim.cubeList.add(new ModelBox(Trim, 34, 17, -7.5F, -13.0F, -6.5F, 2, 2, 13, 0.0F)); + Trim.cubeList.add(new ModelBox(Trim, 34, 17, 5.5F, -13.0F, -6.5F, 2, 2, 13, 0.0F)); + + Base = new ModelRenderer(this); + Base.setRotationPoint(0.0F, 24.0F, 0.0F); + Base.cubeList.add(new ModelBox(Base, 16, 2, -6.0F, -15.0F, -6.0F, 12, 1, 12, 0.0F)); + Base.cubeList.add(new ModelBox(Base, 16, 2, -6.0F, -2.0F, -6.0F, 12, 1, 12, 0.0F)); + } + + public void renderBase(float f5){ + Base.render(f5); + } + + public void renderTrim(float f5){ + Trim.render(f5); + } + + public void renderWall(float f5){ + Wall.render(f5); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireFlame.java b/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireFlame.java new file mode 100644 index 000000000..23b20b30a --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireFlame.java @@ -0,0 +1,57 @@ +package noppes.npcs.client.model.blocks.campfire; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelCampfireFlame extends ModelBase { + private final ModelRenderer[] frames; + private static int frameDuration = 2; + + public ModelCampfireFlame() { + textureWidth = 16; + textureHeight = 144; + + frames = new ModelRenderer[9]; + + // Create frames and add them to the array + frames[0] = new ModelRenderer(this); + frames[0].setRotationPoint(0.0F, 16.5F, 0.0F); + frames[0].cubeList.add(new ModelBox(frames[0], 0, 0, -8.0F, -8.5F, 0.0F, 16, 16, 0, 0.0F)); + + ModelRenderer cube_r1 = new ModelRenderer(this); + cube_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + frames[0].addChild(cube_r1); + setRotationAngle(cube_r1, 0.0F, -1.5708F, 0.0F); + cube_r1.cubeList.add(new ModelBox(cube_r1, 0, 0, -8.0F, -8.5F, 0.0F, 16, 16, 0, 0.0F)); + + // Repeat the above for all frames, incrementing texture offsets for each frame + for (int i = 1; i < 9; i++) { + frames[i] = new ModelRenderer(this); + frames[i].setRotationPoint(0.0F, 16.5F, 0.0F); + frames[i].cubeList.add(new ModelBox(frames[i], 0, i * 16 + 1, -8.0F, -8.5F, 0.0F, 16, 16, 0, 0.0F)); + + ModelRenderer cube_r = new ModelRenderer(this); + cube_r.setRotationPoint(0.0F, 0.0F, 0.0F); + frames[i].addChild(cube_r); + setRotationAngle(cube_r, 0.0F, -1.5708F, 0.0F); + cube_r.cubeList.add(new ModelBox(cube_r, 0, i * 16 + 1, -8.0F, -8.5F, 0.0F, 16, 16, 0, 0.0F)); + } + } + + @Override + public void render(Entity entity, float world_time, float f1, float f2, float f3, float f4, float f5) { + // Calculate the current frame directly using modulo arithmetic + int frameIndex = ((int) world_time / frameDuration) % frames.length; + + // Render only the current frame + frames[frameIndex].render(f5); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireLog.java b/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireLog.java new file mode 100644 index 000000000..20acf6bfc --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireLog.java @@ -0,0 +1,51 @@ +package noppes.npcs.client.model.blocks.campfire; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelCampfireLog extends ModelBase { + private final ModelRenderer bb_main; + private final ModelRenderer cube_r1; + private final ModelRenderer cube_r2; + private final ModelRenderer cube_r3; + + public ModelCampfireLog() { + textureWidth = 16; + textureHeight = 16; + + bb_main = new ModelRenderer(this); + bb_main.setRotationPoint(0.0F, 24.0F, 0.0F); + + + cube_r1 = new ModelRenderer(this); + cube_r1.setRotationPoint(1.25F, -6.3F, 1.25F); + bb_main.addChild(cube_r1); + setRotationAngle(cube_r1, 0.5449F, -1.0854F, -0.744F); + cube_r1.cubeList.add(new ModelBox(cube_r1, 0, 0, -1.0F, -4.0F, -1.0F, 3, 10, 3, 0.0F)); + + cube_r2 = new ModelRenderer(this); + cube_r2.setRotationPoint(-1.5F, -6.0F, -0.25F); + bb_main.addChild(cube_r2); + setRotationAngle(cube_r2, 0.0F, 0.0F, 0.3927F); + cube_r2.cubeList.add(new ModelBox(cube_r2, 0, 0, -2.0F, -4.0F, -1.0F, 3, 10, 3, 0.0F)); + + cube_r3 = new ModelRenderer(this); + cube_r3.setRotationPoint(1.5F, -6.0F, -2.25F); + bb_main.addChild(cube_r3); + setRotationAngle(cube_r3, -0.3295F, 0.7268F, -0.4754F); + cube_r3.cubeList.add(new ModelBox(cube_r3, 0, 0, -2.0F, -4.5F, -1.0F, 3, 10, 3, 0.0F)); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + bb_main.render(f5); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireStone.java b/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireStone.java new file mode 100644 index 000000000..feded698a --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireStone.java @@ -0,0 +1,57 @@ +package noppes.npcs.client.model.blocks.campfire; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelCampfireStone extends ModelBase { + private final ModelRenderer bb_main; + private final ModelRenderer cube_r1; + private final ModelRenderer cube_r2; + private final ModelRenderer cube_r3; + + public ModelCampfireStone() { + textureWidth = 16; + textureHeight = 16; + + bb_main = new ModelRenderer(this); + bb_main.setRotationPoint(0.0F, 24.0F, 0.0F); + bb_main.cubeList.add(new ModelBox(bb_main, 18, 5, 4.0F, -2.0F, 1.0F, 3, 2, 4, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 18, 2, -4.0F, -3.0F, -7.0F, 4, 3, 3, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 17, 0, -3.0F, -3.0F, 5.0F, 4, 3, 3, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 18, 2, -8.0F, -3.0F, -1.0F, 3, 3, 4, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 18, 11, -6.0F, -2.0F, 3.0F, 3, 2, 3, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 16, 0, -7.0F, -2.0F, -5.0F, 3, 2, 4, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 18, 11, 4.0F, -2.0F, -6.0F, 3, 2, 3, 0.0F)); + + cube_r1 = new ModelRenderer(this); + cube_r1.setRotationPoint(6.5F, -1.5F, -1.0F); + bb_main.addChild(cube_r1); + setRotationAngle(cube_r1, 0.0F, -1.5708F, 0.0F); + cube_r1.cubeList.add(new ModelBox(cube_r1, 18, 2, -2.0F, -1.5F, -1.5F, 4, 3, 3, 0.0F)); + + cube_r2 = new ModelRenderer(this); + cube_r2.setRotationPoint(2.5F, -1.5F, -6.0F); + bb_main.addChild(cube_r2); + setRotationAngle(cube_r2, 0.0F, 1.5708F, 0.0F); + cube_r2.cubeList.add(new ModelBox(cube_r2, 18, 5, -1.0F, -0.5F, -2.5F, 3, 2, 4, 0.0F)); + + cube_r3 = new ModelRenderer(this); + cube_r3.setRotationPoint(3.5F, -1.5F, 5.5F); + bb_main.addChild(cube_r3); + setRotationAngle(cube_r3, 0.0F, -1.5708F, 0.0F); + cube_r3.cubeList.add(new ModelBox(cube_r3, 20, 1, -0.5F, -0.5F, -1.5F, 2, 2, 4, 0.0F)); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + bb_main.render(f5); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelBarrel.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBarrel.java similarity index 94% rename from src/main/java/noppes/npcs/client/model/blocks/ModelBarrel.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBarrel.java index acf209070..19ca1d92c 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelBarrel.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBarrel.java @@ -1,10 +1,10 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -public class ModelBarrel extends ModelBase +public class ModelLegacyBarrel extends ModelBase { ModelRenderer Plank1; ModelRenderer Plank2; @@ -18,70 +18,70 @@ public class ModelBarrel extends ModelBase ModelRenderer Plank10; ModelRenderer Plank11; ModelRenderer Plank12; - - public ModelBarrel() - { + + public ModelLegacyBarrel() + { Plank1 = new ModelRenderer(this, 10, 0); Plank1.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank1.setRotationPoint(0F, 7.01F, 0F); setRotation(Plank1, 0F, 0F, 1.570796F); - + Plank2 = new ModelRenderer(this, 10, 8); Plank2.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank2.setRotationPoint(0F, 7F, 0F); setRotation(Plank2, 0F, 0.5235988F, 1.570796F); - + Plank3 = new ModelRenderer(this, 10, 0); Plank3.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank3.setRotationPoint(0F, 7.01F, 0F); setRotation(Plank3, 0F, 1.047198F, 1.570796F); - + Plank4 = new ModelRenderer(this, 10, 8); Plank4.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank4.setRotationPoint(0F, 7F, 0F); setRotation(Plank4, 0F, 1.570796F, 1.570796F); - + Plank5 = new ModelRenderer(this, 10, 0); Plank5.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank5.setRotationPoint(0F, 7.01F, 0F); setRotation(Plank5, 0F, 2.094395F, 1.570796F); - + Plank6 = new ModelRenderer(this, 10, 8); Plank6.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank6.setRotationPoint(0F, 7F, 0F); setRotation(Plank6, 0F, 2.617994F, 1.570796F); - + Plank7 = new ModelRenderer(this, 10, 0); Plank7.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank7.setRotationPoint(0F, 7.01F, 0F); setRotation(Plank7, 0F, 3.150901F, 1.570796F); - + Plank8 = new ModelRenderer(this, 10, 8); Plank8.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank8.setRotationPoint(0F, 7F, 0F); setRotation(Plank8, 0F, -2.617994F, 1.570796F); - + Plank9 = new ModelRenderer(this, 10, 0); Plank9.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank9.setRotationPoint(0F, 7.01F, 0F); setRotation(Plank9, 0F, -2.094395F, 1.570796F); - + Plank10 = new ModelRenderer(this, 10, 8); Plank10.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank10.setRotationPoint(0F, 7F, 0F); setRotation(Plank10, 0F, -1.570796F, 1.570796F); - + Plank11 = new ModelRenderer(this, 10, 0); Plank11.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank11.setRotationPoint(0F, 7.01F, 0F); setRotation(Plank11, 0F, -1.047198F, 1.570796F); - + Plank12 = new ModelRenderer(this, 10, 0); Plank12.addBox(0F, 6.5F, -2F, 17, 1, 4); Plank12.setRotationPoint(0F, 7F, 0F); setRotation(Plank12, 0F, -0.5235988F, 1.570796F); } - + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); @@ -98,13 +98,13 @@ public class ModelBarrel extends ModelBase Plank11.render(f5); Plank12.render(f5); } - + private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = y; model.rotateAngleY = x; model.rotateAngleZ = z; } - + } diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelBarrelLit.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBarrelLid.java similarity index 85% rename from src/main/java/noppes/npcs/client/model/blocks/ModelBarrelLit.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBarrelLid.java index 00db785bc..b8efe0a8f 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelBarrelLit.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBarrelLid.java @@ -1,38 +1,38 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -public class ModelBarrelLit extends ModelBase +public class ModelLegacyBarrelLid extends ModelBase { ModelRenderer Top; ModelRenderer Bottom; - - public ModelBarrelLit() + + public ModelLegacyBarrelLid() { Top = new ModelRenderer(this, 0, 0); Top.addBox(0F, 0F, 0F, 16, 0, 16); Top.setRotationPoint(-8F, 9F, -8F); - + Bottom = new ModelRenderer(this, 0, 0); Bottom.addBox(0F, 0F, 0F, 16, 0, 16); Bottom.setRotationPoint(-8F, 23F, -8F); } - + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); Bottom.render(f5); Top.render(f5); } - + private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = y; model.rotateAngleY = x; model.rotateAngleZ = z; } - + } diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBarrelRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBarrelRenderer.java index e90dd504f..71c66c9c8 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBarrelRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBarrelRenderer.java @@ -4,28 +4,37 @@ import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockBarrel; import noppes.npcs.blocks.tiles.TileColorable; -import noppes.npcs.client.model.blocks.ModelBarrel; -import noppes.npcs.client.model.blocks.ModelBarrelLit; -import noppes.npcs.client.model.blocks.barrel.BarrelCore; -import noppes.npcs.client.model.blocks.barrel.BarrelTrim; +import noppes.npcs.client.model.blocks.barrel.ModelBarrel; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyBarrel; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyBarrelLid; +import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; public class BlockBarrelRenderer extends BlockRendererInterface{ - private final ModelBarrel model = new ModelBarrel(); - private final ModelBarrelLit modelLit = new ModelBarrelLit(); - private static final ResourceLocation resource1 = new ResourceLocation("customnpcs","textures/models/Barrel.png"); + // Legacy + private final ModelLegacyBarrel legacyModel = new ModelLegacyBarrel(); + private final ModelLegacyBarrelLid legacyLid = new ModelLegacyBarrelLid(); + private static final ResourceLocation legacy_texture = new ResourceLocation("customnpcs","textures/models/Barrel.png"); - private final BarrelCore core = new BarrelCore(); - private final BarrelTrim trim = new BarrelTrim(); - private static final ResourceLocation trimTexture = new ResourceLocation("customnpcs","textures/models/BarrelTrim.png"); + // Modern + private final ModelBarrel barrel = new ModelBarrel(); + private static final ResourceLocation trimTexture = new ResourceLocation("customnpcs","textures/models/barrel/trim.png"); + + private static final ResourceLocation oak_lid = new ResourceLocation("customnpcs","textures/models/barrel/oak_lid.png"); + private static final ResourceLocation spruce_lid = new ResourceLocation("customnpcs","textures/models/barrel/oak_lid.png"); + private static final ResourceLocation birch_lid = new ResourceLocation("customnpcs","textures/models/barrel/oak_lid.png"); + private static final ResourceLocation jungle_lid = new ResourceLocation("customnpcs","textures/models/barrel/oak_lid.png"); + private static final ResourceLocation acacia_lid = new ResourceLocation("customnpcs","textures/models/barrel/oak_lid.png"); + private static final ResourceLocation dark_oak_lid = new ResourceLocation("customnpcs","textures/models/barrel/oak_lid.png"); public BlockBarrelRenderer(){ ((BlockBarrel)CustomItems.barrel).renderId = RenderingRegistry.getNextAvailableRenderId(); @@ -39,17 +48,38 @@ public class BlockBarrelRenderer extends BlockRendererInterface{ GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glEnable(GL11.GL_ALPHA_TEST); GL11.glPushMatrix(); - GL11.glTranslatef((float)var2 + 0.5f, (float)var4 + 1.42f, (float)var6 + 0.5f); - GL11.glScalef(1.2f, 0.94f,1.2f); - GL11.glRotatef(180, 0, 0, 1); - GL11.glRotatef(45 * tile.rotation, 0, 1, 0); - GL11.glColor3f(1, 1, 1); - GL11.glEnable(GL11.GL_CULL_FACE); - setWoodTexture(var1.getBlockMetadata()); - core.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - Minecraft.getMinecraft().getTextureManager().bindTexture(trimTexture); - trim.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + + if(ConfigClient.LegacyBarrel){ + GL11.glTranslatef((float)var2 + 0.5f, (float)var4 + 1.42f, (float)var6 + 0.5f); + GL11.glScalef(1.2f, 0.94f,1.2f); + GL11.glRotatef(180, 0, 0, 1); + GL11.glRotatef(45 * tile.rotation, 0, 1, 0); + GL11.glColor3f(1, 1, 1); + + GL11.glEnable(GL11.GL_CULL_FACE); + + setWoodTexture(var1.getBlockMetadata()); + legacyModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + Minecraft.getMinecraft().getTextureManager().bindTexture(legacy_texture); + legacyLid.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + else { + GL11.glTranslatef((float)var2 + 0.5f, (float)var4 + 1.5f, (float)var6 + 0.5f); + GL11.glScalef(1.0f, 1.0f,1.0f); + GL11.glRotatef(180, 0, 0, 1); + GL11.glRotatef(45 * tile.rotation, 0, 1, 0); + GL11.glColor3f(1, 1, 1); + + GL11.glEnable(GL11.GL_CULL_FACE); + + setWoodTexture(var1.getBlockMetadata()); + barrel.renderWall(0.0625F); + Minecraft.getMinecraft().getTextureManager().bindTexture(trimTexture); + barrel.renderTrim(0.0625F); + setLidTexture(var1.getBlockMetadata()); + barrel.renderBase(0.0625F); + } GL11.glPopMatrix(); } @@ -58,20 +88,55 @@ public class BlockBarrelRenderer extends BlockRendererInterface{ public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { GL11.glPushMatrix(); - GL11.glTranslatef(0, 1.05f, 0); - GL11.glScalef(1f, 1f, 1f); - GL11.glRotatef(180, 0, 0, 1); - GL11.glRotatef(180, 0, 1, 0); + if(ConfigClient.LegacyBarrel){ + GL11.glTranslatef(0, 0.75f, 0); + GL11.glScalef(0.7f, 0.7f, 0.7f); + GL11.glRotatef(180, 0, 0, 1); + GL11.glRotatef(180, 0, 1, 0); + + setWoodTexture(metadata); + GL11.glColor3f(1, 1, 1); + legacyModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + + Minecraft.getMinecraft().getTextureManager().bindTexture(legacy_texture); + legacyLid.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + else { + GL11.glTranslatef(0, 0.9f, 0); + GL11.glScalef(0.9f, 0.9f, 0.9f); + GL11.glRotatef(180, 0, 0, 1); + GL11.glRotatef(180, 0, 1, 0); + + setWoodTexture(metadata); + GL11.glColor3f(1, 1, 1); + barrel.renderWall(0.0625F); + Minecraft.getMinecraft().getTextureManager().bindTexture(trimTexture); + barrel.renderTrim(0.0625F); + setLidTexture(metadata); + barrel.renderBase(0.0625F); + } - setWoodTexture(metadata); - GL11.glColor3f(1, 1, 1); - core.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - Minecraft.getMinecraft().getTextureManager().bindTexture(trimTexture); - trim.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); GL11.glPopMatrix(); } - @Override + public void setLidTexture(int meta){ + TextureManager manager = Minecraft.getMinecraft().getTextureManager(); + if(meta == 1) + manager.bindTexture(oak_lid); + else if(meta == 2) + manager.bindTexture(oak_lid); + else if(meta == 3) + manager.bindTexture(oak_lid); + else if(meta == 4) + manager.bindTexture(oak_lid); + else if(meta == 5) + manager.bindTexture(oak_lid); + else + manager.bindTexture(oak_lid); + } + + + @Override public int getRenderId() { return CustomItems.barrel.getRenderType(); } diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java index 9c451f0ca..5e51f1d49 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java @@ -5,17 +5,29 @@ import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockRotated; import noppes.npcs.blocks.tiles.TileColorable; import noppes.npcs.client.model.blocks.ModelCampfire; +import noppes.npcs.client.model.blocks.campfire.ModelCampfireFlame; +import noppes.npcs.client.model.blocks.campfire.ModelCampfireLog; +import noppes.npcs.client.model.blocks.campfire.ModelCampfireStone; +import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; public class BlockCampfireRenderer extends BlockRendererInterface{ - private final ModelCampfire model = new ModelCampfire(); - + // Legacy + private final ModelCampfire legacy_model = new ModelCampfire(); + + // Modern + private final ModelCampfireFlame flameModel = new ModelCampfireFlame(); + private final ModelCampfireLog logsModel = new ModelCampfireLog(); + private final ModelCampfireStone stonesModel = new ModelCampfireStone(); + + public BlockCampfireRenderer(){ ((BlockRotated)CustomItems.campfire).renderId = RenderingRegistry.getNextAvailableRenderId(); ((BlockRotated)CustomItems.campfire_unlit).renderId = ((BlockRotated)CustomItems.campfire).renderId; @@ -29,15 +41,29 @@ public class BlockCampfireRenderer extends BlockRendererInterface{ GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPushMatrix(); GL11.glTranslatef((float)var2 + 0.5f, (float)var4 + 1.5f, (float)var6 + 0.5f); - //GL11.glScalef(0.95f, 0.95f, 0.95f); + GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(45 * tile.rotation, 0, 1, 0); GL11.glColor3f(1, 1, 1); - - Minecraft.getMinecraft().getTextureManager().bindTexture(PlanksOak); - model.renderLog(0.0625F); - Minecraft.getMinecraft().getTextureManager().bindTexture(Stone); - model.renderRock(0.0625F); + + if(ConfigClient.LegacyCampfire){ + Minecraft.getMinecraft().getTextureManager().bindTexture(PlanksOak); + legacy_model.renderLog(0.0625F); + Minecraft.getMinecraft().getTextureManager().bindTexture(Stone); + legacy_model.renderRock(0.0625F); + } + else { + Block block = tile.getBlockType(); + + Minecraft.getMinecraft().getTextureManager().bindTexture(Logs); + logsModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + Minecraft.getMinecraft().getTextureManager().bindTexture(Cobble); + stonesModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + if(block == CustomItems.campfire){ + Minecraft.getMinecraft().getTextureManager().bindTexture(Flame); + flameModel.render(null, tile.getWorldObj().getWorldTime(), 0, 0, 0, 0.0F, 0.0625F); + } + } GL11.glPopMatrix(); } @@ -51,10 +77,19 @@ public class BlockCampfireRenderer extends BlockRendererInterface{ GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(180, 0, 1, 0); GL11.glColor3f(1, 1, 1); - Minecraft.getMinecraft().getTextureManager().bindTexture(PlanksOak); - model.renderLog(0.0625F); - Minecraft.getMinecraft().getTextureManager().bindTexture(Stone); - model.renderRock(0.0625F); + + if(ConfigClient.LegacyCampfire){ + Minecraft.getMinecraft().getTextureManager().bindTexture(PlanksOak); + legacy_model.renderLog(0.0625F); + Minecraft.getMinecraft().getTextureManager().bindTexture(Stone); + legacy_model.renderRock(0.0625F); + } + else { + Minecraft.getMinecraft().getTextureManager().bindTexture(Logs); + logsModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + Minecraft.getMinecraft().getTextureManager().bindTexture(Cobble); + stonesModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } GL11.glPopMatrix(); } diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockRendererInterface.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockRendererInterface.java index 9327b4627..2f203ea3f 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockRendererInterface.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockRendererInterface.java @@ -24,16 +24,13 @@ public abstract class BlockRendererInterface extends TileEntitySpecialRenderer i protected static final ResourceLocation PlanksAcacia = new ResourceLocation("customnpcs","textures/cache/planks_acacia.png"); protected static final ResourceLocation PlanksJungle = new ResourceLocation("customnpcs","textures/cache/planks_jungle.png"); - - protected static final ResourceLocation MCPlanksOak = new ResourceLocation("customnpcs","textures/cache/planks_oak.png"); - protected static final ResourceLocation MCPlanksBigOak = new ResourceLocation("customnpcs","textures/cache/planks_big_oak.png"); - protected static final ResourceLocation MCPlanksSpruce = new ResourceLocation("customnpcs","textures/cache/planks_spruce.png"); - protected static final ResourceLocation MCPlanksBirch = new ResourceLocation("customnpcs","textures/cache/planks_birch.png"); - protected static final ResourceLocation MCPlanksAcacia = new ResourceLocation("customnpcs","textures/cache/planks_acacia.png"); - protected static final ResourceLocation MCPlanksJungle = new ResourceLocation("customnpcs","textures/cache/planks_jungle.png"); - protected static final ResourceLocation Steel = new ResourceLocation("customnpcs","textures/models/Steel.png"); - protected static final RenderItem renderer = new RenderItem(); + + protected static final ResourceLocation Logs = new ResourceLocation("textures/blocks/log_oak.png"); + protected static final ResourceLocation Cobble = new ResourceLocation("textures/blocks/cobblestone.png"); + protected static final ResourceLocation Flame = new ResourceLocation("customnpcs","textures/models/flame.png"); + + protected static final RenderItem renderer = new RenderItem(); public static float colorTable[][] = { { diff --git a/src/main/java/noppes/npcs/config/ConfigClient.java b/src/main/java/noppes/npcs/config/ConfigClient.java index 3b4b7d1b2..06333ac60 100644 --- a/src/main/java/noppes/npcs/config/ConfigClient.java +++ b/src/main/java/noppes/npcs/config/ConfigClient.java @@ -16,6 +16,7 @@ public class ConfigClient public final static String GENERAL = "General"; public final static String VISUAL = "Visual"; public final static String QUESTING = "Questing"; + public final static String MODEL = "Model"; /** @@ -72,6 +73,14 @@ public class ConfigClient public static Property BannerAlertsProperty; public static boolean BannerAlerts = true; + /** + * Model Properties + **/ + public static boolean LegacyCampfire = false; + public static boolean LegacyChair = false; + public static boolean LegacyBarrel = false; + public static boolean LegacyCarpentryBench = false; + public static void init(File configFile) { config = new Configuration(configFile); @@ -128,6 +137,11 @@ public class ConfigClient BannerAlertsProperty = config.get(VISUAL, "All Banner Alerts", true, "Universal enable/disable for Banner Alerts"); BannerAlerts = BannerAlertsProperty.getBoolean(true); + LegacyCampfire = config.get(MODEL, "Legacy Campfire Model", false).getBoolean(false); + LegacyBarrel = config.get(MODEL, "Legacy Barrel Model", false).getBoolean(false); + LegacyChair = config.get(MODEL, "Legacy Chair Model", false).getBoolean(false); + LegacyCarpentryBench = config.get(MODEL, "Legacy Carpentry Bench Model", false).getBoolean(false); + // Convert to Legacy if(CustomNpcs.legacyExist){ EnableChatBubbles = LegacyConfig.EnableChatBubbles; diff --git a/src/main/resources/assets/customnpcs/textures/models/BarrelTrim.png b/src/main/resources/assets/customnpcs/textures/models/BarrelTrim.png deleted file mode 100644 index 6269af2a12e68a6d7b00d554cf5402db372f9962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFgkgHcQKNkg>34Q7=;4w-&#D>wL~h=l1Bv$BiW8Cp zZ|pYo=vAL@s>D@5~2Dwnveul-R-Y52RFVIOYw25Lc zKgblM6vkLstGINF6Nko928Ptgs@tpA{o5tB?2?NEN2ASocKs)-S|hwN867mQzLBeN zV|n4$wEC|UW9`Csi}UtR=}_g}T<%z+!^Le=p0*{gXtt0k>-QC_u07zqyEFUq=b}tk zn>ck&yK~PSGjGWAUE3>PC9wBxnHYoF?cC?F0bD^!|11T9t_J%%%wK=wbL@o1l`NbO ztQcd%>Jzu{&tJcQqu^})^qcH~6Btez{gW4Zx9=bC{PhwH_x#m=7vEue(UbPw^24kG wZXgK$!S>pvQYRqe@&RC=@})+2ruq6ZXaU(AKnwzxf+vG0Pgg&ebxsLQ0HiRV2><{9 diff --git a/src/main/resources/assets/customnpcs/textures/models/barrel/oak_lid.png b/src/main/resources/assets/customnpcs/textures/models/barrel/oak_lid.png new file mode 100644 index 0000000000000000000000000000000000000000..6a15e03678685c57a46e50b4347c2169c5376d0b GIT binary patch literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKn+toT^vI)oZn76=y%9Lpsjt9Q*f?F$Bl~b zj9;F4FK~aXT=C7(<`c)U#d})BAH~KUm>}VtyMmjwFm3m0QK`c*VnWZo|D7rMt^W4S zxiaoU_RG^28L!j#`|T*u5XAMUjK$N;xV$c4mCZJmzWv`nl;mCN{oqsLrTs;bXO=;g zZ-N2WE@#p5m#$HX&f0nJlP~rj>WQ#F!1TGw^J*R6Idz32S5+2G;9~MPmR#X4G*>ut z*_IUsNmu<!KHYk5PRHl`181K`+8_G%w_7Cq$K^e<+Lspp+5WwM_kUgu zsrTDgaI7xf@$c--Q!F=Xy*Ih+Xg{rW_-pZvAoe#PCj|$e*rb{EC4=8Be`Q$LbL*4O zO5RQ0QKxrKz2V&F9}B+T-Swr|S?P`GQ9id{jE{cp%vs7D_TAXgRiG@D^ERW5z4&wC xfCn$Pt<%ck=T`Rh31p4gufWlSKq1T@SgriH+F9pY%K#&d!PC{xWt~$(699@i+t~mB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/barrel/trim.png b/src/main/resources/assets/customnpcs/textures/models/barrel/trim.png new file mode 100644 index 0000000000000000000000000000000000000000..f3db64fb9d030fc521adbca8728310fb11bce681 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1``2&1HTx}g3^b8EV{r$sZVt`_f4TT_zwIs+d_&*RZ{NBbF3>4rj@Q5sC zVBk9p!i>lBSEK+1%RF5iLp;3SPITmJFyLSjfA#;q&WW|EcnRS3Ax_p03PV3iVo zy+QQZ!~0skKKWL{@#dpe0^j+C%E{A|zKaBZ5Sl3aYL9G0ll|LcKo>B0y85}Sb4q9e E0Jp?gRR910 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/flame.png b/src/main/resources/assets/customnpcs/textures/models/flame.png new file mode 100644 index 0000000000000000000000000000000000000000..35a37eaef0511c8b44e0719aa8c7f2fcbe901055 GIT binary patch literal 1693 zcmV;O24eY%P)Px*S4l)cRA_NfiEctO{M>LP$ukpu)|9U?CWeZ3JpvDTOS2jSGQFAA$S> z;r@X@IF|+&Y8(_7cIDQfW;qfL76fiw2m}&qL`ZQW@shp5dXqOlc6P&Y$N63(kF@jV z&Fp;NeD95c|Ez__PI}ozn)lofrY|qMNWEbnP2Umi!Vbb?C#8;r&^#NRvg(i#XS;jxp}gN8O8$-(m*l$KF~I9!SEDy;#Yy*h_C>`UKg zt^tisR<8B1nNLJCe0?+rmtCa($Q2{=C>GZ*Ok>Fos51a;<`a}_J*@*@CjgM*iNlpx zJOFsOzY@Py+a27VUDzX7MhR}uF0h$Tq=$Ihx&~zH*;H!p?2WOWP2mmus0R(Z1A2f) z-OMNW^x;T2j!qYL2lT*tHWjb$=H*-IwX>>|-;Z;P&i7+r~x*YN&)vl^=}`F1tvZz9SxfxW7WV))P+RaHa8q5lozoe*fi1 zF$I%p4&rcyKYsmLw4c2?N2N7DJ!s@}qCawt3#AfFrUQC?&t9ENd`JXydv;;x#ATGg zV*9Y*Ek00_jx5uF!8t)y=eclJ35D;x zLU5*V<8UP)Ot}J?HG<$IDbZ*gjXQf|Au?2{qfLSGB?6O4@@G2W^CcslyqQn1o=xpy zn{xqKr8SW92CLYP!xiFiB@n2d&>ZGQ2gEkCfDiXq*vu!Qy`D|;`Jf&&1nxKU32t7# z6>SrxN$-?4i9d2tZFfYTpjshn|JTeK3hg=*hzi@?*cD3Mq}q*M@5XMrd$cI=2 z1Nx*LXv$iQgu?5JMCDE2F;bi6;BM@uBrJICfNvtsO4<~n(}mbL-Pea&_MWSio4$i; zy9007$Ijju$WW+82b{*h&PE=(dV)(1NL+CAVapMf)<8@#(*ez2t!8FbFN|vdL%L5T z(cFANt*25!ws5`>oh}3?5+m*GjfLb}&!+jWk#fg}`zyhP6u}eV0~6Z5iw|~>76K%u zj;8Od$pA^;5UW&OePaZ?Bb`FD@&xPL0tDYo-Voa~uy5Q0S_IE;P~z{JaKN!qC}XL% zI|2{H3DtH7{>UwMI-A5cSXm^~0XLOYsBHz4dObi`AUJbw$eaR{jGddQFsV^mJ!nYy zFV}if+nVyIaNW!&l1BQj`vn@6*5e6q!9QXj-yceOf=MT2W+6p#g-i>No%C+(rXSxQ zO4*9(S?$7-?iD$3IF(t^7@Q;}P8ziL>p?@v92HDPMxx6J0q1SjUJr7TZ?GLloy)bJ zm`)t7G&oBw^+$fcPz6wJ!;Z#fln6#55YcCr%+aPmmvr1XwW)++JXqGVDXP+4>o-17 z6E7npapM);LiNOYfNcfqF$!Dp;s0(XEl{{HN#v0SWus9El(>LoPnOit7>4)&?7Ezi za(b2gh}YoE_kz3sC^Ee5et2}el8W=1z@U-5VPCuHL*CIw^%JfU2w2{*k7~Q4)mbz3 zLAln$!~K&}jWHoe~ODIYFaA00000NkvXXu0mjf^VuUv literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/flame.png.mcmeta b/src/main/resources/assets/customnpcs/textures/models/flame.png.mcmeta new file mode 100644 index 000000000..503173546 --- /dev/null +++ b/src/main/resources/assets/customnpcs/textures/models/flame.png.mcmeta @@ -0,0 +1,17 @@ +{ + "animation": { + "frametime": 2, + "interpolate": true, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + } +} diff --git a/src/main/resources/assets/customnpcs/textures/models/flame_single.png b/src/main/resources/assets/customnpcs/textures/models/flame_single.png new file mode 100644 index 0000000000000000000000000000000000000000..a913064f4748f48f656edf092bc7f40721e76757 GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D%zl|5Y?Lo9mF zPTZJv*g&A|zgYT-ONvK!1f0;)VDS>yXWj2;)zKr%BFo#l$02^n14Zxdj}QD}nd7#U z7)tDsV&c=3+f}i`ac+snjUAHJliz*0U%ub(z Date: Sun, 26 Jan 2025 15:47:04 -0500 Subject: [PATCH 009/157] Banner Upgrade WIP --- .../model/blocks/banner/ModelBannerFloor.java | 69 ++++++++++++++++++ .../blocks/banner/ModelBannerFloorFlag.java | 30 ++++++++ .../ModelLegacyBanner.java} | 30 ++++---- .../ModelLegacyBannerFlag.java} | 14 ++-- .../ModelLegacyWallBanner.java} | 14 ++-- .../ModelLegacyWallBannerFlag.java} | 6 +- .../renderer/blocks/BlockBannerRenderer.java | 65 +++++++++++++---- .../blocks/BlockWallBannerRenderer.java | 14 ++-- .../java/noppes/npcs/config/ConfigClient.java | 2 + .../models/banner/BannerFloorDiamond.png | Bin 0 -> 1465 bytes .../models/banner/BannerFloorGold.png | Bin 0 -> 1368 bytes .../models/banner/BannerFloorIron.png | Bin 0 -> 797 bytes .../models/banner/BannerFloorStone.png | Bin 0 -> 843 bytes .../models/banner/BannerFloorWood.png | Bin 0 -> 776 bytes .../models/banner/flag/BannerFlag1.png | Bin 0 -> 270 bytes .../models/banner/flag/BannerFlag2.png | Bin 0 -> 282 bytes .../models/banner/flag/BannerFlag3.png | Bin 0 -> 297 bytes .../models/banner/flag/BannerFlag4.png | Bin 0 -> 407 bytes .../models/banner/flag/BannerFlag5.png | Bin 0 -> 270 bytes 19 files changed, 190 insertions(+), 54 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloor.java create mode 100644 src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloorFlag.java rename src/main/java/noppes/npcs/client/model/blocks/{ModelBanner.java => legacy/ModelLegacyBanner.java} (93%) rename src/main/java/noppes/npcs/client/model/blocks/{ModelBannerFlag.java => legacy/ModelLegacyBannerFlag.java} (83%) rename src/main/java/noppes/npcs/client/model/blocks/{ModelWallBanner.java => legacy/ModelLegacyWallBanner.java} (91%) rename src/main/java/noppes/npcs/client/model/blocks/{ModelWallBannerFlag.java => legacy/ModelLegacyWallBannerFlag.java} (78%) create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/BannerFloorDiamond.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/BannerFloorGold.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/BannerFloorIron.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/BannerFloorStone.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/BannerFloorWood.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag1.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag2.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag3.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag4.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag5.png diff --git a/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloor.java b/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloor.java new file mode 100644 index 000000000..b58c134a1 --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloor.java @@ -0,0 +1,69 @@ +package noppes.npcs.client.model.blocks.banner; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelBannerFloor extends ModelBase { + private final ModelRenderer FloorBanner; + private final ModelRenderer Leg4_r1; + private final ModelRenderer Leg3_r1; + private final ModelRenderer Leg2_r1; + private final ModelRenderer Leg1_r1; + private final ModelRenderer Point1_r1; + + public ModelBannerFloor() { + textureWidth = 64; + textureHeight = 64; + + FloorBanner = new ModelRenderer(this); + FloorBanner.setRotationPoint(0.0F, 24.0F, 0.0F); + FloorBanner.cubeList.add(new ModelBox(FloorBanner, 0, 0, -8.0F, -32.0F, -1.0F, 16, 3, 3, 0.0F)); + FloorBanner.cubeList.add(new ModelBox(FloorBanner, 0, 8, -6.0F, -36.0F, 0.5F, 4, 4, 0, 0.0F)); + FloorBanner.cubeList.add(new ModelBox(FloorBanner, 0, 13, -1.0F, -29.0F, -0.5F, 2, 26, 2, 0.0F)); + FloorBanner.cubeList.add(new ModelBox(FloorBanner, 18, 28, -6.0F, -2.0F, -5.0F, 12, 2, 11, 0.0F)); + FloorBanner.cubeList.add(new ModelBox(FloorBanner, 26, 19, -4.0F, -4.0F, -3.0F, 8, 2, 7, 0.0F)); + + Leg4_r1 = new ModelRenderer(this); + Leg4_r1.setRotationPoint(-3.5F, -2.1F, 0.5F); + FloorBanner.addChild(Leg4_r1); + setRotationAngle(Leg4_r1, 0.0F, 0.0F, 1.1781F); + Leg4_r1.cubeList.add(new ModelBox(Leg4_r1, 10, 29, -1.0F, -3.0F, -1.0F, 2, 6, 2, 0.0F)); + + Leg3_r1 = new ModelRenderer(this); + Leg3_r1.setRotationPoint(0.0F, -2.1F, 4.0F); + FloorBanner.addChild(Leg3_r1); + setRotationAngle(Leg3_r1, 1.1781F, 0.0F, 0.0F); + Leg3_r1.cubeList.add(new ModelBox(Leg3_r1, 10, 29, -1.0F, -3.0F, -1.0F, 2, 6, 2, 0.0F)); + + Leg2_r1 = new ModelRenderer(this); + Leg2_r1.setRotationPoint(0.0F, -2.1F, -3.0F); + FloorBanner.addChild(Leg2_r1); + setRotationAngle(Leg2_r1, -1.1781F, 0.0F, 0.0F); + Leg2_r1.cubeList.add(new ModelBox(Leg2_r1, 10, 29, -1.0F, -3.0F, -1.0F, 2, 6, 2, 0.0F)); + + Leg1_r1 = new ModelRenderer(this); + Leg1_r1.setRotationPoint(3.5F, -2.1F, 0.5F); + FloorBanner.addChild(Leg1_r1); + setRotationAngle(Leg1_r1, 0.0F, 0.0F, -1.1781F); + Leg1_r1.cubeList.add(new ModelBox(Leg1_r1, 10, 29, -1.0F, -3.0F, -1.0F, 2, 6, 2, 0.0F)); + + Point1_r1 = new ModelRenderer(this); + Point1_r1.setRotationPoint(4.0F, -34.0F, 0.5F); + FloorBanner.addChild(Point1_r1); + setRotationAngle(Point1_r1, 0.0F, 3.1416F, 0.0F); + Point1_r1.cubeList.add(new ModelBox(Point1_r1, 0, 8, -2.0F, -2.0F, 0.0F, 4, 4, 0, 0.0F)); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + FloorBanner.render(f5); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloorFlag.java b/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloorFlag.java new file mode 100644 index 000000000..25adeb70d --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloorFlag.java @@ -0,0 +1,30 @@ +package noppes.npcs.client.model.blocks.banner; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelBannerFloorFlag extends ModelBase { + private final ModelRenderer BannerFlag; + + public ModelBannerFloorFlag() { + textureWidth = 32; + textureHeight = 32; + + BannerFlag = new ModelRenderer(this); + BannerFlag.setRotationPoint(0.0F, -8.0F, 5.0F); + BannerFlag.cubeList.add(new ModelBox(BannerFlag, 0, 0, -8.0F, 0.0F, -6.05F, 16, 32, 0, 0.0F)); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + BannerFlag.render(f5); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelBanner.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBanner.java similarity index 93% rename from src/main/java/noppes/npcs/client/model/blocks/ModelBanner.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBanner.java index 4f9bde1f8..086e27b65 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelBanner.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBanner.java @@ -1,11 +1,11 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -public class ModelBanner extends ModelBase +public class ModelLegacyBanner extends ModelBase { //fields ModelRenderer Base; @@ -18,50 +18,50 @@ public class ModelBanner extends ModelBase ModelRenderer BaseDeco2; ModelRenderer BaseDeco3; ModelRenderer BaseDeco4; - - public ModelBanner() + + public ModelLegacyBanner() { Base = new ModelRenderer(this, 3, 1); Base.addBox(-7F, 0F, -7F, 14, 1, 14); Base.setRotationPoint(0F, 23F, 0F); - + MiddleStick = new ModelRenderer(this, 12, 2); MiddleStick.addBox(-1F, 0F, -1F, 2, 32, 2); MiddleStick.setRotationPoint(0F, -9F, 0F); - + StickDecoration = new ModelRenderer(this, 11, 12); StickDecoration.addBox(0F, 0F, 0F, 16, 3, 3); StickDecoration.setRotationPoint(-8F, -7.5F, -1.5F); - + TopDecoration = new ModelRenderer(this, 45, 19); TopDecoration.addBox(0F, 0F, 0F, 1, 1, 1); TopDecoration.setRotationPoint(-0.5F, -10F, -0.5F); - + FlagPole1 = new ModelRenderer(this, 45, 19); FlagPole1.addBox(0F, 0F, 0F, 1, 1, 1); FlagPole1.setRotationPoint(-7F, -6.5F, -2.5F); - + FlagPole2 = new ModelRenderer(this, 45, 19); FlagPole2.addBox(0F, 0F, 0F, 1, 1, 1); FlagPole2.setRotationPoint(6F, -6.5F, -2.5F); - + BaseDeco1 = new ModelRenderer(this, 1, 14); BaseDeco1.addBox(0F, 0F, 0F, 12, 1, 1); BaseDeco1.setRotationPoint(-6F, 23F, -8F); - + BaseDeco2 = new ModelRenderer(this, 1, 14); BaseDeco2.addBox(0F, 0F, 0F, 12, 1, 1); BaseDeco2.setRotationPoint(-6F, 23F, 7F); - + BaseDeco3 = new ModelRenderer(this, 2, 2); BaseDeco3.addBox(0F, 0F, 0F, 1, 1, 12); BaseDeco3.setRotationPoint(-8F, 23F, -6F); - + BaseDeco4 = new ModelRenderer(this, 2, 2); BaseDeco4.addBox(0F, 0F, 0F, 1, 1, 12); BaseDeco4.setRotationPoint(7F, 23F, -6F); } - + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); @@ -76,7 +76,7 @@ public class ModelBanner extends ModelBase BaseDeco3.render(f5); BaseDeco4.render(f5); } - + private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelBannerFlag.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBannerFlag.java similarity index 83% rename from src/main/java/noppes/npcs/client/model/blocks/ModelBannerFlag.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBannerFlag.java index bc3ea2656..b6830ad7a 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelBannerFlag.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyBannerFlag.java @@ -1,31 +1,31 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -public class ModelBannerFlag extends ModelBase +public class ModelLegacyBannerFlag extends ModelBase { ModelRenderer Flag; - - public ModelBannerFlag() + + public ModelLegacyBannerFlag() { textureWidth = 32; textureHeight = 32; - + Flag = new ModelRenderer(this, 0, 0); Flag.addBox(0F, 0F, 0F, 15, 27, 0); Flag.setRotationPoint(-7.5F, -7F, -2F); Flag.setTextureSize(32, 32); } - + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); Flag.render(f5); } - + private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelWallBanner.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyWallBanner.java similarity index 91% rename from src/main/java/noppes/npcs/client/model/blocks/ModelWallBanner.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyWallBanner.java index a4f9610a5..851201603 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelWallBanner.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyWallBanner.java @@ -4,13 +4,13 @@ // Keep in mind that you still need to fill in some blanks // - ZeuX -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -public class ModelWallBanner extends ModelBase { +public class ModelLegacyWallBanner extends ModelBase { // fields ModelRenderer MiddleStick; ModelRenderer StickDecoration; @@ -18,24 +18,24 @@ public class ModelWallBanner extends ModelBase { ModelRenderer FlagPole1; ModelRenderer FlagPole2; - public ModelWallBanner() { + public ModelLegacyWallBanner() { MiddleStick = new ModelRenderer(this, 56, 0); MiddleStick.addBox(-1F, 0F, -1F, 2, 3, 2); MiddleStick.setRotationPoint(0F, -9F, 6.5F); - + StickDecoration = new ModelRenderer(this, 11, 12); StickDecoration.addBox(0F, 0F, 0F, 16, 3, 3); StickDecoration.setRotationPoint(-8F, -7.5F, 5F); - + TopDecoration = new ModelRenderer(this, 45, 19); TopDecoration.addBox(0F, 0F, 0F, 1, 1, 1); TopDecoration.setRotationPoint(-0.5F, -10F, 6F); - + FlagPole1 = new ModelRenderer(this, 45, 19); FlagPole1.addBox(0F, 0F, 0F, 1, 1, 1); FlagPole1.setRotationPoint(-7F, -6.5F, 4F); - + FlagPole2 = new ModelRenderer(this, 45, 19); FlagPole2.addBox(0F, 0F, 0F, 1, 1, 1); FlagPole2.setRotationPoint(6F, -6.5F, 4F); diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelWallBannerFlag.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyWallBannerFlag.java similarity index 78% rename from src/main/java/noppes/npcs/client/model/blocks/ModelWallBannerFlag.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyWallBannerFlag.java index a32a5fed6..17e152f3a 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelWallBannerFlag.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyWallBannerFlag.java @@ -1,13 +1,13 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -public class ModelWallBannerFlag extends ModelBase { +public class ModelLegacyWallBannerFlag extends ModelBase { ModelRenderer Flag; - public ModelWallBannerFlag() { + public ModelLegacyWallBannerFlag() { textureWidth = 32; textureHeight = 32; Flag = new ModelRenderer(this, 0, 0); diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java index 163428087..f428c0372 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java @@ -14,19 +14,31 @@ import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockBanner; import noppes.npcs.blocks.tiles.TileBanner; -import noppes.npcs.client.model.blocks.ModelBanner; -import noppes.npcs.client.model.blocks.ModelBannerFlag; +import noppes.npcs.client.model.blocks.banner.ModelBannerFloor; +import noppes.npcs.client.model.blocks.banner.ModelBannerFloorFlag; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyBanner; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyBannerFlag; +import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; public class BlockBannerRenderer extends BlockRendererInterface{ - private final ModelBanner model = new ModelBanner(); - private final ModelBannerFlag flag = new ModelBannerFlag(); + private final ModelLegacyBanner legacyBanner = new ModelLegacyBanner(); + private final ModelLegacyBannerFlag legacyFlag = new ModelLegacyBannerFlag(); - public static final ResourceLocation resourceFlag = new ResourceLocation("customnpcs","textures/models/BannerFlag.png"); + private final ModelBannerFloor banner = new ModelBannerFloor(); + private final ModelBannerFloorFlag flag = new ModelBannerFloorFlag(); + public static final ResourceLocation legacyFlagResource = new ResourceLocation("customnpcs","textures/models/BannerFlag.png"); + public static final ResourceLocation flagResource = new ResourceLocation("customnpcs","textures/models/banner/flag/BannerFlag1.png"); + + protected static final ResourceLocation BannerWood = new ResourceLocation("customnpcs","textures/models/banner/BannerFloorWood.png"); + protected static final ResourceLocation BannerStone = new ResourceLocation("customnpcs","textures/models/banner/BannerFloorStone.png"); + protected static final ResourceLocation BannerIron = new ResourceLocation("customnpcs","textures/models/banner/BannerFloorIron.png"); + protected static final ResourceLocation BannerGold = new ResourceLocation("customnpcs","textures/models/banner/BannerFloorGold.png"); + protected static final ResourceLocation BannerDiamond = new ResourceLocation("customnpcs","textures/models/banner/BannerFloorDiamond.png"); public BlockBannerRenderer(){ ((BlockBanner)CustomItems.banner).renderId = RenderingRegistry.getNextAvailableRenderId(); @@ -46,13 +58,24 @@ public class BlockBannerRenderer extends BlockRendererInterface{ GL11.glRotatef(90 * tile.rotation, 0, 1, 0); GL11.glColor3f(1, 1, 1); - setMaterialTexture(var1.getBlockMetadata()); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + if(ConfigClient.LegacyBanner){ + setMaterialTexture(var1.getBlockMetadata()); + legacyBanner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - this.bindTexture(resourceFlag); - float[] color = colorTable[tile.color]; - GL11.glColor3f(color[0], color[1], color[2]); - flag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + this.bindTexture(legacyFlagResource); + float[] color = colorTable[tile.color]; + GL11.glColor3f(color[0], color[1], color[2]); + legacyFlag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + else { + setBannerMaterial(var1.getBlockMetadata()); + banner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + + this.bindTexture(flagResource); + float[] color = colorTable[tile.color]; + GL11.glColor3f(color[0], color[1], color[2]); + flag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } GL11.glPopMatrix(); GL11.glColor3f(1, 1, 1); @@ -135,12 +158,12 @@ public class BlockBannerRenderer extends BlockRendererInterface{ setMaterialTexture(metadata); GL11.glColor3f(1, 1, 1); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + legacyBanner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - this.bindTexture(resourceFlag); + this.bindTexture(legacyFlagResource); float[] color = colorTable[15 - metadata]; GL11.glColor3f(color[0], color[1], color[2]); - flag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + legacyFlag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); GL11.glPopMatrix(); } @@ -152,4 +175,18 @@ public class BlockBannerRenderer extends BlockRendererInterface{ public int specialRenderDistance(){ return 26; } + + public void setBannerMaterial(int meta){ + TextureManager manager = Minecraft.getMinecraft().getTextureManager(); + if(meta == 1) + manager.bindTexture(BannerStone); + else if(meta == 2) + manager.bindTexture(BannerIron); + else if(meta == 3) + manager.bindTexture(BannerGold); + else if(meta == 4) + manager.bindTexture(BannerDiamond); + else + manager.bindTexture(BannerWood); + } } diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockWallBannerRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockWallBannerRenderer.java index d76e72669..0b83c9fa3 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockWallBannerRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockWallBannerRenderer.java @@ -2,8 +2,6 @@ package noppes.npcs.client.renderer.blocks; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; -import net.minecraft.block.BlockColored; -import net.minecraft.block.material.MapColor; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderBlocks; @@ -17,15 +15,15 @@ import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockWallBanner; import noppes.npcs.blocks.tiles.TileWallBanner; -import noppes.npcs.client.model.blocks.ModelWallBanner; -import noppes.npcs.client.model.blocks.ModelWallBannerFlag; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyWallBanner; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyWallBannerFlag; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; public class BlockWallBannerRenderer extends BlockRendererInterface{ - private final ModelWallBanner model = new ModelWallBanner(); - private final ModelWallBannerFlag flag = new ModelWallBannerFlag(); + private final ModelLegacyWallBanner model = new ModelLegacyWallBanner(); + private final ModelLegacyWallBannerFlag flag = new ModelLegacyWallBannerFlag(); public BlockWallBannerRenderer(){ ((BlockWallBanner)CustomItems.wallBanner).renderId = RenderingRegistry.getNextAvailableRenderId(); @@ -48,7 +46,7 @@ public class BlockWallBannerRenderer extends BlockRendererInterface{ GL11.glColor3f(1, 1, 1); model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - this.bindTexture(BlockBannerRenderer.resourceFlag); + this.bindTexture(BlockBannerRenderer.legacyFlagResource); float[] color = BlockBannerRenderer.colorTable[tile.color]; GL11.glColor3f(color[0], color[1], color[2]); flag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); @@ -154,7 +152,7 @@ public class BlockWallBannerRenderer extends BlockRendererInterface{ GL11.glColor3f(1, 1, 1); model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - this.bindTexture(BlockBannerRenderer.resourceFlag); + this.bindTexture(BlockBannerRenderer.legacyFlagResource); float[] color = BlockBannerRenderer.colorTable[15 - metadata]; GL11.glColor3f(color[0], color[1], color[2]); flag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); diff --git a/src/main/java/noppes/npcs/config/ConfigClient.java b/src/main/java/noppes/npcs/config/ConfigClient.java index 06333ac60..3824f8e9b 100644 --- a/src/main/java/noppes/npcs/config/ConfigClient.java +++ b/src/main/java/noppes/npcs/config/ConfigClient.java @@ -77,6 +77,7 @@ public class ConfigClient * Model Properties **/ public static boolean LegacyCampfire = false; + public static boolean LegacyBanner = false; public static boolean LegacyChair = false; public static boolean LegacyBarrel = false; public static boolean LegacyCarpentryBench = false; @@ -138,6 +139,7 @@ public class ConfigClient BannerAlerts = BannerAlertsProperty.getBoolean(true); LegacyCampfire = config.get(MODEL, "Legacy Campfire Model", false).getBoolean(false); + LegacyBanner = config.get(MODEL, "Legacy Banner Model", false).getBoolean(false); LegacyBarrel = config.get(MODEL, "Legacy Barrel Model", false).getBoolean(false); LegacyChair = config.get(MODEL, "Legacy Chair Model", false).getBoolean(false); LegacyCarpentryBench = config.get(MODEL, "Legacy Carpentry Bench Model", false).getBoolean(false); diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/BannerFloorDiamond.png b/src/main/resources/assets/customnpcs/textures/models/banner/BannerFloorDiamond.png new file mode 100644 index 0000000000000000000000000000000000000000..e55449a68934b636848eb47ace05287084dce32c GIT binary patch literal 1465 zcmV;q1xEUbP)Px)b4f%&RCt{2nonpPRT#j36SwZLnRT)uDNUrXRx7r~LP{%?P})OL>P4g;JlR5v zR>-LoJQmMNPlZ&mXz?Hgdyoo65HysfVp{{-wbjPPTug#l_K!Qe&eq8DF!SEd&d#pc zq`QmF{4Uvf-?wkx_ulut?|W~f;o*a~_Y3*?@cHk^P~zufF9Fc6M*&za+5o)y`S)Zf zQ8@J)0Hw+b0P$D^fZJ!kVmg)Km2;B-44XOtWxMM1^Xa!tr!pMxXGZ|K*fb%QBYR+w9~Sjv^vV5LD4ufg*3JLnvk7*o1syUJ3o%-o_ysj{Nv zm8xjyubV{PePgc}Hg%SZHp8awu9CrRS3$0<*AOqVy7oCP)-+IvS|R4XqJL9&DeICJrb zN7@r2cn&m`YU_i~qlgNDjbLmLk)TF-;@b$55~)-LTLztD?%bkPC+yZO&C9t(VHF#< zn(?Gj_dGLiHRu?o;OoJWHSbe_9?)&9qK07#&L%dKqTrEKN#pECyQs1&xk*VT7~oX? z4}vDH9Rkx}sj|XSuDq^}+eI4x(SP4?~cgp@UmTPaQlaOJ3H~)QeaN?r@FN;DJ&6` zA^}oQZE2Y%8h#m~gPve#7udJw*}69GihBRbc0W??$2*boyQ@i&5t>wd54#GKD{;$L z_!wqw(6u&!Rn!I#o(2ej3JkAM`V299@F}S;XP#COM|N6~)ZH=QR zS->y_Cq#mewLCP*>)R9Yx(R5eU-J;>`A(tO)>!(yMwjhsUF>&qLhfpgi?6n*3DWn5 zhxCG-17=&}h{*I;wyU1gU#+bZSVfJg#9#0q#(Q`1DT4LoUg6hYEq!z;3;0=073WQD ze*M{eNf|F!e>`cl9|En;{GGZF@UB`bn$-f{cJI#LOurR9xeu_48tFuH_YX2e9*rG0 z*XrWl+rD$a66k?hL$E-PLbm`p_sp{(6_=hxP(+{r)}f6pHK|Fv;Q^l4Q)cyZcKXS_ssaw@!=) zm9}f)!Z$bA{mc&Zp;30b9wG5Q%l`Mdha>r3nq&*Z6!rH3{=DCA9nfH4qRD4h_xjD+ zib|TTsB~|?Tz=nw$WmkRz1Q2emQ6DxBqSsxBqSsxBqSsxBqSsxBqSsxPx)5=lfsRCt{2nZb)2RT#j3n@lE?WXp6L7k62fLJMsVixfo*f)v}M|A4pNs$P1q zf?%Pgg^CAzQ9LA;-J%O6ghons9kQ7uvrWds%zJq=nZ!-D$zc0_ zm&|7j28D zPMbyB3TJ6v&X6#MP`a;dAtEnXL0@6OJJ)vQN3MRHf$|c!uGXX>?_ArJ?+)6RIkEh% zPiXX6g@aMd&xLMjg#()0h2!s%;S|1W=~zjAI1)}FwVmdG2TmKq?fBGonlc6ttv;l{mR zUuaJ-PzoARkqs6;FD^0!UIt~87&s3=In{X?jAFPQpQU3#nY;aDFVZ-xQyTZT(|*?3 zACQ|XtC9Pp#H?%QD88{Z@j8|00kbCS?9;V#6wZDGyBpEQx)c1CZA>*=UARE&!M7wC zZX6P~!G`;c+D`LOFCG`6{Jk5$aO3iNAgnvI_G+~DYJEcpb~l1&4vB$s5|b+7%x^zw zNs(8rfSr@q;?P9aEpcy|fDFpEr;?UIPAmt( z!OST{W>onV@;LG51*##%vj^EC4TfZV&pQk3&%{Wf$n$IeO(QWa?i9f`om&FuxQrz_9*u z@e>}?cE=h^Mpat;{Uw;DK{CDI;Ps$MO;Z0zc!XYHTE(%(VTkQd{O=dgmraALvk!m% zc(8tgA^pW#G0^{jWSG$|Fu(z_xJZr=>)+a|N#*72udI$A0;6jFX`KhCvo?xhxjRV!r0b(q~{V|`AY`G?I1Ca=HuDgc}J8+dIuTPx%*GWV{RCt{2nlXzLK@`XTSr&HL7y<(UZ7uQ*3|L%iuhm^4K@hGGu~4uOk#N;P zEUvH+6tObJ!hHZs3&HDBZgJRMATSVeyX-<>EG}=DOg49?atYaaziM}8*q!(0y?OKA zZVd+g{T)TuyKlciN{Qq5PXPe+FaQ9ICpiG%dH)zvO8ort0st`0W&nUj-W&AITK;FwlwtLM3WZJJ*$wqDSeVQ-o8k2A93z?P z$&x^XDKK3NA<%BO_1H8oFp?=w&(1N;X1YHs)Y9|TiT`@{o@zBij3+r-&2YX-xAXv7 zSyK=bYOjYEW62r@2YY(VgJ&Ngguv%FkF0>^Qzgb>as!D;kK#Y}{-p~PepEad{OQR{U(dgUnzGLNwDzW%DT zCHOEBnyk1y@u?!(1zZre48N?AGCmiS;$?+GBk~tgRbo?BnswrQ6ex9pX*P4h{6Pw! zN{owmC@FHTYO5k1)$7Z+tgk98>;WzaY~$I*P?L35XE(({7#vS>CxkZfuwwO{3WLx! z{Hs^L*X<}XYuxs1@vp-meF2JsS|yIk*Ny_cZb#W^a;q7lzrUl>yx3Yx@J*rZufMiJ z>@2YgS))gjPxAs+q@U}w5gS03r4@eth(PuO4H$0*j7;m z7tux0vOhn}bHU-@WGi?1tI$VbGw!>R3WG~x);YkA`!1%(48t%C!!QiPFbu;m48t%C bQ(^u9JtmjdZcEJD00000NkvXXu0mjfSZryy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/BannerFloorStone.png b/src/main/resources/assets/customnpcs/textures/models/banner/BannerFloorStone.png new file mode 100644 index 0000000000000000000000000000000000000000..ae032ed57a564216f56f127f790260bf13f9c378 GIT binary patch literal 843 zcmV-R1GM~!P)Px&1xZ9fRCt{2n$K&~P#nNNje&$_Yqh1I2M?8=Cy36AI|%B@v+Oo+`v(M%vZJtn zU^l%DkFwJgWb7a+3{(UUWj%OUp)|AY5)$Z$hxR>RW4g`57Mi@zDam^z`Tly}_x&aX z6xLUlB5{2E?oAr?5?im{1K`*e0G(a{z?0R7G+TXsfByl%z#jrIUo-)z-&>$sad@-w z4uD$O2EYqK03JVmK-cy7w!J5x|7>Hozy)KfC!JnE(Hgx&qh12wYQ>S`1Aj=ZY)c^; z^%7e<9*%8E#lUF%cEzFD>Ql4|QhD=5Q!1$0>eHx~v7mS2F0rJV-(Nvf)FnV@xzE(+2-{z|Wn(E*!s?5LS58N#WFN^=Z5Da5{esKa6O* zo_wfk;ltkXgyq|=$Ns?)1Ai#p-wz`>Cw?!-wq$HqD-HvH$o|0*ZP$~}acqmKqL{dc zX*3#*Mx!}5`QllZ3}fYQ~;gHjAXjF>N)6Q!yktuD<)lKU)>7y<)-m<#tuC_r>#@`!ss zdGYDm4Px%!bwCyRCt{2nz4)1P#niU4Z(!=N}+dwx}DqYVkd8KIBpa-w=TlrCD*fUUR9Q$~83keWoNYwD0@N@ArQ1_e)whoE+`v z=J?g;pTv_XcdmB<=!5|P@k|5o@#_`h$&~vC0{{|r20*v%1Mu|q7_Aa+53d3c^+Etr zodNLjLxNTb_YSVv|9^P;rp21^-II8xX$SK;#FP012mOH^Pt+MvFC^6&@nnit3FB#( zP8e9jKxjn*w1bv4UbpRA13?0gK~!dKzgGO>g=H~w(XL@SVXzRC*n3>T<~Z8!6FZ)h z>Woxps4OSyg?8MWt4vb`{-e7$@~9UQ&ooglTs);M`1Bndmv@D@nCqQzey=g$;hqQV z0Py_nH=^x6H+O$nLmuvV#IvoX@zV#lau!BkS2+0XptW$za3S{JUAXvLMyz4b@7QBE zoDAb>dd>qc8((EP<7sMR@PAym_*+JdRtYhXsGZVq(&`H_z;5@PhY5lp2!e2F*qw@7 z2vJdCQUzYs6R4Wj@n~qDyxGCITiD0X-qqR@e4OpBsmN9pK6S)~Koi84ajqYL)75E$ zQ9PC9bld(?scNXIOS4WIp9M-oAW>(HaDR*eOedy^csOa#r6~sSOuxR2-;LFUr8S@l zf{S>j16#J}t+P8@6-#L_p6N!2cJWy8^c$51S*-dOc|CPJ8s=`*xarm6U#CIy2B;mh zYOz(ma27Zo4fA4|9Q8s@j`s6ZXB+DYzAM@YGeV07DOQPfs2V*pdGp>+WjXG(y5n=f zEa1j_G4?lkE%42vRz^{n`3z>&`6g0Y4zHr<6?F&^+Y~MP^26O1JbCecBUkx9VYk9= z-fv1NjI_iG`+#EJZ(?~Y2!bF8f*=TjAP9mW2!bF8HRcz&i+dx7-4_A?0000ygM1AJ9M0{3{@ZgeUD52SFX!`S;TO{sV{e%WGGenT zjAPdnYMcbATDT!HPfBx{Dx$=lh?bUwn;LQ)p=gm@0N-qBG zdce+Vx8@>^u2Y921P!ga*}G-F-4vYkc7bP*rC9!#4GVTL-!Wpl%2UQ226P64r>mdK II;Vst0AmPV<^TWy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag2.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag2.png new file mode 100644 index 0000000000000000000000000000000000000000..ea3b68322c77c2ecf27210bea5f6529b448c1b83 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}S3F%DLn2z= zPB-K`tia=HAE?HErz^Nvn?LR{=My$91&gdJpWKB%&X-MY>^79M=$!d*Z~id`g_Z|h z4;soC6c!~dR990nzQ@pzTh;FQ_RO5qvyF06^_3FRq#M4(XD^#?@+sH*_Ep}s3j6Lc zb3c$|2xsd$D&RDW*>msQTswBRei6aOj=E$K{RY+z4D%R2Twi>Hv0>k=?FuE&Hiv)W znV{gNm5}(4?E-gVX5VK`4#gcINwHb7n@#i?Oj`1c()JzQ!^LnlMrqRK{fGCglz1Fi ey+<$d6{|{Yxpz$NEeW9i7(8A5T-G@yGywpaNoi#O literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag3.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag3.png new file mode 100644 index 0000000000000000000000000000000000000000..6639685fd308503f930cec00dbe66d62a651399a GIT binary patch literal 297 zcmV+^0oMMBP)Px#<4Ht8R9J=WmoW~*APhx+P$mz#6(``hT*$Krujx`pQInJ;I4Y|6qe1wA;R_Er z=NTUo5lqumi~&H5ao7YeXaoQv+6)^n9km8cOSU=q=*Pa^dDB-0XjejXak^GE4Czi z@yD%LRhKV!&Us$XdEAQE$?^XCdmVWZfSGrjjTqy=%+CTaGg3;2olZ*09by4c)vw9d v5T4}-BC@G@Np>eZUP8dl2D7#)?J~Up9659R9hV%u00000NkvXXu0mjfi5hgO literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag4.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag4.png new file mode 100644 index 0000000000000000000000000000000000000000..221b9c757a41a85cde975ccd401fa61f2b2a7fe5 GIT binary patch literal 407 zcmV;I0cie-P)Px$QAtEWR9J=WS241MAPig_s}$7lF4UZWb8-SMWSt_dzsei+;Yc)ge;a2I+)W4@ z46U^l2QV{YjF)2okaG?{g9gk1Ktw+;M#evP>2cq?8^-e8kMm-}GvPXVELU zh=7@01WYl;9r+oy>CQO^UH4c31`COZpat7nTdxG01OPxvDU1|Vt<{YjdI~TYl_#;n zbPC=OG2w-@ng!gcW)BmB`ha3I3!XkOk9fclL$(D9bU2;s(hX~^>zxm|b;CP8;EA0NSc>ZvE4JVj zD_)kRd-Ls$c@!YFr$9tdO1ZohiHM5p}nk002ovPDHLkV1ja2 Bsh|J= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag5.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag5.png new file mode 100644 index 0000000000000000000000000000000000000000..f2ad436b759ea003ac80c5093229354609198eb6 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Cp=voLn2z= zPPgVeV!+`NzbHgxU#Q>P=)enU+F|!Zm)ug~&?_6k0zja9yTXy)$f7wgq}gg*Y@ zS<+C>u_H-CP_5;6!{Zkz?Y|G)jQ4U8nD~FgBasPAK?kf^mWVDFweRFRuw6O7b>><< z#kZD>(SmV|{!cnXzb@bZ_JZrA$D$d5*>j(DcX4YhZ4u1p%4pqk|KbtO Date: Sun, 26 Jan 2025 16:48:53 -0500 Subject: [PATCH 010/157] Campfire Model Completed + Particles --- src/main/java/noppes/npcs/CommonProxy.java | 8 +- .../noppes/npcs/blocks/BlockCampfire.java | 6 +- .../npcs/blocks/tiles/TileCampfire.java | 53 ++++- .../java/noppes/npcs/client/ClientProxy.java | 15 +- .../npcs/client/fx/EntityBigSmokeFX.java | 218 ++++++++++++++++++ .../blocks/campfire/ModelCampfireCoals.java | 30 +++ .../blocks/campfire/ModelCampfireLog.java | 68 +++--- .../blocks/BlockCampfireRenderer.java | 10 + .../textures/models/CampfireCoals.png | Bin 0 -> 307 bytes .../textures/particle/big_smoke_0.png | Bin 0 -> 130 bytes .../textures/particle/big_smoke_1.png | Bin 0 -> 139 bytes .../textures/particle/big_smoke_10.png | Bin 0 -> 124 bytes .../textures/particle/big_smoke_11.png | Bin 0 -> 101 bytes .../textures/particle/big_smoke_2.png | Bin 0 -> 165 bytes .../textures/particle/big_smoke_3.png | Bin 0 -> 169 bytes .../textures/particle/big_smoke_4.png | Bin 0 -> 177 bytes .../textures/particle/big_smoke_5.png | Bin 0 -> 159 bytes .../textures/particle/big_smoke_6.png | Bin 0 -> 156 bytes .../textures/particle/big_smoke_7.png | Bin 0 -> 150 bytes .../textures/particle/big_smoke_8.png | Bin 0 -> 140 bytes .../textures/particle/big_smoke_9.png | Bin 0 -> 128 bytes 21 files changed, 368 insertions(+), 40 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/fx/EntityBigSmokeFX.java create mode 100644 src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireCoals.java create mode 100644 src/main/resources/assets/customnpcs/textures/models/CampfireCoals.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_0.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_1.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_10.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_11.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_2.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_3.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_4.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_5.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_6.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_7.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_8.png create mode 100644 src/main/resources/assets/customnpcs/textures/particle/big_smoke_9.png diff --git a/src/main/java/noppes/npcs/CommonProxy.java b/src/main/java/noppes/npcs/CommonProxy.java index 067e2f1b3..a19cb1791 100644 --- a/src/main/java/noppes/npcs/CommonProxy.java +++ b/src/main/java/noppes/npcs/CommonProxy.java @@ -17,7 +17,7 @@ import noppes.npcs.containers.*; import noppes.npcs.controllers.data.PlayerData; import noppes.npcs.entity.EntityNPCInterface; -public class CommonProxy implements IGuiHandler { +public abstract class CommonProxy implements IGuiHandler { public boolean newVersionAvailable = false; public int revision = 1; @@ -159,11 +159,13 @@ public class CommonProxy implements IGuiHandler { } - public String getAchievementDesc(Achievement achievement) { + public abstract void generateBigSmokeParticles(World world, int x, int y, int z, boolean signalFire); + + public String getAchievementDesc(Achievement achievement) { return ""; } public boolean isGUIOpen(){ return false; } -} \ No newline at end of file +} diff --git a/src/main/java/noppes/npcs/blocks/BlockCampfire.java b/src/main/java/noppes/npcs/blocks/BlockCampfire.java index a00d5fc3e..1c3cd08db 100644 --- a/src/main/java/noppes/npcs/blocks/BlockCampfire.java +++ b/src/main/java/noppes/npcs/blocks/BlockCampfire.java @@ -19,6 +19,8 @@ import org.lwjgl.opengl.GL11; import java.util.Random; +import static noppes.npcs.client.ClientProxy.RAND; + public class BlockCampfire extends BlockLightable{ public BlockCampfire(boolean lit) { @@ -88,7 +90,9 @@ public class BlockCampfire extends BlockLightable{ CustomNpcs.proxy.spawnParticle("largesmoke", d0, d1, d2, 0.0D, 0.0D, 0.0D, 2); CustomNpcs.proxy.spawnParticle("flame", d0, d1, d2, 0.0D, 0.0D, 0.0D, 4); } - + else { + tile.updateEntity(); + } GL11.glPopMatrix(); } diff --git a/src/main/java/noppes/npcs/blocks/tiles/TileCampfire.java b/src/main/java/noppes/npcs/blocks/tiles/TileCampfire.java index 178bc5d3d..e0e50f6ba 100644 --- a/src/main/java/noppes/npcs/blocks/tiles/TileCampfire.java +++ b/src/main/java/noppes/npcs/blocks/tiles/TileCampfire.java @@ -1,7 +1,58 @@ package noppes.npcs.blocks.tiles; +import noppes.npcs.CustomNpcs; + +import java.util.Random; public class TileCampfire extends TileColorable { - + + public static final Random RAND = new Random(); + private boolean rainAndSky = false; + private boolean previousTickLit = false; + + @Override + public void updateEntity() + { + if (getWorldObj().isRemote) + { + if (isLit()) + { + if (!previousTickLit || distributedInterval(50L)) + rainAndSky = isBeingRainedOn(); + + addParticles(); + } + + previousTickLit = isLit(); + } + } + + public boolean distributedInterval(long interval) + { + if (hasWorldObj()) + return (getWorldObj().getTotalWorldTime() + (long) (xCoord + yCoord + zCoord)) % interval == 0L; + else + return false; + } + + protected void addParticles() + { + CustomNpcs.proxy.generateBigSmokeParticles(getWorldObj(), xCoord, yCoord, zCoord, false); + if (rainAndSky) + { + for (int i = 0; i < RAND.nextInt(3); ++i) + getWorldObj().spawnParticle("smoke", xCoord + RAND.nextDouble(), yCoord + 0.9, zCoord + RAND.nextDouble(), 0.0, 0.0, 0.0); + } + } + public boolean isBeingRainedOn() + { + return getWorldObj().isRaining() && getWorldObj().getPrecipitationHeight(xCoord, zCoord) <= yCoord + 1 + && getWorldObj().getBiomeGenForCoords(xCoord, zCoord).canSpawnLightningBolt(); + } + + public boolean isLit() + { + return this.getBlockMetadata() == 0; + } } diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index b13a75387..8b511254e 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -6,6 +6,7 @@ import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.ObfuscationReflectionHelper; import kamkeel.addon.client.DBCClient; +import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.model.ModelBiped; @@ -32,6 +33,7 @@ import noppes.npcs.*; import noppes.npcs.api.IWorld; import noppes.npcs.blocks.tiles.*; import noppes.npcs.client.controllers.*; +import noppes.npcs.client.fx.EntityBigSmokeFX; import noppes.npcs.client.fx.EntityElementalStaffFX; import noppes.npcs.client.fx.EntityEnderFX; import noppes.npcs.client.fx.EntityRainbowFX; @@ -76,7 +78,7 @@ import java.util.Random; public class ClientProxy extends CommonProxy { public static KeyBinding NPCButton; - + public static final Random RAND = new Random(); public static FontContainer Font; public void load() { @@ -541,6 +543,17 @@ public class ClientProxy extends CommonProxy { } } + @Override + public void generateBigSmokeParticles(World world, int x, int y, int z, boolean signalFire) + { + if (RAND.nextFloat() < 0.11F) + { + float[] colours = new float[0]; + for (int i = 0; i < RAND.nextInt(2) + 1; ++i) + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBigSmokeFX(world, x, y, z, signalFire, colours)); + } + } + @Override public String getAchievementDesc(Achievement achievement) { return achievement.getDescription(); diff --git a/src/main/java/noppes/npcs/client/fx/EntityBigSmokeFX.java b/src/main/java/noppes/npcs/client/fx/EntityBigSmokeFX.java new file mode 100644 index 000000000..c645c637e --- /dev/null +++ b/src/main/java/noppes/npcs/client/fx/EntityBigSmokeFX.java @@ -0,0 +1,218 @@ +package noppes.npcs.client.fx; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.common.eventhandler.Cancelable; +import cpw.mods.fml.relauncher.Side; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.ActiveRenderInfo; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.EntityEvent.EntityConstructing; + +public class EntityBigSmokeFX extends EntityFX +{ + + /** there are 12 smoke textures. */ + public static final int TEXTURE_COUNT = 12; + public static final ResourceLocation[] TEXTURES = new ResourceLocation[TEXTURE_COUNT]; + static + { + for (int i = 0; i < TEXTURE_COUNT; i++) + TEXTURES[i] = new ResourceLocation("customnpcs" + ":" + "textures/particle/big_smoke_" + i + ".png"); + } + + protected final int texIndex; + protected boolean alphaFading = false; + protected float alphaFadePerTick = -0.015F; + protected boolean localizedCombustion = true; + protected boolean isColored = false; + + /** + * Posts a {@link EntityBigSmokeFXConstructingEvent}. + */ + public EntityBigSmokeFX(World world, int x, int y, int z, boolean signalFire, float[] colours) { + super(world, x, y, z); + + // Position: Centered above the spawn point with slight randomness + this.setPosition( + x + 0.5 + (rand.nextDouble() / 10.0 * (rand.nextBoolean() ? 1 : -1)), // Small horizontal offset + y + 0.1 + (rand.nextDouble() * 0.1), // Start slightly above y + z + 0.5 + (rand.nextDouble() / 10.0 * (rand.nextBoolean() ? 1 : -1)) + ); + + // Scale: Smoke size + this.particleScale = 4.0F * (rand.nextFloat() * 0.5F + 0.5F); // Smaller size + this.setSize(0.25F, 0.25F); + + // Gravity: Slows upward motion gradually + this.particleGravity = 0.005F; + + // Upward motion: Slow, with slight randomness + this.motionX = 0; // No horizontal motion + this.motionY = 0.02F + rand.nextFloat() * 0.01F; + this.motionZ = 0; // No horizontal motion + + this.particleMaxAge = rand.nextInt(50) + 100; // Shorter lifetime for normal smoke + this.particleAlpha = 0.8F; + + if (colours.length == 3) { + this.setRBGColorF(colours[0], colours[1], colours[2]); + } + + // Smoke appearance + this.texIndex = rand.nextInt(TEXTURE_COUNT); + this.isColored = this.particleRed != 1.0F || this.particleGreen != 1.0F || this.particleBlue != 1.0F; + } + + @Override + public void renderParticle(Tessellator tess, float partialTicks, float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) + { + rotX = ActiveRenderInfo.rotationX; + rotXZ = ActiveRenderInfo.rotationXZ; + rotZ = ActiveRenderInfo.rotationZ; + rotYZ = ActiveRenderInfo.rotationYZ; + rotXY = ActiveRenderInfo.rotationXY; + + EntityLivingBase view = Minecraft.getMinecraft().renderViewEntity; + double interpX = view.lastTickPosX + (view.posX - view.lastTickPosX) * partialTicks; + double interpY = view.lastTickPosY + (view.posY - view.lastTickPosY) * partialTicks; + double interpZ = view.lastTickPosZ + (view.posZ - view.lastTickPosZ) * partialTicks; + + float partialPosX = (float) (prevPosX + (posX - prevPosX) * partialTicks - interpX); + float partialPosY = (float) (prevPosY + (posY - prevPosY) * partialTicks - interpY); + float partialPosZ = (float) (prevPosZ + (posZ - prevPosZ) * partialTicks - interpZ); + + float scale = 0.1F * particleScale; + + double minU = this.particleTextureIndexX * 0.25; + double maxU = minU + 0.25; + double minV = this.particleTextureIndexY * 0.125; + double maxV = minV + 0.125; + + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); + GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F); + + Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURES[this.texIndex % TEXTURES.length]); + + tess.startDrawingQuads(); + + tess.setColorRGBA_F(particleRed, particleGreen, particleBlue, particleAlpha); + tess.setBrightness(15 << 20 | 14 << 4); // slightly less than MiscUtil.MAX_LIGHT_BRIGHTNESS so that smoke doesn't glow super bright with shaders + + tess.addVertexWithUV(partialPosX - rotX * scale - rotYZ * scale, partialPosY - rotXZ * scale, partialPosZ - rotZ * scale - rotXY * scale, 1, 1); + tess.addVertexWithUV(partialPosX - rotX * scale + rotYZ * scale, partialPosY + rotXZ * scale, partialPosZ - rotZ * scale + rotXY * scale, 1, 0); + tess.addVertexWithUV(partialPosX + rotX * scale + rotYZ * scale, partialPosY + rotXZ * scale, partialPosZ + rotZ * scale + rotXY * scale, 0, 0); + tess.addVertexWithUV(partialPosX + rotX * scale - rotYZ * scale, partialPosY - rotXZ * scale, partialPosZ + rotZ * scale - rotXY * scale, 0, 1); + + tess.draw(); + GL11.glDisable(GL11.GL_BLEND); + GL11.glDepthMask(false); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + } + + @Override + public int getFXLayer() + { + return 3; + } + + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + // Age-based behavior: Fade out near the end of lifetime + if (this.particleAge++ >= this.particleMaxAge - 40) { + this.alphaFading = true; + } + + if (this.particleAge < this.particleMaxAge && this.particleAlpha > 0.0F) { + // Minimal horizontal drift for slight randomness + float horizontalMotionScale = 0.001F; // Very small horizontal movement + this.motionX += this.rand.nextFloat() * horizontalMotionScale * (this.rand.nextBoolean() ? 1 : -1); + this.motionZ += this.rand.nextFloat() * horizontalMotionScale * (this.rand.nextBoolean() ? 1 : -1); + + // Move the particle + this.moveEntity(this.motionX, this.motionY, this.motionZ); + + // Fade out alpha if needed + if (this.alphaFading) { + this.particleAlpha = MathHelper.clamp_float(this.particleAlpha + this.alphaFadePerTick, 0.0F, 1.0F); + } + } else { + // Kill the particle if it has faded out or reached max age + this.setDead(); + } + } + + + + /** + * Allows you to change various aspects of campfire smoke particles:
+ * - {@link #particleRed}, {@link #particleGreen}, and {@link #particleBlue} are the float r, g, b values of the smoke.
+ * - {@link #motionX}, {@link #motionY}, and {@link #motionZ} are the x, y, z motion of the smoke.
+ * - {@link #particleGravity} is the amount the smoke's y motion changes per tick.
+ * - {@link #particleAlpha} is the smoke's initial alpha.
+ * - {@link #alphaFading} is whether the smoke's alpha should currently be changing (fading in or out).
+ * - {@link #alphaFadePerTick} is the amount the smoke's alpha changes per tick if {@link #alphaFading} is true. Negative values make it fade out, positive values make it fade + * back in.
+ * - {@link #particleMaxAge} is the maximum number of ticks the particle will live for.
+ *
+ * You're also given {@link #campfirePosition}, which is the x, y, z position of the campfire tile entity where the smoke was created.
+ *
+ * Also, {@link EntityBigSmokeFX} are only created on the client side, so you should mark your subscribe event with {@link Side#CLIENT}.
+ *
+ * This event is posted from {@link EntityBigSmokeFX#EntityBigSmokeFX} on the {@link MinecraftForge#EVENT_BUS}.
+ * This event is {@link Cancelable}. If canceled, the entity will be removed.
+ */ + @Cancelable + public static class EntityBigSmokeFXConstructingEvent extends EntityConstructing + { + public final int[] campfirePosition; + + public float particleRed; + public float particleGreen; + public float particleBlue; + public double motionX; + public double motionY; + public double motionZ; + public float particleGravity; + public float particleAlpha; + public boolean alphaFading; + public float alphaFadePerTick; + public int particleMaxAge; + + public EntityBigSmokeFXConstructingEvent(EntityBigSmokeFX entity, int x, int y, int z) + { + super(entity); + + campfirePosition = new int[] { x, y, z }; + + particleRed = entity.particleRed; + particleGreen = entity.particleGreen; + particleBlue = entity.particleBlue; + motionX = entity.motionX; + motionY = entity.motionY; + motionZ = entity.motionZ; + particleGravity = entity.particleGravity; + particleAlpha = entity.particleAlpha; + alphaFading = entity.alphaFading; + alphaFadePerTick = entity.alphaFadePerTick; + particleMaxAge = entity.particleMaxAge; + } + + } + +} diff --git a/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireCoals.java b/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireCoals.java new file mode 100644 index 000000000..9f10ef8c9 --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireCoals.java @@ -0,0 +1,30 @@ +package noppes.npcs.client.model.blocks.campfire; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelCampfireCoals extends ModelBase { + private final ModelRenderer bb_main; + + public ModelCampfireCoals() { + textureWidth = 64; + textureHeight = 64; + + bb_main = new ModelRenderer(this); + bb_main.setRotationPoint(0.0F, 24.0F, 0.0F); + bb_main.cubeList.add(new ModelBox(bb_main, -10, 0, -5.0F, -0.02F, -5.0F, 10, 0, 10, 0.0F)); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + bb_main.render(f5); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireLog.java b/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireLog.java index 20acf6bfc..414fff49b 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireLog.java +++ b/src/main/java/noppes/npcs/client/model/blocks/campfire/ModelCampfireLog.java @@ -6,46 +6,46 @@ import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelCampfireLog extends ModelBase { - private final ModelRenderer bb_main; - private final ModelRenderer cube_r1; - private final ModelRenderer cube_r2; - private final ModelRenderer cube_r3; + private final ModelRenderer bb_main; + private final ModelRenderer cube_r1; + private final ModelRenderer cube_r2; + private final ModelRenderer cube_r3; - public ModelCampfireLog() { - textureWidth = 16; - textureHeight = 16; + public ModelCampfireLog() { + textureWidth = 16; + textureHeight = 16; - bb_main = new ModelRenderer(this); - bb_main.setRotationPoint(0.0F, 24.0F, 0.0F); + bb_main = new ModelRenderer(this); + bb_main.setRotationPoint(0.0F, 24.0F, 0.0F); - cube_r1 = new ModelRenderer(this); - cube_r1.setRotationPoint(1.25F, -6.3F, 1.25F); - bb_main.addChild(cube_r1); - setRotationAngle(cube_r1, 0.5449F, -1.0854F, -0.744F); - cube_r1.cubeList.add(new ModelBox(cube_r1, 0, 0, -1.0F, -4.0F, -1.0F, 3, 10, 3, 0.0F)); + cube_r1 = new ModelRenderer(this); + cube_r1.setRotationPoint(1.25F, -6.3F, 1.25F); + bb_main.addChild(cube_r1); + setRotationAngle(cube_r1, 0.5449F, -1.0854F, -0.744F); + cube_r1.cubeList.add(new ModelBox(cube_r1, 0, 0, -1.0F, -2.0F, -1.0F, 3, 8, 3, 0.0F)); - cube_r2 = new ModelRenderer(this); - cube_r2.setRotationPoint(-1.5F, -6.0F, -0.25F); - bb_main.addChild(cube_r2); - setRotationAngle(cube_r2, 0.0F, 0.0F, 0.3927F); - cube_r2.cubeList.add(new ModelBox(cube_r2, 0, 0, -2.0F, -4.0F, -1.0F, 3, 10, 3, 0.0F)); + cube_r2 = new ModelRenderer(this); + cube_r2.setRotationPoint(-1.5F, -6.0F, -0.25F); + bb_main.addChild(cube_r2); + setRotationAngle(cube_r2, 0.0F, 0.0F, 0.3927F); + cube_r2.cubeList.add(new ModelBox(cube_r2, 0, 0, -2.0F, -2.0F, -1.0F, 3, 8, 3, 0.0F)); - cube_r3 = new ModelRenderer(this); - cube_r3.setRotationPoint(1.5F, -6.0F, -2.25F); - bb_main.addChild(cube_r3); - setRotationAngle(cube_r3, -0.3295F, 0.7268F, -0.4754F); - cube_r3.cubeList.add(new ModelBox(cube_r3, 0, 0, -2.0F, -4.5F, -1.0F, 3, 10, 3, 0.0F)); - } + cube_r3 = new ModelRenderer(this); + cube_r3.setRotationPoint(1.5F, -6.0F, -2.25F); + bb_main.addChild(cube_r3); + setRotationAngle(cube_r3, -0.3295F, 0.7268F, -0.4754F); + cube_r3.cubeList.add(new ModelBox(cube_r3, 0, 0, -2.0F, -2.5F, -1.0F, 3, 8, 3, 0.0F)); + } - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - bb_main.render(f5); - } + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + bb_main.render(f5); + } - public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } } diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java index 5e51f1d49..9b98638d1 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java @@ -5,11 +5,13 @@ import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import net.minecraft.world.IBlockAccess; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockRotated; import noppes.npcs.blocks.tiles.TileColorable; import noppes.npcs.client.model.blocks.ModelCampfire; +import noppes.npcs.client.model.blocks.campfire.ModelCampfireCoals; import noppes.npcs.client.model.blocks.campfire.ModelCampfireFlame; import noppes.npcs.client.model.blocks.campfire.ModelCampfireLog; import noppes.npcs.client.model.blocks.campfire.ModelCampfireStone; @@ -26,7 +28,9 @@ public class BlockCampfireRenderer extends BlockRendererInterface{ private final ModelCampfireFlame flameModel = new ModelCampfireFlame(); private final ModelCampfireLog logsModel = new ModelCampfireLog(); private final ModelCampfireStone stonesModel = new ModelCampfireStone(); + private final ModelCampfireCoals coalsModel = new ModelCampfireCoals(); + protected static final ResourceLocation coalsTexture = new ResourceLocation("customnpcs","textures/models/CampfireCoals.png"); public BlockCampfireRenderer(){ ((BlockRotated)CustomItems.campfire).renderId = RenderingRegistry.getNextAvailableRenderId(); @@ -60,9 +64,15 @@ public class BlockCampfireRenderer extends BlockRendererInterface{ Minecraft.getMinecraft().getTextureManager().bindTexture(Cobble); stonesModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); if(block == CustomItems.campfire){ + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_ALPHA_TEST); Minecraft.getMinecraft().getTextureManager().bindTexture(Flame); flameModel.render(null, tile.getWorldObj().getWorldTime(), 0, 0, 0, 0.0F, 0.0625F); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_LIGHTING); } + Minecraft.getMinecraft().getTextureManager().bindTexture(coalsTexture); + coalsModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); } GL11.glPopMatrix(); diff --git a/src/main/resources/assets/customnpcs/textures/models/CampfireCoals.png b/src/main/resources/assets/customnpcs/textures/models/CampfireCoals.png new file mode 100644 index 0000000000000000000000000000000000000000..f2732b51bfa56f067979fdc2c5e0078554a64906 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`212l#}zN=nOVn>bs#$Au=91I1V;8i#?Xk|4j}|3JX-dmCRcP=K?*BeIx* zf$uN~Gak=hkpdK)`Wm^v{6+8bv zjlX2=qtc7#jy=6&E41#|-O%h%({KCI7=+BijDk5E53gYjnzeK7fdhqB&HG|cf4bRd zRo>rnp6Sg!&pU@L%KKBe&ptSHKAdOD!lvI6;*o-U3d z7N?UFBv`kwo2Ih!lvI6-|o-U3d z7N?UFBv`jFex2(2f1;u5EKeg1edC|@cFY`7O*ssDhaDcV@H!ql(RT1i$0x3vvo>EA l`v16y*K=cI&IJQ@2D9`^)i0CZmH!lvI6!lvI6-so-U3d x7XHZz60C=1uY^wf!lvI6-ro-U3d z7N?UFB=#-Xxa)~MPw34hfP7c>2%tjSr>T^KGT|XiP?2lJ0AnXfxG+Ju08!X1!xb0 Mr>mdKI;Vst06nKSHvj+t literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/particle/big_smoke_3.png b/src/main/resources/assets/customnpcs/textures/particle/big_smoke_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4a5f8224dd4b5ad07ee1b76616d287cb11e98b7e GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-Do-U3d z7QJ`-47m;{@G$(%RbLo8C+63uX&mf|GcXLY z?7333{kVGkx)Xlp3Q8MJtUO%A#~h`mvBQW_)=7aW@4&xB?i#l{_R3q?Pq}z``&Q25 RT|m1SJYD@<);T3K0RZ;bJ5~Sy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/particle/big_smoke_4.png b/src/main/resources/assets/customnpcs/textures/particle/big_smoke_4.png new file mode 100644 index 0000000000000000000000000000000000000000..17c35e5a746b0a182cde4f176372175b31359a78 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-To-U3d z7N?UFB(5yjxacP*=o@LIu0VIE~^w@qm!&L_+o7L;>j9(vt7>5tALlfzdMO&M;o z<>bsr6X?Clkiz<+?ZA^niPelJ;u?2yv|Kbz21<+WFxcd3!MH1FQO>bcfj~1p3kHS{ Xv5W^TCus5l?PTzD^>bP0l+XkKBab>7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/particle/big_smoke_5.png b/src/main/resources/assets/customnpcs/textures/particle/big_smoke_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3dbb32af4ad4684ef8307bd76ae81d4d92376a33 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;Go-U3d z7N?UFB=#-XyYZF1mDgXaQmH*=nRod=sIE=Y4?!lvI6mTLT!lvI6mP%f0W`OQ=OACzoA^&jQ?8$4QB9k^>bP0l+XkKMw~1| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/particle/big_smoke_8.png b/src/main/resources/assets/customnpcs/textures/particle/big_smoke_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a704e860a2aae8f54829ab40b8c3a662c1bd634f GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6pEx6>xA&^*|B1XSboKxFZ(93;t?>p6FT>52JnJ*8F1wkQNk|H( mTKgDp@}BT>@yRYX28N)mk<~vgpWg;Fj=|H_&t;ucLK6UTn=Ntx literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/particle/big_smoke_9.png b/src/main/resources/assets/customnpcs/textures/particle/big_smoke_9.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd14f324a9be157d5291fac738d8f7191bc9bf1 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6<$o-U3d z7N?UFBv_jzu7pne^Zs=P%j0*`cKuJuZrkW-#?azuc9=);wCIT$DrdJoJ^Fv*%Rq-@ a28L_gCXzQ Date: Sun, 26 Jan 2025 17:39:04 -0500 Subject: [PATCH 011/157] Legacy Chair Config --- .../model/blocks/legacy/ModelLegacyChair.java | 126 ++++++++++++++++++ .../renderer/blocks/BlockChairRenderer.java | 14 +- 2 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyChair.java diff --git a/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyChair.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyChair.java new file mode 100644 index 000000000..4b6cfcfe4 --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyChair.java @@ -0,0 +1,126 @@ +package noppes.npcs.client.model.blocks.legacy; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelLegacyChair extends ModelBase +{ + //fields + ModelRenderer Leg1; + ModelRenderer Leg2; + ModelRenderer Leg3; + ModelRenderer Leg4; + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + ModelRenderer Shape8; + ModelRenderer Shape9; + ModelRenderer Shape10; + ModelRenderer Shape11; + + public ModelLegacyChair() + { + Leg1 = new ModelRenderer(this, 0, 0); + Leg1.mirror = true; + Leg1.addBox(0F, 0F, 0F, 1, 18, 1); + Leg1.setRotationPoint(4.01F, 6F, 5.01F); + + Leg2 = new ModelRenderer(this, 0, 0); + Leg2.mirror = true; + Leg2.addBox(0F, 0F, 0F, 1, 9, 1); + Leg2.setRotationPoint(4.01F, 15.5F, -5.01F); + + Leg3 = new ModelRenderer(this, 0, 0); + Leg3.addBox(0F, 0F, 0F, 1, 18, 1); + Leg3.setRotationPoint(-5.01F, 6F, 5.01F); + + Leg4 = new ModelRenderer(this, 0, 0); + Leg4.addBox(0F, 0F, 0F, 1, 9, 1); + Leg4.setRotationPoint(-5.01F, 15.5F, -5.01F); + + Shape1 = new ModelRenderer(this, 8, 2); + Shape1.addBox(0F, 0F, 0F, 10, 1, 11); + Shape1.setRotationPoint(-5F, 16F, -5F); + + Shape2 = new ModelRenderer(this, 4, 4); + Shape2.addBox(0F, 0F, 0F, 3, 2, 1); + Shape2.setRotationPoint(-1.5F, 6.51F, 5.5F); + + Shape3 = new ModelRenderer(this, 4, 4); + Shape3.mirror = true; + Shape3.addBox(-3F, 0F, 0F, 3, 2, 1); + Shape3.setRotationPoint(4F, 6.5F, 5F); + setRotation(Shape3, 0F, 0.2094395F, 0F); + + Shape4 = new ModelRenderer(this, 4, 4); + Shape4.addBox(0F, 0F, 0F, 3, 2, 1); + Shape4.setRotationPoint(-4F, 6.5F, 5F); + setRotation(Shape4, 0F, -0.2094395F, 0F); + + Shape5 = new ModelRenderer(this, 46, 0); + Shape5.addBox(0F, 0F, 0F, 9, 1, 1); + Shape5.setRotationPoint(-4F, 19F, 5F); + + Shape6 = new ModelRenderer(this, 46, 0); + Shape6.addBox(0F, 0F, 0F, 8, 1, 1); + Shape6.setRotationPoint(-4F, 19F, -5F); + + Shape7 = new ModelRenderer(this, 11, 13); + Shape7.addBox(0F, 0F, 0F, 1, 1, 9); + Shape7.setRotationPoint(-5F, 20F, -4F); + + Shape8 = new ModelRenderer(this, 11, 13); + Shape8.mirror = true; + Shape8.addBox(0F, 0F, 0F, 1, 1, 9); + Shape8.setRotationPoint(4F, 20F, -4F); + + Shape9 = new ModelRenderer(this, 0, 0); + Shape9.mirror = true; + Shape9.addBox(0F, 0F, 0F, 1, 8, 1); + Shape9.setRotationPoint(2F, 8F, 5.5F); + setRotation(Shape9, -0.0523599F, 0F, 0F); + + Shape10 = new ModelRenderer(this, 0, 0); + Shape10.addBox(0F, 0F, 0F, 1, 8, 1); + Shape10.setRotationPoint(-3F, 8F, 5.5F); + setRotation(Shape10, -0.0523599F, 0F, 0F); + + Shape11 = new ModelRenderer(this, 0, 0); + Shape11.addBox(0F, 0F, 0F, 1, 8, 1); + Shape11.setRotationPoint(-0.5F, 8F, 5.6F); + setRotation(Shape11, -0.0698132F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + Leg1.render(f5); + Leg2.render(f5); + Leg3.render(f5); + Leg4.render(f5); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + Shape8.render(f5); + Shape9.render(f5); + Shape10.render(f5); + Shape11.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + +} diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java index 9557d2229..d5a04a32c 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java @@ -8,11 +8,14 @@ import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockChair; import noppes.npcs.blocks.tiles.TileColorable; import noppes.npcs.client.model.blocks.ModelChair; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyChair; +import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; public class BlockChairRenderer extends BlockRendererInterface{ + private final ModelLegacyChair legacyModel = new ModelLegacyChair(); private final ModelChair model = new ModelChair(); public BlockChairRenderer(){ @@ -32,7 +35,10 @@ public class BlockChairRenderer extends BlockRendererInterface{ GL11.glColor3f(1, 1, 1); setWoodTexture(var1.getBlockMetadata()); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + if(ConfigClient.LegacyChair) + legacyModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + else + model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); GL11.glPopMatrix(); } @@ -48,8 +54,10 @@ public class BlockChairRenderer extends BlockRendererInterface{ setWoodTexture(metadata); GL11.glColor3f(1, 1, 1); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - + if(ConfigClient.LegacyChair) + legacyModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + else + model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); GL11.glPopMatrix(); } From 2f5d5f84c2183b40d41a9cb01f01095a51002f57 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 26 Jan 2025 17:55:25 -0500 Subject: [PATCH 012/157] Modern Stool --- .../npcs/client/model/blocks/ModelStool.java | 91 +++++------------- .../model/blocks/legacy/ModelLegacyStool.java | 83 ++++++++++++++++ .../renderer/blocks/BlockStoolRenderer.java | 53 ++++++++-- .../java/noppes/npcs/config/ConfigClient.java | 2 + .../npcs/controllers/data/RecipesDefault.java | 54 +++++------ .../customnpcs/textures/models/stool/oak.png | Bin 0 -> 607 bytes 6 files changed, 180 insertions(+), 103 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyStool.java create mode 100644 src/main/resources/assets/customnpcs/textures/models/stool/oak.png diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelStool.java b/src/main/java/noppes/npcs/client/model/blocks/ModelStool.java index 1da08f6e6..2cf65f015 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelStool.java +++ b/src/main/java/noppes/npcs/client/model/blocks/ModelStool.java @@ -1,83 +1,38 @@ package noppes.npcs.client.model.blocks; import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelStool extends ModelBase { - ModelRenderer Base; - ModelRenderer Leg1; - ModelRenderer Leg2; - ModelRenderer Leg3; - ModelRenderer Leg4; - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; + private final ModelRenderer stool; public ModelStool() { - Base = new ModelRenderer(this, 9, 3); - Base.addBox(-5F, 0F, -5F, 10, 1, 10); - Base.setRotationPoint(0F, 16F, 0F); - - Leg1 = new ModelRenderer(this, 0, 12); - Leg1.addBox(-1F, 0F, 0F, 2, 8, 1); - Leg1.setRotationPoint(2F, 17F, 2F); - setRotation(Leg1, 0.3316126F, 0.7853982F, 0F); - - Leg2 = new ModelRenderer(this, 0, 12); - Leg2.addBox(-1F, 0F, 0F, 2, 8, 1); - Leg2.setRotationPoint(2F, 17F, -2F); - setRotation(Leg2, 0.3316126F, 2.356194F, -0.0081449F); - - Leg3 = new ModelRenderer(this, 0, 12); - Leg3.addBox(-1F, 0F, 0F, 2, 8, 1); - Leg3.setRotationPoint(-2F, 17F, 2F); - setRotation(Leg3, 0.3316126F, -0.7853982F, 0F); - - Leg4 = new ModelRenderer(this, 0, 12); - Leg4.addBox(-1F, 0F, 0F, 2, 8, 1); - Leg4.setRotationPoint(-2F, 17F, -2F); - setRotation(Leg4, 0.3316126F, -2.356194F, 0F); - - Shape1 = new ModelRenderer(this, 0, 11); - Shape1.addBox(-3F, 0F, 0F, 6, 1, 1); - Shape1.setRotationPoint(2.4F, 19F, 0F); - setRotation(Shape1, 0F, 1.570796F, 0F); - - Shape2 = new ModelRenderer(this, 0, 11); - Shape2.addBox(-3F, 0F, 0F, 6, 1, 1); - Shape2.setRotationPoint(0F, 19F, 2.4F); - - Shape3 = new ModelRenderer(this, 0, 11); - Shape3.addBox(-3F, 0F, 0F, 6, 1, 1); - Shape3.setRotationPoint(0F, 19F, -3.4F); - - Shape4 = new ModelRenderer(this, 0, 11); - Shape4.addBox(-3F, 0F, 0F, 6, 1, 1); - Shape4.setRotationPoint(-3.4F, 19F, 0F); - setRotation(Shape4, 0F, 1.570796F, 0F); + textureWidth = 64; + textureHeight = 64; + + stool = new ModelRenderer(this); + stool.setRotationPoint(0.0F, 24.0F, 0.0F); + stool.cubeList.add(new ModelBox(stool, 0, 0, -5.0F, -9.0F, -5.0F, 10, 2, 10, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 0, 12, 2.0F, -7.0F, -4.0F, 2, 7, 2, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 8, 8, 3.0F, -5.0F, -2.0F, 0, 2, 4, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 8, 12, -2.0F, -5.0F, -3.0F, 4, 2, 0, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 0, 12, -4.0F, -7.0F, -4.0F, 2, 7, 2, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 0, 12, -4.0F, -7.0F, 2.0F, 2, 7, 2, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 8, 8, -3.0F, -5.0F, -2.0F, 0, 2, 4, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 0, 12, 2.0F, -7.0F, 2.0F, 2, 7, 2, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 8, 12, -2.0F, -5.0F, 3.0F, 4, 2, 0, 0.0F)); } - public void render(Entity entity, float f, float f1, float f2, float f3, - float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - Base.render(f5); - Leg1.render(f5); - Leg2.render(f5); - Leg3.render(f5); - Leg4.render(f5); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + stool.render(f5); } - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; } - - } diff --git a/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyStool.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyStool.java new file mode 100644 index 000000000..0c964f5ec --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyStool.java @@ -0,0 +1,83 @@ +package noppes.npcs.client.model.blocks.legacy; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelLegacyStool extends ModelBase { + ModelRenderer Base; + ModelRenderer Leg1; + ModelRenderer Leg2; + ModelRenderer Leg3; + ModelRenderer Leg4; + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + + public ModelLegacyStool() { + Base = new ModelRenderer(this, 9, 3); + Base.addBox(-5F, 0F, -5F, 10, 1, 10); + Base.setRotationPoint(0F, 16F, 0F); + + Leg1 = new ModelRenderer(this, 0, 12); + Leg1.addBox(-1F, 0F, 0F, 2, 8, 1); + Leg1.setRotationPoint(2F, 17F, 2F); + setRotation(Leg1, 0.3316126F, 0.7853982F, 0F); + + Leg2 = new ModelRenderer(this, 0, 12); + Leg2.addBox(-1F, 0F, 0F, 2, 8, 1); + Leg2.setRotationPoint(2F, 17F, -2F); + setRotation(Leg2, 0.3316126F, 2.356194F, -0.0081449F); + + Leg3 = new ModelRenderer(this, 0, 12); + Leg3.addBox(-1F, 0F, 0F, 2, 8, 1); + Leg3.setRotationPoint(-2F, 17F, 2F); + setRotation(Leg3, 0.3316126F, -0.7853982F, 0F); + + Leg4 = new ModelRenderer(this, 0, 12); + Leg4.addBox(-1F, 0F, 0F, 2, 8, 1); + Leg4.setRotationPoint(-2F, 17F, -2F); + setRotation(Leg4, 0.3316126F, -2.356194F, 0F); + + Shape1 = new ModelRenderer(this, 0, 11); + Shape1.addBox(-3F, 0F, 0F, 6, 1, 1); + Shape1.setRotationPoint(2.4F, 19F, 0F); + setRotation(Shape1, 0F, 1.570796F, 0F); + + Shape2 = new ModelRenderer(this, 0, 11); + Shape2.addBox(-3F, 0F, 0F, 6, 1, 1); + Shape2.setRotationPoint(0F, 19F, 2.4F); + + Shape3 = new ModelRenderer(this, 0, 11); + Shape3.addBox(-3F, 0F, 0F, 6, 1, 1); + Shape3.setRotationPoint(0F, 19F, -3.4F); + + Shape4 = new ModelRenderer(this, 0, 11); + Shape4.addBox(-3F, 0F, 0F, 6, 1, 1); + Shape4.setRotationPoint(-3.4F, 19F, 0F); + setRotation(Shape4, 0F, 1.570796F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, + float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + Base.render(f5); + Leg1.render(f5); + Leg2.render(f5); + Leg3.render(f5); + Leg4.render(f5); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + +} diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java index 42f72ad0a..cecdfce85 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java @@ -2,19 +2,27 @@ package noppes.npcs.client.renderer.blocks; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockStool; import noppes.npcs.blocks.tiles.TileColorable; import noppes.npcs.client.model.blocks.ModelStool; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyStool; +import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; public class BlockStoolRenderer extends BlockRendererInterface{ - private final ModelStool model = new ModelStool(); - + private final ModelLegacyStool legacyStool = new ModelLegacyStool(); + private final ModelStool stool = new ModelStool(); + + protected static final ResourceLocation oak = new ResourceLocation("customnpcs","textures/models/stool/oak.png"); + public BlockStoolRenderer(){ ((BlockStool)CustomItems.stool).renderId = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(this); @@ -29,9 +37,15 @@ public class BlockStoolRenderer extends BlockRendererInterface{ GL11.glScalef(1.2f, 1.1f, 1.2f); GL11.glRotatef(180, 0, 0, 1); GL11.glColor3f(1, 1, 1); - setWoodTexture(var1.getBlockMetadata()); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + if(ConfigClient.LegacyStool){ + setWoodTexture(var1.getBlockMetadata()); + legacyStool.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + else { + setStoolTexture(var1.getBlockMetadata()); + stool.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } GL11.glPopMatrix(); } @@ -44,13 +58,36 @@ public class BlockStoolRenderer extends BlockRendererInterface{ GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(180, 0, 1, 0); - setWoodTexture(metadata); - GL11.glColor3f(1, 1, 1); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - + if(ConfigClient.LegacyStool){ + setWoodTexture(metadata); + GL11.glColor3f(1, 1, 1); + legacyStool.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + else { + setStoolTexture(metadata); + GL11.glColor3f(1, 1, 1); + stool.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + GL11.glPopMatrix(); } + public void setStoolTexture(int meta){ + TextureManager manager = Minecraft.getMinecraft().getTextureManager(); + if(meta == 1) + manager.bindTexture(oak); + else if(meta == 2) + manager.bindTexture(oak); + else if(meta == 3) + manager.bindTexture(oak); + else if(meta == 4) + manager.bindTexture(oak); + else if(meta == 5) + manager.bindTexture(oak); + else + manager.bindTexture(oak); + } + @Override public int getRenderId() { return CustomItems.stool.getRenderType(); diff --git a/src/main/java/noppes/npcs/config/ConfigClient.java b/src/main/java/noppes/npcs/config/ConfigClient.java index 3824f8e9b..22ef51590 100644 --- a/src/main/java/noppes/npcs/config/ConfigClient.java +++ b/src/main/java/noppes/npcs/config/ConfigClient.java @@ -79,6 +79,7 @@ public class ConfigClient public static boolean LegacyCampfire = false; public static boolean LegacyBanner = false; public static boolean LegacyChair = false; + public static boolean LegacyStool = false; public static boolean LegacyBarrel = false; public static boolean LegacyCarpentryBench = false; @@ -142,6 +143,7 @@ public class ConfigClient LegacyBanner = config.get(MODEL, "Legacy Banner Model", false).getBoolean(false); LegacyBarrel = config.get(MODEL, "Legacy Barrel Model", false).getBoolean(false); LegacyChair = config.get(MODEL, "Legacy Chair Model", false).getBoolean(false); + LegacyStool = config.get(MODEL, "Legacy Stool Model", false).getBoolean(false); LegacyCarpentryBench = config.get(MODEL, "Legacy Carpentry Bench Model", false).getBoolean(false); // Convert to Legacy diff --git a/src/main/java/noppes/npcs/controllers/data/RecipesDefault.java b/src/main/java/noppes/npcs/controllers/data/RecipesDefault.java index 3ef4ffdb3..f20b25264 100644 --- a/src/main/java/noppes/npcs/controllers/data/RecipesDefault.java +++ b/src/main/java/noppes/npcs/controllers/data/RecipesDefault.java @@ -18,7 +18,7 @@ public class RecipesDefault { item = new ItemStack((Block)ob); else item = (ItemStack) ob; - + RecipeCarpentry recipeAnvil = new RecipeCarpentry(name); recipeAnvil.isGlobal = isGlobal; recipeAnvil = RecipeCarpentry.saveRecipe(recipeAnvil, item, recipe); @@ -29,7 +29,7 @@ public class RecipesDefault { addRecipe("Npc Wand", CustomItems.wand, true, "XX"," Y"," Y",'X', Items.bread,'Y', Items.stick); addRecipe("Mob Cloner", CustomItems.cloner, true, "XX","XY"," Y",'X', Items.bread,'Y', Items.stick); addRecipe("Carpentry Bench", CustomItems.carpentyBench, true, "XYX","Z Z","Z Z", 'X', Blocks.planks, 'Z', Items.stick, 'Y', Blocks.crafting_table); - + if(!ConfigMain.DisableExtraItems){ addRecipe("Mana", CustomItems.mana, true, "XY",'X',Items.redstone,'Y',Items.glowstone_dust); addRecipe("Gun Wooden", CustomItems.gunWood, false, "XXXY"," ZM "," M ",'Y', Blocks.lever, 'M', Items.stick, 'Z', Blocks.stone_button,'X', Blocks.planks); @@ -39,7 +39,7 @@ public class RecipesDefault { addRecipe("Gun Diamond", CustomItems.gunDiamond, false, "XXXY"," ZM "," M ",'Y', Blocks.lever, 'M', Items.stick, 'Z', Blocks.stone_button,'X', Items.diamond); addRecipe("Gun Emerald", CustomItems.gunEmerald, false, "XXXY"," ZM "," M ",'Y', Blocks.lever, 'M', Items.stick, 'Z', Blocks.stone_button,'X', Items.emerald); addRecipe("Gun Bronze", CustomItems.gunBronze, false, "XXXY"," ZM "," M ",'Y', Blocks.lever, 'M', Items.stick, 'Z', Blocks.stone_button,'X', CustomItems.bronze_ingot); - + addRecipe("Bullet Wooden", CustomItems.bulletWood, true, "X",'X', Blocks.planks); addRecipe("Bullet Stone", CustomItems.bulletStone, true, "X",'X', Blocks.cobblestone); addRecipe("Bullet Iron", CustomItems.bulletIron, true, "X",'X', Items.iron_ingot); @@ -56,96 +56,96 @@ public class RecipesDefault { addRecipe("WallBanner Iron", new ItemStack(CustomItems.wallBanner, 1, 2), false, "XXX","ZZZ","ZZZ","Z Z",'Z', Blocks.wool, 'X', Items.iron_ingot); addRecipe("WallBanner Gold", new ItemStack(CustomItems.wallBanner, 1, 3), false, "XXX","ZZZ","ZZZ","Z Z",'Z', Blocks.wool, 'X', Items.gold_ingot); addRecipe("WallBanner Diamond", new ItemStack(CustomItems.wallBanner, 1, 4), false, "XXX","ZZZ","ZZZ","Z Z",'Z', Blocks.wool, 'X', Items.diamond); - + addRecipe("Banner Wooden", new ItemStack(CustomItems.banner, 1, 0), false, " X "," Z "," Z ","ZZZ", 'X', new ItemStack(CustomItems.wallBanner,1,0), 'Z', Blocks.planks); addRecipe("Banner Stone", new ItemStack(CustomItems.banner, 1, 1), false, " X "," Z "," Z ","ZZZ", 'X', new ItemStack(CustomItems.wallBanner,1,1), 'Z', Blocks.cobblestone); addRecipe("Banner Iron", new ItemStack(CustomItems.banner, 1, 2), false, " X "," Z "," Z ","ZZZ", 'X', new ItemStack(CustomItems.wallBanner,1,2), 'Z', Items.iron_ingot); addRecipe("Banner Gold", new ItemStack(CustomItems.banner, 1, 3), false, " X "," Z "," Z ","ZZZ", 'X', new ItemStack(CustomItems.wallBanner,1,3), 'Z', Items.gold_ingot); addRecipe("Banner Diamond", new ItemStack(CustomItems.banner, 1, 4), false, " X "," Z "," Z ","ZZZ", 'X', new ItemStack(CustomItems.wallBanner,1,4), 'Z', Items.diamond); - + addRecipe("Lamp Wooden", new ItemStack(CustomItems.tallLamp, 1, 0), false, "YXY"," Z "," Z ","ZZZ", 'X', Blocks.torch, 'Y', Blocks.wool, 'Z', Blocks.planks); addRecipe("Lamp Stone", new ItemStack(CustomItems.tallLamp, 1, 1), false, "YXY"," Z "," Z ","ZZZ", 'X', Blocks.torch, 'Y', Blocks.wool, 'Z', Blocks.cobblestone); addRecipe("Lamp Iron", new ItemStack(CustomItems.tallLamp, 1, 2), false, "YXY"," Z "," Z ","ZZZ", 'X', Blocks.torch, 'Y', Blocks.wool, 'Z', Items.iron_ingot); addRecipe("Lamp Gold", new ItemStack(CustomItems.tallLamp, 1, 3), false, "YXY"," Z "," Z ","ZZZ", 'X', Blocks.torch, 'Y', Blocks.wool, 'Z', Items.gold_ingot); addRecipe("Lamp Diamond", new ItemStack(CustomItems.tallLamp, 1, 4), false, "YXY"," Z "," Z ","ZZZ", 'X', Blocks.torch, 'Y', Blocks.wool, 'Z', Items.diamond); - + addRecipe("Chair Wooden1", new ItemStack(CustomItems.chair, 1, 0), false, " X", " X","XXX","X X", 'X', new ItemStack(Blocks.planks,1,0)); addRecipe("Chair Wooden2", new ItemStack(CustomItems.chair, 1, 1), false, " X", " X","XXX","X X", 'X', new ItemStack(Blocks.planks,1,1)); addRecipe("Chair Wooden3", new ItemStack(CustomItems.chair, 1, 2), false, " X", " X","XXX","X X", 'X', new ItemStack(Blocks.planks,1,2)); addRecipe("Chair Wooden4", new ItemStack(CustomItems.chair, 1, 3), false, " X", " X","XXX","X X", 'X', new ItemStack(Blocks.planks,1,3)); addRecipe("Chair Wooden5", new ItemStack(CustomItems.chair, 1, 4), false, " X", " X","XXX","X X", 'X', new ItemStack(Blocks.planks,1,4)); addRecipe("Chair Wooden6", new ItemStack(CustomItems.chair, 1, 5), false, " X", " X","XXX","X X", 'X', new ItemStack(Blocks.planks,1,5)); - + addRecipe("Crate Wooden1", new ItemStack(CustomItems.crate, 1, 0), false, "XXXX","X X","X X","XXXX", 'X', new ItemStack(Blocks.planks,1,0)); addRecipe("Crate Wooden2", new ItemStack(CustomItems.crate, 1, 1), false, "XXXX","X X","X X","XXXX", 'X', new ItemStack(Blocks.planks,1,1)); addRecipe("Crate Wooden3", new ItemStack(CustomItems.crate, 1, 2), false, "XXXX","X X","X X","XXXX", 'X', new ItemStack(Blocks.planks,1,2)); addRecipe("Crate Wooden4", new ItemStack(CustomItems.crate, 1, 3), false, "XXXX","X X","X X","XXXX", 'X', new ItemStack(Blocks.planks,1,3)); addRecipe("Crate Wooden5", new ItemStack(CustomItems.crate, 1, 4), false, "XXXX","X X","X X","XXXX", 'X', new ItemStack(Blocks.planks,1,4)); addRecipe("Crate Wooden6", new ItemStack(CustomItems.crate, 1, 5), false, "XXXX","X X","X X","XXXX", 'X', new ItemStack(Blocks.planks,1,5)); - + addRecipe("WeaponRack Wooden1", new ItemStack(CustomItems.weaponsRack, 1, 0), false, "XXX","XYX","XYX","XXX", 'X', new ItemStack(Blocks.planks,1,0),'Y', Items.stick); addRecipe("WeaponRack Wooden2", new ItemStack(CustomItems.weaponsRack, 1, 1), false, "XXX","XYX","XYX","XXX", 'X', new ItemStack(Blocks.planks,1,1),'Y', Items.stick); addRecipe("WeaponRack Wooden3", new ItemStack(CustomItems.weaponsRack, 1, 2), false, "XXX","XYX","XYX","XXX", 'X', new ItemStack(Blocks.planks,1,2),'Y', Items.stick); addRecipe("WeaponRack Wooden4", new ItemStack(CustomItems.weaponsRack, 1, 3), false, "XXX","XYX","XYX","XXX", 'X', new ItemStack(Blocks.planks,1,3),'Y', Items.stick); addRecipe("WeaponRack Wooden5", new ItemStack(CustomItems.weaponsRack, 1, 4), false, "XXX","XYX","XYX","XXX", 'X', new ItemStack(Blocks.planks,1,4),'Y', Items.stick); addRecipe("WeaponRack Wooden6", new ItemStack(CustomItems.weaponsRack, 1, 5), false, "XXX","XYX","XYX","XXX", 'X', new ItemStack(Blocks.planks,1,5),'Y', Items.stick); - + addRecipe("Couch Wooden1", new ItemStack(CustomItems.couchWood, 1, 0), false, " X"," X","XXXX","X X", 'X', new ItemStack(Blocks.planks,1,0)); addRecipe("Couch Wooden2", new ItemStack(CustomItems.couchWood, 1, 1), false, " X"," X","XXXX","X X", 'X', new ItemStack(Blocks.planks,1,1)); addRecipe("Couch Wooden3", new ItemStack(CustomItems.couchWood, 1, 2), false, " X"," X","XXXX","X X", 'X', new ItemStack(Blocks.planks,1,2)); addRecipe("Couch Wooden4", new ItemStack(CustomItems.couchWood, 1, 3), false, " X"," X","XXXX","X X", 'X', new ItemStack(Blocks.planks,1,3)); addRecipe("Couch Wooden5", new ItemStack(CustomItems.couchWood, 1, 4), false, " X"," X","XXXX","X X", 'X', new ItemStack(Blocks.planks,1,4)); addRecipe("Couch Wooden6", new ItemStack(CustomItems.couchWood, 1, 5), false, " X"," X","XXXX","X X", 'X', new ItemStack(Blocks.planks,1,5)); - + addRecipe("Couch Wool1", new ItemStack(CustomItems.couchWool, 1, 0), false, " Z", " Z","ZZZZ","X X", 'X', new ItemStack(Blocks.planks,1,0), 'Z', Blocks.wool); addRecipe("Couch Wool2", new ItemStack(CustomItems.couchWool, 1, 1), false, " Z", " Z","ZZZZ","X X", 'X', new ItemStack(Blocks.planks,1,1), 'Z', Blocks.wool); addRecipe("Couch Wool3", new ItemStack(CustomItems.couchWool, 1, 2), false, " Z", " Z","ZZZZ","X X", 'X', new ItemStack(Blocks.planks,1,2), 'Z', Blocks.wool); addRecipe("Couch Wool4", new ItemStack(CustomItems.couchWool, 1, 3), false, " Z", " Z","ZZZZ","X X", 'X', new ItemStack(Blocks.planks,1,3), 'Z', Blocks.wool); addRecipe("Couch Wool5", new ItemStack(CustomItems.couchWool, 1, 4), false, " Z", " Z","ZZZZ","X X", 'X', new ItemStack(Blocks.planks,1,4), 'Z', Blocks.wool); addRecipe("Couch Wool6", new ItemStack(CustomItems.couchWool, 1, 5), false, " Z", " Z","ZZZZ","X X", 'X', new ItemStack(Blocks.planks,1,5), 'Z', Blocks.wool); - + addRecipe("Table Wood1", new ItemStack(CustomItems.table, 1, 0), false, "XXXX","X X","X X", 'X', new ItemStack(Blocks.planks,1,0), 'Z', Blocks.wool); addRecipe("Table Wood2", new ItemStack(CustomItems.table, 1, 1), false, "XXXX","X X","X X", 'X', new ItemStack(Blocks.planks,1,1), 'Z', Blocks.wool); addRecipe("Table Wood3", new ItemStack(CustomItems.table, 1, 2), false, "XXXX","X X","X X", 'X', new ItemStack(Blocks.planks,1,2), 'Z', Blocks.wool); addRecipe("Table Wood4", new ItemStack(CustomItems.table, 1, 3), false, "XXXX","X X","X X", 'X', new ItemStack(Blocks.planks,1,3), 'Z', Blocks.wool); addRecipe("Table Wood5", new ItemStack(CustomItems.table, 1, 4), false, "XXXX","X X","X X", 'X', new ItemStack(Blocks.planks,1,4), 'Z', Blocks.wool); addRecipe("Table Wood6", new ItemStack(CustomItems.table, 1, 5), false, "XXXX","X X","X X", 'X', new ItemStack(Blocks.planks,1,5), 'Z', Blocks.wool); - - addRecipe("Stool Wood1", new ItemStack(CustomItems.stool, 1, 0), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,0)); - addRecipe("Stool Wood2", new ItemStack(CustomItems.stool, 1, 1), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,1)); - addRecipe("Stool Wood3", new ItemStack(CustomItems.stool, 1, 2), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,2)); - addRecipe("Stool Wood4", new ItemStack(CustomItems.stool, 1, 3), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,3)); - addRecipe("Stool Wood5", new ItemStack(CustomItems.stool, 1, 4), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,4)); - addRecipe("Stool Wood6", new ItemStack(CustomItems.stool, 1, 5), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,5)); - + + addRecipe("noppes.npcs.client.model.blocks.Stool Wood1", new ItemStack(CustomItems.stool, 1, 0), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,0)); + addRecipe("noppes.npcs.client.model.blocks.Stool Wood2", new ItemStack(CustomItems.stool, 1, 1), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,1)); + addRecipe("noppes.npcs.client.model.blocks.Stool Wood3", new ItemStack(CustomItems.stool, 1, 2), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,2)); + addRecipe("noppes.npcs.client.model.blocks.Stool Wood4", new ItemStack(CustomItems.stool, 1, 3), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,3)); + addRecipe("noppes.npcs.client.model.blocks.Stool Wood5", new ItemStack(CustomItems.stool, 1, 4), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,4)); + addRecipe("noppes.npcs.client.model.blocks.Stool Wood6", new ItemStack(CustomItems.stool, 1, 5), false, "XXX"," X ","X X", 'X', new ItemStack(Blocks.planks,1,5)); + addRecipe("Barrel Wood1", new ItemStack(CustomItems.barrel, 1, 0), false, "XXX","X X","X X", "XXX", 'X', new ItemStack(Blocks.planks,1,0)); addRecipe("Barrel Wood2", new ItemStack(CustomItems.barrel, 1, 1), false, "XXX","X X","X X", "XXX", 'X', new ItemStack(Blocks.planks,1,1)); addRecipe("Barrel Wood3", new ItemStack(CustomItems.barrel, 1, 2), false, "XXX","X X","X X", "XXX", 'X', new ItemStack(Blocks.planks,1,2)); addRecipe("Barrel Wood4", new ItemStack(CustomItems.barrel, 1, 3), false, "XXX","X X","X X", "XXX", 'X', new ItemStack(Blocks.planks,1,3)); addRecipe("Barrel Wood5", new ItemStack(CustomItems.barrel, 1, 4), false, "XXX","X X","X X", "XXX", 'X', new ItemStack(Blocks.planks,1,4)); addRecipe("Barrel Wood6", new ItemStack(CustomItems.barrel, 1, 5), false, "XXX","X X","X X", "XXX", 'X', new ItemStack(Blocks.planks,1,5)); - + addRecipe("Shelf Wood1", new ItemStack(CustomItems.shelf, 2, 0), false, "XXX","XY ","X ", 'Y', Items.stick, 'X', new ItemStack(Blocks.planks,1,0)); addRecipe("Shelf Wood2", new ItemStack(CustomItems.shelf, 2, 1), false, "XXX","XY ","X ", 'Y', Items.stick, 'X', new ItemStack(Blocks.planks,1,1)); addRecipe("Shelf Wood3", new ItemStack(CustomItems.shelf, 2, 2), false, "XXX","XY ","X ", 'Y', Items.stick, 'X', new ItemStack(Blocks.planks,1,2)); addRecipe("Shelf Wood4", new ItemStack(CustomItems.shelf, 2, 3), false, "XXX","XY ","X ", 'Y', Items.stick, 'X', new ItemStack(Blocks.planks,1,3)); addRecipe("Shelf Wood5", new ItemStack(CustomItems.shelf, 2, 4), false, "XXX","XY ","X ", 'Y', Items.stick, 'X', new ItemStack(Blocks.planks,1,4)); addRecipe("Shelf Wood6", new ItemStack(CustomItems.shelf, 2, 5), false, "XXX","XY ","X ", 'Y', Items.stick, 'X', new ItemStack(Blocks.planks,1,5)); - + addRecipe("Beam Wood1", new ItemStack(CustomItems.beam, 2, 0), false, "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,0)); addRecipe("Beam Wood2", new ItemStack(CustomItems.beam, 2, 1), false, "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,1)); addRecipe("Beam Wood3", new ItemStack(CustomItems.beam, 2, 2), false, "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,2)); addRecipe("Beam Wood4", new ItemStack(CustomItems.beam, 2, 3), false, "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,3)); addRecipe("Beam Wood5", new ItemStack(CustomItems.beam, 2, 4), false, "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,4)); addRecipe("Beam Wood6", new ItemStack(CustomItems.beam, 2, 5), false, "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,5)); - + addRecipe("Sign Wood1", new ItemStack(CustomItems.sign, 1, 0), false, "YYY", "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,0), 'Y', Items.iron_ingot); addRecipe("Sign Wood2", new ItemStack(CustomItems.sign, 1, 1), false, "YYY", "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,1), 'Y', Items.iron_ingot); addRecipe("Sign Wood3", new ItemStack(CustomItems.sign, 1, 2), false, "YYY", "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,2), 'Y', Items.iron_ingot); addRecipe("Sign Wood4", new ItemStack(CustomItems.sign, 1, 3), false, "YYY", "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,3), 'Y', Items.iron_ingot); addRecipe("Sign Wood5", new ItemStack(CustomItems.sign, 1, 4), false, "YYY", "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,4), 'Y', Items.iron_ingot); addRecipe("Sign Wood6", new ItemStack(CustomItems.sign, 1, 5), false, "YYY", "XXX", "XXX", 'X', new ItemStack(Blocks.planks,1,5), 'Y', Items.iron_ingot); - + addRecipe("Lamp", new ItemStack(CustomItems.lamp), false, "XXX","YZY","XXX", 'X', Items.iron_ingot, 'Y', Blocks.glass, 'Z', Blocks.torch); addRecipe("Candle", new ItemStack(CustomItems.candle), false, "XZX"," X ", 'X', Items.iron_ingot, 'Z', Blocks.torch); addRecipe("BigSign", new ItemStack(CustomItems.bigsign, 2), false, "XXX","XXX","XXX", 'X', Blocks.planks); @@ -159,7 +159,7 @@ public class RecipesDefault { addRecipe("Battle Axe5", CustomItems.battleAxeDiamond, false, "XX","XY"," Y", " Y", 'Y', Items.stick, 'X', Items.diamond); addRecipe("Battle Axe6", CustomItems.battleAxeBronze, false, "XX","XY"," Y", " Y", 'Y', Items.stick, 'X', CustomItems.bronze_ingot); addRecipe("Battle Axe7", CustomItems.battleAxeEmerald, false, "XX","XY"," Y", " Y", 'Y', Items.stick, 'X', Items.emerald); - + addRecipe("Halberd1", CustomItems.halberdWood, false, " X ","XYX"," Y ", " Y ", 'Y', Items.stick, 'X', Blocks.planks); addRecipe("Halberd2", CustomItems.halberdStone, false, " X ","XYX"," Y ", " Y ", 'Y', Items.stick, 'X', Blocks.cobblestone); addRecipe("Halberd3", CustomItems.halberdIron, false, " X ","XYX"," Y ", " Y ", 'Y', Items.stick, 'X', Items.iron_ingot); @@ -167,7 +167,7 @@ public class RecipesDefault { addRecipe("Halberd5", CustomItems.halberdDiamond, false, " X ","XYX"," Y ", " Y ", 'Y', Items.stick, 'X', Items.diamond); addRecipe("Halberd6", CustomItems.halberdBronze, false, " X ","XYX"," Y ", " Y ", 'Y', Items.stick, 'X', CustomItems.bronze_ingot); addRecipe("Halberd7", CustomItems.halberdEmerald, false, " X ","XYX"," Y ", " Y ", 'Y', Items.stick, 'X', Items.emerald); - + addRecipe("Glaive1", CustomItems.glaiveWood, false, "X "," Y "," Y ", " X", 'Y', Items.stick, 'X', Blocks.planks); addRecipe("Glaive2", CustomItems.glaiveStone, false, "X "," Y "," Y ", " X", 'Y', Items.stick, 'X', Blocks.cobblestone); addRecipe("Glaive3", CustomItems.glaiveIron, false, "X "," Y "," Y ", " X", 'Y', Items.stick, 'X', Items.iron_ingot); @@ -175,7 +175,7 @@ public class RecipesDefault { addRecipe("Glaive5", CustomItems.glaiveDiamond, false, "X "," Y "," Y ", " X", 'Y', Items.stick, 'X', Items.diamond); addRecipe("Glaive6", CustomItems.glaiveBronze, false, "X "," Y "," Y ", " X", 'Y', Items.stick, 'X', CustomItems.bronze_ingot); addRecipe("Glaive7", CustomItems.glaiveEmerald, false, "X "," Y "," Y ", " X", 'Y', Items.stick, 'X', Items.emerald); - + addRecipe("Trident1", CustomItems.tridentWood, false, "X X"," X "," Y ", " Y ", 'Y', Items.stick, 'X', Blocks.planks); addRecipe("Trident2", CustomItems.tridentStone, false, "X X"," X "," Y ", " Y ", 'Y', Items.stick, 'X', Blocks.cobblestone); addRecipe("Trident3", CustomItems.tridentIron, false, "X X"," X "," Y ", " Y ", 'Y', Items.stick, 'X', Items.iron_ingot); @@ -183,7 +183,7 @@ public class RecipesDefault { addRecipe("Trident5", CustomItems.tridentDiamond, false, "X X"," X "," Y ", " Y ", 'Y', Items.stick, 'X', Items.diamond); addRecipe("Trident6", CustomItems.tridentBronze, false, "X X"," X "," Y ", " Y ", 'Y', Items.stick, 'X', CustomItems.bronze_ingot); addRecipe("Trident7", CustomItems.tridentEmerald, false, "X X"," X "," Y ", " Y ", 'Y', Items.stick, 'X', Items.emerald); - + } } } diff --git a/src/main/resources/assets/customnpcs/textures/models/stool/oak.png b/src/main/resources/assets/customnpcs/textures/models/stool/oak.png new file mode 100644 index 0000000000000000000000000000000000000000..54d8277a23a38693f56187613e6d981380bfaa86 GIT binary patch literal 607 zcmV-l0-*hgP)Px%8A(JzRCt{2*S~AqKoke?uY(p_HsWb8IABORCR>-R9kcWg$dVy*|AlmD|AovQ zy7Uj|lA&Aa5Ga8xfe!gW69~AVLs+WFkg9`p%2|=|*~CN^-_IhSc-Zp2cXv-MSUNn| zNe9va0EpLx3L}Wu1pufp0s!2pzW@N6xR0MsTDHHvOpa~fKstD}IRpSa+=mc59 z5|1Ii006{OP+?>hR~Ob3ptao|lKcwen#AKG!}G+wH0udCyZAFv;<~(Hl>R7)C&shl z>cDye-n`y~_)=sN0M@fg$9A6C%c~oR*R_hPi#6Looy8;`KeT2 zbK?Dj3e-e-!zg|GxR=-Z^5Ja?BReMZ;gMH?F7c{Z({p{_-utgh?HHZ&>k$UhseCY< zvGeN@ke}=N-mF&mIlph2irGCp*h%&7-1pt0S3f@5PhoU&nqJqt?>^U}r(aaD2aJLk zecvrUYbsC>U$Pc9FH2pr<+5Kzt>dHpblM*iUsgWDv#gn=-FAB@kDJax#g1LID>s#s z#N(nrPx71Pag#avy&dK|duiNc&bRMBv9-|$0Q@-p1>`R==D5k6?8wU+lgHz)JSHL{ tA|fIpA|fIpA|fIpA|fIpA|j#{^B-DKcVg0$m7@Rv002ovPDHLkV1n3T8~FeL literal 0 HcmV?d00001 From 4d2ced4528634e6d2f0a28e679c07d13e9b6eaeb Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 27 Jan 2025 17:21:11 -0500 Subject: [PATCH 013/157] Updated Banners --- .../java/noppes/npcs/ServerEventsHandler.java | 15 ++- .../noppes/npcs/blocks/tiles/TileBanner.java | 16 ++- .../npcs/client/model/blocks/ModelStool.java | 27 +++-- .../blocks/banner/ModelBannerFloorFlag.java | 35 +++--- .../model/blocks/banner/ModelBannerWall.java | 37 +++++++ .../blocks/banner/ModelBannerWallFlag.java | 31 ++++++ .../blocks/legacy/ModelLegacyWallBanner.java | 6 -- .../renderer/blocks/BlockBannerRenderer.java | 102 ++++++++++++++---- .../blocks/BlockCarpentryBenchRenderer.java | 4 +- .../renderer/blocks/BlockChairRenderer.java | 2 + .../renderer/blocks/BlockStoolRenderer.java | 10 +- .../blocks/BlockWallBannerRenderer.java | 101 +++++++++++++---- .../java/noppes/npcs/config/ConfigClient.java | 8 ++ .../npcs/constants/EnumBannerVariant.java | 5 + .../models/banner/flag/BannerFlag1.png | Bin 270 -> 0 bytes .../models/banner/flag/BannerFlag2.png | Bin 282 -> 0 bytes .../models/banner/flag/BannerFlag3.png | Bin 297 -> 0 bytes .../models/banner/flag/BannerFlag4.png | Bin 407 -> 0 bytes .../models/banner/flag/BannerFlag5.png | Bin 270 -> 0 bytes .../textures/models/banner/flag/curved.png | Bin 0 -> 284 bytes .../textures/models/banner/flag/normal.png | Bin 0 -> 319 bytes .../textures/models/banner/flag/pointy.png | Bin 0 -> 305 bytes .../textures/models/banner/flag/torn.png | Bin 0 -> 447 bytes .../textures/models/banner/flag/triangle.png | Bin 0 -> 328 bytes .../customnpcs/textures/models/stool/oak.png | Bin 607 -> 399 bytes 25 files changed, 314 insertions(+), 85 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerWall.java create mode 100644 src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerWallFlag.java create mode 100644 src/main/java/noppes/npcs/constants/EnumBannerVariant.java delete mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag1.png delete mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag2.png delete mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag3.png delete mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag4.png delete mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag5.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/curved.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/normal.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/pointy.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/torn.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/banner/flag/triangle.png diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index e4c8b9ff6..f67759ed5 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -11,6 +11,7 @@ import net.minecraft.entity.passive.EntityVillager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -255,11 +256,23 @@ public class ServerEventsHandler { } if(!player.worldObj.isRemote){ + if(block == CustomItems.banner || block == CustomItems.wallBanner){ + // If sneaking and using shear + if(player.isSneaking() && item.getItem() == Items.shears){ + int currentVariantIndex = tile.variant.ordinal(); + int nextVariantIndex = (currentVariantIndex + 1) % EnumBannerVariant.values().length; + tile.variant = EnumBannerVariant.values()[nextVariantIndex]; + + player.worldObj.markBlockForUpdate(event.x, y, event.z); + event.setCanceled(true); + return; + } + } + tile.icon = item.copy(); player.worldObj.markBlockForUpdate(event.x, y, event.z); event.setCanceled(true); } - } } diff --git a/src/main/java/noppes/npcs/blocks/tiles/TileBanner.java b/src/main/java/noppes/npcs/blocks/tiles/TileBanner.java index bb8075346..3cbc87b43 100644 --- a/src/main/java/noppes/npcs/blocks/tiles/TileBanner.java +++ b/src/main/java/noppes/npcs/blocks/tiles/TileBanner.java @@ -3,29 +3,39 @@ package noppes.npcs.blocks.tiles; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import noppes.npcs.constants.EnumBannerVariant; public class TileBanner extends TileColorable { - + public ItemStack icon; + public EnumBannerVariant variant = EnumBannerVariant.Normal; public long time = 0; public void readFromNBT(NBTTagCompound compound){ super.readFromNBT(compound); icon = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("BannerIcon")); + + int variantIndex = compound.getInteger("BannerVariant"); + if (variantIndex >= 0 && variantIndex < EnumBannerVariant.values().length) { + variant = EnumBannerVariant.values()[variantIndex]; + } else { + variant = EnumBannerVariant.Normal; + } } public void writeToNBT(NBTTagCompound compound){ super.writeToNBT(compound); if(icon != null) compound.setTag("BannerIcon", icon.writeToNBT(new NBTTagCompound())); + compound.setInteger("BannerVariant", variant.ordinal()); } @Override public AxisAlignedBB getRenderBoundingBox(){ return AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 2, zCoord + 1); } - + public boolean canEdit(){ - return System.currentTimeMillis() - time < 10000; + return System.currentTimeMillis() - time < 20000; } } diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelStool.java b/src/main/java/noppes/npcs/client/model/blocks/ModelStool.java index 2cf65f015..429e5ea96 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelStool.java +++ b/src/main/java/noppes/npcs/client/model/blocks/ModelStool.java @@ -9,21 +9,20 @@ public class ModelStool extends ModelBase { private final ModelRenderer stool; public ModelStool() { - textureWidth = 64; - textureHeight = 64; + textureWidth = 64; + textureHeight = 32; - stool = new ModelRenderer(this); - stool.setRotationPoint(0.0F, 24.0F, 0.0F); - stool.cubeList.add(new ModelBox(stool, 0, 0, -5.0F, -9.0F, -5.0F, 10, 2, 10, 0.0F)); - stool.cubeList.add(new ModelBox(stool, 0, 12, 2.0F, -7.0F, -4.0F, 2, 7, 2, 0.0F)); - stool.cubeList.add(new ModelBox(stool, 8, 8, 3.0F, -5.0F, -2.0F, 0, 2, 4, 0.0F)); - stool.cubeList.add(new ModelBox(stool, 8, 12, -2.0F, -5.0F, -3.0F, 4, 2, 0, 0.0F)); - stool.cubeList.add(new ModelBox(stool, 0, 12, -4.0F, -7.0F, -4.0F, 2, 7, 2, 0.0F)); - stool.cubeList.add(new ModelBox(stool, 0, 12, -4.0F, -7.0F, 2.0F, 2, 7, 2, 0.0F)); - stool.cubeList.add(new ModelBox(stool, 8, 8, -3.0F, -5.0F, -2.0F, 0, 2, 4, 0.0F)); - stool.cubeList.add(new ModelBox(stool, 0, 12, 2.0F, -7.0F, 2.0F, 2, 7, 2, 0.0F)); - stool.cubeList.add(new ModelBox(stool, 8, 12, -2.0F, -5.0F, 3.0F, 4, 2, 0, 0.0F)); - } + stool = new ModelRenderer(this); + stool.setRotationPoint(0.0F, 24.0F, 0.0F); + stool.cubeList.add(new ModelBox(stool, 0, 0, -5.0F, -9.0F, -5.0F, 10, 2, 10, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 0, 12, 2.0F, -7.0F, -4.0F, 2, 7, 2, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 8, 8, 3.0F, -5.0F, -2.0F, 0, 2, 4, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 8, 12, -2.0F, -5.0F, -3.0F, 4, 2, 0, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 0, 12, -4.0F, -7.0F, -4.0F, 2, 7, 2, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 0, 12, -4.0F, -7.0F, 2.0F, 2, 7, 2, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 8, 8, -3.0F, -5.0F, -2.0F, 0, 2, 4, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 0, 12, 2.0F, -7.0F, 2.0F, 2, 7, 2, 0.0F)); + stool.cubeList.add(new ModelBox(stool, 8, 12, -2.0F, -5.0F, 3.0F, 4, 2, 0, 0.0F)); } @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { diff --git a/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloorFlag.java b/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloorFlag.java index 25adeb70d..030145314 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloorFlag.java +++ b/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerFloorFlag.java @@ -6,25 +6,26 @@ import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelBannerFloorFlag extends ModelBase { - private final ModelRenderer BannerFlag; + public final ModelRenderer BannerFlag; - public ModelBannerFloorFlag() { - textureWidth = 32; - textureHeight = 32; + public ModelBannerFloorFlag() { + textureWidth = 32; + textureHeight = 32; - BannerFlag = new ModelRenderer(this); - BannerFlag.setRotationPoint(0.0F, -8.0F, 5.0F); - BannerFlag.cubeList.add(new ModelBox(BannerFlag, 0, 0, -8.0F, 0.0F, -6.05F, 16, 32, 0, 0.0F)); - } + BannerFlag = new ModelRenderer(this); + BannerFlag.setRotationPoint(0.0F, -8.0F, 5.0F); + BannerFlag.cubeList.add(new ModelBox(BannerFlag, 2, 0, -7.0F, 0.4F, -6.05F, 14, 29, 0, 0.0F)); + } - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - BannerFlag.render(f5); - } + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + // Render the flag + BannerFlag.render(f5); + } - public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } } diff --git a/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerWall.java b/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerWall.java new file mode 100644 index 000000000..e3756d963 --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerWall.java @@ -0,0 +1,37 @@ +package noppes.npcs.client.model.blocks.banner; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelBannerWall extends ModelBase { + private final ModelRenderer bb_main; + private final ModelRenderer cube_r1; + + public ModelBannerWall() { + textureWidth = 64; + textureHeight = 64; + + bb_main = new ModelRenderer(this); + bb_main.setRotationPoint(0.0F, 24.0F, 0.0F); + bb_main.cubeList.add(new ModelBox(bb_main, 0, 0, -8.0F, -32.0F, 5.0F, 16, 3, 3, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 0, 8, -6.0F, -36.0F, 6.5F, 4, 4, 0, 0.0F)); + + cube_r1 = new ModelRenderer(this); + cube_r1.setRotationPoint(4.0F, -34.0F, 6.5F); + bb_main.addChild(cube_r1); + setRotationAngle(cube_r1, 0.0F, 3.1416F, 0.0F); + cube_r1.cubeList.add(new ModelBox(cube_r1, 0, 8, -2.0F, -2.0F, 0.0F, 4, 4, 0, 0.0F));} + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + bb_main.render(f5); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerWallFlag.java b/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerWallFlag.java new file mode 100644 index 000000000..486db9504 --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/banner/ModelBannerWallFlag.java @@ -0,0 +1,31 @@ +package noppes.npcs.client.model.blocks.banner; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelBannerWallFlag extends ModelBase { + public final ModelRenderer BannerFlag; + + public ModelBannerWallFlag() { + textureWidth = 32; + textureHeight = 32; + + BannerFlag = new ModelRenderer(this); + BannerFlag.setRotationPoint(0.0F, -8.0F, 5.0F); + BannerFlag.cubeList.add(new ModelBox(BannerFlag, 2, 0, -7.0F, 0.4F, -0.05F, 14, 29, 0, 0.0F)); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + // Render the flag + BannerFlag.render(f5); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyWallBanner.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyWallBanner.java index 851201603..8c3a6dd8a 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyWallBanner.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyWallBanner.java @@ -1,9 +1,3 @@ -// Date: 21-2-2014 11:50:33 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - package noppes.npcs.client.model.blocks.legacy; import net.minecraft.client.model.ModelBase; diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java index f428c0372..2bfc59e26 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java @@ -10,6 +10,7 @@ import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockBanner; @@ -19,6 +20,7 @@ import noppes.npcs.client.model.blocks.banner.ModelBannerFloorFlag; import noppes.npcs.client.model.blocks.legacy.ModelLegacyBanner; import noppes.npcs.client.model.blocks.legacy.ModelLegacyBannerFlag; import noppes.npcs.config.ConfigClient; +import noppes.npcs.constants.EnumBannerVariant; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -30,9 +32,13 @@ public class BlockBannerRenderer extends BlockRendererInterface{ private final ModelBannerFloor banner = new ModelBannerFloor(); private final ModelBannerFloorFlag flag = new ModelBannerFloorFlag(); - public static final ResourceLocation legacyFlagResource = new ResourceLocation("customnpcs","textures/models/BannerFlag.png"); - public static final ResourceLocation flagResource = new ResourceLocation("customnpcs","textures/models/banner/flag/BannerFlag1.png"); + + public static final ResourceLocation normalFlag = new ResourceLocation("customnpcs","textures/models/banner/flag/normal.png"); + public static final ResourceLocation pointyFlag = new ResourceLocation("customnpcs","textures/models/banner/flag/pointy.png"); + public static final ResourceLocation triangleFlag = new ResourceLocation("customnpcs","textures/models/banner/flag/triangle.png"); + public static final ResourceLocation tornFlag = new ResourceLocation("customnpcs","textures/models/banner/flag/torn.png"); + public static final ResourceLocation curvedFlag = new ResourceLocation("customnpcs","textures/models/banner/flag/curved.png"); protected static final ResourceLocation BannerWood = new ResourceLocation("customnpcs","textures/models/banner/BannerFloorWood.png"); protected static final ResourceLocation BannerStone = new ResourceLocation("customnpcs","textures/models/banner/BannerFloorStone.png"); @@ -66,31 +72,56 @@ public class BlockBannerRenderer extends BlockRendererInterface{ float[] color = colorTable[tile.color]; GL11.glColor3f(color[0], color[1], color[2]); legacyFlag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + + GL11.glPopMatrix(); + GL11.glColor3f(1, 1, 1); + if(tile.icon != null && !this.playerTooFar(tile)){ + doRender(var2, var4, var6, tile.rotation, tile.icon, 0); + } } else { + long worldTime = tile.getWorldObj() != null ? tile.getWorldObj().getTotalWorldTime() : 0; + // 100 is one full revolution, so we can just mod by 100 without affecting the result + int animationProgress100 = (((tile.xCoord % 100) * 7 + (tile.yCoord % 100) * 9 + (tile.zCoord % 100) * 13) + (int) (worldTime % 100)) % 100; + float f3 = (float) animationProgress100 + var8; + float angle_x = (-0.0125F + 0.01F * MathHelper.cos(f3 * 0.01F * 2F * (float) Math.PI)) * (float) Math.PI; + flag.BannerFlag.rotateAngleX = angle_x; + setBannerMaterial(var1.getBlockMetadata()); banner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - this.bindTexture(flagResource); + setFlagType(tile.variant); float[] color = colorTable[tile.color]; + GL11.glPushMatrix(); GL11.glColor3f(color[0], color[1], color[2]); - flag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - } + flag.render(null, 0, 0, 0, f3, 0.0F, 0.0625F); + GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glColor3f(1, 1, 1); - if(tile.icon != null && !this.playerTooFar(tile)){ - doRender(var2, var4, var6, tile.rotation, tile.icon); + GL11.glPopMatrix(); + GL11.glColor3f(1, 1, 1); + if(tile.icon != null && !this.playerTooFar(tile)){ + doRender(var2, var4, var6, tile.rotation, tile.icon, angle_x); + } } } - public void doRender(double par2, double par4, double par6, int meta, ItemStack iicon) + public void doRender(double par2, double par4, double par6, int meta, ItemStack iicon, float rotate) { GL11.glPushMatrix(); bindTexture(TextureMap.locationItemsTexture); GL11.glTranslatef((float)par2 + 0.5f, (float)par4 +1.3f, (float)par6 + 0.5f); GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(90 * meta, 0, 1, 0); - GL11.glTranslatef(0, 0, -0.14f); + if(ConfigClient.LegacyBanner){ + GL11.glTranslatef(0, 0, -0.14f); + } + else { + GL11.glTranslatef(0, 0, -0.075f); + + GL11.glTranslatef(0, -0.6f, 0); // Translate to pivot point + GL11.glRotatef((float) Math.toDegrees(rotate), 1, 0, 0); // Apply sway rotation + GL11.glTranslatef(0, 0.6f, 0); // Translate back after rotation + } + GL11.glDepthMask(false); float f2 = 0.05f; Minecraft mc = Minecraft.getMinecraft(); @@ -156,14 +187,26 @@ public class BlockBannerRenderer extends BlockRendererInterface{ GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(180, 0, 1, 0); - setMaterialTexture(metadata); - GL11.glColor3f(1, 1, 1); - legacyBanner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + if(ConfigClient.LegacyBanner){ + setMaterialTexture(metadata); + GL11.glColor3f(1, 1, 1); + legacyBanner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + + this.bindTexture(legacyFlagResource); + float[] color = colorTable[15 - metadata]; + GL11.glColor3f(color[0], color[1], color[2]); + legacyFlag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + else { + setBannerMaterial(metadata); + banner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + + this.bindTexture(normalFlag); + float[] color = colorTable[15 - metadata]; + GL11.glColor3f(color[0], color[1], color[2]); + flag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } - this.bindTexture(legacyFlagResource); - float[] color = colorTable[15 - metadata]; - GL11.glColor3f(color[0], color[1], color[2]); - legacyFlag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); GL11.glPopMatrix(); } @@ -176,7 +219,7 @@ public class BlockBannerRenderer extends BlockRendererInterface{ return 26; } - public void setBannerMaterial(int meta){ + public static void setBannerMaterial(int meta){ TextureManager manager = Minecraft.getMinecraft().getTextureManager(); if(meta == 1) manager.bindTexture(BannerStone); @@ -189,4 +232,25 @@ public class BlockBannerRenderer extends BlockRendererInterface{ else manager.bindTexture(BannerWood); } + + public static void setFlagType(EnumBannerVariant variant){ + TextureManager manager = Minecraft.getMinecraft().getTextureManager(); + switch (variant){ + case Pointy: + manager.bindTexture(pointyFlag); + break; + case Triangle: + manager.bindTexture(triangleFlag); + break; + case Torn: + manager.bindTexture(tornFlag); + break; + case Curved: + manager.bindTexture(curvedFlag); + break; + default: + manager.bindTexture(normalFlag); + break; + } + } } diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java index 57c8c5f43..81a8de7d3 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java @@ -40,9 +40,11 @@ public class BlockCarpentryBenchRenderer extends TileEntitySpecialRenderer imple this.bindTexture(anvilTexture); anvil.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); } - else{ + else { + GL11.glEnable(GL11.GL_ALPHA_TEST); this.bindTexture(carpentryBench); model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + GL11.glDisable(GL11.GL_ALPHA_TEST); } GL11.glPopMatrix(); } diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java index d5a04a32c..86ff10676 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java @@ -34,11 +34,13 @@ public class BlockChairRenderer extends BlockRendererInterface{ GL11.glRotatef(90 * tile.rotation, 0, 1, 0); GL11.glColor3f(1, 1, 1); + GL11.glEnable(GL11.GL_ALPHA_TEST); setWoodTexture(var1.getBlockMetadata()); if(ConfigClient.LegacyChair) legacyModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); else model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glPopMatrix(); } diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java index cecdfce85..32ea1655c 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java @@ -38,14 +38,22 @@ public class BlockStoolRenderer extends BlockRendererInterface{ GL11.glRotatef(180, 0, 0, 1); GL11.glColor3f(1, 1, 1); + + GL11.glEnable(GL11.GL_ALPHA_TEST); if(ConfigClient.LegacyStool){ setWoodTexture(var1.getBlockMetadata()); legacyStool.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); } else { - setStoolTexture(var1.getBlockMetadata()); + if(ConfigClient.WoodTextures) { + setWoodTexture(var1.getBlockMetadata()); + } + else { + setStoolTexture(var1.getBlockMetadata()); + } stool.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); } + GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glPopMatrix(); } diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockWallBannerRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockWallBannerRenderer.java index 0b83c9fa3..8ccbe2f75 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockWallBannerRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockWallBannerRenderer.java @@ -11,19 +11,26 @@ import net.minecraft.init.Blocks; import net.minecraft.item.*; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockWallBanner; import noppes.npcs.blocks.tiles.TileWallBanner; +import noppes.npcs.client.model.blocks.banner.ModelBannerWall; +import noppes.npcs.client.model.blocks.banner.ModelBannerWallFlag; import noppes.npcs.client.model.blocks.legacy.ModelLegacyWallBanner; import noppes.npcs.client.model.blocks.legacy.ModelLegacyWallBannerFlag; +import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; public class BlockWallBannerRenderer extends BlockRendererInterface{ - private final ModelLegacyWallBanner model = new ModelLegacyWallBanner(); - private final ModelLegacyWallBannerFlag flag = new ModelLegacyWallBannerFlag(); + private final ModelLegacyWallBanner modelLegacyWallBanner = new ModelLegacyWallBanner(); + private final ModelLegacyWallBannerFlag modelLegacyWallBannerFlag = new ModelLegacyWallBannerFlag(); + + private final ModelBannerWall model = new ModelBannerWall(); + private final ModelBannerWallFlag flag = new ModelBannerWallFlag(); public BlockWallBannerRenderer(){ ((BlockWallBanner)CustomItems.wallBanner).renderId = RenderingRegistry.getNextAvailableRenderId(); @@ -42,29 +49,66 @@ public class BlockWallBannerRenderer extends BlockRendererInterface{ GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(90 * tile.rotation, 0, 1, 0); - setMaterialTexture(var1.getBlockMetadata()); - GL11.glColor3f(1, 1, 1); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + if(ConfigClient.LegacyBanner){ + setMaterialTexture(var1.getBlockMetadata()); + GL11.glColor3f(1, 1, 1); + modelLegacyWallBanner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - this.bindTexture(BlockBannerRenderer.legacyFlagResource); - float[] color = BlockBannerRenderer.colorTable[tile.color]; - GL11.glColor3f(color[0], color[1], color[2]); - flag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + this.bindTexture(BlockBannerRenderer.legacyFlagResource); + float[] color = BlockBannerRenderer.colorTable[tile.color]; + GL11.glColor3f(color[0], color[1], color[2]); + modelLegacyWallBannerFlag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - GL11.glPopMatrix(); - GL11.glColor3f(1, 1, 1); - if(tile.icon != null && !this.playerTooFar(tile)){ - doRender(var2, var4, var6, tile.rotation, tile.icon); + GL11.glPopMatrix(); + GL11.glColor3f(1, 1, 1); + if(tile.icon != null && !this.playerTooFar(tile)){ + doRender(var2, var4, var6, tile.rotation, tile.icon, 0); + } + } + else { + long worldTime = tile.getWorldObj() != null ? tile.getWorldObj().getTotalWorldTime() : 0; + // 100 is one full revolution, so we can just mod by 100 without affecting the result + int animationProgress100 = (((tile.xCoord % 100) * 7 + (tile.yCoord % 100) * 9 + (tile.zCoord % 100) * 13) + (int) (worldTime % 100)) % 100; + float f3 = (float) animationProgress100 + var8; + float angle_x = (-0.0125F + 0.01F * MathHelper.cos(f3 * 0.01F * 2F * (float) Math.PI)) * (float) Math.PI; + flag.BannerFlag.rotateAngleX = angle_x; + + BlockBannerRenderer.setBannerMaterial(var1.getBlockMetadata()); + model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + + BlockBannerRenderer.setFlagType(tile.variant); + float[] color = colorTable[tile.color]; + GL11.glPushMatrix(); + GL11.glColor3f(color[0], color[1], color[2]); + flag.render(null, 0, 0, 0, f3, 0.0F, 0.0625F); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + GL11.glColor3f(1, 1, 1); + if(tile.icon != null && !this.playerTooFar(tile)){ + doRender(var2, var4, var6, tile.rotation, tile.icon, angle_x); + } } } - public void doRender(double par2, double par4, double par6, int meta, ItemStack iicon) + public void doRender(double par2, double par4, double par6, int meta, ItemStack iicon, float rotate) { GL11.glPushMatrix(); bindTexture(TextureMap.locationItemsTexture); - GL11.glTranslatef((float)par2 + 0.5f, (float)par4 +0.2f, (float)par6 + 0.5f); + GL11.glTranslatef((float)par2 + 0.5f, (float)par4 + 0.2f, (float)par6 + 0.5f); GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(90 * meta, 0, 1, 0); - GL11.glTranslatef(0, 0, 0.26f); + + if(ConfigClient.LegacyBanner){ + GL11.glTranslatef(0, 0, 0.26f); + } + else { + GL11.glTranslatef(0, 0, 0.3f); + + GL11.glTranslatef(0, -0.6f, 0); // Translate to pivot point + GL11.glRotatef((float) Math.toDegrees(rotate), 1, 0, 0); // Apply sway rotation + GL11.glTranslatef(0, 0.6f, 0); // Translate to pivot point + } + GL11.glDepthMask(false); float f2 = 0.05f; Minecraft mc = Minecraft.getMinecraft(); @@ -148,14 +192,25 @@ public class BlockWallBannerRenderer extends BlockRendererInterface{ GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(180, 0, 1, 0); - setMaterialTexture(metadata); - GL11.glColor3f(1, 1, 1); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + if(ConfigClient.LegacyBanner){ + setMaterialTexture(metadata); + GL11.glColor3f(1, 1, 1); + modelLegacyWallBanner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - this.bindTexture(BlockBannerRenderer.legacyFlagResource); - float[] color = BlockBannerRenderer.colorTable[15 - metadata]; - GL11.glColor3f(color[0], color[1], color[2]); - flag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + this.bindTexture(BlockBannerRenderer.legacyFlagResource); + float[] color = BlockBannerRenderer.colorTable[15 - metadata]; + GL11.glColor3f(color[0], color[1], color[2]); + modelLegacyWallBannerFlag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + else { + BlockBannerRenderer.setBannerMaterial(metadata); + model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + + this.bindTexture(BlockBannerRenderer.normalFlag); + float[] color = colorTable[15 - metadata]; + GL11.glColor3f(color[0], color[1], color[2]); + flag.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } GL11.glPopMatrix(); } diff --git a/src/main/java/noppes/npcs/config/ConfigClient.java b/src/main/java/noppes/npcs/config/ConfigClient.java index 22ef51590..f44dda428 100644 --- a/src/main/java/noppes/npcs/config/ConfigClient.java +++ b/src/main/java/noppes/npcs/config/ConfigClient.java @@ -17,6 +17,7 @@ public class ConfigClient public final static String VISUAL = "Visual"; public final static String QUESTING = "Questing"; public final static String MODEL = "Model"; + public final static String TEXTURE = "Texture"; /** @@ -73,6 +74,11 @@ public class ConfigClient public static Property BannerAlertsProperty; public static boolean BannerAlerts = true; + /** + * Texture Properties + **/ + public static boolean WoodTextures = false; + /** * Model Properties **/ @@ -139,6 +145,8 @@ public class ConfigClient BannerAlertsProperty = config.get(VISUAL, "All Banner Alerts", true, "Universal enable/disable for Banner Alerts"); BannerAlerts = BannerAlertsProperty.getBoolean(true); + WoodTextures = config.get(TEXTURE, "Wood Textures", false, "Models like Chairs and Stools will use default MC Wood Textures").getBoolean(false); + LegacyCampfire = config.get(MODEL, "Legacy Campfire Model", false).getBoolean(false); LegacyBanner = config.get(MODEL, "Legacy Banner Model", false).getBoolean(false); LegacyBarrel = config.get(MODEL, "Legacy Barrel Model", false).getBoolean(false); diff --git a/src/main/java/noppes/npcs/constants/EnumBannerVariant.java b/src/main/java/noppes/npcs/constants/EnumBannerVariant.java new file mode 100644 index 000000000..343d14c3f --- /dev/null +++ b/src/main/java/noppes/npcs/constants/EnumBannerVariant.java @@ -0,0 +1,5 @@ +package noppes.npcs.constants; + +public enum EnumBannerVariant { + Normal, Curved, Pointy, Triangle, Torn +} diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag1.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag1.png deleted file mode 100644 index 03e0daa429e693cea2b62d4917bdaefb896fd676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCikh0(?STckkZ4cJ11uM~?ypB)3jj3Q|`RygM1AJ9M0{3{@ZgeUD52SFX!`S;TO{sV{e%WGGenT zjAPdnYMcbATDT!HPfBx{Dx$=lh?bUwn;LQ)p=gm@0N-qBG zdce+Vx8@>^u2Y921P!ga*}G-F-4vYkc7bP*rC9!#4GVTL-!Wpl%2UQ226P64r>mdK II;Vst0AmPV<^TWy diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag2.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag2.png deleted file mode 100644 index ea3b68322c77c2ecf27210bea5f6529b448c1b83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}S3F%DLn2z= zPB-K`tia=HAE?HErz^Nvn?LR{=My$91&gdJpWKB%&X-MY>^79M=$!d*Z~id`g_Z|h z4;soC6c!~dR990nzQ@pzTh;FQ_RO5qvyF06^_3FRq#M4(XD^#?@+sH*_Ep}s3j6Lc zb3c$|2xsd$D&RDW*>msQTswBRei6aOj=E$K{RY+z4D%R2Twi>Hv0>k=?FuE&Hiv)W znV{gNm5}(4?E-gVX5VK`4#gcINwHb7n@#i?Oj`1c()JzQ!^LnlMrqRK{fGCglz1Fi ey+<$d6{|{Yxpz$NEeW9i7(8A5T-G@yGywpaNoi#O diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag3.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag3.png deleted file mode 100644 index 6639685fd308503f930cec00dbe66d62a651399a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297 zcmV+^0oMMBP)Px#<4Ht8R9J=WmoW~*APhx+P$mz#6(``hT*$Krujx`pQInJ;I4Y|6qe1wA;R_Er z=NTUo5lqumi~&H5ao7YeXaoQv+6)^n9km8cOSU=q=*Pa^dDB-0XjejXak^GE4Czi z@yD%LRhKV!&Us$XdEAQE$?^XCdmVWZfSGrjjTqy=%+CTaGg3;2olZ*09by4c)vw9d v5T4}-BC@G@Np>eZUP8dl2D7#)?J~Up9659R9hV%u00000NkvXXu0mjfi5hgO diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag4.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag4.png deleted file mode 100644 index 221b9c757a41a85cde975ccd401fa61f2b2a7fe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmV;I0cie-P)Px$QAtEWR9J=WS241MAPig_s}$7lF4UZWb8-SMWSt_dzsei+;Yc)ge;a2I+)W4@ z46U^l2QV{YjF)2okaG?{g9gk1Ktw+;M#evP>2cq?8^-e8kMm-}GvPXVELU zh=7@01WYl;9r+oy>CQO^UH4c31`COZpat7nTdxG01OPxvDU1|Vt<{YjdI~TYl_#;n zbPC=OG2w-@ng!gcW)BmB`ha3I3!XkOk9fclL$(D9bU2;s(hX~^>zxm|b;CP8;EA0NSc>ZvE4JVj zD_)kRd-Ls$c@!YFr$9tdO1ZohiHM5p}nk002ovPDHLkV1ja2 Bsh|J= diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag5.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/BannerFlag5.png deleted file mode 100644 index f2ad436b759ea003ac80c5093229354609198eb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Cp=voLn2z= zPPgVeV!+`NzbHgxU#Q>P=)enU+F|!Zm)ug~&?_6k0zja9yTXy)$f7wgq}gg*Y@ zS<+C>u_H-CP_5;6!{Zkz?Y|G)jQ4U8nD~FgBasPAK?kf^mWVDFweRFRuw6O7b>><< z#kZD>(SmV|{!cnXzb@bZ_JZrA$D$d5*>j(DcX4YhZ4u1p%4pqk|KbtOPx#)=5M`R9J=WS1}U9APiG-ojl}Mc{RWC;I&=qoMRwR+B6xgiGbx33i!-~H&RMZ zI50DoWy!`Z^zhboodDorCy6Kvv~zx4M84tyz}&T^6R|nK%$r@RxV8%s0W-sLM|e8{ z`kzX6dbBM6gg3VWdXkOuG67d01l&u2Ef6i(*ijyQ9Z~i0H5s z_waDLGY|qoK-7V#16N?OAKIF$r6N)t!?f0;Ja`9mK?8l`SxYj?%N+1-lpYv9!LN9S i2}`f0vv`5P-|+&icEbb#;6=Ou0000Px#`AI}UR9J=WmN62;APfW#PbwAsiWlgeegVHyq1I^vg8>Ijk_iP@d9W5A2i9Ql zlK1{VCJ}+Pws>x-hjY#u0C=Q>L{t=}WBGek{fGmAt!qg?R7^lbVqC%T)hbjKB7&41 z;Z6p^KGovP)r$NMx3vm-CL84n1OL!6FqeU}L9~?Cj&jKRKv3&c*Z${G?$if*eDMeV`U=PtJppR5-p|n> R2gCpX002ovPDHLkV1l-Fhh+c& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/pointy.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/pointy.png new file mode 100644 index 0000000000000000000000000000000000000000..2bceb94cdf20eea9a35acb3f0dea6ca35b10b129 GIT binary patch literal 305 zcmV-10nYx3P)Px#>q$gGR9J=Wmpcx`APhu@Xe$@F6{q&CT)1VM1ra`h1!WUynJOQiGZ<_UgO8Zm zA(4n+-}mggr5?^&YXIOCKO~}TVEin7uc}iV0Bl`Tx=+#Xm4mVw(1{AD9D@eMP(-ln3e;b1w+Wd?eKr9o!6Y!g~*jbEqII+udXaK$R{ z!P0|gEyxU4Ekh5eYM8~@$7i{!nAw&7ny%uOmVT}`vuD$I{~aOo00000NkvXXu0mjf Di=}_M literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/torn.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/torn.png new file mode 100644 index 0000000000000000000000000000000000000000..1eeb7c55d7e842c95b9ffbbc37f21d9e641098c6 GIT binary patch literal 447 zcmV;w0YLtVP)Px$c}YY;R9J=WmobvVAPhx6JEZt`;u#L@M=)xmk*wUoK#b85(R8q~&&qWM03f9_9gK+T1hjIU0Zi6{c950p z=D;vQb70wT>@Z76?|G4ph5S-H-DHdscwyZ?++2hp}|!<#U(n*O^S zv>IS$q?As-+nHJY0b=E*C*f~ALpuqzSLwbKS!tsfqqA~q2F_9|pEEPw?>9cdT`K3i pYyX(EwNG%T!EQqjxPSdUeFG~$M==EDUikn3002ovPDHLkV1lEz$Xx&c literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/banner/flag/triangle.png b/src/main/resources/assets/customnpcs/textures/models/banner/flag/triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..aed0c6050f427505b0136b3fcc2701f819507c99 GIT binary patch literal 328 zcmV-O0k{5%P)Px$0!c(cR9J=WmoW~*APhx6RVNR*l~2HNb0N8!Qs= z(!TExR8m!J+txgf5sZPCg)*7Y!40jt%@C2LX8Uz2(GH@*eWrG;0oIA^*?gL4qUEMp+v)o%B@E#{3 z0ug;|#U2iq+XKtMGO+qUFF^0Cd-{Nf!)Onf8JIaRb2yu3FL!7_MDooQuUo8$3_pIB z>lzRd#27<89%K9%Y=&zLm{~VS8LXGqSuPt;)m*!yAW5mV=_WnHH3m@pt$0+|d4^kB ax`dve%*?1iZP23t0000E(U;|NoB11}qsW+NT#zw^@0qg;9To z*WHOzOja&aalXhkW1Gt6oTFz-G@=;28_|MB_bsoTz3T~%QXD;^!J z2(!PWl93em_#bodwy&E1*A@O}l&E{XHL2)8&+Fv}19^BKJFSfS*_jX@2N-HZ?IMN-=1lm-(cSG`8~tdI!28M W!<{RSCDj9c&fw|l=d#Wzp$Pz6h^VXp delta 595 zcmV-Z0<8Uy1K$LY7k@wq1^@s6s%dfF00001b5ch_0Itp)=>Px%8A(JzRCt{2*S~Aq zKoke?uY(p_HsWb8IABORCR>-R9kcWg$dVy*|AlmD|AovQy7Uj|lA&Aa5Ga8xfe!gW z69~AVLs+WFkg9`p%2|=|*~CN^-_IhSc-Zp2cXv-MSUNn|Nq+~@0RV{Cg$g5x*98Em zFaiMFslNaKo4AjkPFl9Vy-bd6;6OTfwK)U;Jluy6e~7l*LlTc6z5oEkQ&3@K6;~J5 z6QH%-9+LbDAd*~_aNh=13$imQt?+d!SgBpyGxM!_u}?!&p_>SCcKu(i=Ic6SvVGtXB9r zzi*j}**!eiN%ijB_uZmbKR((|VRUkuUe~+tKG&kBUsSONjDi?_-z`3CDo_w#vKBTk zOI@<%vR_55m_+8+~NRzAbCteK_Vc6%s~o6bSSj$O4YH`R==D5k6?8wU+lgHz)JSHL{A|fIpA|fIpA|fIp hA|fIpA|j#{^B-DKcVg0$m7@Rv002ovPDHLkV1oHR9Y6p8 From 26f4158c17e339850b7dbb56ac7a36959b4731ba Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 27 Jan 2025 23:21:30 -0500 Subject: [PATCH 014/157] Legacy Carpentry Bench Support --- .../legacy/ModelLegacyCarpentryBench.java | 113 ++++++++++++++++++ .../renderer/blocks/BlockBannerRenderer.java | 2 +- .../blocks/BlockCarpentryBenchRenderer.java | 33 +++-- .../{BannerFlag.png => legacy/banner.png} | Bin .../textures/models/legacy/bench.png | Bin 0 -> 1727 bytes 5 files changed, 139 insertions(+), 9 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyCarpentryBench.java rename src/main/resources/assets/customnpcs/textures/models/{BannerFlag.png => legacy/banner.png} (100%) create mode 100644 src/main/resources/assets/customnpcs/textures/models/legacy/bench.png diff --git a/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyCarpentryBench.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyCarpentryBench.java new file mode 100644 index 000000000..9ccbd93e2 --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyCarpentryBench.java @@ -0,0 +1,113 @@ +package noppes.npcs.client.model.blocks.legacy; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelLegacyCarpentryBench extends ModelBase { + // fields + ModelRenderer Leg1; + ModelRenderer Leg2; + ModelRenderer Leg3; + ModelRenderer Leg4; + ModelRenderer Bottom_plate; + ModelRenderer Desktop; + ModelRenderer Backboard; + ModelRenderer Vice_Jaw1; + ModelRenderer Vice_Jaw2; + ModelRenderer Vice_Base1; + ModelRenderer Vice_Base2; + ModelRenderer Vice_Crank; + ModelRenderer Vice_Screw; + ModelRenderer Blueprint; + + public ModelLegacyCarpentryBench() { + this.textureWidth = 128; + this.textureHeight = 64; + + Leg1 = new ModelRenderer(this, 0, 0); + Leg1.addBox(0F, 0F, 0F, 2, 14, 2); + Leg1.setRotationPoint(6F, 10F, 5F); + + Leg2 = new ModelRenderer(this, 0, 0); + Leg2.addBox(0F, 0F, 0F, 2, 14, 2); + Leg2.setRotationPoint(6F, 10F, -5F); + + Leg3 = new ModelRenderer(this, 0, 0); + Leg3.addBox(0F, 0F, 0F, 2, 14, 2); + Leg3.setRotationPoint(-8F, 10F, 5F); + + Leg4 = new ModelRenderer(this, 0, 0); + Leg4.addBox(0F, 0F, 0F, 2, 14, 2); + Leg4.setRotationPoint(-8F, 10F, -5F); + + Bottom_plate = new ModelRenderer(this, 0, 24); + Bottom_plate.addBox(0F, 0F, 0F, 14, 1, 10); + Bottom_plate.setRotationPoint(-7F, 21F, -4F); + Bottom_plate.setTextureSize(130, 64); + + Desktop = new ModelRenderer(this, 0, 3); + Desktop.addBox(0F, 0F, 0F, 18, 2, 13); + Desktop.setRotationPoint(-9F, 9F, -6F); + + Backboard = new ModelRenderer(this, 0, 18); + Backboard.addBox(-1F, 0F, 0F, 18, 5, 1); + Backboard.setRotationPoint(-8F, 7F, 7F); + + Vice_Jaw1 = new ModelRenderer(this, 54, 18); + Vice_Jaw1.addBox(0F, 0F, 0F, 3, 2, 1); + Vice_Jaw1.setRotationPoint(3F, 6F, -8F); + + Vice_Jaw2 = new ModelRenderer(this, 54, 21); + Vice_Jaw2.addBox(0F, 0F, 0F, 3, 2, 1); + Vice_Jaw2.setRotationPoint(3F, 6F, -6F); + + Vice_Base1 = new ModelRenderer(this, 38, 30); + Vice_Base1.addBox(0F, 0F, 0F, 3, 1, 3); + Vice_Base1.setRotationPoint(3F, 8F, -5F); + + Vice_Base2 = new ModelRenderer(this, 38, 25); + Vice_Base2.addBox(0F, 0F, 0F, 1, 2, 2); + Vice_Base2.setRotationPoint(4F, 7F, -5F); + + Vice_Crank = new ModelRenderer(this, 54, 24); + Vice_Crank.addBox(0F, 0F, 0F, 1, 5, 1); + Vice_Crank.setRotationPoint(6F, 6F, -9F); + + Vice_Screw = new ModelRenderer(this, 44, 25); + Vice_Screw.addBox(0F, 0F, 0F, 1, 1, 4); + Vice_Screw.setRotationPoint(4F, 8F, -8F); + + Blueprint = new ModelRenderer(this, 31, 18); + Blueprint.addBox(0F, 0F, 0F, 8, 0, 7); + Blueprint.setRotationPoint(0F, 9F, 1F); + setRotation(Blueprint, 0.3271718F, 0.1487144F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5,entity); + Leg1.render(f5); + Leg2.render(f5); + Leg3.render(f5); + Leg4.render(f5); + Bottom_plate.render(f5); + Desktop.render(f5); + Backboard.render(f5); + Vice_Jaw1.render(f5); + Vice_Jaw2.render(f5); + Vice_Base1.render(f5); + Vice_Base2.render(f5); + Vice_Crank.render(f5); + Vice_Screw.render(f5); + Blueprint.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + +} diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java index 2bfc59e26..d7e19393e 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java @@ -32,7 +32,7 @@ public class BlockBannerRenderer extends BlockRendererInterface{ private final ModelBannerFloor banner = new ModelBannerFloor(); private final ModelBannerFloorFlag flag = new ModelBannerFloorFlag(); - public static final ResourceLocation legacyFlagResource = new ResourceLocation("customnpcs","textures/models/BannerFlag.png"); + public static final ResourceLocation legacyFlagResource = new ResourceLocation("customnpcs","textures/models/legacy/banner.png"); public static final ResourceLocation normalFlag = new ResourceLocation("customnpcs","textures/models/banner/flag/normal.png"); public static final ResourceLocation pointyFlag = new ResourceLocation("customnpcs","textures/models/banner/flag/pointy.png"); diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java index 81a8de7d3..70df788b1 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java @@ -12,15 +12,21 @@ import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockCarpentryBench; import noppes.npcs.client.model.blocks.ModelAnvil; import noppes.npcs.client.model.blocks.ModelCarpentryBench; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyCarpentryBench; +import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; public class BlockCarpentryBenchRenderer extends TileEntitySpecialRenderer implements ISimpleBlockRenderingHandler{ - private final ModelCarpentryBench model = new ModelCarpentryBench(); - private final ModelAnvil anvil = new ModelAnvil(); - private static final ResourceLocation anvilTexture = new ResourceLocation("customnpcs","textures/models/Steel.png"); - private static final ResourceLocation carpentryBench = new ResourceLocation("customnpcs","textures/models/CarpentryBench.png"); + private final ModelCarpentryBench modelCarpentryBench = new ModelCarpentryBench(); + private static final ResourceLocation carpentryBenchTexture = new ResourceLocation("customnpcs","textures/models/CarpentryBench.png"); + private final ModelAnvil anvil = new ModelAnvil(); + + private static final ResourceLocation anvilTexture = new ResourceLocation("customnpcs","textures/models/Steel.png"); + + private final ModelLegacyCarpentryBench legacyBench = new ModelLegacyCarpentryBench(); + private static final ResourceLocation legacyCarpentryBench = new ResourceLocation("customnpcs","textures/models/legacy/bench.png"); public BlockCarpentryBenchRenderer(){ ((BlockCarpentryBench)CustomItems.carpentyBench).renderId = RenderingRegistry.getNextAvailableRenderId(); @@ -41,9 +47,15 @@ public class BlockCarpentryBenchRenderer extends TileEntitySpecialRenderer imple anvil.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); } else { + GL11.glEnable(GL11.GL_ALPHA_TEST); - this.bindTexture(carpentryBench); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + if(ConfigClient.LegacyCarpentryBench){ + this.bindTexture(legacyCarpentryBench); + legacyBench.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } else { + this.bindTexture(carpentryBenchTexture); + modelCarpentryBench.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } GL11.glDisable(GL11.GL_ALPHA_TEST); } GL11.glPopMatrix(); @@ -60,8 +72,13 @@ public class BlockCarpentryBenchRenderer extends TileEntitySpecialRenderer imple GL11.glColor3f(1, 1, 1); if(metadata == 0){ - this.bindTexture(carpentryBench); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + if(ConfigClient.LegacyCarpentryBench){ + this.bindTexture(legacyCarpentryBench); + legacyBench.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } else { + this.bindTexture(carpentryBenchTexture); + modelCarpentryBench.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } } else{ this.bindTexture(anvilTexture); diff --git a/src/main/resources/assets/customnpcs/textures/models/BannerFlag.png b/src/main/resources/assets/customnpcs/textures/models/legacy/banner.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/models/BannerFlag.png rename to src/main/resources/assets/customnpcs/textures/models/legacy/banner.png diff --git a/src/main/resources/assets/customnpcs/textures/models/legacy/bench.png b/src/main/resources/assets/customnpcs/textures/models/legacy/bench.png new file mode 100644 index 0000000000000000000000000000000000000000..e94ff193695782921584591994ef11166312a4ed GIT binary patch literal 1727 zcmV;w20;0VP)~r?sXV1y3^?lzy zXHqEK!RY7D*%!yU3~kS$Cyo7qIzj(OPlo~O5foevz>J{t1NRsfGXSXbfwO1NT7Q4P z4Gav}$jFGDJ9o~;#>Q-Xd_1+}V)Jkgo;hqWg@X^8rL6MMZRb(J44v(i;HB-T+=~@ZA^I%@di&Y5*LE0cwOA z0Bt1$3=R(3hi`06gaM|erc#S+0CJ4X>OXn%Wa8V09!rGiN{;Cq--k8y{sL8i5znZl z0T`(|A3z3R)I<0+58OX5xYl4ab=W%8le$S1E4hESmy)C0KTTf09x<0=Ia z24FPneBk`~^9v#xqH;rsbC|-H1`=zc^-lpH1ZDjPv+6!Ggg*}h)Ce_zF9~@Dz*B(M zb!HF{CeSjV^H~Cz?!D+)WkBmc86}`bcmpu)S26%H0LAtZ&J2L-d?9YeY-@n&%TE;D;Qs_r zcqRKOm=};4K(F!i*Z6*B8Q)iE_|bX?%+_|@u)?aD()ssRSb5F%c9#s$@N-22Y}~lf zKtz5^ON(vUvL%@S$6a07o7=jCk2+5ZbvH^tGC)c6?=IX*(Oy{jQ;9#=-dAR9;=vdk%c%k8!lHkAFzV7R`ZqJ|g+Ixun z>!}ZhP{EZ*{eBOydGqFE0_*{h8T5OoTVzG0k5)epVKl1I@Am+wKHfiX4bQCgd?xU7 z?|ay6#iPI3;I}vJ>u+w`(G!2nML+fit8Y~_KvPpws{I=_Y)Jb6M1HYYESCfQ9s(6` z^x)(6{LV+puXsW9fp0!FH`deBQ|?n@&NFQfrIz!R>_@w%-K=<^^dzu$=8oudEFPGn z3a$hocFHD!+Cd>9JcLB6LgKBQ3d!rT#HJ~{NqEf9!lZQ7JXtmIq%V zytvE|K7;7|yiJ_mS6&9trwknrR0$PQ4d6v&d7v>!Um7$sU|m0^pHDF2*`mh#bF}CS z11vLCNWdF_^u_@5YP{|Vbj*LYf1R84Hcy`bl!0YHmQcD6(E86kfD+N}vxAlf%>b2N z=c?e!z%oEZq>w(^eeGwT&knvUXwCO!0LT8bbt9;6^HgwUU>TqyQb>SxpY%dznSkb? z0n}LF`t|E`H-gLtXki45tLR~XCBmm)eQd)yT0f^!glEm;+WtDOz1Ve2SzrI2Kp+qZ z1OkCTAP@)y0)apv5C{YUfj}S-2m}IwKp+qZ1OkCTAP@)y0)apv5C{YUfk5D%#lNUI V=$88WJN^Iw002ovPDHLkV1m+*P1*ne literal 0 HcmV?d00001 From c95341b60ba344f481cfd344c2e08d83d2d2bae6 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 28 Jan 2025 01:12:41 -0500 Subject: [PATCH 015/157] Stool and Chair Models Completed --- .../client/model/blocks/chair/ModelChair.java | 41 +++++++++++++ .../ModelChairSpoof.java} | 6 +- .../{ => legacy/couch}/ModelCouchCorner.java | 18 +++--- .../couch}/ModelCouchCornerWool.java | 10 ++-- .../{ => legacy/couch}/ModelCouchLeft.java | 14 ++--- .../couch}/ModelCouchLeftWool.java | 4 +- .../{ => legacy/couch}/ModelCouchMiddle.java | 18 +++--- .../couch}/ModelCouchMiddleWool.java | 12 ++-- .../{ => legacy/couch}/ModelCouchRight.java | 14 ++--- .../couch}/ModelCouchRightWool.java | 4 +- .../couch}/ModelCouchWoodLeft.java | 36 ++++++------ .../couch}/ModelCouchWoodMiddle.java | 4 +- .../couch}/ModelCouchWoodRight.java | 2 +- .../couch}/ModelCouchWoodSingle.java | 18 +++--- .../renderer/blocks/BlockChairRenderer.java | 54 +++++++++++++++--- .../blocks/BlockCouchWoodRenderer.java | 14 ++--- .../blocks/BlockCouchWoolRenderer.java | 6 +- .../blocks/BlockRendererInterface.java | 16 ------ .../renderer/blocks/BlockStoolRenderer.java | 19 +++--- .../textures/models/chair/acacia.png | Bin 0 -> 900 bytes .../textures/models/chair/birch.png | Bin 0 -> 991 bytes .../textures/models/chair/dark_oak.png | Bin 0 -> 970 bytes .../textures/models/chair/jungle.png | Bin 0 -> 920 bytes .../customnpcs/textures/models/chair/oak.png | Bin 0 -> 985 bytes .../textures/models/chair/spruce.png | Bin 0 -> 941 bytes .../textures/models/stool/acacia.png | Bin 0 -> 595 bytes .../textures/models/stool/birch.png | Bin 0 -> 621 bytes .../textures/models/stool/dark_oak.png | Bin 0 -> 590 bytes .../textures/models/stool/jungle.png | Bin 0 -> 617 bytes .../customnpcs/textures/models/stool/oak.png | Bin 399 -> 635 bytes .../textures/models/stool/spruce.png | Bin 0 -> 593 bytes 31 files changed, 190 insertions(+), 120 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/model/blocks/chair/ModelChair.java rename src/main/java/noppes/npcs/client/model/blocks/{ModelChair.java => chair/ModelChairSpoof.java} (93%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchCorner.java (96%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchCornerWool.java (92%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchLeft.java (96%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchLeftWool.java (93%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchMiddle.java (94%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchMiddleWool.java (90%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchRight.java (96%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchRightWool.java (94%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchWoodLeft.java (97%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchWoodMiddle.java (98%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchWoodRight.java (98%) rename src/main/java/noppes/npcs/client/model/blocks/{ => legacy/couch}/ModelCouchWoodSingle.java (98%) create mode 100644 src/main/resources/assets/customnpcs/textures/models/chair/acacia.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/chair/birch.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/chair/dark_oak.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/chair/jungle.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/chair/oak.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/chair/spruce.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/stool/acacia.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/stool/birch.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/stool/dark_oak.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/stool/jungle.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/stool/spruce.png diff --git a/src/main/java/noppes/npcs/client/model/blocks/chair/ModelChair.java b/src/main/java/noppes/npcs/client/model/blocks/chair/ModelChair.java new file mode 100644 index 000000000..84bff4eac --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/chair/ModelChair.java @@ -0,0 +1,41 @@ +package noppes.npcs.client.model.blocks.chair; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelChair extends ModelBase { + private final ModelRenderer bb_main; + + public ModelChair(){ + textureWidth = 64; + textureHeight = 32; + + bb_main = new ModelRenderer(this); + bb_main.setRotationPoint(0.0F, 24.0F, 0.0F); + bb_main.cubeList.add(new ModelBox(bb_main, 0, 17, 4.0F, -6.0F, 4.0F, 2, 6, 2, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 0, 17, -6.0F, -6.0F, 4.0F, 2, 6, 2, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 0, 17, -6.0F, -6.0F, -6.0F, 2, 6, 2, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 0, 17, 4.0F, -6.0F, -6.0F, 2, 6, 2, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 0, 0, -6.0F, -8.0F, -6.0F, 12, 2, 12, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 8, 17, 4.0F, -20.0F, 4.0F, 2, 12, 2, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 8, 17, -6.0F, -20.0F, 4.0F, 2, 12, 2, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 16, 18, -4.0F, -19.0F, 5.0F, 8, 11, 0, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 16, 8, 5.0F, -4.0F, -4.0F, 0, 2, 8, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 16, 16, -4.0F, -4.0F, -5.0F, 8, 2, 0, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 16, 8, -5.0F, -4.0F, -4.0F, 0, 2, 8, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 16, 16, -4.0F, -4.0F, 5.0F, 8, 2, 0, 0.0F)); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + bb_main.render(f5); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelChair.java b/src/main/java/noppes/npcs/client/model/blocks/chair/ModelChairSpoof.java similarity index 93% rename from src/main/java/noppes/npcs/client/model/blocks/ModelChair.java rename to src/main/java/noppes/npcs/client/model/blocks/chair/ModelChairSpoof.java index 6f7f94e46..eccad5767 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelChair.java +++ b/src/main/java/noppes/npcs/client/model/blocks/chair/ModelChairSpoof.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.chair; import net.minecraft.client.model.ModelBase; @@ -6,11 +6,11 @@ import net.minecraft.client.model.ModelBox; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -public class ModelChair extends ModelBase { +public class ModelChairSpoof extends ModelBase { private final ModelRenderer chairBase; - public ModelChair() { + public ModelChairSpoof() { textureWidth = 64; textureHeight = 32; diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchCorner.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchCorner.java similarity index 96% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchCorner.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchCorner.java index 36f02c5a5..180c0b15e 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchCorner.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchCorner.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -19,35 +19,35 @@ public class ModelCouchCorner extends ModelBase { Leg1 = new ModelRenderer(this, 0, 0); Leg1.addBox(0F, 0F, 0F, 1, 1, 2); Leg1.setRotationPoint(7F, 23F, 6F); - + Leg2 = new ModelRenderer(this, 0, 0); Leg2.addBox(0F, 0F, 0F, 2, 1, 1); Leg2.setRotationPoint(4F, 23F, -8F); - + Leg3 = new ModelRenderer(this, 0, 0); Leg3.addBox(0F, 0F, 0F, 2, 1, 1); Leg3.setRotationPoint(-8F, 23F, -8F); - + Leg4 = new ModelRenderer(this, 0, 0); Leg4.addBox(0F, 0F, 0F, 2, 1, 2); Leg4.setRotationPoint(-8F, 23F, 6F); - + Leg5 = new ModelRenderer(this, 0, 0); Leg5.addBox(0F, 0F, 0F, 1, 1, 2); Leg5.setRotationPoint(7F, 23F, -6F); - + Back = new ModelRenderer(this, 1, 1); Back.addBox(0F, 0F, 0F, 1, 15, 15); Back.setRotationPoint(-8F, 6F, -8F); - + Back2 = new ModelRenderer(this, 14, 15); Back2.addBox(0F, 0F, 0F, 16, 15, 1); Back2.setRotationPoint(-8F, 6F, 7F); - + Bottom = new ModelRenderer(this, 4, 0); Bottom.addBox(0F, 0F, 0F, 16, 2, 14); Bottom.setRotationPoint(-8F, 21F, -6F); - + Bottom2 = new ModelRenderer(this, 0, 0); Bottom2.addBox(0F, 0F, 0F, 14, 2, 2); Bottom2.setRotationPoint(-8F, 21F, -8F); diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchCornerWool.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchCornerWool.java similarity index 92% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchCornerWool.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchCornerWool.java index 69bfaa4d6..a35306c59 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchCornerWool.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchCornerWool.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -10,19 +10,19 @@ public class ModelCouchCornerWool extends ModelBase { ModelRenderer Wool3; ModelRenderer Wool4; - public ModelCouchCornerWool() { + public ModelCouchCornerWool() { Wool1 = new ModelRenderer(this, 11, 3); Wool1.addBox(0F, 0F, 0F, 13, 5, 2); Wool1.setRotationPoint(-7F, 16F, -8F); - + Wool2 = new ModelRenderer(this, 2, 4); Wool2.addBox(0F, 0F, 0F, 2, 10, 13); Wool2.setRotationPoint(-7F, 6F, -8F); - + Wool3 = new ModelRenderer(this, 14, 15); Wool3.addBox(0F, 0F, 0F, 15, 10, 2); Wool3.setRotationPoint(-7F, 6F, 5F); - + Wool4 = new ModelRenderer(this, 0, 45); Wool4.addBox(0F, 0F, 0F, 15, 5, 13); Wool4.setRotationPoint(-7F, 16F, -6F); diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchLeft.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchLeft.java similarity index 96% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchLeft.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchLeft.java index c07f32051..3deb6a847 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchLeft.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchLeft.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -17,27 +17,27 @@ public class ModelCouchLeft extends ModelBase { Leg1 = new ModelRenderer(this, 0, 0); Leg1.addBox(0F, 0F, 0F, 2, 1, 2); Leg1.setRotationPoint(-8F, 23F, 6F); - + Leg2 = new ModelRenderer(this, 0, 0); Leg2.addBox(0F, 0F, 0F, 1, 1, 2); Leg2.setRotationPoint(7F, 23F, -6F); - + Leg3 = new ModelRenderer(this, 0, 0); Leg3.addBox(0F, 0F, 0F, 2, 1, 2); Leg3.setRotationPoint(-8F, 23F, -6F); - + Leg4 = new ModelRenderer(this, 0, 0); Leg4.addBox(0F, 0F, 0F, 1, 1, 2); Leg4.setRotationPoint(7F, 23F, 6F); - + Back = new ModelRenderer(this, 1, 15); Back.addBox(0F, 0F, 0F, 14, 15, 1); Back.setRotationPoint(-6F, 6F, 7F); - + Side = new ModelRenderer(this, 1, 28); Side.addBox(0F, 0F, 0F, 2, 11, 14); Side.setRotationPoint(-8F, 12F, -6F); - + Bottom = new ModelRenderer(this, 3, 1); Bottom.addBox(0F, 0F, 0F, 14, 2, 14); Bottom.setRotationPoint(-6F, 21F, -6F); diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchLeftWool.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchLeftWool.java similarity index 93% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchLeftWool.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchLeftWool.java index 039d843ba..6957a129b 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchLeftWool.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchLeftWool.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -12,7 +12,7 @@ public class ModelCouchLeftWool extends ModelBase { Wool1 = new ModelRenderer(this, 3, 0); Wool1.addBox(0F, 0F, 0F, 14, 5, 13); Wool1.setRotationPoint(-6F, 16F, -6F); - + Wool2 = new ModelRenderer(this, 14, 0); Wool2.addBox(0F, 0F, 0F, 14, 10, 2); Wool2.setRotationPoint(-6F, 6F, 5F); diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchMiddle.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchMiddle.java similarity index 94% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchMiddle.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchMiddle.java index 563b9ff20..15648b0d6 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchMiddle.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchMiddle.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -13,33 +13,33 @@ public class ModelCouchMiddle extends ModelBase ModelRenderer Leg4; ModelRenderer Bottom; ModelRenderer Back; - + public ModelCouchMiddle(){ Leg1 = new ModelRenderer(this, 0, 0); Leg1.addBox(0F, 0F, 0F, 1, 1, 2); Leg1.setRotationPoint(7F, 23F, 6F); - + Leg2 = new ModelRenderer(this, 0, 0); Leg2.addBox(0F, 0F, 0F, 1, 1, 2); Leg2.setRotationPoint(7F, 23F, -6F); - + Leg3 = new ModelRenderer(this, 0, 0); Leg3.addBox(0F, 0F, 0F, 1, 1, 2); Leg3.setRotationPoint(-8F, 23F, -6F); - + Leg4 = new ModelRenderer(this, 0, 0); Leg4.addBox(0F, 0F, 0F, 1, 1, 2); Leg4.setRotationPoint(-8F, 23F, 6F); - + Bottom = new ModelRenderer(this, 2, 0); Bottom.addBox(0F, 0F, 0F, 16, 2, 14); Bottom.setRotationPoint(-8F, 21F, -6F); - + Back = new ModelRenderer(this, 14, 15); Back.addBox(0F, 0F, 0F, 16, 15, 1); Back.setRotationPoint(-8F, 6F, 7F); } - + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); @@ -50,7 +50,7 @@ public class ModelCouchMiddle extends ModelBase Bottom.render(f5); Back.render(f5); } - + private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchMiddleWool.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchMiddleWool.java similarity index 90% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchMiddleWool.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchMiddleWool.java index 8746975b6..6729a8915 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchMiddleWool.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchMiddleWool.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -8,24 +8,24 @@ public class ModelCouchMiddleWool extends ModelBase { ModelRenderer Wool1; ModelRenderer Wool2; - - public ModelCouchMiddleWool(){ + + public ModelCouchMiddleWool(){ Wool1 = new ModelRenderer(this, 3, 0); Wool1.addBox(0F, 0F, 0F, 16, 5, 13); Wool1.setRotationPoint(-8F, 16F, -6F); - + Wool2 = new ModelRenderer(this, 14, 0); Wool2.addBox(0F, 0F, 0F, 16, 10, 2); Wool2.setRotationPoint(-8F, 6F, 5F); } - + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); Wool1.render(f5); Wool2.render(f5); } - + private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchRight.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchRight.java similarity index 96% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchRight.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchRight.java index 33f96e40c..517ebc831 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchRight.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchRight.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -18,29 +18,29 @@ public class ModelCouchRight extends ModelBase { Leg1 = new ModelRenderer(this, 0, 0); Leg1.addBox(0F, 0F, 0F, 2, 1, 2); Leg1.setRotationPoint(6F, 23F, 6F); - + Leg2 = new ModelRenderer(this, 0, 0); Leg2.addBox(0F, 0F, 0F, 1, 1, 2); Leg2.setRotationPoint(-8F, 23F, -6F); - + Leg3 = new ModelRenderer(this, 0, 0); Leg3.addBox(0F, 0F, 0F, 2, 1, 2); Leg3.setRotationPoint(6F, 23F, -6F); - + Leg4 = new ModelRenderer(this, 0, 0); Leg4.addBox(0F, 0F, 0F, 1, 1, 2); Leg4.setRotationPoint(-8F, 23F, 6F); - + Back = new ModelRenderer(this, 1, 15); Back.mirror = true; Back.addBox(0F, 0F, 0F, 14, 15, 1); Back.setRotationPoint(-8F, 6F, 7F); - + Bottom = new ModelRenderer(this, 3, 1); Bottom.mirror = true; Bottom.addBox(0F, 0F, 0F, 14, 2, 14); Bottom.setRotationPoint(-8F, 21F, -6F); - + Side = new ModelRenderer(this, 1, 28); Side.mirror = true; Side.addBox(0F, 0F, 0F, 2, 11, 14); diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchRightWool.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchRightWool.java similarity index 94% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchRightWool.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchRightWool.java index ae9617417..62ecdb8da 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchRightWool.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchRightWool.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -13,7 +13,7 @@ public class ModelCouchRightWool extends ModelBase { Wool1.mirror = true; Wool1.addBox(0F, 0F, 0F, 14, 5, 13); Wool1.setRotationPoint(-8F, 16F, -6F); - + Wool2 = new ModelRenderer(this, 14, 0); Wool2.mirror = true; Wool2.addBox(0F, 0F, 0F, 14, 10, 2); diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodLeft.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodLeft.java similarity index 97% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodLeft.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodLeft.java index 227e40c22..5d889b3b3 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodLeft.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodLeft.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -29,77 +29,77 @@ public class ModelCouchWoodLeft extends ModelBase { Shape1.mirror = true; Shape1.addBox(0F, 0F, 0F, 2, 3, 10); Shape1.setRotationPoint(-8F, 18F, -4F); - + Shape2 = new ModelRenderer(this, 0, 0); Shape2.addBox(0F, 0F, 0F, 1, 3, 2); Shape2.setRotationPoint(7F, 21F, -6F); - + Shape3 = new ModelRenderer(this, 0, 0); Shape3.mirror = true; Shape3.addBox(0F, 0F, 0F, 2, 4, 1); Shape3.setRotationPoint(-8F, 14F, 0.5F); - + Shape4 = new ModelRenderer(this, 0, 0); Shape4.mirror = true; Shape4.addBox(0F, 0F, 0F, 14, 2, 1); Shape4.setRotationPoint(-6F, 7F, 7F); - + Shape5 = new ModelRenderer(this, 0, 0); Shape5.mirror = true; Shape5.addBox(0F, 0F, 0F, 14, 2, 2); Shape5.setRotationPoint(-6F, 19F, 6F); - + Shape6 = new ModelRenderer(this, 0, 0); Shape6.mirror = true; Shape6.addBox(0F, 0F, 0F, 2, 1, 13); Shape6.setRotationPoint(-8F, 13F, -7F); - + Shape7 = new ModelRenderer(this, 0, 0); Shape7.addBox(0F, 0F, 0F, 1, 1, 10); Shape7.setRotationPoint(-6F, 19F, -4F); - + Shape8 = new ModelRenderer(this, 0, 0); Shape8.addBox(0F, 0F, 0F, 1, 3, 2); Shape8.setRotationPoint(7F, 21F, 6F); - + Shape9 = new ModelRenderer(this, 0, 0); Shape9.addBox(0F, 0F, 0F, 2, 1, 10); Shape9.setRotationPoint(5F, 19F, -4F); - + Shape10 = new ModelRenderer(this, 0, 0); Shape10.addBox(0F, 0F, 0F, 1, 10, 1); Shape10.setRotationPoint(-6F, 9F, 7F); - + Shape11 = new ModelRenderer(this, 0, 0); Shape11.mirror = true; Shape11.addBox(0F, 0F, 0F, 14, 2, 2); Shape11.setRotationPoint(-6F, 19F, -6F); - + Shape12 = new ModelRenderer(this, 0, 0); Shape12.addBox(0F, 0F, 0F, 2, 1, 10); Shape12.setRotationPoint(-3F, 19F, -4F); - + Shape13 = new ModelRenderer(this, 0, 0); Shape13.addBox(0F, 0F, 0F, 2, 1, 10); Shape13.setRotationPoint(1F, 19F, -4F); - + Shape14 = new ModelRenderer(this, 0, 0); Shape14.addBox(0F, 0F, 0F, 2, 10, 1); Shape14.setRotationPoint(-3F, 9F, 7F); - + Shape15 = new ModelRenderer(this, 0, 0); Shape15.addBox(0F, 0F, 0F, 2, 10, 1); Shape15.setRotationPoint(1F, 9F, 7F); - + Shape16 = new ModelRenderer(this, 0, 0); Shape16.addBox(0F, 0F, 0F, 2, 10, 1); Shape16.setRotationPoint(5F, 9F, 7F); - + Shape17 = new ModelRenderer(this, 0, 0); Shape17.mirror = true; Shape17.addBox(0F, 0F, 0F, 2, 10, 2); Shape17.setRotationPoint(-8F, 14F, -6F); - + Shape18 = new ModelRenderer(this, 0, 0); Shape18.mirror = true; Shape18.addBox(0F, 0F, 0F, 2, 18, 2); diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodMiddle.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodMiddle.java similarity index 98% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodMiddle.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodMiddle.java index 5248f938a..f59932b83 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodMiddle.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodMiddle.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -26,7 +26,7 @@ public class ModelCouchWoodMiddle extends ModelBase { Shape2 = new ModelRenderer(this, 0, 0); Shape2.addBox(0F, 0F, 0F, 1, 3, 2); Shape2.setRotationPoint(-8F, 21F, -6F); - + Shape4 = new ModelRenderer(this, 0, 0); Shape4.addBox(0F, 0F, 0F, 16, 2, 1); Shape4.setRotationPoint(-8F, 7F, 7F); diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodRight.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodRight.java similarity index 98% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodRight.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodRight.java index 5819b2ada..951af09c2 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodRight.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodRight.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodSingle.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodSingle.java similarity index 98% rename from src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodSingle.java rename to src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodSingle.java index 7023ba6b1..f43549102 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelCouchWoodSingle.java +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/couch/ModelCouchWoodSingle.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.model.blocks; +package noppes.npcs.client.model.blocks.legacy.couch; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -33,30 +33,30 @@ public class ModelCouchWoodSingle extends ModelBase { Shape1.mirror = true; Shape1.addBox(0F, 0F, 0F, 2, 3, 10); Shape1.setRotationPoint(-8F, 18F, -4F); - + Shape2 = new ModelRenderer(this, 0, 0); Shape2.mirror = true; Shape2.addBox(0F, 0F, 0F, 2, 10, 2); Shape2.setRotationPoint(-8F, 14F, -6F); - + Shape3 = new ModelRenderer(this, 0, 0); Shape3.mirror = true; Shape3.addBox(0F, 0F, 0F, 2, 4, 1); Shape3.setRotationPoint(-8F, 14F, 0.5F); - + Shape4 = new ModelRenderer(this, 0, 0); Shape4.addBox(0F, 0F, 0F, 12, 2, 1); Shape4.setRotationPoint(-6F, 7F, 7F); - + Shape5 = new ModelRenderer(this, 0, 0); Shape5.addBox(0F, 0F, 0F, 12, 2, 2); Shape5.setRotationPoint(-6F, 19F, 6F); - + Shape6 = new ModelRenderer(this, 0, 0); Shape6.mirror = true; Shape6.addBox(0F, 0F, 0F, 2, 1, 13); Shape6.setRotationPoint(-8F, 13F, -7F); - + Shape7 = new ModelRenderer(this, 0, 0); Shape7.addBox(0F, 0F, 0F, 1, 1, 10); Shape7.setRotationPoint(-6F, 19F, -4F); @@ -109,11 +109,11 @@ public class ModelCouchWoodSingle extends ModelBase { Shape19 = new ModelRenderer(this, 0, 0); Shape19.addBox(0F, 0F, 0F, 2, 10, 2); Shape19.setRotationPoint(6F, 14F, -6F); - + Shape20 = new ModelRenderer(this, 0, 0); Shape20.addBox(0F, 0F, 0F, 2, 3, 10); Shape20.setRotationPoint(6F, 18F, -4F); - + Shape21 = new ModelRenderer(this, 0, 0); Shape21.addBox(0F, 0F, 0F, 2, 4, 1); Shape21.setRotationPoint(6F, 14F, 0.5F); diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java index 86ff10676..b394ba01b 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockChairRenderer.java @@ -2,12 +2,16 @@ package noppes.npcs.client.renderer.blocks; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockChair; import noppes.npcs.blocks.tiles.TileColorable; -import noppes.npcs.client.model.blocks.ModelChair; +import noppes.npcs.client.model.blocks.chair.ModelChair; +import noppes.npcs.client.model.blocks.chair.ModelChairSpoof; import noppes.npcs.client.model.blocks.legacy.ModelLegacyChair; import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; @@ -16,7 +20,16 @@ import org.lwjgl.opengl.GL12; public class BlockChairRenderer extends BlockRendererInterface{ private final ModelLegacyChair legacyModel = new ModelLegacyChair(); - private final ModelChair model = new ModelChair(); + + private final ModelChairSpoof chairSpoof = new ModelChairSpoof(); + private final ModelChair chair = new ModelChair(); + + private static final ResourceLocation oak = new ResourceLocation("customnpcs","textures/models/chair/oak.png"); + private static final ResourceLocation spruce = new ResourceLocation("customnpcs","textures/models/chair/spruce.png"); + private static final ResourceLocation birch = new ResourceLocation("customnpcs","textures/models/chair/birch.png"); + private static final ResourceLocation jungle = new ResourceLocation("customnpcs","textures/models/chair/jungle.png"); + private static final ResourceLocation dark_oak = new ResourceLocation("customnpcs","textures/models/chair/dark_oak.png"); + private static final ResourceLocation acacia = new ResourceLocation("customnpcs","textures/models/chair/acacia.png"); public BlockChairRenderer(){ ((BlockChair)CustomItems.chair).renderId = RenderingRegistry.getNextAvailableRenderId(); @@ -28,7 +41,7 @@ public class BlockChairRenderer extends BlockRendererInterface{ TileColorable tile = (TileColorable) var1; GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPushMatrix(); - GL11.glTranslatef((float)var2 + 0.5f, (float)var4 + 1.68f, (float)var6 + 0.5f); + GL11.glTranslatef((float)var2 + 0.5f, (float)var4 + 1.65f, (float)var6 + 0.5f); GL11.glScalef(1.2f, 1.1f, 1.2f); GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(90 * tile.rotation, 0, 1, 0); @@ -38,8 +51,14 @@ public class BlockChairRenderer extends BlockRendererInterface{ setWoodTexture(var1.getBlockMetadata()); if(ConfigClient.LegacyChair) legacyModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - else - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + else { + if(ConfigClient.WoodTextures) + chairSpoof.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + else { + setChairTexture(var1.getBlockMetadata()); + chair.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + } GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glPopMatrix(); @@ -58,11 +77,32 @@ public class BlockChairRenderer extends BlockRendererInterface{ GL11.glColor3f(1, 1, 1); if(ConfigClient.LegacyChair) legacyModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - else - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + else { + if(ConfigClient.WoodTextures) + chairSpoof.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + else { + setChairTexture(metadata); + chair.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + } GL11.glPopMatrix(); } + public void setChairTexture(int meta){ + TextureManager manager = Minecraft.getMinecraft().getTextureManager(); + if(meta == 1) + manager.bindTexture(spruce); + else if(meta == 2) + manager.bindTexture(birch); + else if(meta == 3) + manager.bindTexture(jungle); + else if(meta == 4) + manager.bindTexture(acacia); + else if(meta == 5) + manager.bindTexture(dark_oak); + else + manager.bindTexture(oak); + } @Override diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCouchWoodRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCouchWoodRenderer.java index f2cd94a0c..c4c8fb970 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCouchWoodRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCouchWoodRenderer.java @@ -8,10 +8,10 @@ import net.minecraft.tileentity.TileEntity; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockCouchWood; import noppes.npcs.blocks.tiles.TileCouchWood; -import noppes.npcs.client.model.blocks.ModelCouchWoodLeft; -import noppes.npcs.client.model.blocks.ModelCouchWoodMiddle; -import noppes.npcs.client.model.blocks.ModelCouchWoodRight; -import noppes.npcs.client.model.blocks.ModelCouchWoodSingle; +import noppes.npcs.client.model.blocks.legacy.couch.ModelCouchWoodLeft; +import noppes.npcs.client.model.blocks.legacy.couch.ModelCouchWoodMiddle; +import noppes.npcs.client.model.blocks.legacy.couch.ModelCouchWoodRight; +import noppes.npcs.client.model.blocks.legacy.couch.ModelCouchWoodSingle; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -24,7 +24,7 @@ public class BlockCouchWoodRenderer extends BlockRendererInterface{ private final ModelBase modelRight = new ModelCouchWoodRight(); private final ModelBase modelCorner = new ModelCouchWoodSingle(); - + public BlockCouchWoodRenderer(){ ((BlockCouchWood)CustomItems.couchWood).renderId = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(this); @@ -40,7 +40,7 @@ public class BlockCouchWoodRenderer extends BlockRendererInterface{ GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(90 * tile.rotation, 0, 1, 0); GL11.glColor3f(1, 1, 1); - + setWoodTexture(var1.getBlockMetadata()); if(tile.hasLeft && tile.hasRight) model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); @@ -66,7 +66,7 @@ public class BlockCouchWoodRenderer extends BlockRendererInterface{ setWoodTexture(metadata); GL11.glColor3f(1, 1, 1); modelCorner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - + GL11.glPopMatrix(); } diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCouchWoolRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCouchWoolRenderer.java index 6c75e9d38..49fc72d05 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCouchWoolRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCouchWoolRenderer.java @@ -8,7 +8,7 @@ import net.minecraft.tileentity.TileEntity; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockCouchWool; import noppes.npcs.blocks.tiles.TileCouchWool; -import noppes.npcs.client.model.blocks.*; +import noppes.npcs.client.model.blocks.legacy.couch.*; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -25,7 +25,7 @@ public class BlockCouchWoolRenderer extends BlockRendererInterface{ private final ModelBase modelCorner = new ModelCouchCorner(); private final ModelBase modelCorner2 = new ModelCouchCornerWool(); - + public BlockCouchWoolRenderer(){ ((BlockCouchWool)CustomItems.couchWool).renderId = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(this); @@ -41,7 +41,7 @@ public class BlockCouchWoolRenderer extends BlockRendererInterface{ GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(90 * tile.rotation, 0, 1, 0); GL11.glColor3f(1, 1, 1); - + setWoodTexture(var1.getBlockMetadata()); if(tile.hasCornerLeft) modelCorner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockRendererInterface.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockRendererInterface.java index 2f203ea3f..97cc97b64 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockRendererInterface.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockRendererInterface.java @@ -108,22 +108,6 @@ public abstract class BlockRendererInterface extends TileEntitySpecialRenderer i manager.bindTexture(PlanksOak); } - public void setDefaultWoodTexture(int meta){ - TextureManager manager = Minecraft.getMinecraft().getTextureManager(); - if(meta == 1) - manager.bindTexture(PlanksSpruce); - else if(meta == 2) - manager.bindTexture(PlanksBirch); - else if(meta == 3) - manager.bindTexture(PlanksJungle); - else if(meta == 4) - manager.bindTexture(PlanksAcacia); - else if(meta == 5) - manager.bindTexture(PlanksBigOak); - else - manager.bindTexture(PlanksOak); - } - public static void setMaterialTexture(int meta){ TextureManager manager = Minecraft.getMinecraft().getTextureManager(); if(meta == 1) diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java index 32ea1655c..3775a35d3 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockStoolRenderer.java @@ -21,7 +21,12 @@ public class BlockStoolRenderer extends BlockRendererInterface{ private final ModelLegacyStool legacyStool = new ModelLegacyStool(); private final ModelStool stool = new ModelStool(); - protected static final ResourceLocation oak = new ResourceLocation("customnpcs","textures/models/stool/oak.png"); + private static final ResourceLocation oak = new ResourceLocation("customnpcs","textures/models/stool/oak.png"); + private static final ResourceLocation spruce = new ResourceLocation("customnpcs","textures/models/stool/spruce.png"); + private static final ResourceLocation birch = new ResourceLocation("customnpcs","textures/models/stool/birch.png"); + private static final ResourceLocation jungle = new ResourceLocation("customnpcs","textures/models/stool/jungle.png"); + private static final ResourceLocation dark_oak = new ResourceLocation("customnpcs","textures/models/stool/dark_oak.png"); + private static final ResourceLocation acacia = new ResourceLocation("customnpcs","textures/models/stool/acacia.png"); public BlockStoolRenderer(){ ((BlockStool)CustomItems.stool).renderId = RenderingRegistry.getNextAvailableRenderId(); @@ -33,7 +38,7 @@ public class BlockStoolRenderer extends BlockRendererInterface{ TileColorable tile = (TileColorable) var1; GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPushMatrix(); - GL11.glTranslatef((float)var2 + 0.5f, (float)var4 + 1.68f, (float)var6 + 0.5f); + GL11.glTranslatef((float)var2 + 0.5f, (float)var4 + 1.65f, (float)var6 + 0.5f); GL11.glScalef(1.2f, 1.1f, 1.2f); GL11.glRotatef(180, 0, 0, 1); GL11.glColor3f(1, 1, 1); @@ -83,15 +88,15 @@ public class BlockStoolRenderer extends BlockRendererInterface{ public void setStoolTexture(int meta){ TextureManager manager = Minecraft.getMinecraft().getTextureManager(); if(meta == 1) - manager.bindTexture(oak); + manager.bindTexture(spruce); else if(meta == 2) - manager.bindTexture(oak); + manager.bindTexture(birch); else if(meta == 3) - manager.bindTexture(oak); + manager.bindTexture(jungle); else if(meta == 4) - manager.bindTexture(oak); + manager.bindTexture(acacia); else if(meta == 5) - manager.bindTexture(oak); + manager.bindTexture(dark_oak); else manager.bindTexture(oak); } diff --git a/src/main/resources/assets/customnpcs/textures/models/chair/acacia.png b/src/main/resources/assets/customnpcs/textures/models/chair/acacia.png new file mode 100644 index 0000000000000000000000000000000000000000..65e9fa9401f527618121826dd06196e04e788cc9 GIT binary patch literal 900 zcmV-~1AF|5P)Px&K1oDDRA_R(z zjv{oVjdTS9Q5dw6<@HK-iu3G^KhDSANj6Bl=5}_*mS^Yf%9g!KZ5z{S(E#LkugYBX-jvq;<8_X+C-prl68Op_F{q_pro zGhWrcZ>*FAxdZ%{k2$4n?fb-PNzik#9r=(-RZ17tcd2s3Nj6V{miB$ZdI7$EiXeQi zv6lguqy}h+AT$oz*!PWi47%%si`3+=M>l0_I<;80pcV>oMf!M)n@++wvVZ{ z)7ZwoPdHbn2L;L~+)GtyTLG9ko}`G@U8rYw;d{7yl=!wQD)ThA>ibVFZ`V3IY)s?S zB&dg%w2`D}j_=Rec;3y`pCRzWkW{Mj;bg0H-lzb!@BhFDR>#_B@9VR}0xc~r@B6#- zM;AA}p8xAGRp9)1zo14W@Z845#AG}wcu)WR=Whq)o)*5>XmL^N0K4=Q+GHdT$B;3Q?(-38WXOUDo2{6Glxq|#-oC+xR&XM z#;dkKn@kPL$>puXD*^3&nQ7CdU7a2j^end-n*IRb-aXD~c=ss5<>q0fJ#!yj+&D7R zt`OBpoDlY6@>3KDBqIzP~pty%FM9S$r%r{U&<(b+L2{OyhZJqv}A8lkNlW a82bA($#VR0000 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/chair/birch.png b/src/main/resources/assets/customnpcs/textures/models/chair/birch.png new file mode 100644 index 0000000000000000000000000000000000000000..cc108d17496d489c8bd63395379eed7cb9fbf889 GIT binary patch literal 991 zcmV<510ei~P)Px&nMp)JRA_^-zlev$_O6ntCmr)`2<;Rxd}jj7MD=UD(?Y#%3#9Z)J~;JGdib2&gu zV^wwll*+-LsePOX ze?mgLkc5UX+M>>94-X`%ncBw*V+Wj^6yVrI5}OJ^YT_*Kc@|3LjFElZNSgjYq^ak+ z@LV@?wgnuUz_E#pu8DozFwTJN;Q{(RwWf0*JiqD(i`s5#A2$-MMvWtkLc9Gt(zXJS zdn!qZv|a|it#xdIe$PjtXh-(N-n!3!_VU97cRP1`Dnkd+Q`b>q z6NnB&0nyESK5>#8J^vo}SRWhD-tDia9CKRSvBm+5^p)rDVx9kW$STmRS9xzR000#8 z`I(D}AKyQ5w||CQ;Rpb5^7L&2AsIR0Y%k8YATU*4rr#!{1A2o2iut@;>+oDxeu&z? zt1K+CVNq09>9>JI`|BxR7CD5aP%TZWUSt5mG*?q!e~xZLeYSBK+Z0Ltrp8oebSl@n z4WrYDUcU(vx@{r_Ekg5Ty)jYODp!bXS`^h*qsASZ?A{U3$5maXK11q3VrF!G^f-%O zKZ6NRkRw8dpV!%`+2i)l(CrNI>doivR)K!c2XTU#sDJJQfRxj@;Jk{n4r@MhGdhK1 zvzfi9K3W=gA^ia$)f)^@M3nu7%;-S&?!nCtxpM}9+X;_Eu+^w>MyCt!_M7!8Cr)zf z#HV8Ai+ua?o)c?7QVFOs%`rNaP7*0DA|2cYW2rvwe}w4xr~3fvvj`E2*|KIUPW zZd+IxiB_Y=MF~_pJ2tw)?S$_Xp{;|J8Nlci#7Tlqm{Pi!)ZODh$6x4wtRNpC*Ej$G N002ovPDHLkV1gu=&ZhtX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/chair/dark_oak.png b/src/main/resources/assets/customnpcs/textures/models/chair/dark_oak.png new file mode 100644 index 0000000000000000000000000000000000000000..cf6c641d28bfc736546b92aab470489d658be690 GIT binary patch literal 970 zcmV;*12z1KP)Px&gh@m}RA_T{`99%nfX_!moE(Kf?KOhW8KNN6 zVJ*u>K_~gUw@~Z#a5g|R3Xl{6@yG{SVQkY%d)igLPdFQZiW+%SNCmN|Lf9X0eFgvq z?kwLoHY$Rq0_Jb?Y^H##e4p5;2nLx%9CAFPw8ED9ds^g3GO3H2t9+kuHo*Bw4DNMv z8GtTo(I~J69vAt(i{QZZ1G;q;0!bmP+$M0Z`q4@`$oCEB2uL!Cqz-8SU?UD$Dl42} z^maPC$oC2M?aQe`?SpQbTw;wa@!bVv37%~l$7CCakIvv3E``_`7&9Qaky%<+Dq}}Gs zD!+>V^J=>s-WIwGjL#319$b9YSxkKYdZyA`AquMNAHOCHbxw1yQi$@K3YbZ+;_niA z4#)*V;41{aS~`&>h0uy5h0ynx*SAcTjUl*Kon=|^*75sObvf9@_*AX(9O_nRwkDHL ziVI-6^c!pLpKB+?>BTI5hnT0D}U&gTDK!!;NJ=nNfg zx;>b*`HD&X-q(;Ef3m7)(+-f}b69D#OAO8TIb=1kv}t`O?WgNO;2{oq^{$ty6aF*+ zRUTJX8u$Z_INW^|984bOV2Xn&j>*FuCQV-B9>7$ijEN+Z5DRH7I-`Jrd(FFndq5O0 zOGYf@UQBYsTri!BRQ=7|q}iP|J5>09$|!MI>Ii7V9DzG?!Jb6G@b}&0$|`*FF;M2# zrk(%fMXD2I99nV^Xr3pTHh))m)jmL$b|IvR^82DZUb7GI2OP3Q z-O8FGNej%r|CRODSZ@H%04M-WQKW9LY|Zt*VXXnuTtP7jf54IERUzYE6$LWye~tat sSX%?8v#Kr9Px&Qb|NXRA_=T-Lu#9xpmq_c{@z^l@k z>V84+2jq@GtPTRF5G)f=*(xr=x;9R=SLmCY9XD=9!)^lk8t2V>4*TA``QDphFvMBq zC@2-PQqJdWj3*xQIU4{lo_JC>98CcLCiXvCx6JgLHo=zZA4Bi%{(%MaR3OMa{z#4*>X(303d`2?XIbPQZNp{-GjT7+Il*Z z-t%W6`MLH67zdXB|zQ=K1JsqAfm-p`~Fq>@AaRF-v4#TDsWag3jQ}P+e;4>K zl>SkAwWX!wK|B$)uC7m;1T*wezVAT@fhZY^v{&_gX8_lIgztMO*P4u+sWw_n2!V2~ z$!MKb`m~X0cY0E2cY09esLM*!g9o+KDlY4lU_9|+^=TvH`7?Cy9dz#WBk{OiwO zX-FTd_vrbY9a#ygjTX!2>{xx;h&_Lo^-4gjO_hLpcm1xviYuPdr_KS-G4g#cR0b`} zmU7=2$fl^;XfblATx+tvGlVF#Z8G2IQdIk9Q3K0000Px&lSxEDRA_K_H&5ql`*{KZxh{km}9@jr?j75TU0`!-Txy9ufSM?7Q zW0RmqXiZ6I5UcIy`37(Ik)Voym{1PD-Hl~1gAF~qg4E!1MV5IJRPhfRV{!n4W7PnE z3yY#gOp+Eis{Ua^IRFjbMuV40PVdU|E4DL8ZuiD&{$V2W?%Dkw{8jkzv)Wg-0+2dN zQes<=0=N3hT4pd5ie+qXtoG@JZrt}jc=}muxb5KZ=wyJTgpM+Fa2$L_ zfL4G)PXohk2d3o?WB}FoU*QVlW8&WXV1K8FAtf!X`$yUDJ$V~y{~v_R0(-lgJyD3v z8`{9d#OF7Ud-duua{223fIAOgM&O@mW-zav_0P8;Fe;C-&k`~KrsZPZ(BwD>$EwMR z(E7bpF|no1A!RHM^!KHT2>{sk3n6NEteUjX5|M-bo!+RGgP#g%YNB?UIz@pa>@=+j zf8itE`{>1|*&cy}mX;qZRwyV746`?Qd*CXI84PEqHcAyQO)cdzvgx4#x(sP7h9RZs zfE*}H=s4_4%xNP=&veIE24$fWvM5}Za+#1nclwws6w7G3T{PV;3dJ(0Oq-Ra+XXHO zb59d7kMTV={=@#BT&kF|b{Ab8GnfoQ)9qq!ceA&(z96r>1UhaDg<=^1u)VQ5z$cDX z!!??c0kXyG|3OALHvpxIiM1Q^fXij=zD8_U_{Z@Z(hPv;RLt6U00000NkvXX Hu0mjf?h4gl literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/chair/spruce.png b/src/main/resources/assets/customnpcs/textures/models/chair/spruce.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8753c7ff779ff773ceb24f80486c8270162f44 GIT binary patch literal 941 zcmV;e15*5nP)Px&XGugsRA_~rSK0}N@H+gWKKR#cv()MOTo=DcVO@WIf&%fu(LZHH?y-dZ* zDA>bClCdWGS;N=?grb{|M?#N>b3j}66T54wpB0Q9aNW2Y3GGgp3};$bs+*7>tDhx| z9q@AV1$MWd1M#jA2D|B?E&HgHTy(;oHqcDJz6iS>4Pytm!p7CjJ$ARA0jV$^Cj&6n z&l1KCprl5-*_M5HfdT+jNuXZ<4u&oEquA@VJhY=nV{gqFGQiUkk7OrmYfjEST)R2*! z+?eWT4dY*Kwj`P@$!dB}pWjYskJNS=o9JhW+~@aiBE-Ak1u{Wf0q8lNq$sQ>p%eBJ za>2H6S#RR?b~Q0ibF)7G^z34;-odIhd{oz6NEPC`aW|5rXpU#-^f>(;0%w3U&mALG z2&K9s6~OfQPk6%Yn7j8rIo^*jhSGB0KWY8T_urZJ|7qwvY22(w$%x-MoHL z+L^TM1$c0shz-U#hCoi@x~l>UW2k6aP7@P8CLY1LLYm!i9sqV%xC(XL;{7==Xid}d za4y-pdcj)ex44Ujby;s>XR{2%v=o4r$KBknS_sdJ+`EJANQgmc<7JRQ+@1Fc6anK} zUEby0`h(|D>Evr9FP#VcJg-lDfsb#C5x=!b=Lbq`e4Y$X%Tz|OLXq^ScDNJv5{Zz1 zUe=palN=>UFGwc6l}Liq6e=YVhkTFm0;Ml7|NA63O@ZIq@PBu(0$19Lz*Gm^`dvuX zL!~4VXW0uBI^puJvKEE4X$rN54_6FWT&>}w*6`z;V4>FVvw6!W{5$*wu*j2gPv4K| P00000NkvXXu0mjf1NXq? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/stool/acacia.png b/src/main/resources/assets/customnpcs/textures/models/stool/acacia.png new file mode 100644 index 0000000000000000000000000000000000000000..7aa0dcbe2c3b5f353314f5aab219358be4be3c13 GIT binary patch literal 595 zcmV-Z0<8UsP)Px$^GQTORA_=-l$*C!$MpTvGLK8lqK;Co6JHwHitBWSjVgN)EAj=w& z1OUjg24G!O0J!Mh-F}_9e*2V!uEIQvITr~4veKN3gfvT0g+jFZwHtQPjRofeFr-~QM{#S+KyDSk& z;G`Q1&S5lFRE6q|tBpifdXR1`91#JS=dG=cz4u4pux<<-9RXwOGhnrmh&b9CfyZ=X zVQ>Ui8`-nBh@*DgK7%g0vEb|gW8W5ytRC9CuNk6yI%Xf=zG|SY&SEKf`CI_7SW4!3 z+Uw+u#k+Jbx4*UCn-5=3+A)UrYek;L$g-r=wXImGYg@7Vb!*{PR|EQBE8JagS2uLM zQ({l|=IWv`w{sE&wpYKqzHER8?>hX>_3QVaM$ywBi@gI%U6VwC{cVtyM#NFu!ftJ8 zEIYP0{TOC<*O$#>8xwK#&sX>m!LGH_ETuc2Iw8=zh4Px%4M{{nRA_>7&|6VL>s&bUU^r#>Y^9u1$u)la)EZ;Tp)|y zAQ$KbvItp(WTj0Zn_!2KP16c7_-A2tVU3W-F&>MWOw2qRX~c`<(f59zURN;W?DQz@ zv|9l9qKb@X_@WAcjAsD+{___A6Wy2N9~IMQZxhc{*lD*2-v;?w1W*fnrinykm(_+% zbhfbZFR2Co(ovnO3U8u&X^b6k|M<9IabL(K>yIYmh4ng}4H&y5l(gS#ilzU%XAa%~iraguLD#xq8faq0VQll<+TogSrXIydW$JgZ0NCn<$Qr%-*} z|Mb<0Okb9K28az<Px$?ny*JRA_C!^kH|iw57pi2S8>P}N z!@KBSo8S%j@#_zdPfNhK!Dbt3>z7hI$6>lI5WE4?^D*h5&LqGn%Kp8ME#dz-3KiNcN~PDvqSUBrH(giQs{}44r>?sft8!xrY}0jty-UE_dX(kP_Aiyd zCf%DYfuhuF_D%;z<2Sr*x~>rH0Bc_`3s9B*$KFlNF1pu5eEN8)!DQ##&m|w;p91FD zuVKJF+f4d2o7i#BrK-H8qA zW|w-?!qUOp&+s;md}|L=K{M_<39#0MU+T(zCGl$;Ob=+reI~KL+rhVdGwv_R&HaLl ziM_0te`%U=pGit7+{MHmf6X`&i9{liNF)-8^p3x&scj@2r7#Bo000hUSV?A0O#mtY c000O800000007cclK=n!07*qoM6N<$g4@ItuK)l5 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/stool/jungle.png b/src/main/resources/assets/customnpcs/textures/models/stool/jungle.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba3ed52d518276de7dd3b3fb48da033762321e0 GIT binary patch literal 617 zcmV-v0+#)WP)Px%2}wjjRA_y{r7R1xlSWf*3NianmNnW)c&*IWXlD6ov@`Gb-aNIi zIzdRBNIF3XK%7Vbe*OLffQ|0c`BlsIw>ODrD;)IN?DzKoP)f4j-^2HPwAKhQ+h8Y< z#EG=h!PQzfQkPe&e!=&Bgb49{KbxDeiSR1A=f>Ir-|nN5#f`lox4u-<(tMe&30NP% z`=i5BL;xGmfYzFy;|DrHXr<%pns)GySf_xAqSkuuGm0iCC0Eilg<2`__OPE- z_c)OYQ(&2{3DiyjW9x2rmrgK2i15)ASfqQgDG)`IIeX{VTWGCo3f2yo+4rIJtZ46C z!wS0Rr}gD*n8GYNm)EzvJ9-1a<@IeThaumHiDZ##aa-4VA4lgK?HIkAyD@`an>dk3 zHAN|zjZMUE?#2L_uK4n14CVX3x?WMY>Ux_bJKfXaacZh_D0Z@5{bF>I0;PK$^1S|V z_PG%~eO||quQW7CTwAPs|jb)p5r`Mr%F*->XZA^&p#YcDsZuykfIaZ9JOPvN{|Nhr{7; zI2?|(@)ysjcP#Aa!X5ws01jnXNoGw=04e|g00;m8000000Mb*F00000NkvXXu0mjf D@Q5Rq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/stool/oak.png b/src/main/resources/assets/customnpcs/textures/models/stool/oak.png index a26851f002caace9e50740cd7a37cc32f83f9c9e..f14d9cd0d14384cb3d880a0e431fd8a2681ad267 100644 GIT binary patch delta 621 zcmV-z0+RiY1N#J!8Gi-<005$$euMx300DDSM?wIu&K&6g00J9HL_t(&f$f(+Yui8= z#(xf4{15SJFgRdHx)jnaONK5TyYvHe$&fi;AsyPUkhw#bet<3+x|Ixt66g}h&^9!I zf(kl>rHTxxI!LETN{r8@CW^SW;j1YGKfC?i3 zeyKkInCRZT{oFDA?N#EK3dhpp(dGnz>#Gp)CUpBll6Z=E0)V&*6-Gw7reM4Qnr?qc zl8=v&U&z8}Pu`8-_{Fy4S?+nb0dg_8j5S<-ouJNx~| z1>z2jbWLH+RDY;lOycRSF$ylZz6ux8HHD>0U~6MkobD=&W|qJ_T@zTk1az#|CmK#C>+YY<``0g0a(9kT z&Um{07=YuGvq}w)9AW>zW=TfJ^iv2XMi8X zjJ$sFS)&4lc#^fSc`S8g>#=``bdC;p(^-E^JbCaA&tt6|?QVZaecpB)O3rKUI+fds zlf=`aKW0zzFYEI*q{SRCZ;#IWw1%u67LCEd~2k%3`jKlh(RRv=#@z$e7D zHpzTivE%Y4-yKupw)XlToS&T@paYatoK|!ZNO6<|`33)n0ETanMpx_%%7sn6}@3)gr*7F@!;Bo2Yeft0Zj>iTp87kVR7f!cXd8vg_e}>oH ziBn8gE>m&7$Tee|%I2J-XG%1p7`+>kSR2X^kUl8&wQ@h3457C z@+=p(uFGIuqx<09O(xN`4awZQwle^wG7qM=zfA0j1u6gW`QxeE&RJby4HYXM9jpkm zzoe3p6!-WabMUsWn*Y}o{%4e^d%ZQO=s?fwu<&nk3POX&mUD0#Ta+#+vD%4N7`?&RrcSWX`SC--thT7!`3=RjR?b? UD~~1B1AWfm>FVdQ&MBb@07q`9pa1{> diff --git a/src/main/resources/assets/customnpcs/textures/models/stool/spruce.png b/src/main/resources/assets/customnpcs/textures/models/stool/spruce.png new file mode 100644 index 0000000000000000000000000000000000000000..620ebddea3ad3811b7e230b96d1260ca7eca8ffe GIT binary patch literal 593 zcmV-X0Px$@kvBMRA_~zGplnZ;ksH?0Wd-d6kW^?f zadcUrD!hzt*JvNWd;fFB;-0YQtk1bWGf&fH0qp}gK5U_E6IICxB>=$T{vKQw;NzQt zI<}S$=xuHnYf#V?$||}nm>UNpAD$R5rOOH{MWEfPgK?qky(j`{x-76p1WIa@woi^g zvhL4DU@-FM>>Ymwb#z%l+X2$P5>Je0?46`pMz<@h>xiC=D;TJQGZd8-{GdFzkRtWhv7z`3s~#<{O5_SPQ((|28dm(~i$*Nf_wU2mJH z)4e=D3gzwWI3?AqcdpJtL^?T%%=OLPQzm-)RZ-sK+=t_o)Mtq&#wgnaE(??`rDe1B zrmuq4xjG9MZLDmQKVRWA3Q=oUXc6&w-XVxoUXpYx=M@sowj>YP)`k3L`F|0Cmu?^J zRvnl&E13R?iO%y3;oMh^iG2RzbA!QPFc=I5gTatHegIOCjtBZlf-(RA01jnXNoGw= f04e|g00;m8000000Mb*F00000NkvXXu0mjfN~Qt4 literal 0 HcmV?d00001 From 36b2610d3d66a6206a7bc0ad2879fd768052a4d2 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 28 Jan 2025 13:39:46 -0500 Subject: [PATCH 016/157] Packet PRE --- .../java/kamkeel/network/AbstractPacket.java | 28 +++++ .../java/kamkeel/network/PacketHandler.java | 103 ++++++++++++++++++ src/main/java/noppes/npcs/CustomNpcs.java | 5 + 3 files changed, 136 insertions(+) create mode 100644 src/main/java/kamkeel/network/AbstractPacket.java create mode 100644 src/main/java/kamkeel/network/PacketHandler.java diff --git a/src/main/java/kamkeel/network/AbstractPacket.java b/src/main/java/kamkeel/network/AbstractPacket.java new file mode 100644 index 000000000..26614cbd4 --- /dev/null +++ b/src/main/java/kamkeel/network/AbstractPacket.java @@ -0,0 +1,28 @@ +package kamkeel.network; + +import cpw.mods.fml.common.network.internal.FMLProxyPacket; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import net.minecraft.entity.player.EntityPlayer; + +import java.io.IOException; + +public abstract class AbstractPacket { + + public final FMLProxyPacket generatePacket() { + ByteBuf buf = Unpooled.buffer(); + try { + sendData(buf); + return new FMLProxyPacket(buf, getChannel()); + } catch (Exception ignored) {} + return null; + } + + public abstract String getName(); + public abstract String getChannel(); + public abstract void sendData(ByteBuf out) throws IOException; + + //"player" on the server side is the client who sent this packet + //"player" on the client side is the client player + public abstract void receiveData(ByteBuf in, EntityPlayer player) throws IOException; +} diff --git a/src/main/java/kamkeel/network/PacketHandler.java b/src/main/java/kamkeel/network/PacketHandler.java new file mode 100644 index 000000000..4673bef62 --- /dev/null +++ b/src/main/java/kamkeel/network/PacketHandler.java @@ -0,0 +1,103 @@ +package kamkeel.network; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.network.FMLEventChannel; +import cpw.mods.fml.common.network.FMLNetworkEvent; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.network.internal.FMLProxyPacket; +import cpw.mods.fml.relauncher.Side; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityTracker; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.network.NetHandlerPlayServer; +import net.minecraft.world.WorldServer; +import noppes.npcs.CustomNpcs; + +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.List; +import java.util.Map; + +public final class PacketHandler { + public static PacketHandler Instance; + + public Map packet_names = new Hashtable<>(); + public Map channels = new Hashtable<>(); + + public final static String INFO_PACKET = "CNPC+|Info"; + public final static String DATA_PACKET = "CNPC+|Data"; + public final static String CLIENT_PACKET = "CNPC+|Client"; + + public final static List channelNames = new ArrayList<>(); + + public PacketHandler() { + // Register Channels + channelNames.add(INFO_PACKET); + channelNames.add(DATA_PACKET); + channelNames.add(CLIENT_PACKET); + this.registerChannels(); + + + // Register Packets + // map.put(PingPacket.packetName, new PingPacket()); + } + + public void registerChannels() { + FMLEventChannel eventChannel; + for (String channel : channelNames) { + eventChannel = NetworkRegistry.INSTANCE.newEventDrivenChannel(channel); + eventChannel.register(this); + channels.put(channel, eventChannel); + } + } + + @SubscribeEvent + public void onServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) { + try { + packet_names.get(event.packet.channel()).receiveData(event.packet.payload(), ((NetHandlerPlayServer) event.handler).playerEntity); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @SubscribeEvent + public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) { + try { + packet_names.get(event.packet.channel()).receiveData(event.packet.payload(), CustomNpcs.proxy.getPlayer()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendToPlayer(FMLProxyPacket packet, EntityPlayerMP player) { + if (packet != null && CustomNpcs.side()== Side.SERVER) { + channels.get(packet.channel()).sendTo(packet, player); + } + } + + public void sendToServer(FMLProxyPacket packet) { + if (packet != null) { + packet.setTarget(Side.SERVER); + channels.get(packet.channel()).sendToServer(packet); + } + } + + public void sendToTrackingPlayers(Entity entity, FMLProxyPacket packet) { + if (packet != null && CustomNpcs.side() == Side.SERVER) { + EntityTracker tracker = ((WorldServer) entity.worldObj).getEntityTracker(); + tracker.func_151248_b(entity, packet); // Send packet to tracking players + } + } + + public void sendAround(Entity entity, double range, FMLProxyPacket packet) { + if (packet != null && CustomNpcs.side() == Side.SERVER) { + channels.get(packet.channel()).sendToAllAround(packet, new NetworkRegistry.TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, range)); + } + } + + public void sendToAll(FMLProxyPacket packet) { + if (packet != null && CustomNpcs.side() == Side.SERVER) { + channels.get(packet.channel()).sendToAll(packet); + } + } +} diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index ce5577197..1a8108a2f 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -8,6 +8,7 @@ import cpw.mods.fml.common.event.*; import cpw.mods.fml.common.network.FMLEventChannel; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; +import cpw.mods.fml.relauncher.Side; import foxz.command.CommandNoppes; import kamkeel.addon.AddonManager; import kamkeel.command.CommandKamkeel; @@ -318,4 +319,8 @@ public class CustomNpcs { public static MinecraftServer getServer(){ return MinecraftServer.getServer(); } + + public static Side side() { + return FMLCommonHandler.instance().getEffectiveSide(); + } } From be6c318619733b9ff4851f78f674a725b28243fe Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 28 Jan 2025 14:37:07 -0500 Subject: [PATCH 017/157] New Packet Things - WIP --- .../java/kamkeel/network/AbstractPacket.java | 14 ++- .../java/kamkeel/network/PacketChannel.java | 39 +++++++ .../java/kamkeel/network/PacketHandler.java | 103 +++++++----------- .../network/enums/EnumClientPacket.java | 4 + .../kamkeel/network/enums/EnumDataPacket.java | 4 + .../kamkeel/network/enums/EnumInfoPacket.java | 5 + .../kamkeel/network/enums/EnumPacketType.java | 5 + .../kamkeel/network/packets/LoginPacket.java | 40 +++++++ src/main/java/kamkeel/util/ByteBufUtils.java | 63 +++++++++++ 9 files changed, 209 insertions(+), 68 deletions(-) create mode 100644 src/main/java/kamkeel/network/PacketChannel.java create mode 100644 src/main/java/kamkeel/network/enums/EnumClientPacket.java create mode 100644 src/main/java/kamkeel/network/enums/EnumDataPacket.java create mode 100644 src/main/java/kamkeel/network/enums/EnumInfoPacket.java create mode 100644 src/main/java/kamkeel/network/enums/EnumPacketType.java create mode 100644 src/main/java/kamkeel/network/packets/LoginPacket.java create mode 100644 src/main/java/kamkeel/util/ByteBufUtils.java diff --git a/src/main/java/kamkeel/network/AbstractPacket.java b/src/main/java/kamkeel/network/AbstractPacket.java index 26614cbd4..7d8fa4d77 100644 --- a/src/main/java/kamkeel/network/AbstractPacket.java +++ b/src/main/java/kamkeel/network/AbstractPacket.java @@ -1,25 +1,31 @@ package kamkeel.network; +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 net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; +import noppes.npcs.LogWriter; import java.io.IOException; public abstract class AbstractPacket { - public final FMLProxyPacket generatePacket() { + public FMLProxyPacket generatePacket() { + PacketChannel packetChannel = getChannel(); ByteBuf buf = Unpooled.buffer(); try { + buf.writeInt(packetChannel.getChannelType().ordinal()); + buf.writeInt(getType().ordinal()); sendData(buf); - return new FMLProxyPacket(buf, getChannel()); + return new FMLProxyPacket(buf, getChannel().getChannelName()); } catch (Exception ignored) {} return null; } - public abstract String getName(); - public abstract String getChannel(); + public abstract Enum getType(); + public abstract PacketChannel getChannel(); public abstract void sendData(ByteBuf out) throws IOException; //"player" on the server side is the client who sent this packet diff --git a/src/main/java/kamkeel/network/PacketChannel.java b/src/main/java/kamkeel/network/PacketChannel.java new file mode 100644 index 000000000..19f677c72 --- /dev/null +++ b/src/main/java/kamkeel/network/PacketChannel.java @@ -0,0 +1,39 @@ +package kamkeel.network; + +import kamkeel.network.enums.EnumPacketType; + +import java.util.Hashtable; +import java.util.Map; + +public class PacketChannel { + + private String channelName; + private EnumPacketType channelType; + + public Map packets = new Hashtable<>(); + + public PacketChannel(String channelName, EnumPacketType channelType) { + this.channelName = channelName; + this.channelType = channelType; + } + + public String getChannelName() { + return channelName; + } + + public void setChannelName(String channelName) { + this.channelName = channelName; + } + + public EnumPacketType getChannelType() { + return channelType; + } + + public void setChannelType(EnumPacketType channelType) { + this.channelType = channelType; + } + + public void registerPacket(Enum ord, AbstractPacket packet) { + this.packets.put(ord.ordinal(), packet); + } +} diff --git a/src/main/java/kamkeel/network/PacketHandler.java b/src/main/java/kamkeel/network/PacketHandler.java index 4673bef62..01f5ba1d4 100644 --- a/src/main/java/kamkeel/network/PacketHandler.java +++ b/src/main/java/kamkeel/network/PacketHandler.java @@ -6,37 +6,43 @@ import cpw.mods.fml.common.network.FMLNetworkEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.internal.FMLProxyPacket; import cpw.mods.fml.relauncher.Side; +import io.netty.buffer.ByteBuf; +import kamkeel.network.enums.EnumPacketType; +import kamkeel.util.ByteBufUtils; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityTracker; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.NetHandlerPlayServer; -import net.minecraft.world.WorldServer; import noppes.npcs.CustomNpcs; -import java.util.ArrayList; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; +import java.util.*; public final class PacketHandler { public static PacketHandler Instance; public Map packet_names = new Hashtable<>(); - public Map channels = new Hashtable<>(); - public final static String INFO_PACKET = "CNPC+|Info"; - public final static String DATA_PACKET = "CNPC+|Data"; - public final static String CLIENT_PACKET = "CNPC+|Client"; + public Map channels = new Hashtable<>(); - public final static List channelNames = new ArrayList<>(); + public final static PacketChannel INFO_PACKET = new PacketChannel("CNPC+|Info", EnumPacketType.INFO); + public final static PacketChannel DATA_PACKET = new PacketChannel("CNPC+|Data", EnumPacketType.DATA); + public final static PacketChannel CLIENT_PACKET = new PacketChannel("CNPC+|Client", EnumPacketType.CLIENT); + public final static PacketChannel LARGE_PACKET = new PacketChannel("CNPC+|Large", EnumPacketType.LARGE); + + public final static List packetChannels = new ArrayList<>(); public PacketHandler() { // Register Channels - channelNames.add(INFO_PACKET); - channelNames.add(DATA_PACKET); - channelNames.add(CLIENT_PACKET); + packetChannels.add(INFO_PACKET); + packetChannels.add(DATA_PACKET); + packetChannels.add(CLIENT_PACKET); this.registerChannels(); + // Register Info Packets + + // Register Data Packets + + // Register Client Packets // Register Packets // map.put(PingPacket.packetName, new PingPacket()); @@ -44,60 +50,29 @@ public final class PacketHandler { public void registerChannels() { FMLEventChannel eventChannel; - for (String channel : channelNames) { - eventChannel = NetworkRegistry.INSTANCE.newEventDrivenChannel(channel); + for (PacketChannel channel : packetChannels) { + eventChannel = NetworkRegistry.INSTANCE.newEventDrivenChannel(channel.getChannelName()); eventChannel.register(this); - channels.put(channel, eventChannel); + channels.put(channel.getChannelType(), eventChannel); } } - @SubscribeEvent - public void onServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) { - try { - packet_names.get(event.packet.channel()).receiveData(event.packet.payload(), ((NetHandlerPlayServer) event.handler).playerEntity); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @SubscribeEvent - public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) { - try { - packet_names.get(event.packet.channel()).receiveData(event.packet.payload(), CustomNpcs.proxy.getPlayer()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void sendToPlayer(FMLProxyPacket packet, EntityPlayerMP player) { - if (packet != null && CustomNpcs.side()== Side.SERVER) { - channels.get(packet.channel()).sendTo(packet, player); - } - } - - public void sendToServer(FMLProxyPacket packet) { - if (packet != null) { - packet.setTarget(Side.SERVER); - channels.get(packet.channel()).sendToServer(packet); - } - } - - public void sendToTrackingPlayers(Entity entity, FMLProxyPacket packet) { - if (packet != null && CustomNpcs.side() == Side.SERVER) { - EntityTracker tracker = ((WorldServer) entity.worldObj).getEntityTracker(); - tracker.func_151248_b(entity, packet); // Send packet to tracking players - } - } - - public void sendAround(Entity entity, double range, FMLProxyPacket packet) { - if (packet != null && CustomNpcs.side() == Side.SERVER) { - channels.get(packet.channel()).sendToAllAround(packet, new NetworkRegistry.TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, range)); - } - } - - public void sendToAll(FMLProxyPacket packet) { - if (packet != null && CustomNpcs.side() == Side.SERVER) { - channels.get(packet.channel()).sendToAll(packet); + public PacketChannel getPacketChannel(EnumPacketType type){ + PacketChannel packetChannel; + switch (type){ + case DATA: + packetChannel = DATA_PACKET; + break; + case INFO: + packetChannel = INFO_PACKET; + break; + case LARGE: + packetChannel = LARGE_PACKET; + break; + default: + packetChannel = CLIENT_PACKET; + break; } + return packetChannel; } } diff --git a/src/main/java/kamkeel/network/enums/EnumClientPacket.java b/src/main/java/kamkeel/network/enums/EnumClientPacket.java new file mode 100644 index 000000000..24f677c84 --- /dev/null +++ b/src/main/java/kamkeel/network/enums/EnumClientPacket.java @@ -0,0 +1,4 @@ +package kamkeel.network.enums; + +public enum EnumClientPacket { +} diff --git a/src/main/java/kamkeel/network/enums/EnumDataPacket.java b/src/main/java/kamkeel/network/enums/EnumDataPacket.java new file mode 100644 index 000000000..2481eb446 --- /dev/null +++ b/src/main/java/kamkeel/network/enums/EnumDataPacket.java @@ -0,0 +1,4 @@ +package kamkeel.network.enums; + +public enum EnumDataPacket { +} diff --git a/src/main/java/kamkeel/network/enums/EnumInfoPacket.java b/src/main/java/kamkeel/network/enums/EnumInfoPacket.java new file mode 100644 index 000000000..06586758d --- /dev/null +++ b/src/main/java/kamkeel/network/enums/EnumInfoPacket.java @@ -0,0 +1,5 @@ +package kamkeel.network.enums; + +public enum EnumInfoPacket { + LOGIN, +} diff --git a/src/main/java/kamkeel/network/enums/EnumPacketType.java b/src/main/java/kamkeel/network/enums/EnumPacketType.java new file mode 100644 index 000000000..e38ad0ac4 --- /dev/null +++ b/src/main/java/kamkeel/network/enums/EnumPacketType.java @@ -0,0 +1,5 @@ +package kamkeel.network.enums; + +public enum EnumPacketType { + INFO, DATA, CLIENT, LARGE +} diff --git a/src/main/java/kamkeel/network/packets/LoginPacket.java b/src/main/java/kamkeel/network/packets/LoginPacket.java new file mode 100644 index 000000000..82d5899d4 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/LoginPacket.java @@ -0,0 +1,40 @@ +package kamkeel.network.packets; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumInfoPacket; +import kamkeel.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; + +import java.io.IOException; + +public final class LoginPacket extends AbstractPacket { + public static final String packetName = "CNPC+|LoginPacket"; + + public LoginPacket() {} + + + @Override + public Enum getType() { + return EnumInfoPacket.LOGIN; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.INFO_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { +// ByteBufUtils.writeUTF8String(out, this.data.player.getCommandSenderName()); +// ByteBufUtils.writeNBT(out,this.data.saveFromNBT(new NBTTagCompound())); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + String playerName = ByteBufUtils.readUTF8String(in); + + } +} diff --git a/src/main/java/kamkeel/util/ByteBufUtils.java b/src/main/java/kamkeel/util/ByteBufUtils.java new file mode 100644 index 000000000..35be971ff --- /dev/null +++ b/src/main/java/kamkeel/util/ByteBufUtils.java @@ -0,0 +1,63 @@ +package kamkeel.util; + +import com.google.common.base.Charsets; +import io.netty.buffer.ByteBuf; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTSizeTracker; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.PacketBuffer; +import net.minecraft.village.MerchantRecipeList; +import noppes.npcs.LogWriter; + +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +public class ByteBufUtils extends cpw.mods.fml.common.network.ByteBufUtils { + + public static void writeIntArray(ByteBuf buffer, int[] arr) { + buffer.writeInt(arr.length); + for (int i : arr) { + buffer.writeInt(i); + } + } + + public static int[] readIntArray(ByteBuf buffer) { + int length = buffer.readInt(); + int[] arr = new int[length]; + for (int i = 0; i < length; i++) { + arr[i] = buffer.readInt(); + } + return arr; + } + + public static void writeNBT(ByteBuf buffer, NBTTagCompound compound) throws IOException { + byte[] bytes = CompressedStreamTools.compress(compound); + buffer.writeShort((short)bytes.length); + buffer.writeBytes(bytes); + } + + public static NBTTagCompound readNBT(ByteBuf buffer) throws IOException { + byte[] bytes = new byte[buffer.readShort()]; + buffer.readBytes(bytes); + return CompressedStreamTools.func_152457_a(bytes, new NBTSizeTracker(2097152L)); + } + + public static void writeString(ByteBuf buffer, String s){ + byte[] bytes = s.getBytes(Charsets.UTF_8); + buffer.writeShort((short)bytes.length); + buffer.writeBytes(bytes); + } + + public static String readString(ByteBuf buffer){ + try{ + byte[] bytes = new byte[buffer.readShort()]; + buffer.readBytes(bytes); + return new String(bytes, Charsets.UTF_8); + } + catch(IndexOutOfBoundsException ex){ + return null; + } + } +} From ec133ce74c6227498ac0061e3537a4d20312607c Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 28 Jan 2025 15:00:49 -0500 Subject: [PATCH 018/157] Remove Packet Names --- src/main/java/kamkeel/network/PacketHandler.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/kamkeel/network/PacketHandler.java b/src/main/java/kamkeel/network/PacketHandler.java index 01f5ba1d4..8e15f8761 100644 --- a/src/main/java/kamkeel/network/PacketHandler.java +++ b/src/main/java/kamkeel/network/PacketHandler.java @@ -20,8 +20,6 @@ import java.util.*; public final class PacketHandler { public static PacketHandler Instance; - public Map packet_names = new Hashtable<>(); - public Map channels = new Hashtable<>(); public final static PacketChannel INFO_PACKET = new PacketChannel("CNPC+|Info", EnumPacketType.INFO); From 8a2a3e1ac357c2497c87d0b912a0b74fd948cc91 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 28 Jan 2025 15:49:17 -0500 Subject: [PATCH 019/157] Add all Client Packets --- .../network/enums/EnumClientPacket.java | 59 ++++++++++++++ .../packets/client/ChatBubblePacket.java | 59 ++++++++++++++ .../network/packets/client/ChatPacket.java | 48 ++++++++++++ .../network/packets/client/ClonePacket.java | 41 ++++++++++ .../network/packets/client/ClonerPacket.java | 41 ++++++++++ .../network/packets/client/ConfigPacket.java | 61 +++++++++++++++ .../packets/client/ContinueSoundsPacket.java | 37 +++++++++ .../network/packets/client/DBCFormPacket.java | 37 +++++++++ .../packets/client/DeleteNpcPacket.java | 42 ++++++++++ .../packets/client/DialogDummyPacket.java | 41 ++++++++++ .../network/packets/client/DialogPacket.java | 45 +++++++++++ .../client/DisableMouseInputPacket.java | 48 ++++++++++++ .../network/packets/client/EditNpcPacket.java | 44 +++++++++++ .../packets/client/GuiClosePacket.java | 48 ++++++++++++ .../network/packets/client/GuiDataPacket.java | 52 +++++++++++++ .../packets/client/GuiErrorPacket.java | 46 +++++++++++ .../network/packets/client/GuiPacket.java | 42 ++++++++++ .../packets/client/GuiRedstonePacket.java | 40 ++++++++++ .../packets/client/GuiWaypointPacket.java | 40 ++++++++++ .../packets/client/IsGuiOpenPacket.java | 39 ++++++++++ .../packets/client/LargeNBTEndPacket.java | 38 +++++++++ .../packets/client/LargeNbtPartPacket.java | 39 ++++++++++ .../packets/client/MarkDataPacket.java | 47 +++++++++++ .../network/packets/client/MessagePacket.java | 53 +++++++++++++ .../packets/client/OpenBookPacket.java | 46 +++++++++++ .../client/OverlayQuestTrackingPacket.java | 47 +++++++++++ .../packets/client/ParticlePacket.java | 37 +++++++++ .../packets/client/PartyDataPacket.java | 52 +++++++++++++ .../packets/client/PauseSoundsPacket.java | 37 +++++++++ .../packets/client/PlayMusicPacket.java | 39 ++++++++++ .../packets/client/PlaySoundPacket.java | 42 ++++++++++ .../packets/client/PlaySoundToNoIdPacket.java | 42 ++++++++++ .../packets/client/PlaySoundToPacket.java | 43 +++++++++++ .../PlayerUpdateSkinOverlaysPacket.java | 45 +++++++++++ .../packets/client/QuestCompletionPacket.java | 38 +++++++++ .../network/packets/client/RolePacket.java | 49 ++++++++++++ .../client/ScriptOverlayClosePacket.java | 38 +++++++++ .../client/ScriptOverlayDataPacket.java | 42 ++++++++++ .../client/ScriptedParticlePacket.java | 37 +++++++++ .../packets/client/ScrollDataPacket.java | 37 +++++++++ .../packets/client/ScrollDataPartPacket.java | 37 +++++++++ .../packets/client/ScrollGroupPacket.java | 37 +++++++++ .../packets/client/ScrollGroupPartPacket.java | 37 +++++++++ .../packets/client/ScrollListPacket.java | 37 +++++++++ .../packets/client/ScrollSelectedPacket.java | 44 +++++++++++ .../packets/client/StopSoundForPacket.java | 38 +++++++++ .../packets/client/StopSoundsPacket.java | 37 +++++++++ .../packets/client/SwingPlayerArmPacket.java | 37 +++++++++ .../network/packets/client/SyncAddPacket.java | 41 ++++++++++ .../packets/client/SyncConfigPacket.java | 40 ++++++++++ .../network/packets/client/SyncEndPacket.java | 41 ++++++++++ .../packets/client/SyncPlayerPacket.java | 38 +++++++++ .../packets/client/SyncRecipesAddPacket.java | 51 ++++++++++++ .../SyncRecipesCarpentryBenchPacket.java | 38 +++++++++ .../client/SyncRecipesWorkbenchPacket.java | 38 +++++++++ .../packets/client/SyncRemovePacket.java | 39 ++++++++++ .../packets/client/SyncUpdatePacket.java | 41 ++++++++++ .../packets/client/SyncWeaponPacket.java | 48 ++++++++++++ .../packets/client/TeleporterPacket.java | 38 +++++++++ .../client/UpdateAnimationsPacket.java | 77 +++++++++++++++++++ .../packets/client/UpdateNpcPacket.java | 45 +++++++++++ .../packets/client/VillagerListPacket.java | 41 ++++++++++ src/main/java/noppes/npcs/Server.java | 1 - 63 files changed, 2678 insertions(+), 1 deletion(-) create mode 100644 src/main/java/kamkeel/network/packets/client/ChatBubblePacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ChatPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ClonePacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ClonerPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ConfigPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ContinueSoundsPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/DBCFormPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/DeleteNpcPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/DialogDummyPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/DialogPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/DisableMouseInputPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/EditNpcPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/GuiClosePacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/GuiDataPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/GuiErrorPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/GuiPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/GuiRedstonePacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/GuiWaypointPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/IsGuiOpenPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/LargeNbtPartPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/MarkDataPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/MessagePacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/OpenBookPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/OverlayQuestTrackingPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ParticlePacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/PartyDataPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/PauseSoundsPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/PlayMusicPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/PlaySoundPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/PlaySoundToNoIdPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/PlaySoundToPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/QuestCompletionPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/RolePacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ScriptOverlayClosePacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ScriptOverlayDataPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ScriptedParticlePacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ScrollListPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/ScrollSelectedPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/StopSoundForPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/StopSoundsPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/SwingPlayerArmPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/SyncAddPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/SyncConfigPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/SyncEndPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/SyncPlayerPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/SyncRecipesAddPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/SyncRecipesCarpentryBenchPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/SyncRecipesWorkbenchPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/SyncRemovePacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/SyncUpdatePacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/SyncWeaponPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/TeleporterPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/UpdateAnimationsPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/UpdateNpcPacket.java create mode 100644 src/main/java/kamkeel/network/packets/client/VillagerListPacket.java diff --git a/src/main/java/kamkeel/network/enums/EnumClientPacket.java b/src/main/java/kamkeel/network/enums/EnumClientPacket.java index 24f677c84..4dd58bfcf 100644 --- a/src/main/java/kamkeel/network/enums/EnumClientPacket.java +++ b/src/main/java/kamkeel/network/enums/EnumClientPacket.java @@ -1,4 +1,63 @@ package kamkeel.network.enums; +// Packets to the Client public enum EnumClientPacket { + CHAT, + MESSAGE, + PARTY_MESSAGE, + SYNCRECIPES_ADD, + SYNCRECIPES_WORKBENCH, + DIALOG, + QUEST_COMPLETION, + EDIT_NPC, + PLAY_SOUND, + PLAY_MUSIC, + UPDATE_NPC, + ROLE, + GUI, + SCRIPTED_PARTICLE, + PARTICLE, + DELETE_NPC, + SCROLL_LIST, + SCROLL_DATA, + SCROLL_DATA_PART, + SCROLL_GROUP, + SCROLL_GROUP_PART, + SCROLL_SELECTED, + GUI_REDSTONE, + GUI_WAYPOINT, + GUI_DATA, + GUI_ERROR, + GUI_CLOSE, + VILLAGER_LIST, + CHATBUBBLE, + SYNCRECIPES_CARPENTRYBENCH, + CLONE, + CLONER, + TELEPORTER, + OPEN_BOOK, + DIALOG_DUMMY, + CONFIG, + ISGUIOPEN, + SCRIPT_OVERLAY_DATA, + SCRIPT_OVERLAY_CLOSE, + SWING_PLAYER_ARM, + UPDATE_ITEM, + PLAYER_UPDATE_SKIN_OVERLAYS, + UPDATE_ANIMATIONS, + OVERLAY_QUEST_TRACKING, + DISABLE_MOUSE_INPUT, + PLAY_SOUND_TO, + PLAY_SOUND_TO_NO_ID, + STOP_SOUND_FOR, + PAUSE_SOUNDS, + CONTINUE_SOUNDS, + STOP_SOUNDS, + SYNC_WEAPON, + MARK_DATA, + SYNC_ADD, SYNC_END, SYNC_UPDATE, SYNC_REMOVE, SYNC_PLAYER, + SYNC_CONFIG, + DBC_FORM, + LARGE_NBT_PART, LARGE_NBT_END, + PARTY_DATA } diff --git a/src/main/java/kamkeel/network/packets/client/ChatBubblePacket.java b/src/main/java/kamkeel/network/packets/client/ChatBubblePacket.java new file mode 100644 index 000000000..7a2867e6f --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ChatBubblePacket.java @@ -0,0 +1,59 @@ +package kamkeel.network.packets.client; + +import cpw.mods.fml.relauncher.Side; +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +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; + +import java.io.IOException; + +public final class ChatBubblePacket extends AbstractPacket { + public static final String packetName = "Client|ChatBubble"; + + public ChatBubblePacket() {} + + + @Override + public Enum getType() { + return EnumClientPacket.CHATBUBBLE; + } + + @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; + + Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.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(in), player, npc); + npc.messages.addMessage(text, npc); + + if(in.readBoolean()) + player.addChatMessage(new ChatComponentTranslation(npc.getCommandSenderName() + ": " + text)); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ChatPacket.java b/src/main/java/kamkeel/network/packets/client/ChatPacket.java new file mode 100644 index 000000000..5aabefda8 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ChatPacket.java @@ -0,0 +1,48 @@ +package kamkeel.network.packets.client; + +import cpw.mods.fml.relauncher.Side; +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentTranslation; +import noppes.npcs.CustomNpcs; +import noppes.npcs.Server; + +import java.io.IOException; + +public final class ChatPacket extends AbstractPacket { + public static final String packetName = "Client|Chat"; + + public ChatPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.CHAT; + } + + @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; + + StringBuilder message = new StringBuilder(); + String str; + while ((str = Server.readString(in)) != null && !str.isEmpty()) { + message.append(str); + } + player.addChatMessage(new ChatComponentTranslation(message.toString())); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ClonePacket.java b/src/main/java/kamkeel/network/packets/client/ClonePacket.java new file mode 100644 index 000000000..1719d2a20 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ClonePacket.java @@ -0,0 +1,41 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.client.gui.player.GuiNpcMobSpawnerAdd; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class ClonePacket extends AbstractPacket { + public static final String packetName = "Client|Clone"; + + public ClonePacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.CLONE; + } + + @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 { + NBTTagCompound nbt = Server.readNBT(in); + NoppesUtil.openGUI(player, new GuiNpcMobSpawnerAdd(nbt)); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ClonerPacket.java b/src/main/java/kamkeel/network/packets/client/ClonerPacket.java new file mode 100644 index 000000000..f4ae249fb --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ClonerPacket.java @@ -0,0 +1,41 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; +import noppes.npcs.constants.EnumGuiType; + +import java.io.IOException; + +public final class ClonerPacket extends AbstractPacket { + public static final String packetName = "Client|Cloner"; + + public ClonerPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.CLONER; + } + + @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 { + int x = in.readInt(); + int y = in.readInt(); + int z = in.readInt(); + CustomNpcs.proxy.openGui(x, y, z, EnumGuiType.MobSpawner, player); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ConfigPacket.java b/src/main/java/kamkeel/network/packets/client/ConfigPacket.java new file mode 100644 index 000000000..d2b7f075c --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ConfigPacket.java @@ -0,0 +1,61 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.Server; +import noppes.npcs.client.ClientProxy; +import noppes.npcs.config.ConfigClient; +import noppes.npcs.client.ClientProxy.FontContainer; +import net.minecraft.util.ChatComponentTranslation; + +import java.io.IOException; + +public final class ConfigPacket extends AbstractPacket { + public static final String packetName = "Client|Config"; + + public ConfigPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.CONFIG; + } + + @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 { + int configType = in.readInt(); + if (configType == 0) { // Font Configuration + String font = Server.readString(in); + int size = in.readInt(); + if (!font.isEmpty()) { + ConfigClient.FontType = font; + ConfigClient.FontSize = size; + ClientProxy.Font = new FontContainer(ConfigClient.FontType, ConfigClient.FontSize); + + ConfigClient.FontTypeProperty.set(ConfigClient.FontType); + ConfigClient.FontSizeProperty.set(ConfigClient.FontSize); + + if (ConfigClient.config.hasChanged()) { + ConfigClient.config.save(); + } + + player.addChatMessage(new ChatComponentTranslation("Font set to %s", ClientProxy.Font.getName())); + } else { + player.addChatMessage(new ChatComponentTranslation("Current font is %s", ClientProxy.Font.getName())); + } + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ContinueSoundsPacket.java b/src/main/java/kamkeel/network/packets/client/ContinueSoundsPacket.java new file mode 100644 index 000000000..16dd9319c --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ContinueSoundsPacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.controllers.ScriptSoundController; + +import java.io.IOException; + +public final class ContinueSoundsPacket extends AbstractPacket { + public static final String packetName = "Client|ContinueSounds"; + + public ContinueSoundsPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.CONTINUE_SOUNDS; + } + + @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 { + ScriptSoundController.Instance.continueAllSounds(); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java b/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java new file mode 100644 index 000000000..e0c11af5b --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class DBCFormPacket extends AbstractPacket { + public static final String packetName = "Client|DBCForm"; + + public DBCFormPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.DBC_FORM; + } + + @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 { + NoppesUtil.handleFormEnd(); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/DeleteNpcPacket.java b/src/main/java/kamkeel/network/packets/client/DeleteNpcPacket.java new file mode 100644 index 000000000..98537c751 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/DeleteNpcPacket.java @@ -0,0 +1,42 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class DeleteNpcPacket extends AbstractPacket { + public static final String packetName = "Client|DeleteNpc"; + + public DeleteNpcPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.DELETE_NPC; + } + + @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 { + Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); + if (entity instanceof EntityNPCInterface) { + ((EntityNPCInterface) entity).delete(); + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/DialogDummyPacket.java b/src/main/java/kamkeel/network/packets/client/DialogDummyPacket.java new file mode 100644 index 000000000..221f66aa8 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/DialogDummyPacket.java @@ -0,0 +1,41 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.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/network/packets/client/DialogPacket.java b/src/main/java/kamkeel/network/packets/client/DialogPacket.java new file mode 100644 index 000000000..343b07891 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/DialogPacket.java @@ -0,0 +1,45 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.Server; +import noppes.npcs.client.NoppesUtil; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class DialogPacket extends AbstractPacket { + public static final String packetName = "Client|Dialog"; + + public DialogPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.DIALOG; + } + + @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 { + Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); + if (!(entity instanceof EntityNPCInterface)) { + return; + } + NoppesUtil.openDialog(Server.readNBT(in), (EntityNPCInterface) entity, player); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/DisableMouseInputPacket.java b/src/main/java/kamkeel/network/packets/client/DisableMouseInputPacket.java new file mode 100644 index 000000000..4723b4b3a --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/DisableMouseInputPacket.java @@ -0,0 +1,48 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.ClientEventHandler; + +import java.io.IOException; + +public final class DisableMouseInputPacket extends AbstractPacket { + public static final String packetName = "Client|DisableMouseInput"; + + public DisableMouseInputPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.DISABLE_MOUSE_INPUT; + } + + @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 { + long duration = in.readLong(); + String parsedButtons = Server.readString(in); + + if (parsedButtons == null || parsedButtons.isEmpty()) { + ClientEventHandler.disabledButtonTimes.put(-1, duration); + return; + } + + String[] buttonIds = parsedButtons.split(";"); + for (String button : buttonIds) { + ClientEventHandler.disabledButtonTimes.put(Integer.parseInt(button), duration); + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/EditNpcPacket.java b/src/main/java/kamkeel/network/packets/client/EditNpcPacket.java new file mode 100644 index 000000000..4fc5accc5 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/EditNpcPacket.java @@ -0,0 +1,44 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class EditNpcPacket extends AbstractPacket { + public static final String packetName = "Client|EditNpc"; + + public EditNpcPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.EDIT_NPC; + } + + @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 { + Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); + if (!(entity instanceof EntityNPCInterface)) { + return; + } + NoppesUtil.setLastNpc((EntityNPCInterface) entity); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/GuiClosePacket.java b/src/main/java/kamkeel/network/packets/client/GuiClosePacket.java new file mode 100644 index 000000000..1b76f3e49 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/GuiClosePacket.java @@ -0,0 +1,48 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.client.gui.util.IGuiClose; + +import java.io.IOException; + +public final class GuiClosePacket extends AbstractPacket { + public static final String packetName = "Client|GuiClose"; + + public GuiClosePacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.GUI_CLOSE; + } + + @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 { + GuiScreen gui = Minecraft.getMinecraft().currentScreen; + if (gui instanceof IGuiClose) { + int closeCode = in.readInt(); + NBTTagCompound nbt = Server.readNBT(in); + ((IGuiClose) gui).setClose(closeCode, nbt); + } + Minecraft.getMinecraft().displayGuiScreen(null); + Minecraft.getMinecraft().setIngameFocus(); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/GuiDataPacket.java b/src/main/java/kamkeel/network/packets/client/GuiDataPacket.java new file mode 100644 index 000000000..d75690875 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/GuiDataPacket.java @@ -0,0 +1,52 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.client.gui.util.GuiContainerNPCInterface; +import noppes.npcs.client.gui.util.GuiNPCInterface; +import noppes.npcs.client.gui.util.IGuiData; + +import java.io.IOException; + +public final class GuiDataPacket extends AbstractPacket { + public static final String packetName = "Client|GuiData"; + + public GuiDataPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.GUI_DATA; + } + + @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 { + GuiScreen gui = Minecraft.getMinecraft().currentScreen; + if (gui instanceof GuiNPCInterface && ((GuiNPCInterface) gui).hasSubGui()) { + gui = (GuiScreen) ((GuiNPCInterface) gui).getSubGui(); + } else if (gui instanceof GuiContainerNPCInterface && ((GuiContainerNPCInterface) gui).hasSubGui()) { + gui = (GuiScreen) ((GuiContainerNPCInterface) gui).getSubGui(); + } + if (gui instanceof IGuiData) { + NBTTagCompound nbt = Server.readNBT(in); + ((IGuiData) gui).setGuiData(nbt); + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/GuiErrorPacket.java b/src/main/java/kamkeel/network/packets/client/GuiErrorPacket.java new file mode 100644 index 000000000..474584379 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/GuiErrorPacket.java @@ -0,0 +1,46 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.client.gui.util.IGuiError; + +import java.io.IOException; + +public final class GuiErrorPacket extends AbstractPacket { + public static final String packetName = "Client|GuiError"; + + public GuiErrorPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.GUI_ERROR; + } + + @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 { + GuiScreen gui = Minecraft.getMinecraft().currentScreen; + if (gui instanceof IGuiError) { + int errorCode = in.readInt(); + NBTTagCompound nbt = Server.readNBT(in); + ((IGuiError) gui).setError(errorCode, nbt); + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/GuiPacket.java b/src/main/java/kamkeel/network/packets/client/GuiPacket.java new file mode 100644 index 000000000..ece5bbcfa --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/GuiPacket.java @@ -0,0 +1,42 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; +import noppes.npcs.constants.EnumGuiType; + +import java.io.IOException; + +public final class GuiPacket extends AbstractPacket { + public static final String packetName = "Client|Gui"; + + public GuiPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.GUI; + } + + @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 { + EnumGuiType gui = EnumGuiType.values()[in.readInt()]; + int x = in.readInt(); + int y = in.readInt(); + int z = in.readInt(); + CustomNpcs.proxy.openGui(null, gui, x, y, z); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/GuiRedstonePacket.java b/src/main/java/kamkeel/network/packets/client/GuiRedstonePacket.java new file mode 100644 index 000000000..de0c3bd4c --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/GuiRedstonePacket.java @@ -0,0 +1,40 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class GuiRedstonePacket extends AbstractPacket { + public static final String packetName = "Client|GuiRedstone"; + + public GuiRedstonePacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.GUI_REDSTONE; + } + + @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 { + NBTTagCompound nbt = Server.readNBT(in); + NoppesUtil.saveRedstoneBlock(player, nbt); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/GuiWaypointPacket.java b/src/main/java/kamkeel/network/packets/client/GuiWaypointPacket.java new file mode 100644 index 000000000..4553e2040 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/GuiWaypointPacket.java @@ -0,0 +1,40 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class GuiWaypointPacket extends AbstractPacket { + public static final String packetName = "Client|GuiWaypoint"; + + public GuiWaypointPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.GUI_WAYPOINT; + } + + @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 { + NBTTagCompound nbt = Server.readNBT(in); + NoppesUtil.saveWayPointBlock(player, nbt); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/IsGuiOpenPacket.java b/src/main/java/kamkeel/network/packets/client/IsGuiOpenPacket.java new file mode 100644 index 000000000..8f44e2602 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/IsGuiOpenPacket.java @@ -0,0 +1,39 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class IsGuiOpenPacket extends AbstractPacket { + public static final String packetName = "Client|IsGuiOpen"; + + public IsGuiOpenPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.ISGUIOPEN; + } + + @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 { + boolean isGuiOpen = Minecraft.getMinecraft().currentScreen != null; + NoppesUtil.isGUIOpen(isGuiOpen); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java b/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java new file mode 100644 index 000000000..19dfe7a1f --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java @@ -0,0 +1,38 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class LargeNBTEndPacket extends AbstractPacket { + public static final String packetName = "Client|LargeNBTEnd"; + + public LargeNBTEndPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.LARGE_NBT_END; + } + + @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 { + // Finalize handling of large NBT data (if needed). + NoppesUtil.handleLargeData(null); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/LargeNbtPartPacket.java b/src/main/java/kamkeel/network/packets/client/LargeNbtPartPacket.java new file mode 100644 index 000000000..2c4813adf --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/LargeNbtPartPacket.java @@ -0,0 +1,39 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class LargeNBTPartPacket extends AbstractPacket { + public static final String packetName = "Client|LargeNBTPart"; + + public LargeNBTPartPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.LARGE_NBT_PART; + } + + @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 { + byte[] chunk = new byte[in.readShort()]; + in.readBytes(chunk); + NoppesUtil.handleLargeData(chunk); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/MarkDataPacket.java b/src/main/java/kamkeel/network/packets/client/MarkDataPacket.java new file mode 100644 index 000000000..a6412982b --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/MarkDataPacket.java @@ -0,0 +1,47 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.controllers.data.MarkData; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class MarkDataPacket extends AbstractPacket { + public static final String packetName = "Client|MarkData"; + + public MarkDataPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.MARK_DATA; + } + + @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 { + Entity entity = player.worldObj.getEntityByID(in.readInt()); + if (!(entity instanceof EntityNPCInterface)) return; + + EntityNPCInterface npc = (EntityNPCInterface) entity; + NBTTagCompound nbt = Server.readNBT(in); + MarkData data = MarkData.get(npc); + data.setNBT(nbt); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/MessagePacket.java b/src/main/java/kamkeel/network/packets/client/MessagePacket.java new file mode 100644 index 000000000..97d05da72 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/MessagePacket.java @@ -0,0 +1,53 @@ +package kamkeel.network.packets.client; + +import cpw.mods.fml.common.ObfuscationReflectionHelper; +import cpw.mods.fml.relauncher.Side; +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.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.CustomItems; +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; + + 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/network/packets/client/OpenBookPacket.java b/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java new file mode 100644 index 000000000..7e1c613f4 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java @@ -0,0 +1,46 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.client.gui.player.GuiBook; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class OpenBookPacket extends AbstractPacket { + public static final String packetName = "Client|OpenBook"; + + public OpenBookPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.OPEN_BOOK; + } + + @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 { + int x = in.readInt(); + int y = in.readInt(); + int z = in.readInt(); + NBTTagCompound nbt = Server.readNBT(in); + ItemStack book = ItemStack.loadItemStackFromNBT(nbt); + NoppesUtil.openGUI(player, new GuiBook(player, book, x, y, z)); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/OverlayQuestTrackingPacket.java b/src/main/java/kamkeel/network/packets/client/OverlayQuestTrackingPacket.java new file mode 100644 index 000000000..487f163dc --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/OverlayQuestTrackingPacket.java @@ -0,0 +1,47 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.client.gui.OverlayQuestTracking; +import noppes.npcs.client.ClientCacheHandler; + +import java.io.IOException; + +public final class OverlayQuestTrackingPacket extends AbstractPacket { + public static final String packetName = "Client|OverlayQuestTracking"; + + public OverlayQuestTrackingPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.OVERLAY_QUEST_TRACKING; + } + + @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 { + try { + NBTTagCompound nbt = Server.readNBT(in); + ClientCacheHandler.questTrackingOverlay = new OverlayQuestTracking(Minecraft.getMinecraft()); + ClientCacheHandler.questTrackingOverlay.setOverlayData(nbt); + } catch (IOException e) { + ClientCacheHandler.questTrackingOverlay = null; + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ParticlePacket.java b/src/main/java/kamkeel/network/packets/client/ParticlePacket.java new file mode 100644 index 000000000..ae7230ee4 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ParticlePacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; + +import java.io.IOException; + +public final class ParticlePacket extends AbstractPacket { + public static final String packetName = "Client|Particle"; + + public ParticlePacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.PARTICLE; + } + + @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 { + NoppesUtil.spawnParticle(in); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/PartyDataPacket.java b/src/main/java/kamkeel/network/packets/client/PartyDataPacket.java new file mode 100644 index 000000000..95b2f68eb --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/PartyDataPacket.java @@ -0,0 +1,52 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.client.gui.util.GuiContainerNPCInterface; +import noppes.npcs.client.gui.util.GuiNPCInterface; +import noppes.npcs.client.gui.util.IPartyData; + +import java.io.IOException; + +public final class PartyDataPacket extends AbstractPacket { + public static final String packetName = "Client|PartyData"; + + public PartyDataPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.PARTY_DATA; + } + + @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 { + GuiScreen gui = Minecraft.getMinecraft().currentScreen; + if (gui instanceof GuiNPCInterface && ((GuiNPCInterface) gui).hasSubGui()) { + gui = (GuiScreen) ((GuiNPCInterface) gui).getSubGui(); + } else if (gui instanceof GuiContainerNPCInterface && ((GuiContainerNPCInterface) gui).hasSubGui()) { + gui = (GuiScreen) ((GuiContainerNPCInterface) gui).getSubGui(); + } + if (gui instanceof IPartyData) { + NBTTagCompound nbt = Server.readNBT(in); + ((IPartyData) gui).setPartyData(nbt); + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/PauseSoundsPacket.java b/src/main/java/kamkeel/network/packets/client/PauseSoundsPacket.java new file mode 100644 index 000000000..8693a67f2 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/PauseSoundsPacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.controllers.ScriptSoundController; + +import java.io.IOException; + +public final class PauseSoundsPacket extends AbstractPacket { + public static final String packetName = "Client|PauseSounds"; + + public PauseSoundsPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.PAUSE_SOUNDS; + } + + @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 { + ScriptSoundController.Instance.pauseAllSounds(); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/PlayMusicPacket.java b/src/main/java/kamkeel/network/packets/client/PlayMusicPacket.java new file mode 100644 index 000000000..c12770bc0 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/PlayMusicPacket.java @@ -0,0 +1,39 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.Server; +import noppes.npcs.client.controllers.MusicController; + +import java.io.IOException; + +public final class PlayMusicPacket extends AbstractPacket { + public static final String packetName = "Client|PlayMusic"; + + public PlayMusicPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.PLAY_MUSIC; + } + + @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 { + String musicName = Server.readString(in); + MusicController.Instance.playMusicBackground(musicName, player, Integer.MAX_VALUE); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/PlaySoundPacket.java b/src/main/java/kamkeel/network/packets/client/PlaySoundPacket.java new file mode 100644 index 000000000..7f2996508 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/PlaySoundPacket.java @@ -0,0 +1,42 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.Server; +import noppes.npcs.client.controllers.MusicController; + +import java.io.IOException; + +public final class PlaySoundPacket extends AbstractPacket { + public static final String packetName = "Client|PlaySound"; + + public PlaySoundPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.PLAY_SOUND; + } + + @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 { + String soundName = Server.readString(in); + float x = in.readFloat(); + float y = in.readFloat(); + float z = in.readFloat(); + MusicController.Instance.playSound(soundName, x, y, z); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/PlaySoundToNoIdPacket.java b/src/main/java/kamkeel/network/packets/client/PlaySoundToNoIdPacket.java new file mode 100644 index 000000000..00b052338 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/PlaySoundToNoIdPacket.java @@ -0,0 +1,42 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.client.controllers.ScriptClientSound; +import noppes.npcs.client.controllers.ScriptSoundController; + +import java.io.IOException; + +public final class PlaySoundToNoIdPacket extends AbstractPacket { + public static final String packetName = "Client|PlaySoundToNoId"; + + public PlaySoundToNoIdPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.PLAY_SOUND_TO_NO_ID; + } + + @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 { + NBTTagCompound nbt = Server.readNBT(in); + ScriptClientSound sound = ScriptClientSound.fromScriptSound(nbt, player.worldObj); + ScriptSoundController.Instance.playSound(sound); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/PlaySoundToPacket.java b/src/main/java/kamkeel/network/packets/client/PlaySoundToPacket.java new file mode 100644 index 000000000..da0baead2 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/PlaySoundToPacket.java @@ -0,0 +1,43 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.client.controllers.ScriptClientSound; +import noppes.npcs.client.controllers.ScriptSoundController; + +import java.io.IOException; + +public final class PlaySoundToPacket extends AbstractPacket { + public static final String packetName = "Client|PlaySoundTo"; + + public PlaySoundToPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.PLAY_SOUND_TO; + } + + @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 { + int soundId = in.readInt(); + NBTTagCompound nbt = Server.readNBT(in); + ScriptClientSound sound = ScriptClientSound.fromScriptSound(nbt, player.worldObj); + ScriptSoundController.Instance.playSound(soundId, sound); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java new file mode 100644 index 000000000..8bb3f6e11 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java @@ -0,0 +1,45 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class PlayerUpdateSkinOverlaysPacket extends AbstractPacket { + public static final String packetName = "Client|PlayerUpdateSkinOverlays"; + + public PlayerUpdateSkinOverlaysPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.PLAYER_UPDATE_SKIN_OVERLAYS; + } + + @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 { + String playerName = Server.readString(in); + NBTTagCompound nbt = Server.readNBT(in); + EntityPlayer sendingPlayer = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(playerName); + if (sendingPlayer != null) { + NoppesUtil.updateSkinOverlayData(sendingPlayer, nbt); + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/QuestCompletionPacket.java b/src/main/java/kamkeel/network/packets/client/QuestCompletionPacket.java new file mode 100644 index 000000000..e395facec --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/QuestCompletionPacket.java @@ -0,0 +1,38 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.Server; +import noppes.npcs.client.NoppesUtil; + +import java.io.IOException; + +public final class QuestCompletionPacket extends AbstractPacket { + public static final String packetName = "Client|QuestCompletion"; + + public QuestCompletionPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.QUEST_COMPLETION; + } + + @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 { + NoppesUtil.guiQuestCompletion(player, Server.readNBT(in)); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/RolePacket.java b/src/main/java/kamkeel/network/packets/client/RolePacket.java new file mode 100644 index 000000000..431cd25c8 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/RolePacket.java @@ -0,0 +1,49 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +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.NoppesUtil; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class RolePacket extends AbstractPacket { + public static final String packetName = "Client|Role"; + + public RolePacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.ROLE; + } + + @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 { + NBTTagCompound compound = Server.readNBT(in); + Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); + if (entity instanceof EntityNPCInterface) { + EntityNPCInterface npc = (EntityNPCInterface) entity; + npc.advanced.setRole(compound.getInteger("Role")); + npc.roleInterface.readFromNBT(compound); + NoppesUtil.setLastNpc(npc); + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ScriptOverlayClosePacket.java b/src/main/java/kamkeel/network/packets/client/ScriptOverlayClosePacket.java new file mode 100644 index 000000000..f40193ceb --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ScriptOverlayClosePacket.java @@ -0,0 +1,38 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.ClientCacheHandler; + +import java.io.IOException; + +public final class ScriptOverlayClosePacket extends AbstractPacket { + public static final String packetName = "Client|ScriptOverlayClose"; + + public ScriptOverlayClosePacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SCRIPT_OVERLAY_CLOSE; + } + + @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 { + int overlayId = in.readInt(); + ClientCacheHandler.customOverlays.remove(overlayId); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ScriptOverlayDataPacket.java b/src/main/java/kamkeel/network/packets/client/ScriptOverlayDataPacket.java new file mode 100644 index 000000000..9952be1f9 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ScriptOverlayDataPacket.java @@ -0,0 +1,42 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.Server; +import noppes.npcs.client.gui.customoverlay.OverlayCustom; +import noppes.npcs.client.ClientCacheHandler; + +import java.io.IOException; + +public final class ScriptOverlayDataPacket extends AbstractPacket { + public static final String packetName = "Client|ScriptOverlayData"; + + public ScriptOverlayDataPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SCRIPT_OVERLAY_DATA; + } + + @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 { + OverlayCustom overlayCustom = new OverlayCustom(Minecraft.getMinecraft()); + overlayCustom.setOverlayData(Server.readNBT(in)); + ClientCacheHandler.customOverlays.put(overlayCustom.overlay.getID(), overlayCustom); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ScriptedParticlePacket.java b/src/main/java/kamkeel/network/packets/client/ScriptedParticlePacket.java new file mode 100644 index 000000000..ea8150148 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ScriptedParticlePacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; + +import java.io.IOException; + +public final class ScriptedParticlePacket extends AbstractPacket { + public static final String packetName = "Client|ScriptedParticle"; + + public ScriptedParticlePacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SCRIPTED_PARTICLE; + } + + @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 { + NoppesUtil.spawnScriptedParticle(player, in); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java new file mode 100644 index 000000000..412c86daf --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class ScrollDataPacket extends AbstractPacket { + public static final String packetName = "Client|ScrollData"; + + public ScrollDataPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_DATA; + } + + @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 { + NoppesUtil.setScrollData(in); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java new file mode 100644 index 000000000..29c3d611a --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class ScrollDataPartPacket extends AbstractPacket { + public static final String packetName = "Client|ScrollDataPart"; + + public ScrollDataPartPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_DATA_PART; + } + + @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 { + NoppesUtil.addScrollData(in); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java new file mode 100644 index 000000000..60c770a3e --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class ScrollGroupPacket extends AbstractPacket { + public static final String packetName = "Client|ScrollGroup"; + + public ScrollGroupPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_GROUP; + } + + @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 { + NoppesUtil.setScrollGroup(in); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java new file mode 100644 index 000000000..16bcabd76 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtil; + +import java.io.IOException; + +public final class ScrollGroupPartPacket extends AbstractPacket { + public static final String packetName = "Client|ScrollGroupPart"; + + public ScrollGroupPartPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_GROUP_PART; + } + + @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 { + NoppesUtil.addScrollGroup(in); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollListPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollListPacket.java new file mode 100644 index 000000000..531899ac4 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ScrollListPacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; + +import java.io.IOException; + +public final class ScrollListPacket extends AbstractPacket { + public static final String packetName = "Client|ScrollList"; + + public ScrollListPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_LIST; + } + + @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 { + NoppesUtil.setScrollList(in); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollSelectedPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollSelectedPacket.java new file mode 100644 index 000000000..7de8e9fed --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/ScrollSelectedPacket.java @@ -0,0 +1,44 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.Server; +import noppes.npcs.client.gui.util.IScrollData; + +import java.io.IOException; + +public final class ScrollSelectedPacket extends AbstractPacket { + public static final String packetName = "Client|ScrollSelected"; + + public ScrollSelectedPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_SELECTED; + } + + @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 { + GuiScreen gui = Minecraft.getMinecraft().currentScreen; + if (gui instanceof IScrollData) { + String selected = Server.readString(in); + ((IScrollData) gui).setSelected(selected); + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/StopSoundForPacket.java b/src/main/java/kamkeel/network/packets/client/StopSoundForPacket.java new file mode 100644 index 000000000..ec066645b --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/StopSoundForPacket.java @@ -0,0 +1,38 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.controllers.ScriptSoundController; + +import java.io.IOException; + +public final class StopSoundForPacket extends AbstractPacket { + public static final String packetName = "Client|StopSoundFor"; + + public StopSoundForPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.STOP_SOUND_FOR; + } + + @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 { + int soundId = in.readInt(); + ScriptSoundController.Instance.stopSound(soundId); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/StopSoundsPacket.java b/src/main/java/kamkeel/network/packets/client/StopSoundsPacket.java new file mode 100644 index 000000000..14db7f7cc --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/StopSoundsPacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.controllers.ScriptSoundController; + +import java.io.IOException; + +public final class StopSoundsPacket extends AbstractPacket { + public static final String packetName = "Client|StopSounds"; + + public StopSoundsPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.STOP_SOUNDS; + } + + @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 { + ScriptSoundController.Instance.stopAllSounds(); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/SwingPlayerArmPacket.java b/src/main/java/kamkeel/network/packets/client/SwingPlayerArmPacket.java new file mode 100644 index 000000000..6ca1511b4 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/SwingPlayerArmPacket.java @@ -0,0 +1,37 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; + +import java.io.IOException; + +public final class SwingPlayerArmPacket extends AbstractPacket { + public static final String packetName = "Client|SwingPlayerArm"; + + public SwingPlayerArmPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SWING_PLAYER_ARM; + } + + @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 { + Minecraft.getMinecraft().thePlayer.swingItem(); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/SyncAddPacket.java b/src/main/java/kamkeel/network/packets/client/SyncAddPacket.java new file mode 100644 index 000000000..beb107093 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/SyncAddPacket.java @@ -0,0 +1,41 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.controllers.SyncController; + +import java.io.IOException; + +public final class SyncAddPacket extends AbstractPacket { + public static final String packetName = "Client|SyncAdd"; + + public SyncAddPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SYNC_ADD; + } + + @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 { + int synctype = in.readInt(); + NBTTagCompound compound = Server.readNBT(in); + SyncController.clientSync(synctype, compound, false); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/SyncConfigPacket.java b/src/main/java/kamkeel/network/packets/client/SyncConfigPacket.java new file mode 100644 index 000000000..b621b36bd --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/SyncConfigPacket.java @@ -0,0 +1,40 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.controllers.SyncController; + +import java.io.IOException; + +public final class SyncConfigPacket extends AbstractPacket { + public static final String packetName = "Client|SyncConfig"; + + public SyncConfigPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SYNC_CONFIG; + } + + @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 { + NBTTagCompound configNBT = Server.readNBT(in); + SyncController.receiveConfigs(configNBT); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/SyncEndPacket.java b/src/main/java/kamkeel/network/packets/client/SyncEndPacket.java new file mode 100644 index 000000000..6e6f6a27f --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/SyncEndPacket.java @@ -0,0 +1,41 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.controllers.SyncController; + +import java.io.IOException; + +public final class SyncEndPacket extends AbstractPacket { + public static final String packetName = "Client|SyncEnd"; + + public SyncEndPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SYNC_END; + } + + @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 { + int synctype = in.readInt(); + NBTTagCompound compound = Server.readNBT(in); + SyncController.clientSync(synctype, compound, true); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/SyncPlayerPacket.java b/src/main/java/kamkeel/network/packets/client/SyncPlayerPacket.java new file mode 100644 index 000000000..e477ad261 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/SyncPlayerPacket.java @@ -0,0 +1,38 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; + +import java.io.IOException; + +public final class SyncPlayerPacket extends AbstractPacket { + public static final String packetName = "Client|SyncPlayer"; + + public SyncPlayerPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SYNC_PLAYER; + } + + @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 { + boolean sync = in.readBoolean(); + NoppesUtil.handlePlayerDataEnd(sync); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/SyncRecipesAddPacket.java b/src/main/java/kamkeel/network/packets/client/SyncRecipesAddPacket.java new file mode 100644 index 000000000..996b1987c --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/SyncRecipesAddPacket.java @@ -0,0 +1,51 @@ +package kamkeel.network.packets.client; + +import cpw.mods.fml.relauncher.Side; +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagList; +import noppes.npcs.CustomNpcs; +import noppes.npcs.Server; +import noppes.npcs.controllers.RecipeController; +import noppes.npcs.controllers.data.RecipeCarpentry; + +import java.io.IOException; + +public final class SyncRecipesAddPacket extends AbstractPacket { + public static final String packetName = "Client|SyncRecipesAdd"; + + public SyncRecipesAddPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SYNCRECIPES_ADD; + } + + @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; + + NBTTagList list = Server.readNBT(in).getTagList("recipes", 10); + if (list != null) { + for (int i = 0; i < list.tagCount(); i++) { + RecipeCarpentry recipe = RecipeCarpentry.read(list.getCompoundTagAt(i)); + RecipeController.syncRecipes.put(recipe.id, recipe); + } + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/SyncRecipesCarpentryBenchPacket.java b/src/main/java/kamkeel/network/packets/client/SyncRecipesCarpentryBenchPacket.java new file mode 100644 index 000000000..ef474ef7d --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/SyncRecipesCarpentryBenchPacket.java @@ -0,0 +1,38 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.controllers.RecipeController; + +import java.io.IOException; + +public final class SyncRecipesCarpentryBenchPacket extends AbstractPacket { + public static final String packetName = "Client|SyncRecipesCarpentryBench"; + + public SyncRecipesCarpentryBenchPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SYNCRECIPES_CARPENTRYBENCH; + } + + @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 { + RecipeController.Instance.anvilRecipes = RecipeController.syncRecipes; + RecipeController.syncRecipes.clear(); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/SyncRecipesWorkbenchPacket.java b/src/main/java/kamkeel/network/packets/client/SyncRecipesWorkbenchPacket.java new file mode 100644 index 000000000..46773c030 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/SyncRecipesWorkbenchPacket.java @@ -0,0 +1,38 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.controllers.RecipeController; + +import java.io.IOException; + +public final class SyncRecipesWorkbenchPacket extends AbstractPacket { + public static final String packetName = "Client|SyncRecipesWorkbench"; + + public SyncRecipesWorkbenchPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SYNCRECIPES_WORKBENCH; + } + + @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 { + RecipeController.reloadGlobalRecipes(RecipeController.syncRecipes); + RecipeController.syncRecipes.clear(); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/SyncRemovePacket.java b/src/main/java/kamkeel/network/packets/client/SyncRemovePacket.java new file mode 100644 index 000000000..f4de94de7 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/SyncRemovePacket.java @@ -0,0 +1,39 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.controllers.SyncController; + +import java.io.IOException; + +public final class SyncRemovePacket extends AbstractPacket { + public static final String packetName = "Client|SyncRemove"; + + public SyncRemovePacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SYNC_REMOVE; + } + + @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 { + int synctype = in.readInt(); + int id = in.readInt(); + SyncController.clientSyncRemove(synctype, id); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/SyncUpdatePacket.java b/src/main/java/kamkeel/network/packets/client/SyncUpdatePacket.java new file mode 100644 index 000000000..3efa0a982 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/SyncUpdatePacket.java @@ -0,0 +1,41 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.controllers.SyncController; + +import java.io.IOException; + +public final class SyncUpdatePacket extends AbstractPacket { + public static final String packetName = "Client|SyncUpdate"; + + public SyncUpdatePacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SYNC_UPDATE; + } + + @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 { + int synctype = in.readInt(); + NBTTagCompound compound = Server.readNBT(in); + SyncController.clientSyncUpdate(synctype, compound, in); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/SyncWeaponPacket.java b/src/main/java/kamkeel/network/packets/client/SyncWeaponPacket.java new file mode 100644 index 000000000..71886c043 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/SyncWeaponPacket.java @@ -0,0 +1,48 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class SyncWeaponPacket extends AbstractPacket { + public static final String packetName = "Client|SyncWeapon"; + + public SyncWeaponPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.SYNC_WEAPON; + } + + @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 { + Entity entity = player.worldObj.getEntityByID(in.readInt()); + if (!(entity instanceof EntityNPCInterface)) return; + + EntityNPCInterface npc = (EntityNPCInterface) entity; + int weaponSlotIndex = in.readInt(); + NBTTagCompound nbt = Server.readNBT(in); + ItemStack stack = ItemStack.loadItemStackFromNBT(nbt); + npc.inventory.weapons.put(weaponSlotIndex, stack); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/TeleporterPacket.java b/src/main/java/kamkeel/network/packets/client/TeleporterPacket.java new file mode 100644 index 000000000..2ffd14b3a --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/TeleporterPacket.java @@ -0,0 +1,38 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; +import noppes.npcs.constants.EnumGuiType; + +import java.io.IOException; + +public final class TeleporterPacket extends AbstractPacket { + public static final String packetName = "Client|Teleporter"; + + public TeleporterPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.TELEPORTER; + } + + @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 { + CustomNpcs.proxy.openGui(null, EnumGuiType.NpcDimensions); + } +} diff --git a/src/main/java/kamkeel/network/packets/client/UpdateAnimationsPacket.java b/src/main/java/kamkeel/network/packets/client/UpdateAnimationsPacket.java new file mode 100644 index 000000000..99ba8f582 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/UpdateAnimationsPacket.java @@ -0,0 +1,77 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +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.ClientCacheHandler; +import noppes.npcs.controllers.data.Animation; +import noppes.npcs.controllers.data.AnimationData; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class UpdateAnimationsPacket extends AbstractPacket { + public static final String packetName = "Client|UpdateAnimations"; + + public UpdateAnimationsPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.UPDATE_ANIMATIONS; + } + + @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 { + NBTTagCompound nbt = Server.readNBT(in); + AnimationData animationData = null; + + if (nbt.hasKey("EntityId")) { + Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(nbt.getInteger("EntityId")); + if (entity instanceof EntityNPCInterface) { + animationData = ((EntityNPCInterface) entity).display.animationData; + } + } else { + String playerName = Server.readString(in); + EntityPlayer sendingPlayer = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(playerName); + if (sendingPlayer != null) { + if (!ClientCacheHandler.playerAnimations.containsKey(sendingPlayer.getUniqueID())) { + ClientCacheHandler.playerAnimations.put(sendingPlayer.getUniqueID(), new AnimationData(sendingPlayer)); + } + animationData = ClientCacheHandler.playerAnimations.get(sendingPlayer.getUniqueID()); + animationData.parent = sendingPlayer; + } + } + + if (animationData != null) { + int animationId; + if (nbt.hasKey("AnimationID")) { + animationId = nbt.getInteger("AnimationID"); + } else { + Animation animation = new Animation(); + animation.readFromNBT(nbt.getCompoundTag("Animation")); + ClientCacheHandler.animationCache.put(animation.getID(), animation); + animationId = animation.getID(); + } + + animationData.setAnimation(ClientCacheHandler.animationCache.get(animationId)); + animationData.readFromNBT(nbt); + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/UpdateNpcPacket.java b/src/main/java/kamkeel/network/packets/client/UpdateNpcPacket.java new file mode 100644 index 000000000..1243f8c7f --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/UpdateNpcPacket.java @@ -0,0 +1,45 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +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.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class UpdateNpcPacket extends AbstractPacket { + public static final String packetName = "Client|UpdateNpc"; + + public UpdateNpcPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.UPDATE_NPC; + } + + @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 { + NBTTagCompound compound = Server.readNBT(in); + Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); + if (entity instanceof EntityNPCInterface) { + ((EntityNPCInterface) entity).readSpawnData(compound); + } + } +} diff --git a/src/main/java/kamkeel/network/packets/client/VillagerListPacket.java b/src/main/java/kamkeel/network/packets/client/VillagerListPacket.java new file mode 100644 index 000000000..a763c3fe4 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/client/VillagerListPacket.java @@ -0,0 +1,41 @@ +package kamkeel.network.packets.client; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.PacketBuffer; +import noppes.npcs.Server; +import noppes.npcs.ServerEventsHandler; +import net.minecraft.village.MerchantRecipeList; + +import java.io.IOException; + +public final class VillagerListPacket extends AbstractPacket { + public static final String packetName = "Client|VillagerList"; + + public VillagerListPacket() {} + + @Override + public Enum getType() { + return EnumClientPacket.VILLAGER_LIST; + } + + @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 { + MerchantRecipeList recipes = MerchantRecipeList.func_151390_b(new PacketBuffer(in)); + ServerEventsHandler.Merchant.setRecipes(recipes); + } +} diff --git a/src/main/java/noppes/npcs/Server.java b/src/main/java/noppes/npcs/Server.java index e1aa4c361..317448523 100644 --- a/src/main/java/noppes/npcs/Server.java +++ b/src/main/java/noppes/npcs/Server.java @@ -143,5 +143,4 @@ public class Server { return null; } } - } From d2da5c6000d8784d2655d018da8daa7d6c01327a Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 28 Jan 2025 15:50:00 -0500 Subject: [PATCH 020/157] Rename Packet --- .../client/{LargeNbtPartPacket.java => LargeNBTPartPacket.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/java/kamkeel/network/packets/client/{LargeNbtPartPacket.java => LargeNBTPartPacket.java} (100%) diff --git a/src/main/java/kamkeel/network/packets/client/LargeNbtPartPacket.java b/src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java similarity index 100% rename from src/main/java/kamkeel/network/packets/client/LargeNbtPartPacket.java rename to src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java From 882bce2d4bac0c27782e6705f0d9b4cf792c18be Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 28 Jan 2025 15:51:50 -0500 Subject: [PATCH 021/157] Reorgs --- .../network/packets/client/{ => gui}/GuiClosePacket.java | 2 +- .../kamkeel/network/packets/client/{ => gui}/GuiDataPacket.java | 2 +- .../network/packets/client/{ => gui}/GuiErrorPacket.java | 2 +- .../kamkeel/network/packets/client/{ => gui}/GuiPacket.java | 2 +- .../network/packets/client/{ => gui}/GuiRedstonePacket.java | 2 +- .../network/packets/client/{ => gui}/GuiWaypointPacket.java | 2 +- .../network/packets/client/{ => gui}/IsGuiOpenPacket.java | 2 +- .../network/packets/client/{ => sync}/SyncAddPacket.java | 2 +- .../network/packets/client/{ => sync}/SyncConfigPacket.java | 2 +- .../network/packets/client/{ => sync}/SyncEndPacket.java | 2 +- .../network/packets/client/{ => sync}/SyncPlayerPacket.java | 2 +- .../network/packets/client/{ => sync}/SyncRecipesAddPacket.java | 2 +- .../client/{ => sync}/SyncRecipesCarpentryBenchPacket.java | 2 +- .../packets/client/{ => sync}/SyncRecipesWorkbenchPacket.java | 2 +- .../network/packets/client/{ => sync}/SyncRemovePacket.java | 2 +- .../network/packets/client/{ => sync}/SyncUpdatePacket.java | 2 +- .../network/packets/client/{ => sync}/SyncWeaponPacket.java | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) rename src/main/java/kamkeel/network/packets/client/{ => gui}/GuiClosePacket.java (96%) rename src/main/java/kamkeel/network/packets/client/{ => gui}/GuiDataPacket.java (97%) rename src/main/java/kamkeel/network/packets/client/{ => gui}/GuiErrorPacket.java (96%) rename src/main/java/kamkeel/network/packets/client/{ => gui}/GuiPacket.java (96%) rename src/main/java/kamkeel/network/packets/client/{ => gui}/GuiRedstonePacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => gui}/GuiWaypointPacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => gui}/IsGuiOpenPacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => sync}/SyncAddPacket.java (96%) rename src/main/java/kamkeel/network/packets/client/{ => sync}/SyncConfigPacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => sync}/SyncEndPacket.java (96%) rename src/main/java/kamkeel/network/packets/client/{ => sync}/SyncPlayerPacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => sync}/SyncRecipesAddPacket.java (97%) rename src/main/java/kamkeel/network/packets/client/{ => sync}/SyncRecipesCarpentryBenchPacket.java (96%) rename src/main/java/kamkeel/network/packets/client/{ => sync}/SyncRecipesWorkbenchPacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => sync}/SyncRemovePacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => sync}/SyncUpdatePacket.java (96%) rename src/main/java/kamkeel/network/packets/client/{ => sync}/SyncWeaponPacket.java (96%) diff --git a/src/main/java/kamkeel/network/packets/client/GuiClosePacket.java b/src/main/java/kamkeel/network/packets/client/gui/GuiClosePacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/GuiClosePacket.java rename to src/main/java/kamkeel/network/packets/client/gui/GuiClosePacket.java index 1b76f3e49..883fdd29e 100644 --- a/src/main/java/kamkeel/network/packets/client/GuiClosePacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GuiClosePacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.gui; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/GuiDataPacket.java b/src/main/java/kamkeel/network/packets/client/gui/GuiDataPacket.java similarity index 97% rename from src/main/java/kamkeel/network/packets/client/GuiDataPacket.java rename to src/main/java/kamkeel/network/packets/client/gui/GuiDataPacket.java index d75690875..c41427987 100644 --- a/src/main/java/kamkeel/network/packets/client/GuiDataPacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GuiDataPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.gui; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/GuiErrorPacket.java b/src/main/java/kamkeel/network/packets/client/gui/GuiErrorPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/GuiErrorPacket.java rename to src/main/java/kamkeel/network/packets/client/gui/GuiErrorPacket.java index 474584379..d653e88f8 100644 --- a/src/main/java/kamkeel/network/packets/client/GuiErrorPacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GuiErrorPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.gui; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/GuiPacket.java b/src/main/java/kamkeel/network/packets/client/gui/GuiPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/GuiPacket.java rename to src/main/java/kamkeel/network/packets/client/gui/GuiPacket.java index ece5bbcfa..a86c8a8fe 100644 --- a/src/main/java/kamkeel/network/packets/client/GuiPacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GuiPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.gui; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/GuiRedstonePacket.java b/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/GuiRedstonePacket.java rename to src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java index de0c3bd4c..3acf4e559 100644 --- a/src/main/java/kamkeel/network/packets/client/GuiRedstonePacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.gui; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/GuiWaypointPacket.java b/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/GuiWaypointPacket.java rename to src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java index 4553e2040..91a4ad0d4 100644 --- a/src/main/java/kamkeel/network/packets/client/GuiWaypointPacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.gui; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/IsGuiOpenPacket.java b/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/IsGuiOpenPacket.java rename to src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java index 8f44e2602..54f0c905c 100644 --- a/src/main/java/kamkeel/network/packets/client/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.gui; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/SyncAddPacket.java b/src/main/java/kamkeel/network/packets/client/sync/SyncAddPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/SyncAddPacket.java rename to src/main/java/kamkeel/network/packets/client/sync/SyncAddPacket.java index beb107093..6224bb102 100644 --- a/src/main/java/kamkeel/network/packets/client/SyncAddPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sync/SyncAddPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sync; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/SyncConfigPacket.java b/src/main/java/kamkeel/network/packets/client/sync/SyncConfigPacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/SyncConfigPacket.java rename to src/main/java/kamkeel/network/packets/client/sync/SyncConfigPacket.java index b621b36bd..eaf3b419a 100644 --- a/src/main/java/kamkeel/network/packets/client/SyncConfigPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sync/SyncConfigPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sync; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/SyncEndPacket.java b/src/main/java/kamkeel/network/packets/client/sync/SyncEndPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/SyncEndPacket.java rename to src/main/java/kamkeel/network/packets/client/sync/SyncEndPacket.java index 6e6f6a27f..bc5a4e26d 100644 --- a/src/main/java/kamkeel/network/packets/client/SyncEndPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sync/SyncEndPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sync; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/SyncPlayerPacket.java b/src/main/java/kamkeel/network/packets/client/sync/SyncPlayerPacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/SyncPlayerPacket.java rename to src/main/java/kamkeel/network/packets/client/sync/SyncPlayerPacket.java index e477ad261..372f26e60 100644 --- a/src/main/java/kamkeel/network/packets/client/SyncPlayerPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sync/SyncPlayerPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sync; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/SyncRecipesAddPacket.java b/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesAddPacket.java similarity index 97% rename from src/main/java/kamkeel/network/packets/client/SyncRecipesAddPacket.java rename to src/main/java/kamkeel/network/packets/client/sync/SyncRecipesAddPacket.java index 996b1987c..8460dac7f 100644 --- a/src/main/java/kamkeel/network/packets/client/SyncRecipesAddPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesAddPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sync; import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/kamkeel/network/packets/client/SyncRecipesCarpentryBenchPacket.java b/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/SyncRecipesCarpentryBenchPacket.java rename to src/main/java/kamkeel/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java index ef474ef7d..c49a37dc0 100644 --- a/src/main/java/kamkeel/network/packets/client/SyncRecipesCarpentryBenchPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sync; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/SyncRecipesWorkbenchPacket.java b/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesWorkbenchPacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/SyncRecipesWorkbenchPacket.java rename to src/main/java/kamkeel/network/packets/client/sync/SyncRecipesWorkbenchPacket.java index 46773c030..bb3a4ab79 100644 --- a/src/main/java/kamkeel/network/packets/client/SyncRecipesWorkbenchPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesWorkbenchPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sync; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/SyncRemovePacket.java b/src/main/java/kamkeel/network/packets/client/sync/SyncRemovePacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/SyncRemovePacket.java rename to src/main/java/kamkeel/network/packets/client/sync/SyncRemovePacket.java index f4de94de7..adc7c9ae3 100644 --- a/src/main/java/kamkeel/network/packets/client/SyncRemovePacket.java +++ b/src/main/java/kamkeel/network/packets/client/sync/SyncRemovePacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sync; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/SyncUpdatePacket.java b/src/main/java/kamkeel/network/packets/client/sync/SyncUpdatePacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/SyncUpdatePacket.java rename to src/main/java/kamkeel/network/packets/client/sync/SyncUpdatePacket.java index 3efa0a982..c95ad6357 100644 --- a/src/main/java/kamkeel/network/packets/client/SyncUpdatePacket.java +++ b/src/main/java/kamkeel/network/packets/client/sync/SyncUpdatePacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sync; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/SyncWeaponPacket.java b/src/main/java/kamkeel/network/packets/client/sync/SyncWeaponPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/SyncWeaponPacket.java rename to src/main/java/kamkeel/network/packets/client/sync/SyncWeaponPacket.java index 71886c043..59be33b6e 100644 --- a/src/main/java/kamkeel/network/packets/client/SyncWeaponPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sync/SyncWeaponPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sync; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; From 5790926e5163c85ef2017fbfd99adffdee3ffae7 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 28 Jan 2025 18:14:18 -0500 Subject: [PATCH 022/157] More Super Commits for Packet System --- .../java/kamkeel/network/KamUtilServer.java | 20 ++++ .../kamkeel/network/LargeAbstractPacket.java | 59 ++++++++++ .../java/kamkeel/network/PacketHandler.java | 105 ++++++++++++++++-- .../network/enums/EnumClientPacket.java | 2 - ...igPacket.java => ConfigCommandPacket.java} | 6 +- .../network/packets/client/DBCFormPacket.java | 2 +- .../packets/client/LargeNBTEndPacket.java | 2 +- .../packets/client/LargeNBTPartPacket.java | 2 +- .../packets/client/OpenBookPacket.java | 2 +- .../PlayerUpdateSkinOverlaysPacket.java | 2 +- .../network/packets/client/RolePacket.java | 2 +- .../packets/client/ScrollDataPacket.java | 37 ------ .../packets/client/ScrollDataPartPacket.java | 37 ------ .../packets/client/ScrollGroupPacket.java | 37 ------ .../packets/client/ScrollGroupPartPacket.java | 37 ------ .../packets/client/ScrollListPacket.java | 37 ------ .../ClonerGUIPacket.java} | 6 +- .../GUIClonerPacket.java} | 16 ++- .../packets/client/gui/GuiRedstonePacket.java | 2 +- .../packets/client/gui/GuiWaypointPacket.java | 2 +- .../packets/client/gui/IsGuiOpenPacket.java | 2 +- .../{ => sound}/ContinueSoundsPacket.java | 2 +- .../client/{ => sound}/PauseSoundsPacket.java | 2 +- .../client/{ => sound}/PlayMusicPacket.java | 2 +- .../client/{ => sound}/PlaySoundPacket.java | 2 +- .../{ => sound}/PlaySoundToNoIdPacket.java | 2 +- .../client/{ => sound}/PlaySoundToPacket.java | 2 +- .../packets/large/LargeScrollDataPacket.java | 49 ++++++++ .../packets/large/LargeScrollGroupPacket.java | 49 ++++++++ .../packets/large/LargeScrollListPacket.java | 49 ++++++++ src/main/java/kamkeel/util/ByteBufUtils.java | 56 ++++++++++ 31 files changed, 407 insertions(+), 225 deletions(-) create mode 100644 src/main/java/kamkeel/network/KamUtilServer.java create mode 100644 src/main/java/kamkeel/network/LargeAbstractPacket.java rename src/main/java/kamkeel/network/packets/client/{ConfigPacket.java => ConfigCommandPacket.java} (91%) delete mode 100644 src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java delete mode 100644 src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java delete mode 100644 src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java delete mode 100644 src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java delete mode 100644 src/main/java/kamkeel/network/packets/client/ScrollListPacket.java rename src/main/java/kamkeel/network/packets/client/{ClonerPacket.java => gui/ClonerGUIPacket.java} (87%) rename src/main/java/kamkeel/network/packets/client/{ClonePacket.java => gui/GUIClonerPacket.java} (69%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/ContinueSoundsPacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/PauseSoundsPacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/PlayMusicPacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/PlaySoundPacket.java (96%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/PlaySoundToNoIdPacket.java (96%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/PlaySoundToPacket.java (96%) create mode 100644 src/main/java/kamkeel/network/packets/large/LargeScrollDataPacket.java create mode 100644 src/main/java/kamkeel/network/packets/large/LargeScrollGroupPacket.java create mode 100644 src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java diff --git a/src/main/java/kamkeel/network/KamUtilServer.java b/src/main/java/kamkeel/network/KamUtilServer.java new file mode 100644 index 000000000..14710ac7c --- /dev/null +++ b/src/main/java/kamkeel/network/KamUtilServer.java @@ -0,0 +1,20 @@ +package kamkeel.network; + +import kamkeel.network.packets.large.LargeScrollGroupPacket; +import kamkeel.network.packets.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/network/LargeAbstractPacket.java b/src/main/java/kamkeel/network/LargeAbstractPacket.java new file mode 100644 index 000000000..067e89945 --- /dev/null +++ b/src/main/java/kamkeel/network/LargeAbstractPacket.java @@ -0,0 +1,59 @@ +// src/main/java/kamkeel/network/LargeAbstractPacket.java +package kamkeel.network; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import net.minecraft.entity.player.EntityPlayer; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +public abstract class LargeAbstractPacket extends AbstractPacket { + private static final int CHUNK_SIZE = 30000; + private static final Map packetChunks = new HashMap<>(); + private static final Map receivedChunks = new HashMap<>(); + + public abstract void handleData(ByteBuf data, EntityPlayer player) throws IOException; + + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBuf data = Unpooled.buffer(); + writeData(data); + int totalSize = data.readableBytes(); + int packetId = this.hashCode(); // Unique ID for this packet + int totalChunks = (int) Math.ceil((double) totalSize / CHUNK_SIZE); + + for (int i = 0; i < totalSize; i += CHUNK_SIZE) { + int chunkSize = Math.min(CHUNK_SIZE, totalSize - i); + ByteBuf chunk = data.readBytes(chunkSize); + out.writeInt(packetId); + out.writeInt(totalSize); + out.writeInt(i); + out.writeInt(totalChunks); + out.writeBytes(chunk); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + int packetId = in.readInt(); + int totalSize = in.readInt(); + int offset = in.readInt(); + int totalChunks = in.readInt(); + ByteBuf chunk = in.readBytes(in.readableBytes()); + + ByteBuf data = packetChunks.computeIfAbsent(packetId, k -> Unpooled.buffer(totalSize)); + data.setBytes(offset, chunk); + + int receivedChunkCount = receivedChunks.compute(packetId, (k, v) -> (v == null) ? 1 : v + 1); + + if (receivedChunkCount == totalChunks) { + packetChunks.remove(packetId); + receivedChunks.remove(packetId); + handleData(data, player); + } + } + + public abstract void writeData(ByteBuf out) throws IOException; +} diff --git a/src/main/java/kamkeel/network/PacketHandler.java b/src/main/java/kamkeel/network/PacketHandler.java index 8e15f8761..5864fa6a5 100644 --- a/src/main/java/kamkeel/network/PacketHandler.java +++ b/src/main/java/kamkeel/network/PacketHandler.java @@ -5,16 +5,16 @@ import cpw.mods.fml.common.network.FMLEventChannel; import cpw.mods.fml.common.network.FMLNetworkEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.internal.FMLProxyPacket; -import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; import kamkeel.network.enums.EnumPacketType; -import kamkeel.util.ByteBufUtils; -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 java.io.IOException; import java.util.*; public final class PacketHandler { @@ -34,16 +34,8 @@ public final class PacketHandler { packetChannels.add(INFO_PACKET); packetChannels.add(DATA_PACKET); packetChannels.add(CLIENT_PACKET); + packetChannels.add(LARGE_PACKET); this.registerChannels(); - - // Register Info Packets - - // Register Data Packets - - // Register Client Packets - - // Register Packets - // map.put(PingPacket.packetName, new PingPacket()); } public void registerChannels() { @@ -73,4 +65,93 @@ public final class PacketHandler { } return packetChannel; } + + public FMLEventChannel getEventChannel(AbstractPacket abstractPacket){ + return channels.get(getPacketChannel(abstractPacket.getChannel().getChannelType())); + } + + @SubscribeEvent + public void onServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) { + try { + handlePacket(event.packet, ((NetHandlerPlayServer) event.handler).playerEntity); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @SubscribeEvent + public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) { + try { + handlePacket(event.packet, CustomNpcs.proxy.getPlayer()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void handlePacket(FMLProxyPacket packet, EntityPlayer player) { + ByteBuf buf = packet.payload(); + try { + int channelTypeOrdinal = buf.readInt(); + int packetTypeOrdinal = buf.readInt(); + + EnumPacketType channelType = EnumPacketType.values()[channelTypeOrdinal]; + PacketChannel packetChannel = getPacketChannel(channelType); + + AbstractPacket abstractPacket = packetChannel.packets.get(packetTypeOrdinal); + if (abstractPacket != null) { + try { + abstractPacket.receiveData(buf, player); + } catch (IOException e) { + e.printStackTrace(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendToPlayer(AbstractPacket packet, EntityPlayerMP player) { + try { + FMLProxyPacket proxyPacket = packet.generatePacket(); + getEventChannel(packet).sendTo(proxyPacket, player); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendToServer(AbstractPacket packet) { + try { + FMLProxyPacket proxyPacket = packet.generatePacket(); + getEventChannel(packet).sendToServer(proxyPacket); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendToAll(AbstractPacket packet) { + try { + FMLProxyPacket proxyPacket = packet.generatePacket(); + getEventChannel(packet).sendToAll(proxyPacket); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendToAllAround(AbstractPacket packet, NetworkRegistry.TargetPoint point) { + try { + FMLProxyPacket proxyPacket = packet.generatePacket(); + getEventChannel(packet).sendToAllAround(proxyPacket, point); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendToDimension(AbstractPacket packet, int dimensionId) { + try { + FMLProxyPacket proxyPacket = packet.generatePacket(); + getEventChannel(packet).sendToDimension(proxyPacket, dimensionId); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/kamkeel/network/enums/EnumClientPacket.java b/src/main/java/kamkeel/network/enums/EnumClientPacket.java index 4dd58bfcf..6ae61ad6e 100644 --- a/src/main/java/kamkeel/network/enums/EnumClientPacket.java +++ b/src/main/java/kamkeel/network/enums/EnumClientPacket.java @@ -20,9 +20,7 @@ public enum EnumClientPacket { DELETE_NPC, SCROLL_LIST, SCROLL_DATA, - SCROLL_DATA_PART, SCROLL_GROUP, - SCROLL_GROUP_PART, SCROLL_SELECTED, GUI_REDSTONE, GUI_WAYPOINT, diff --git a/src/main/java/kamkeel/network/packets/client/ConfigPacket.java b/src/main/java/kamkeel/network/packets/client/ConfigCommandPacket.java similarity index 91% rename from src/main/java/kamkeel/network/packets/client/ConfigPacket.java rename to src/main/java/kamkeel/network/packets/client/ConfigCommandPacket.java index d2b7f075c..09f1c91dd 100644 --- a/src/main/java/kamkeel/network/packets/client/ConfigPacket.java +++ b/src/main/java/kamkeel/network/packets/client/ConfigCommandPacket.java @@ -14,10 +14,10 @@ import net.minecraft.util.ChatComponentTranslation; import java.io.IOException; -public final class ConfigPacket extends AbstractPacket { - public static final String packetName = "Client|Config"; +public final class ConfigCommandPacket extends AbstractPacket { + public static final String packetName = "Client|ConfigCommand"; - public ConfigPacket() {} + public ConfigCommandPacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java b/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java index e0c11af5b..0a4432f79 100644 --- a/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java +++ b/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java @@ -6,7 +6,7 @@ import kamkeel.network.PacketChannel; import kamkeel.network.PacketHandler; import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java b/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java index 19dfe7a1f..061ccf419 100644 --- a/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java +++ b/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java @@ -6,7 +6,7 @@ import kamkeel.network.PacketChannel; import kamkeel.network.PacketHandler; import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java b/src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java index 2c4813adf..7eb8e46fe 100644 --- a/src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java +++ b/src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java @@ -6,7 +6,7 @@ import kamkeel.network.PacketChannel; import kamkeel.network.PacketHandler; import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java b/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java index 7e1c613f4..3788c9814 100644 --- a/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java +++ b/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java @@ -10,7 +10,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; import noppes.npcs.client.gui.player.GuiBook; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java index 8bb3f6e11..ee4a9a9c7 100644 --- a/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java +++ b/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java @@ -9,7 +9,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/RolePacket.java b/src/main/java/kamkeel/network/packets/client/RolePacket.java index 431cd25c8..41f8ae187 100644 --- a/src/main/java/kamkeel/network/packets/client/RolePacket.java +++ b/src/main/java/kamkeel/network/packets/client/RolePacket.java @@ -10,7 +10,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java deleted file mode 100644 index 412c86daf..000000000 --- a/src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java +++ /dev/null @@ -1,37 +0,0 @@ -package kamkeel.network.packets.client; - -import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; - -import java.io.IOException; - -public final class ScrollDataPacket extends AbstractPacket { - public static final String packetName = "Client|ScrollData"; - - public ScrollDataPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SCROLL_DATA; - } - - @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 { - NoppesUtil.setScrollData(in); - } -} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java deleted file mode 100644 index 29c3d611a..000000000 --- a/src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java +++ /dev/null @@ -1,37 +0,0 @@ -package kamkeel.network.packets.client; - -import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; - -import java.io.IOException; - -public final class ScrollDataPartPacket extends AbstractPacket { - public static final String packetName = "Client|ScrollDataPart"; - - public ScrollDataPartPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SCROLL_DATA_PART; - } - - @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 { - NoppesUtil.addScrollData(in); - } -} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java deleted file mode 100644 index 60c770a3e..000000000 --- a/src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java +++ /dev/null @@ -1,37 +0,0 @@ -package kamkeel.network.packets.client; - -import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; - -import java.io.IOException; - -public final class ScrollGroupPacket extends AbstractPacket { - public static final String packetName = "Client|ScrollGroup"; - - public ScrollGroupPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SCROLL_GROUP; - } - - @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 { - NoppesUtil.setScrollGroup(in); - } -} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java deleted file mode 100644 index 16bcabd76..000000000 --- a/src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java +++ /dev/null @@ -1,37 +0,0 @@ -package kamkeel.network.packets.client; - -import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; - -import java.io.IOException; - -public final class ScrollGroupPartPacket extends AbstractPacket { - public static final String packetName = "Client|ScrollGroupPart"; - - public ScrollGroupPartPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SCROLL_GROUP_PART; - } - - @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 { - NoppesUtil.addScrollGroup(in); - } -} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollListPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollListPacket.java deleted file mode 100644 index 531899ac4..000000000 --- a/src/main/java/kamkeel/network/packets/client/ScrollListPacket.java +++ /dev/null @@ -1,37 +0,0 @@ -package kamkeel.network.packets.client; - -import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.client.NoppesUtil; - -import java.io.IOException; - -public final class ScrollListPacket extends AbstractPacket { - public static final String packetName = "Client|ScrollList"; - - public ScrollListPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SCROLL_LIST; - } - - @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 { - NoppesUtil.setScrollList(in); - } -} diff --git a/src/main/java/kamkeel/network/packets/client/ClonerPacket.java b/src/main/java/kamkeel/network/packets/client/gui/ClonerGUIPacket.java similarity index 87% rename from src/main/java/kamkeel/network/packets/client/ClonerPacket.java rename to src/main/java/kamkeel/network/packets/client/gui/ClonerGUIPacket.java index f4ae249fb..4d18cc63a 100644 --- a/src/main/java/kamkeel/network/packets/client/ClonerPacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/ClonerGUIPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.gui; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; @@ -11,10 +11,10 @@ import noppes.npcs.constants.EnumGuiType; import java.io.IOException; -public final class ClonerPacket extends AbstractPacket { +public final class ClonerGUIPacket extends AbstractPacket { public static final String packetName = "Client|Cloner"; - public ClonerPacket() {} + public ClonerGUIPacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/network/packets/client/ClonePacket.java b/src/main/java/kamkeel/network/packets/client/gui/GUIClonerPacket.java similarity index 69% rename from src/main/java/kamkeel/network/packets/client/ClonePacket.java rename to src/main/java/kamkeel/network/packets/client/gui/GUIClonerPacket.java index 1719d2a20..e69b15463 100644 --- a/src/main/java/kamkeel/network/packets/client/ClonePacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GUIClonerPacket.java @@ -1,5 +1,6 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.gui; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; import kamkeel.network.PacketChannel; @@ -7,16 +8,19 @@ import kamkeel.network.PacketHandler; import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; -import noppes.npcs.client.gui.player.GuiNpcMobSpawnerAdd; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; +import noppes.npcs.client.gui.GuiNpcMobSpawnerAdd; import java.io.IOException; -public final class ClonePacket extends AbstractPacket { +public final class GUIClonerPacket extends AbstractPacket { public static final String packetName = "Client|Clone"; - public ClonePacket() {} + public GUIClonerPacket() {} + + public GUIClonerPacket(boolean ok) {} @Override public Enum getType() { @@ -35,6 +39,8 @@ public final class ClonePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; NBTTagCompound nbt = Server.readNBT(in); NoppesUtil.openGUI(player, new GuiNpcMobSpawnerAdd(nbt)); } diff --git a/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java b/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java index 3acf4e559..d12bbfd60 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java @@ -8,7 +8,7 @@ import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java b/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java index 91a4ad0d4..5905b517e 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java @@ -8,7 +8,7 @@ import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java b/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java index 54f0c905c..20a04f1ca 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java @@ -7,7 +7,7 @@ import kamkeel.network.PacketHandler; import kamkeel.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/ContinueSoundsPacket.java b/src/main/java/kamkeel/network/packets/client/sound/ContinueSoundsPacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/ContinueSoundsPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/ContinueSoundsPacket.java index 16dd9319c..f6de38442 100644 --- a/src/main/java/kamkeel/network/packets/client/ContinueSoundsPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/ContinueSoundsPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/PauseSoundsPacket.java b/src/main/java/kamkeel/network/packets/client/sound/PauseSoundsPacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/PauseSoundsPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/PauseSoundsPacket.java index 8693a67f2..297e9e6b6 100644 --- a/src/main/java/kamkeel/network/packets/client/PauseSoundsPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/PauseSoundsPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/PlayMusicPacket.java b/src/main/java/kamkeel/network/packets/client/sound/PlayMusicPacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/PlayMusicPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/PlayMusicPacket.java index c12770bc0..e0c8fe9b5 100644 --- a/src/main/java/kamkeel/network/packets/client/PlayMusicPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/PlayMusicPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/PlaySoundPacket.java b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/PlaySoundPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/PlaySoundPacket.java index 7f2996508..f0ed27cdc 100644 --- a/src/main/java/kamkeel/network/packets/client/PlaySoundPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/PlaySoundToNoIdPacket.java b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToNoIdPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/PlaySoundToNoIdPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/PlaySoundToNoIdPacket.java index 00b052338..a2b53fee6 100644 --- a/src/main/java/kamkeel/network/packets/client/PlaySoundToNoIdPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToNoIdPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/PlaySoundToPacket.java b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/PlaySoundToPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/PlaySoundToPacket.java index da0baead2..5c651de5c 100644 --- a/src/main/java/kamkeel/network/packets/client/PlaySoundToPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/large/LargeScrollDataPacket.java b/src/main/java/kamkeel/network/packets/large/LargeScrollDataPacket.java new file mode 100644 index 000000000..acdd6757d --- /dev/null +++ b/src/main/java/kamkeel/network/packets/large/LargeScrollDataPacket.java @@ -0,0 +1,49 @@ +package kamkeel.network.packets.large; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.LargeAbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import kamkeel.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; + +import java.io.IOException; +import java.util.Map; + +public final class LargeScrollDataPacket extends LargeAbstractPacket { + public static final String packetName = "Large|ScrollData"; + + private Map data; + + public LargeScrollDataPacket() {} + + public LargeScrollDataPacket(Map data) { + this.data = data; + } + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_DATA; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.LARGE_PACKET; + } + + @Override + public void writeData(ByteBuf out) throws IOException { + out.writeInt(data.size()); + for (Map.Entry entry : data.entrySet()) { + ByteBufUtils.writeString(out, entry.getKey()); + out.writeInt(entry.getValue()); + } + } + + @Override + public void handleData(ByteBuf data, EntityPlayer player) throws IOException { + NoppesUtil.setScrollData(data); + } +} diff --git a/src/main/java/kamkeel/network/packets/large/LargeScrollGroupPacket.java b/src/main/java/kamkeel/network/packets/large/LargeScrollGroupPacket.java new file mode 100644 index 000000000..95384acfb --- /dev/null +++ b/src/main/java/kamkeel/network/packets/large/LargeScrollGroupPacket.java @@ -0,0 +1,49 @@ +package kamkeel.network.packets.large; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.LargeAbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import kamkeel.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; + +import java.io.IOException; +import java.util.Map; + +public final class LargeScrollGroupPacket extends LargeAbstractPacket { + public static final String packetName = "Large|ScrollGroup"; + + private Map data; + + public LargeScrollGroupPacket() {} + + public LargeScrollGroupPacket(Map data) { + this.data = data; + } + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_GROUP; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.LARGE_PACKET; + } + + @Override + public void writeData(ByteBuf out) throws IOException { + out.writeInt(data.size()); + for (Map.Entry entry : data.entrySet()) { + ByteBufUtils.writeString(out, entry.getKey()); + out.writeInt(entry.getValue()); + } + } + + @Override + public void handleData(ByteBuf data, EntityPlayer player) throws IOException { + NoppesUtil.setScrollGroup(data); + } +} diff --git a/src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java b/src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java new file mode 100644 index 000000000..3fc99cff0 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java @@ -0,0 +1,49 @@ +// src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java +package kamkeel.network.packets.large; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.LargeAbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import kamkeel.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; + +import java.io.IOException; +import java.util.List; + +public final class LargeScrollListPacket extends LargeAbstractPacket { + public static final String packetName = "Large|ScrollList"; + + private List data; + + public LargeScrollListPacket() {} + + public LargeScrollListPacket(List data) { + this.data = data; + } + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_LIST; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.LARGE_PACKET; + } + + @Override + public void writeData(ByteBuf out) throws IOException { + out.writeInt(data.size()); + for (String entry : data) { + ByteBufUtils.writeString(out, entry); + } + } + + @Override + public void handleData(ByteBuf data, EntityPlayer player) throws IOException { + NoppesUtil.setScrollList(data); + } +} diff --git a/src/main/java/kamkeel/util/ByteBufUtils.java b/src/main/java/kamkeel/util/ByteBufUtils.java index 35be971ff..c5e4dee1d 100644 --- a/src/main/java/kamkeel/util/ByteBufUtils.java +++ b/src/main/java/kamkeel/util/ByteBufUtils.java @@ -16,6 +16,62 @@ 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()); + for(Object ob : obs){ + if(ob == null) + continue; + if(ob instanceof Map){ + Map map = (Map) ob; + + buffer.writeInt(map.size()); + for(String key : map.keySet()){ + int value = map.get(key); + buffer.writeInt(value); + writeString(buffer, key); + } + } + else if(ob instanceof MerchantRecipeList) + ((MerchantRecipeList)ob).func_151391_a(new PacketBuffer(buffer)); + else if(ob instanceof List){ + List list = (List) ob; + buffer.writeInt(list.size()); + for(String s : list) + writeString(buffer, s); + } + else if(ob instanceof Enum) + buffer.writeInt(((Enum) ob).ordinal()); + else if(ob instanceof Integer) + buffer.writeInt((Integer) ob); + else if(ob instanceof Boolean) + buffer.writeBoolean((Boolean) ob); + else if(ob instanceof String) + writeString(buffer, (String) ob); + else if(ob instanceof Float) + buffer.writeFloat((Float) ob); + else if(ob instanceof Long) + buffer.writeLong((Long) ob); + else if(ob instanceof Double) + buffer.writeDouble((Double) ob); + else if (ob instanceof byte[]) { + // Write byte array length followed by bytes + byte[] byteArray = (byte[]) ob; + buffer.writeShort((short) byteArray.length); + buffer.writeBytes(byteArray); + } + 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; + } + public static void writeIntArray(ByteBuf buffer, int[] arr) { buffer.writeInt(arr.length); for (int i : arr) { From 476efb031717dfcc5980cd2a0bd431a4978e1f8e Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 28 Jan 2025 18:19:58 -0500 Subject: [PATCH 023/157] Register Large Packets --- src/main/java/kamkeel/network/PacketChannel.java | 4 ++-- src/main/java/kamkeel/network/PacketHandler.java | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/kamkeel/network/PacketChannel.java b/src/main/java/kamkeel/network/PacketChannel.java index 19f677c72..05f656294 100644 --- a/src/main/java/kamkeel/network/PacketChannel.java +++ b/src/main/java/kamkeel/network/PacketChannel.java @@ -33,7 +33,7 @@ public class PacketChannel { this.channelType = channelType; } - public void registerPacket(Enum ord, AbstractPacket packet) { - this.packets.put(ord.ordinal(), packet); + public void registerPacket(AbstractPacket packet) { + this.packets.put(packet.getType().ordinal(), packet); } } diff --git a/src/main/java/kamkeel/network/PacketHandler.java b/src/main/java/kamkeel/network/PacketHandler.java index 5864fa6a5..c4c718e77 100644 --- a/src/main/java/kamkeel/network/PacketHandler.java +++ b/src/main/java/kamkeel/network/PacketHandler.java @@ -9,6 +9,9 @@ import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; import kamkeel.network.PacketChannel; import kamkeel.network.enums.EnumPacketType; +import kamkeel.network.packets.large.LargeScrollDataPacket; +import kamkeel.network.packets.large.LargeScrollGroupPacket; +import kamkeel.network.packets.large.LargeScrollListPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.NetHandlerPlayServer; @@ -36,6 +39,11 @@ public final class PacketHandler { packetChannels.add(CLIENT_PACKET); packetChannels.add(LARGE_PACKET); this.registerChannels(); + + // Large Packets + LARGE_PACKET.registerPacket(new LargeScrollGroupPacket()); + LARGE_PACKET.registerPacket(new LargeScrollDataPacket()); + LARGE_PACKET.registerPacket(new LargeScrollListPacket()); } public void registerChannels() { From 19c31b985d11f9a9f7167a6dfd00b875d0f17de9 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 28 Jan 2025 18:25:30 -0500 Subject: [PATCH 024/157] Large Abstract Packet By UUID --- .../kamkeel/network/LargeAbstractPacket.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/main/java/kamkeel/network/LargeAbstractPacket.java b/src/main/java/kamkeel/network/LargeAbstractPacket.java index 067e89945..bd748225c 100644 --- a/src/main/java/kamkeel/network/LargeAbstractPacket.java +++ b/src/main/java/kamkeel/network/LargeAbstractPacket.java @@ -1,33 +1,33 @@ -// src/main/java/kamkeel/network/LargeAbstractPacket.java package kamkeel.network; - import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; +import kamkeel.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; import java.util.HashMap; import java.util.Map; +import java.util.UUID; public abstract class LargeAbstractPacket extends AbstractPacket { - private static final int CHUNK_SIZE = 30000; - private static final Map packetChunks = new HashMap<>(); - private static final Map receivedChunks = new HashMap<>(); - - public abstract void handleData(ByteBuf data, EntityPlayer player) throws IOException; + private static final int CHUNK_SIZE = 10000; + private static final Map packetChunks = new HashMap<>(); + private static final Map receivedChunks = new HashMap<>(); @Override public void sendData(ByteBuf out) throws IOException { ByteBuf data = Unpooled.buffer(); writeData(data); int totalSize = data.readableBytes(); - int packetId = this.hashCode(); // Unique ID for this packet + UUID packetId = UUID.randomUUID(); // Unique ID for this packet int totalChunks = (int) Math.ceil((double) totalSize / CHUNK_SIZE); for (int i = 0; i < totalSize; i += CHUNK_SIZE) { int chunkSize = Math.min(CHUNK_SIZE, totalSize - i); ByteBuf chunk = data.readBytes(chunkSize); - out.writeInt(packetId); + out.writeLong(packetId.getMostSignificantBits()); + out.writeLong(packetId.getLeastSignificantBits()); out.writeInt(totalSize); out.writeInt(i); out.writeInt(totalChunks); @@ -37,7 +37,9 @@ public abstract class LargeAbstractPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - int packetId = in.readInt(); + long mostSigBits = in.readLong(); + long leastSigBits = in.readLong(); + UUID packetId = new UUID(mostSigBits, leastSigBits); int totalSize = in.readInt(); int offset = in.readInt(); int totalChunks = in.readInt(); @@ -56,4 +58,6 @@ public abstract class LargeAbstractPacket extends AbstractPacket { } public abstract void writeData(ByteBuf out) throws IOException; + + public abstract void handleData(ByteBuf data, EntityPlayer player) throws IOException; } From 5d41f5b939ea0c9f2c707601d87a90bd0ad0d552 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 29 Jan 2025 13:20:04 -0500 Subject: [PATCH 025/157] Rename Namespace to kamkeel.npcs --- .../kamkeel/network/enums/EnumDataPacket.java | 4 ---- .../kamkeel/{ => npcs}/addon/AddonManager.java | 6 +++--- .../java/kamkeel/{ => npcs}/addon/DBCAddon.java | 3 +-- .../java/kamkeel/{ => npcs}/addon/GeckoAddon.java | 4 ++-- .../{ => npcs}/addon/client/DBCClient.java | 7 +------ .../{ => npcs}/addon/client/GeckoAddonClient.java | 2 +- .../{ => npcs}/command/AnimationCommand.java | 2 +- .../kamkeel/{ => npcs}/command/CloneCommand.java | 15 +++++++-------- .../{ => npcs}/command/CommandCommand.java | 2 +- .../{ => npcs}/command/CommandKamkeel.java | 4 ++-- .../{ => npcs}/command/CommandKamkeelBase.java | 2 +- .../kamkeel/{ => npcs}/command/ConfigCommand.java | 2 +- .../{ => npcs}/command/DialogCategoryCommand.java | 2 +- .../kamkeel/{ => npcs}/command/DialogCommand.java | 2 +- .../{ => npcs}/command/FactionCommand.java | 5 ++--- .../kamkeel/{ => npcs}/command/HelpCommand.java | 2 +- .../kamkeel/{ => npcs}/command/NpcCommand.java | 2 +- .../{ => npcs}/command/OverlayCommand.java | 2 +- .../{ => npcs}/command/QuestCategoryCommand.java | 2 +- .../kamkeel/{ => npcs}/command/QuestCommand.java | 6 ++---- .../kamkeel/{ => npcs}/command/ScriptCommand.java | 2 +- .../kamkeel/{ => npcs}/command/SlayCommand.java | 5 ++--- .../command/profile/CommandHelpProfile.java | 2 +- .../command/profile/CommandProfile.java | 4 ++-- .../command/profile/CommandProfileBase.java | 2 +- .../command/profile/CommandProfileChange.java | 6 +++--- .../{ => npcs}/controllers/ProfileController.java | 8 ++++---- .../{ => npcs}/controllers/data/CNPCData.java | 2 +- .../{ => npcs}/controllers/data/IProfileData.java | 2 +- .../{ => npcs}/controllers/data/Profile.java | 2 +- .../kamkeel/{ => npcs}/controllers/data/Slot.java | 4 +--- .../kamkeel/{ => npcs}/developer/Developer.java | 2 +- .../{ => npcs}/network/AbstractPacket.java | 5 +---- .../kamkeel/{ => npcs}/network/KamUtilServer.java | 6 +++--- .../{ => npcs}/network/LargeAbstractPacket.java | 4 +--- .../kamkeel/{ => npcs}/network/PacketChannel.java | 4 ++-- .../kamkeel/{ => npcs}/network/PacketHandler.java | 12 +++++------- .../network/enums/EnumClientPacket.java | 2 +- .../npcs/network/enums/EnumDataPacket.java | 4 ++++ .../{ => npcs}/network/enums/EnumInfoPacket.java | 2 +- .../{ => npcs}/network/enums/EnumPacketType.java | 2 +- .../{ => npcs}/network/packets/LoginPacket.java | 12 ++++++------ .../network/packets/client/ChatBubblePacket.java | 10 +++++----- .../network/packets/client/ChatPacket.java | 10 +++++----- .../packets/client/ConfigCommandPacket.java | 10 +++++----- .../network/packets/client/DBCFormPacket.java | 10 +++++----- .../network/packets/client/DeleteNpcPacket.java | 10 +++++----- .../network/packets/client/DialogDummyPacket.java | 10 +++++----- .../network/packets/client/DialogPacket.java | 10 +++++----- .../packets/client/DisableMouseInputPacket.java | 10 +++++----- .../network/packets/client/EditNpcPacket.java | 10 +++++----- .../network/packets/client/LargeNBTEndPacket.java | 10 +++++----- .../packets/client/LargeNBTPartPacket.java | 10 +++++----- .../network/packets/client/MarkDataPacket.java | 10 +++++----- .../network/packets/client/MessagePacket.java | 11 +++++------ .../network/packets/client/OpenBookPacket.java | 10 +++++----- .../client/OverlayQuestTrackingPacket.java | 10 +++++----- .../network/packets/client/ParticlePacket.java | 10 +++++----- .../network/packets/client/PartyDataPacket.java | 10 +++++----- .../client/PlayerUpdateSkinOverlaysPacket.java | 10 +++++----- .../packets/client/QuestCompletionPacket.java | 10 +++++----- .../network/packets/client/RolePacket.java | 10 +++++----- .../packets/client/ScriptOverlayClosePacket.java | 10 +++++----- .../packets/client/ScriptOverlayDataPacket.java | 10 +++++----- .../packets/client/ScriptedParticlePacket.java | 10 +++++----- .../packets/client/ScrollSelectedPacket.java | 10 +++++----- .../packets/client/StopSoundForPacket.java | 10 +++++----- .../network/packets/client/StopSoundsPacket.java | 10 +++++----- .../packets/client/SwingPlayerArmPacket.java | 10 +++++----- .../network/packets/client/TeleporterPacket.java | 10 +++++----- .../packets/client/UpdateAnimationsPacket.java | 10 +++++----- .../network/packets/client/UpdateNpcPacket.java | 10 +++++----- .../packets/client/VillagerListPacket.java | 11 +++++------ .../packets/client/gui/ClonerGUIPacket.java | 10 +++++----- .../packets/client/gui/GUIClonerPacket.java | 10 +++++----- .../packets/client/gui/GuiClosePacket.java | 10 +++++----- .../network/packets/client/gui/GuiDataPacket.java | 10 +++++----- .../packets/client/gui/GuiErrorPacket.java | 10 +++++----- .../network/packets/client/gui/GuiPacket.java | 10 +++++----- .../packets/client/gui/GuiRedstonePacket.java | 10 +++++----- .../packets/client/gui/GuiWaypointPacket.java | 10 +++++----- .../packets/client/gui/IsGuiOpenPacket.java | 10 +++++----- .../client/sound/ContinueSoundsPacket.java | 10 +++++----- .../packets/client/sound/PauseSoundsPacket.java | 10 +++++----- .../packets/client/sound/PlayMusicPacket.java | 10 +++++----- .../packets/client/sound/PlaySoundPacket.java | 10 +++++----- .../client/sound/PlaySoundToNoIdPacket.java | 10 +++++----- .../packets/client/sound/PlaySoundToPacket.java | 10 +++++----- .../packets/client/sync/SyncAddPacket.java | 10 +++++----- .../packets/client/sync/SyncConfigPacket.java | 10 +++++----- .../packets/client/sync/SyncEndPacket.java | 10 +++++----- .../packets/client/sync/SyncPlayerPacket.java | 10 +++++----- .../packets/client/sync/SyncRecipesAddPacket.java | 10 +++++----- .../sync/SyncRecipesCarpentryBenchPacket.java | 10 +++++----- .../client/sync/SyncRecipesWorkbenchPacket.java | 10 +++++----- .../packets/client/sync/SyncRemovePacket.java | 10 +++++----- .../packets/client/sync/SyncUpdatePacket.java | 10 +++++----- .../packets/client/sync/SyncWeaponPacket.java | 10 +++++----- .../packets/large/LargeScrollDataPacket.java | 12 ++++++------ .../packets/large/LargeScrollGroupPacket.java | 12 ++++++------ .../packets/large/LargeScrollListPacket.java | 12 ++++++------ .../kamkeel/{ => npcs}/util/ByteBufUtils.java | 2 +- .../kamkeel/{ => npcs}/util/TextSplitter.java | 4 ++-- src/main/java/noppes/npcs/CustomNpcs.java | 12 ++++++------ .../java/noppes/npcs/CustomNpcsPermissions.java | 2 +- .../java/noppes/npcs/PacketHandlerPlayer.java | 1 - .../java/noppes/npcs/PacketHandlerServer.java | 1 - .../noppes/npcs/ScriptPlayerEventHandler.java | 3 --- src/main/java/noppes/npcs/ServerTickHandler.java | 2 +- src/main/java/noppes/npcs/ai/CombatHandler.java | 2 +- .../java/noppes/npcs/ai/EntityAIAttackTarget.java | 2 +- .../npcs/ai/selector/NPCAttackSelector.java | 2 +- src/main/java/noppes/npcs/client/ClientProxy.java | 3 +-- .../noppes/npcs/client/ClientTickHandler.java | 5 +---- src/main/java/noppes/npcs/client/EntityUtil.java | 4 ++-- .../npcs/client/gui/mainmenu/GuiNpcDisplay.java | 2 +- .../npcs/client/gui/mainmenu/GuiNpcStats.java | 3 +-- .../npcs/client/gui/model/GuiCreationScreen.java | 2 +- .../gui/player/inventory/GuiCNPCInventory.java | 2 +- .../npcs/client/gui/util/GuiCustomScroll.java | 2 +- .../noppes/npcs/client/gui/util/GuiNpcButton.java | 2 +- .../npcs/client/renderer/RenderNPCInterface.java | 2 +- .../java/noppes/npcs/config/ConfigScript.java | 4 ++-- .../noppes/npcs/controllers/SyncController.java | 2 +- .../noppes/npcs/controllers/data/PlayerData.java | 2 +- .../noppes/npcs/entity/EntityNPCInterface.java | 4 ++-- .../java/noppes/npcs/entity/EntityProjectile.java | 3 +-- .../client/tabs/InventoryTabCustomNpc.java | 3 +-- 128 files changed, 406 insertions(+), 440 deletions(-) delete mode 100644 src/main/java/kamkeel/network/enums/EnumDataPacket.java rename src/main/java/kamkeel/{ => npcs}/addon/AddonManager.java (78%) rename src/main/java/kamkeel/{ => npcs}/addon/DBCAddon.java (96%) rename src/main/java/kamkeel/{ => npcs}/addon/GeckoAddon.java (94%) rename src/main/java/kamkeel/{ => npcs}/addon/client/DBCClient.java (84%) rename src/main/java/kamkeel/{ => npcs}/addon/client/GeckoAddonClient.java (97%) rename src/main/java/kamkeel/{ => npcs}/command/AnimationCommand.java (99%) rename src/main/java/kamkeel/{ => npcs}/command/CloneCommand.java (95%) rename src/main/java/kamkeel/{ => npcs}/command/CommandCommand.java (98%) rename src/main/java/kamkeel/{ => npcs}/command/CommandKamkeel.java (98%) rename src/main/java/kamkeel/{ => npcs}/command/CommandKamkeelBase.java (99%) rename src/main/java/kamkeel/{ => npcs}/command/ConfigCommand.java (99%) rename src/main/java/kamkeel/{ => npcs}/command/DialogCategoryCommand.java (99%) rename src/main/java/kamkeel/{ => npcs}/command/DialogCommand.java (99%) rename src/main/java/kamkeel/{ => npcs}/command/FactionCommand.java (96%) rename src/main/java/kamkeel/{ => npcs}/command/HelpCommand.java (98%) rename src/main/java/kamkeel/{ => npcs}/command/NpcCommand.java (99%) rename src/main/java/kamkeel/{ => npcs}/command/OverlayCommand.java (99%) rename src/main/java/kamkeel/{ => npcs}/command/QuestCategoryCommand.java (99%) rename src/main/java/kamkeel/{ => npcs}/command/QuestCommand.java (98%) rename src/main/java/kamkeel/{ => npcs}/command/ScriptCommand.java (97%) rename src/main/java/kamkeel/{ => npcs}/command/SlayCommand.java (95%) rename src/main/java/kamkeel/{ => npcs}/command/profile/CommandHelpProfile.java (98%) rename src/main/java/kamkeel/{ => npcs}/command/profile/CommandProfile.java (95%) rename src/main/java/kamkeel/{ => npcs}/command/profile/CommandProfileBase.java (99%) rename src/main/java/kamkeel/{ => npcs}/command/profile/CommandProfileChange.java (92%) rename src/main/java/kamkeel/{ => npcs}/controllers/ProfileController.java (97%) rename src/main/java/kamkeel/{ => npcs}/controllers/data/CNPCData.java (96%) rename src/main/java/kamkeel/{ => npcs}/controllers/data/IProfileData.java (94%) rename src/main/java/kamkeel/{ => npcs}/controllers/data/Profile.java (97%) rename src/main/java/kamkeel/{ => npcs}/controllers/data/Slot.java (92%) rename src/main/java/kamkeel/{ => npcs}/developer/Developer.java (97%) rename src/main/java/kamkeel/{ => npcs}/network/AbstractPacket.java (88%) rename src/main/java/kamkeel/{ => npcs}/network/KamUtilServer.java (77%) rename src/main/java/kamkeel/{ => npcs}/network/LargeAbstractPacket.java (95%) rename src/main/java/kamkeel/{ => npcs}/network/PacketChannel.java (91%) rename src/main/java/kamkeel/{ => npcs}/network/PacketHandler.java (94%) rename src/main/java/kamkeel/{ => npcs}/network/enums/EnumClientPacket.java (96%) create mode 100644 src/main/java/kamkeel/npcs/network/enums/EnumDataPacket.java rename src/main/java/kamkeel/{ => npcs}/network/enums/EnumInfoPacket.java (54%) rename src/main/java/kamkeel/{ => npcs}/network/enums/EnumPacketType.java (63%) rename src/main/java/kamkeel/{ => npcs}/network/packets/LoginPacket.java (77%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/ChatBubblePacket.java (88%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/ChatPacket.java (83%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/ConfigCommandPacket.java (89%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/DBCFormPacket.java (76%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/DeleteNpcPacket.java (81%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/DialogDummyPacket.java (81%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/DialogPacket.java (83%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/DisableMouseInputPacket.java (84%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/EditNpcPacket.java (82%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/LargeNBTEndPacket.java (78%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/LargeNBTPartPacket.java (78%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/MarkDataPacket.java (83%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/MessagePacket.java (86%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/OpenBookPacket.java (83%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/OverlayQuestTrackingPacket.java (84%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/ParticlePacket.java (76%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/PartyDataPacket.java (87%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/PlayerUpdateSkinOverlaysPacket.java (84%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/QuestCompletionPacket.java (78%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/RolePacket.java (85%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/ScriptOverlayClosePacket.java (79%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/ScriptOverlayDataPacket.java (83%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/ScriptedParticlePacket.java (77%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/ScrollSelectedPacket.java (82%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/StopSoundForPacket.java (78%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/StopSoundsPacket.java (77%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/SwingPlayerArmPacket.java (77%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/TeleporterPacket.java (78%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/UpdateAnimationsPacket.java (92%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/UpdateNpcPacket.java (83%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/VillagerListPacket.java (80%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/gui/ClonerGUIPacket.java (79%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/gui/GUIClonerPacket.java (82%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/gui/GuiClosePacket.java (84%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/gui/GuiDataPacket.java (86%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/gui/GuiErrorPacket.java (83%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/gui/GuiPacket.java (80%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/gui/GuiRedstonePacket.java (79%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/gui/GuiWaypointPacket.java (79%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/gui/IsGuiOpenPacket.java (79%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sound/ContinueSoundsPacket.java (77%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sound/PauseSoundsPacket.java (77%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sound/PlayMusicPacket.java (79%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sound/PlaySoundPacket.java (80%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sound/PlaySoundToNoIdPacket.java (82%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sound/PlaySoundToPacket.java (82%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sync/SyncAddPacket.java (80%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sync/SyncConfigPacket.java (79%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sync/SyncEndPacket.java (80%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sync/SyncPlayerPacket.java (77%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sync/SyncRecipesAddPacket.java (85%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java (79%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sync/SyncRecipesWorkbenchPacket.java (79%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sync/SyncRemovePacket.java (78%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sync/SyncUpdatePacket.java (80%) rename src/main/java/kamkeel/{ => npcs}/network/packets/client/sync/SyncWeaponPacket.java (84%) rename src/main/java/kamkeel/{ => npcs}/network/packets/large/LargeScrollDataPacket.java (80%) rename src/main/java/kamkeel/{ => npcs}/network/packets/large/LargeScrollGroupPacket.java (80%) rename src/main/java/kamkeel/{ => npcs}/network/packets/large/LargeScrollListPacket.java (80%) rename src/main/java/kamkeel/{ => npcs}/util/ByteBufUtils.java (99%) rename src/main/java/kamkeel/{ => npcs}/util/TextSplitter.java (97%) diff --git a/src/main/java/kamkeel/network/enums/EnumDataPacket.java b/src/main/java/kamkeel/network/enums/EnumDataPacket.java deleted file mode 100644 index 2481eb446..000000000 --- a/src/main/java/kamkeel/network/enums/EnumDataPacket.java +++ /dev/null @@ -1,4 +0,0 @@ -package kamkeel.network.enums; - -public enum EnumDataPacket { -} diff --git a/src/main/java/kamkeel/addon/AddonManager.java b/src/main/java/kamkeel/npcs/addon/AddonManager.java similarity index 78% rename from src/main/java/kamkeel/addon/AddonManager.java rename to src/main/java/kamkeel/npcs/addon/AddonManager.java index 52aabb0f6..24b58dc3e 100644 --- a/src/main/java/kamkeel/addon/AddonManager.java +++ b/src/main/java/kamkeel/npcs/addon/AddonManager.java @@ -1,7 +1,7 @@ -package kamkeel.addon; +package kamkeel.npcs.addon; -import kamkeel.addon.client.DBCClient; -import kamkeel.addon.client.GeckoAddonClient; +import kamkeel.npcs.addon.client.DBCClient; +import kamkeel.npcs.addon.client.GeckoAddonClient; public class AddonManager { public static AddonManager Instance; diff --git a/src/main/java/kamkeel/addon/DBCAddon.java b/src/main/java/kamkeel/npcs/addon/DBCAddon.java similarity index 96% rename from src/main/java/kamkeel/addon/DBCAddon.java rename to src/main/java/kamkeel/npcs/addon/DBCAddon.java index e8f446143..d109d2393 100644 --- a/src/main/java/kamkeel/addon/DBCAddon.java +++ b/src/main/java/kamkeel/npcs/addon/DBCAddon.java @@ -1,6 +1,5 @@ -package kamkeel.addon; +package kamkeel.npcs.addon; -import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/addon/GeckoAddon.java b/src/main/java/kamkeel/npcs/addon/GeckoAddon.java similarity index 94% rename from src/main/java/kamkeel/addon/GeckoAddon.java rename to src/main/java/kamkeel/npcs/addon/GeckoAddon.java index 97c7a50c2..ee0f72141 100644 --- a/src/main/java/kamkeel/addon/GeckoAddon.java +++ b/src/main/java/kamkeel/npcs/addon/GeckoAddon.java @@ -1,4 +1,4 @@ -package kamkeel.addon; +package kamkeel.npcs.addon; import net.minecraft.entity.EntityLivingBase; @@ -17,4 +17,4 @@ public class GeckoAddon { public void geckoCopyData(EntityLivingBase copied, EntityLivingBase entity){} -} \ No newline at end of file +} diff --git a/src/main/java/kamkeel/addon/client/DBCClient.java b/src/main/java/kamkeel/npcs/addon/client/DBCClient.java similarity index 84% rename from src/main/java/kamkeel/addon/client/DBCClient.java rename to src/main/java/kamkeel/npcs/addon/client/DBCClient.java index f148439d6..5fdc75d7e 100644 --- a/src/main/java/kamkeel/addon/client/DBCClient.java +++ b/src/main/java/kamkeel/npcs/addon/client/DBCClient.java @@ -1,15 +1,10 @@ -package kamkeel.addon.client; +package kamkeel.npcs.addon.client; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.model.ModelBase; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.client.gui.mainmenu.GuiNpcStats; -import noppes.npcs.client.gui.model.GuiCreationScreen; import noppes.npcs.client.gui.player.inventory.GuiCNPCInventory; import noppes.npcs.client.gui.util.GuiNPCInterface2; import noppes.npcs.client.gui.util.GuiNpcButton; -import noppes.npcs.client.model.ModelMPM; import noppes.npcs.entity.EntityNPCInterface; public class DBCClient { diff --git a/src/main/java/kamkeel/addon/client/GeckoAddonClient.java b/src/main/java/kamkeel/npcs/addon/client/GeckoAddonClient.java similarity index 97% rename from src/main/java/kamkeel/addon/client/GeckoAddonClient.java rename to src/main/java/kamkeel/npcs/addon/client/GeckoAddonClient.java index 088488314..f014b07ad 100644 --- a/src/main/java/kamkeel/addon/client/GeckoAddonClient.java +++ b/src/main/java/kamkeel/npcs/addon/client/GeckoAddonClient.java @@ -1,4 +1,4 @@ -package kamkeel.addon.client; +package kamkeel.npcs.addon.client; import net.minecraft.client.model.ModelBase; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/kamkeel/command/AnimationCommand.java b/src/main/java/kamkeel/npcs/command/AnimationCommand.java similarity index 99% rename from src/main/java/kamkeel/command/AnimationCommand.java rename to src/main/java/kamkeel/npcs/command/AnimationCommand.java index 8a6beec18..05e5e517f 100644 --- a/src/main/java/kamkeel/command/AnimationCommand.java +++ b/src/main/java/kamkeel/npcs/command/AnimationCommand.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; diff --git a/src/main/java/kamkeel/command/CloneCommand.java b/src/main/java/kamkeel/npcs/command/CloneCommand.java similarity index 95% rename from src/main/java/kamkeel/command/CloneCommand.java rename to src/main/java/kamkeel/npcs/command/CloneCommand.java index 174d1039a..fc6e26817 100644 --- a/src/main/java/kamkeel/command/CloneCommand.java +++ b/src/main/java/kamkeel/npcs/command/CloneCommand.java @@ -1,8 +1,7 @@ -package kamkeel.command; +package kamkeel.npcs.command; import foxz.utils.Utils; import net.minecraft.block.Block; -import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.Entity; @@ -180,9 +179,9 @@ public class CloneCommand extends CommandKamkeelBase { return; } try{ - posX = CommandBase.func_110666_a(sender, posX, par[0]); - posY = CommandBase.func_110665_a(sender, posY, par[1].trim(), 0, 0); - posZ = CommandBase.func_110666_a(sender, posZ, par[2]); + posX = func_110666_a(sender, posX, par[0]); + posY = func_110665_a(sender, posY, par[1].trim(), 0, 0); + posZ = func_110666_a(sender, posZ, par[2]); } catch(NumberFormatException ex){ sendError(sender, "Location should be in numbers"); return; @@ -272,9 +271,9 @@ public class CloneCommand extends CommandKamkeelBase { return; } try{ - posX = CommandBase.func_110666_a(sender, posX, par[0]); - posY = CommandBase.func_110665_a(sender, posY, par[1].trim(), 0, 0); - posZ = CommandBase.func_110666_a(sender, posZ, par[2]); + posX = func_110666_a(sender, posX, par[0]); + posY = func_110665_a(sender, posY, par[1].trim(), 0, 0); + posZ = func_110666_a(sender, posZ, par[2]); } catch(NumberFormatException ex){ sendError(sender, "Location should be in numbers"); return; diff --git a/src/main/java/kamkeel/command/CommandCommand.java b/src/main/java/kamkeel/npcs/command/CommandCommand.java similarity index 98% rename from src/main/java/kamkeel/command/CommandCommand.java rename to src/main/java/kamkeel/npcs/command/CommandCommand.java index 80a41ec28..facac35f1 100644 --- a/src/main/java/kamkeel/command/CommandCommand.java +++ b/src/main/java/kamkeel/npcs/command/CommandCommand.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; diff --git a/src/main/java/kamkeel/command/CommandKamkeel.java b/src/main/java/kamkeel/npcs/command/CommandKamkeel.java similarity index 98% rename from src/main/java/kamkeel/command/CommandKamkeel.java rename to src/main/java/kamkeel/npcs/command/CommandKamkeel.java index 86c192847..6c5bfd28d 100644 --- a/src/main/java/kamkeel/command/CommandKamkeel.java +++ b/src/main/java/kamkeel/npcs/command/CommandKamkeel.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; @@ -46,7 +46,7 @@ public class CommandKamkeel extends CommandBase{ @Override public String getCommandName() { - return "kamkeel"; + return "kamkeel/npcs"; } @Override diff --git a/src/main/java/kamkeel/command/CommandKamkeelBase.java b/src/main/java/kamkeel/npcs/command/CommandKamkeelBase.java similarity index 99% rename from src/main/java/kamkeel/command/CommandKamkeelBase.java rename to src/main/java/kamkeel/npcs/command/CommandKamkeelBase.java index 9c380f7c2..cf87c5d36 100644 --- a/src/main/java/kamkeel/command/CommandKamkeelBase.java +++ b/src/main/java/kamkeel/npcs/command/CommandKamkeelBase.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; diff --git a/src/main/java/kamkeel/command/ConfigCommand.java b/src/main/java/kamkeel/npcs/command/ConfigCommand.java similarity index 99% rename from src/main/java/kamkeel/command/ConfigCommand.java rename to src/main/java/kamkeel/npcs/command/ConfigCommand.java index 4be014417..89d22db44 100644 --- a/src/main/java/kamkeel/command/ConfigCommand.java +++ b/src/main/java/kamkeel/npcs/command/ConfigCommand.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import foxz.utils.Market; import net.minecraft.block.Block; diff --git a/src/main/java/kamkeel/command/DialogCategoryCommand.java b/src/main/java/kamkeel/npcs/command/DialogCategoryCommand.java similarity index 99% rename from src/main/java/kamkeel/command/DialogCategoryCommand.java rename to src/main/java/kamkeel/npcs/command/DialogCategoryCommand.java index 648920e06..d149a15b7 100644 --- a/src/main/java/kamkeel/command/DialogCategoryCommand.java +++ b/src/main/java/kamkeel/npcs/command/DialogCategoryCommand.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; diff --git a/src/main/java/kamkeel/command/DialogCommand.java b/src/main/java/kamkeel/npcs/command/DialogCommand.java similarity index 99% rename from src/main/java/kamkeel/command/DialogCommand.java rename to src/main/java/kamkeel/npcs/command/DialogCommand.java index ac9ecd543..4a4e3bc66 100644 --- a/src/main/java/kamkeel/command/DialogCommand.java +++ b/src/main/java/kamkeel/npcs/command/DialogCommand.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; diff --git a/src/main/java/kamkeel/command/FactionCommand.java b/src/main/java/kamkeel/npcs/command/FactionCommand.java similarity index 96% rename from src/main/java/kamkeel/command/FactionCommand.java rename to src/main/java/kamkeel/npcs/command/FactionCommand.java index c3874c325..f5de2f3b5 100644 --- a/src/main/java/kamkeel/command/FactionCommand.java +++ b/src/main/java/kamkeel/npcs/command/FactionCommand.java @@ -1,6 +1,5 @@ -package kamkeel.command; +package kamkeel.npcs.command; -import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import noppes.npcs.controllers.FactionController; @@ -153,7 +152,7 @@ public class FactionCommand extends CommandKamkeelBase { @Override public List addTabCompletionOptions(ICommandSender par1, String[] args) { if(args.length == 3){ - return CommandBase.getListOfStringsMatchingLastWord(args, new String[]{"add", "subtract", "set", "reset", "drop", "create"}); + return getListOfStringsMatchingLastWord(args, new String[]{"add", "subtract", "set", "reset", "drop", "create"}); } return null; } diff --git a/src/main/java/kamkeel/command/HelpCommand.java b/src/main/java/kamkeel/npcs/command/HelpCommand.java similarity index 98% rename from src/main/java/kamkeel/command/HelpCommand.java rename to src/main/java/kamkeel/npcs/command/HelpCommand.java index 67b7d092a..f5e0828da 100644 --- a/src/main/java/kamkeel/command/HelpCommand.java +++ b/src/main/java/kamkeel/npcs/command/HelpCommand.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; diff --git a/src/main/java/kamkeel/command/NpcCommand.java b/src/main/java/kamkeel/npcs/command/NpcCommand.java similarity index 99% rename from src/main/java/kamkeel/command/NpcCommand.java rename to src/main/java/kamkeel/npcs/command/NpcCommand.java index 0a19dda0d..18d3fb730 100644 --- a/src/main/java/kamkeel/command/NpcCommand.java +++ b/src/main/java/kamkeel/npcs/command/NpcCommand.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; diff --git a/src/main/java/kamkeel/command/OverlayCommand.java b/src/main/java/kamkeel/npcs/command/OverlayCommand.java similarity index 99% rename from src/main/java/kamkeel/command/OverlayCommand.java rename to src/main/java/kamkeel/npcs/command/OverlayCommand.java index 68c8f68c2..e740bc5e0 100644 --- a/src/main/java/kamkeel/command/OverlayCommand.java +++ b/src/main/java/kamkeel/npcs/command/OverlayCommand.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; diff --git a/src/main/java/kamkeel/command/QuestCategoryCommand.java b/src/main/java/kamkeel/npcs/command/QuestCategoryCommand.java similarity index 99% rename from src/main/java/kamkeel/command/QuestCategoryCommand.java rename to src/main/java/kamkeel/npcs/command/QuestCategoryCommand.java index 2e9852a31..b3bbaae6f 100644 --- a/src/main/java/kamkeel/command/QuestCategoryCommand.java +++ b/src/main/java/kamkeel/npcs/command/QuestCategoryCommand.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; diff --git a/src/main/java/kamkeel/command/QuestCommand.java b/src/main/java/kamkeel/npcs/command/QuestCommand.java similarity index 98% rename from src/main/java/kamkeel/command/QuestCommand.java rename to src/main/java/kamkeel/npcs/command/QuestCommand.java index 887b5e47b..cd89ab044 100644 --- a/src/main/java/kamkeel/command/QuestCommand.java +++ b/src/main/java/kamkeel/npcs/command/QuestCommand.java @@ -1,11 +1,9 @@ -package kamkeel.command; +package kamkeel.npcs.command; -import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.server.MinecraftServer; import noppes.npcs.Server; import noppes.npcs.api.handler.data.IQuestObjective; import noppes.npcs.constants.EnumPacketClient; @@ -192,7 +190,7 @@ public class QuestCommand extends CommandKamkeelBase { usage = " [objective] [value]" ) public void objective(ICommandSender sender, String[] args) throws CommandException { - EntityPlayer player = CommandBase.getPlayer(sender, args[0]); + EntityPlayer player = getPlayer(sender, args[0]); int questid; try { questid = Integer.parseInt(args[1]); diff --git a/src/main/java/kamkeel/command/ScriptCommand.java b/src/main/java/kamkeel/npcs/command/ScriptCommand.java similarity index 97% rename from src/main/java/kamkeel/command/ScriptCommand.java rename to src/main/java/kamkeel/npcs/command/ScriptCommand.java index 5edbfb904..bf62cc3fb 100644 --- a/src/main/java/kamkeel/command/ScriptCommand.java +++ b/src/main/java/kamkeel/npcs/command/ScriptCommand.java @@ -1,4 +1,4 @@ -package kamkeel.command; +package kamkeel.npcs.command; import net.minecraft.command.ICommandSender; import noppes.npcs.controllers.ScriptController; diff --git a/src/main/java/kamkeel/command/SlayCommand.java b/src/main/java/kamkeel/npcs/command/SlayCommand.java similarity index 95% rename from src/main/java/kamkeel/command/SlayCommand.java rename to src/main/java/kamkeel/npcs/command/SlayCommand.java index c4ebed36f..60af6d6cf 100644 --- a/src/main/java/kamkeel/command/SlayCommand.java +++ b/src/main/java/kamkeel/npcs/command/SlayCommand.java @@ -1,6 +1,5 @@ -package kamkeel.command; +package kamkeel.npcs.command; -import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.Entity; @@ -134,6 +133,6 @@ public class SlayCommand extends CommandKamkeelBase { @Override public List addTabCompletionOptions(ICommandSender sender, String[] args){ - return CommandBase.getListOfStringsMatchingLastWord(args, SlayMap.keySet().toArray(new String[SlayMap.size()])); + return getListOfStringsMatchingLastWord(args, SlayMap.keySet().toArray(new String[SlayMap.size()])); } } diff --git a/src/main/java/kamkeel/command/profile/CommandHelpProfile.java b/src/main/java/kamkeel/npcs/command/profile/CommandHelpProfile.java similarity index 98% rename from src/main/java/kamkeel/command/profile/CommandHelpProfile.java rename to src/main/java/kamkeel/npcs/command/profile/CommandHelpProfile.java index fe228dfa1..672e7886c 100644 --- a/src/main/java/kamkeel/command/profile/CommandHelpProfile.java +++ b/src/main/java/kamkeel/npcs/command/profile/CommandHelpProfile.java @@ -1,4 +1,4 @@ -package kamkeel.command.profile; +package kamkeel.npcs.command.profile; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; diff --git a/src/main/java/kamkeel/command/profile/CommandProfile.java b/src/main/java/kamkeel/npcs/command/profile/CommandProfile.java similarity index 95% rename from src/main/java/kamkeel/command/profile/CommandProfile.java rename to src/main/java/kamkeel/npcs/command/profile/CommandProfile.java index a8a19de4b..33d853d91 100644 --- a/src/main/java/kamkeel/command/profile/CommandProfile.java +++ b/src/main/java/kamkeel/npcs/command/profile/CommandProfile.java @@ -1,4 +1,4 @@ -package kamkeel.command.profile; +package kamkeel.npcs.command.profile; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; @@ -84,7 +84,7 @@ public class CommandProfile extends CommandBase { if(command == null) return null; if(args.length == 2 && command.runSubCommands()) - return CommandBase.getListOfStringsMatchingLastWord(args, command.subcommands.keySet().toArray(new String[command.subcommands.keySet().size()])); + return getListOfStringsMatchingLastWord(args, command.subcommands.keySet().toArray(new String[command.subcommands.keySet().size()])); String[] useArgs = command.getUsage().split(" "); if(command.runSubCommands()) { Method m = command.subcommands.get(args[1].toLowerCase()); diff --git a/src/main/java/kamkeel/command/profile/CommandProfileBase.java b/src/main/java/kamkeel/npcs/command/profile/CommandProfileBase.java similarity index 99% rename from src/main/java/kamkeel/command/profile/CommandProfileBase.java rename to src/main/java/kamkeel/npcs/command/profile/CommandProfileBase.java index 24487dba2..18c06ad4f 100644 --- a/src/main/java/kamkeel/command/profile/CommandProfileBase.java +++ b/src/main/java/kamkeel/npcs/command/profile/CommandProfileBase.java @@ -1,4 +1,4 @@ -package kamkeel.command.profile; +package kamkeel.npcs.command.profile; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; diff --git a/src/main/java/kamkeel/command/profile/CommandProfileChange.java b/src/main/java/kamkeel/npcs/command/profile/CommandProfileChange.java similarity index 92% rename from src/main/java/kamkeel/command/profile/CommandProfileChange.java rename to src/main/java/kamkeel/npcs/command/profile/CommandProfileChange.java index 8cda00afc..1e38da197 100644 --- a/src/main/java/kamkeel/command/profile/CommandProfileChange.java +++ b/src/main/java/kamkeel/npcs/command/profile/CommandProfileChange.java @@ -1,7 +1,7 @@ -package kamkeel.command.profile; +package kamkeel.npcs.command.profile; -import kamkeel.controllers.ProfileController; -import kamkeel.controllers.data.Profile; +import kamkeel.npcs.controllers.ProfileController; +import kamkeel.npcs.controllers.data.Profile; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/controllers/ProfileController.java b/src/main/java/kamkeel/npcs/controllers/ProfileController.java similarity index 97% rename from src/main/java/kamkeel/controllers/ProfileController.java rename to src/main/java/kamkeel/npcs/controllers/ProfileController.java index a5f9a86da..6cde49199 100644 --- a/src/main/java/kamkeel/controllers/ProfileController.java +++ b/src/main/java/kamkeel/npcs/controllers/ProfileController.java @@ -1,8 +1,8 @@ -package kamkeel.controllers; +package kamkeel.npcs.controllers; -import kamkeel.controllers.data.IProfileData; -import kamkeel.controllers.data.Profile; -import kamkeel.controllers.data.Slot; +import kamkeel.npcs.controllers.data.IProfileData; +import kamkeel.npcs.controllers.data.Profile; +import kamkeel.npcs.controllers.data.Slot; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/kamkeel/controllers/data/CNPCData.java b/src/main/java/kamkeel/npcs/controllers/data/CNPCData.java similarity index 96% rename from src/main/java/kamkeel/controllers/data/CNPCData.java rename to src/main/java/kamkeel/npcs/controllers/data/CNPCData.java index fc1ae9d72..9b0b0dece 100644 --- a/src/main/java/kamkeel/controllers/data/CNPCData.java +++ b/src/main/java/kamkeel/npcs/controllers/data/CNPCData.java @@ -1,4 +1,4 @@ -package kamkeel.controllers.data; +package kamkeel.npcs.controllers.data; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/kamkeel/controllers/data/IProfileData.java b/src/main/java/kamkeel/npcs/controllers/data/IProfileData.java similarity index 94% rename from src/main/java/kamkeel/controllers/data/IProfileData.java rename to src/main/java/kamkeel/npcs/controllers/data/IProfileData.java index 52653dc53..a68abc597 100644 --- a/src/main/java/kamkeel/controllers/data/IProfileData.java +++ b/src/main/java/kamkeel/npcs/controllers/data/IProfileData.java @@ -1,4 +1,4 @@ -package kamkeel.controllers.data; +package kamkeel.npcs.controllers.data; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/kamkeel/controllers/data/Profile.java b/src/main/java/kamkeel/npcs/controllers/data/Profile.java similarity index 97% rename from src/main/java/kamkeel/controllers/data/Profile.java rename to src/main/java/kamkeel/npcs/controllers/data/Profile.java index 94726b5b9..01002a470 100644 --- a/src/main/java/kamkeel/controllers/data/Profile.java +++ b/src/main/java/kamkeel/npcs/controllers/data/Profile.java @@ -1,4 +1,4 @@ -package kamkeel.controllers.data; +package kamkeel.npcs.controllers.data; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/kamkeel/controllers/data/Slot.java b/src/main/java/kamkeel/npcs/controllers/data/Slot.java similarity index 92% rename from src/main/java/kamkeel/controllers/data/Slot.java rename to src/main/java/kamkeel/npcs/controllers/data/Slot.java index 592497f54..5e6f86869 100644 --- a/src/main/java/kamkeel/controllers/data/Slot.java +++ b/src/main/java/kamkeel/npcs/controllers/data/Slot.java @@ -1,7 +1,5 @@ -package kamkeel.controllers.data; +package kamkeel.npcs.controllers.data; -import kamkeel.controllers.ProfileController; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; public class Slot { diff --git a/src/main/java/kamkeel/developer/Developer.java b/src/main/java/kamkeel/npcs/developer/Developer.java similarity index 97% rename from src/main/java/kamkeel/developer/Developer.java rename to src/main/java/kamkeel/npcs/developer/Developer.java index fc321b9cc..2c89cfc50 100644 --- a/src/main/java/kamkeel/developer/Developer.java +++ b/src/main/java/kamkeel/npcs/developer/Developer.java @@ -1,4 +1,4 @@ -package kamkeel.developer; +package kamkeel.npcs.developer; import java.util.HashSet; import java.util.UUID; diff --git a/src/main/java/kamkeel/network/AbstractPacket.java b/src/main/java/kamkeel/npcs/network/AbstractPacket.java similarity index 88% rename from src/main/java/kamkeel/network/AbstractPacket.java rename to src/main/java/kamkeel/npcs/network/AbstractPacket.java index 7d8fa4d77..7d373581d 100644 --- a/src/main/java/kamkeel/network/AbstractPacket.java +++ b/src/main/java/kamkeel/npcs/network/AbstractPacket.java @@ -1,12 +1,9 @@ -package kamkeel.network; +package kamkeel.npcs.network; -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 net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.CustomNpcs; -import noppes.npcs.LogWriter; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/KamUtilServer.java b/src/main/java/kamkeel/npcs/network/KamUtilServer.java similarity index 77% rename from src/main/java/kamkeel/network/KamUtilServer.java rename to src/main/java/kamkeel/npcs/network/KamUtilServer.java index 14710ac7c..4ffb3b7f0 100644 --- a/src/main/java/kamkeel/network/KamUtilServer.java +++ b/src/main/java/kamkeel/npcs/network/KamUtilServer.java @@ -1,7 +1,7 @@ -package kamkeel.network; +package kamkeel.npcs.network; -import kamkeel.network.packets.large.LargeScrollGroupPacket; -import kamkeel.network.packets.large.LargeScrollDataPacket; +import kamkeel.npcs.network.packets.large.LargeScrollGroupPacket; +import kamkeel.npcs.network.packets.large.LargeScrollDataPacket; import net.minecraft.entity.player.EntityPlayerMP; import java.util.Map; diff --git a/src/main/java/kamkeel/network/LargeAbstractPacket.java b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java similarity index 95% rename from src/main/java/kamkeel/network/LargeAbstractPacket.java rename to src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java index bd748225c..7c398dbfb 100644 --- a/src/main/java/kamkeel/network/LargeAbstractPacket.java +++ b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java @@ -1,9 +1,7 @@ -package kamkeel.network; +package kamkeel.npcs.network; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; -import kamkeel.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.client.NoppesUtil; import java.io.IOException; import java.util.HashMap; diff --git a/src/main/java/kamkeel/network/PacketChannel.java b/src/main/java/kamkeel/npcs/network/PacketChannel.java similarity index 91% rename from src/main/java/kamkeel/network/PacketChannel.java rename to src/main/java/kamkeel/npcs/network/PacketChannel.java index 05f656294..c7109d856 100644 --- a/src/main/java/kamkeel/network/PacketChannel.java +++ b/src/main/java/kamkeel/npcs/network/PacketChannel.java @@ -1,6 +1,6 @@ -package kamkeel.network; +package kamkeel.npcs.network; -import kamkeel.network.enums.EnumPacketType; +import kamkeel.npcs.network.enums.EnumPacketType; import java.util.Hashtable; import java.util.Map; diff --git a/src/main/java/kamkeel/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java similarity index 94% rename from src/main/java/kamkeel/network/PacketHandler.java rename to src/main/java/kamkeel/npcs/network/PacketHandler.java index c4c718e77..8c0d49162 100644 --- a/src/main/java/kamkeel/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -1,4 +1,4 @@ -package kamkeel.network; +package kamkeel.npcs.network; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.network.FMLEventChannel; @@ -6,12 +6,10 @@ 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 kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.enums.EnumPacketType; -import kamkeel.network.packets.large.LargeScrollDataPacket; -import kamkeel.network.packets.large.LargeScrollGroupPacket; -import kamkeel.network.packets.large.LargeScrollListPacket; +import kamkeel.npcs.network.enums.EnumPacketType; +import kamkeel.npcs.network.packets.large.LargeScrollDataPacket; +import kamkeel.npcs.network.packets.large.LargeScrollGroupPacket; +import kamkeel.npcs.network.packets.large.LargeScrollListPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.NetHandlerPlayServer; diff --git a/src/main/java/kamkeel/network/enums/EnumClientPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java similarity index 96% rename from src/main/java/kamkeel/network/enums/EnumClientPacket.java rename to src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java index 6ae61ad6e..83b08450d 100644 --- a/src/main/java/kamkeel/network/enums/EnumClientPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.enums; +package kamkeel.npcs.network.enums; // Packets to the Client public enum EnumClientPacket { diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumDataPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumDataPacket.java new file mode 100644 index 000000000..9ca60f8f8 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/enums/EnumDataPacket.java @@ -0,0 +1,4 @@ +package kamkeel.npcs.network.enums; + +public enum EnumDataPacket { +} diff --git a/src/main/java/kamkeel/network/enums/EnumInfoPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumInfoPacket.java similarity index 54% rename from src/main/java/kamkeel/network/enums/EnumInfoPacket.java rename to src/main/java/kamkeel/npcs/network/enums/EnumInfoPacket.java index 06586758d..86cab3ee5 100644 --- a/src/main/java/kamkeel/network/enums/EnumInfoPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumInfoPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.enums; +package kamkeel.npcs.network.enums; public enum EnumInfoPacket { LOGIN, diff --git a/src/main/java/kamkeel/network/enums/EnumPacketType.java b/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java similarity index 63% rename from src/main/java/kamkeel/network/enums/EnumPacketType.java rename to src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java index e38ad0ac4..c7ccd39cc 100644 --- a/src/main/java/kamkeel/network/enums/EnumPacketType.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java @@ -1,4 +1,4 @@ -package kamkeel.network.enums; +package kamkeel.npcs.network.enums; public enum EnumPacketType { INFO, DATA, CLIENT, LARGE diff --git a/src/main/java/kamkeel/network/packets/LoginPacket.java b/src/main/java/kamkeel/npcs/network/packets/LoginPacket.java similarity index 77% rename from src/main/java/kamkeel/network/packets/LoginPacket.java rename to src/main/java/kamkeel/npcs/network/packets/LoginPacket.java index 82d5899d4..c27cbcad4 100644 --- a/src/main/java/kamkeel/network/packets/LoginPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/LoginPacket.java @@ -1,11 +1,11 @@ -package kamkeel.network.packets; +package kamkeel.npcs.network.packets; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumInfoPacket; -import kamkeel.util.ByteBufUtils; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.enums.EnumInfoPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/ChatBubblePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java similarity index 88% rename from src/main/java/kamkeel/network/packets/client/ChatBubblePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java index 7a2867e6f..79db88414 100644 --- a/src/main/java/kamkeel/network/packets/client/ChatBubblePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java @@ -1,11 +1,11 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.Entity; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/ChatPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ChatPacket.java similarity index 83% rename from src/main/java/kamkeel/network/packets/client/ChatPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/ChatPacket.java index 5aabefda8..8e9452423 100644 --- a/src/main/java/kamkeel/network/packets/client/ChatPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ChatPacket.java @@ -1,11 +1,11 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.util.ChatComponentTranslation; import noppes.npcs.CustomNpcs; diff --git a/src/main/java/kamkeel/network/packets/client/ConfigCommandPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java similarity index 89% rename from src/main/java/kamkeel/network/packets/client/ConfigCommandPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java index 09f1c91dd..2e030eb9e 100644 --- a/src/main/java/kamkeel/network/packets/client/ConfigCommandPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.ClientProxy; diff --git a/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DBCFormPacket.java similarity index 76% rename from src/main/java/kamkeel/network/packets/client/DBCFormPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/DBCFormPacket.java index 0a4432f79..2efc85ea0 100644 --- a/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DBCFormPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.NoppesUtil; diff --git a/src/main/java/kamkeel/network/packets/client/DeleteNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DeleteNpcPacket.java similarity index 81% rename from src/main/java/kamkeel/network/packets/client/DeleteNpcPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/DeleteNpcPacket.java index 98537c751..24b167de8 100644 --- a/src/main/java/kamkeel/network/packets/client/DeleteNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DeleteNpcPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.Entity; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/DialogDummyPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DialogDummyPacket.java similarity index 81% rename from src/main/java/kamkeel/network/packets/client/DialogDummyPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/DialogDummyPacket.java index 221f66aa8..b9c49d7cc 100644 --- a/src/main/java/kamkeel/network/packets/client/DialogDummyPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DialogDummyPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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; diff --git a/src/main/java/kamkeel/network/packets/client/DialogPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java similarity index 83% rename from src/main/java/kamkeel/network/packets/client/DialogPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java index 343b07891..33302ddf3 100644 --- a/src/main/java/kamkeel/network/packets/client/DialogPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.Entity; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/DisableMouseInputPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java similarity index 84% rename from src/main/java/kamkeel/network/packets/client/DisableMouseInputPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java index 4723b4b3a..e25032599 100644 --- a/src/main/java/kamkeel/network/packets/client/DisableMouseInputPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.ClientEventHandler; diff --git a/src/main/java/kamkeel/network/packets/client/EditNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/EditNpcPacket.java similarity index 82% rename from src/main/java/kamkeel/network/packets/client/EditNpcPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/EditNpcPacket.java index 4fc5accc5..dc9563938 100644 --- a/src/main/java/kamkeel/network/packets/client/EditNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/EditNpcPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.Entity; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/LargeNBTEndPacket.java similarity index 78% rename from src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/LargeNBTEndPacket.java index 061ccf419..7da3d4bce 100644 --- a/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/LargeNBTEndPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.NoppesUtil; diff --git a/src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/LargeNBTPartPacket.java similarity index 78% rename from src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/LargeNBTPartPacket.java index 7eb8e46fe..d87db4a40 100644 --- a/src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/LargeNBTPartPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.NoppesUtil; diff --git a/src/main/java/kamkeel/network/packets/client/MarkDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java similarity index 83% rename from src/main/java/kamkeel/network/packets/client/MarkDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java index a6412982b..6d053a132 100644 --- a/src/main/java/kamkeel/network/packets/client/MarkDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/kamkeel/network/packets/client/MessagePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/MessagePacket.java similarity index 86% rename from src/main/java/kamkeel/network/packets/client/MessagePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/MessagePacket.java index 97d05da72..59aa475fe 100644 --- a/src/main/java/kamkeel/network/packets/client/MessagePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/MessagePacket.java @@ -1,18 +1,17 @@ -package kamkeel.network.packets.client; +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.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.CustomItems; import noppes.npcs.CustomNpcs; import noppes.npcs.Server; diff --git a/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/OpenBookPacket.java similarity index 83% rename from src/main/java/kamkeel/network/packets/client/OpenBookPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/OpenBookPacket.java index 3788c9814..1028896bd 100644 --- a/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/OpenBookPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/kamkeel/network/packets/client/OverlayQuestTrackingPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java similarity index 84% rename from src/main/java/kamkeel/network/packets/client/OverlayQuestTrackingPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java index 487f163dc..46d4c1a84 100644 --- a/src/main/java/kamkeel/network/packets/client/OverlayQuestTrackingPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/kamkeel/network/packets/client/ParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java similarity index 76% rename from src/main/java/kamkeel/network/packets/client/ParticlePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java index ae7230ee4..1e7c4f6a0 100644 --- a/src/main/java/kamkeel/network/packets/client/ParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.NoppesUtil; diff --git a/src/main/java/kamkeel/network/packets/client/PartyDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java similarity index 87% rename from src/main/java/kamkeel/network/packets/client/PartyDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java index 95b2f68eb..4243be0da 100644 --- a/src/main/java/kamkeel/network/packets/client/PartyDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.GuiScreen; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java similarity index 84% rename from src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java index ee4a9a9c7..a61e06ad5 100644 --- a/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/kamkeel/network/packets/client/QuestCompletionPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java similarity index 78% rename from src/main/java/kamkeel/network/packets/client/QuestCompletionPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java index e395facec..ab1928890 100644 --- a/src/main/java/kamkeel/network/packets/client/QuestCompletionPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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; diff --git a/src/main/java/kamkeel/network/packets/client/RolePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java similarity index 85% rename from src/main/java/kamkeel/network/packets/client/RolePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java index 41f8ae187..c7b6d5e2a 100644 --- a/src/main/java/kamkeel/network/packets/client/RolePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.Entity; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/ScriptOverlayClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java similarity index 79% rename from src/main/java/kamkeel/network/packets/client/ScriptOverlayClosePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java index f40193ceb..3181e3749 100644 --- a/src/main/java/kamkeel/network/packets/client/ScriptOverlayClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.ClientCacheHandler; diff --git a/src/main/java/kamkeel/network/packets/client/ScriptOverlayDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java similarity index 83% rename from src/main/java/kamkeel/network/packets/client/ScriptOverlayDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java index 9952be1f9..a3979c5fb 100644 --- a/src/main/java/kamkeel/network/packets/client/ScriptOverlayDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.player.EntityPlayer; import noppes.npcs.Server; diff --git a/src/main/java/kamkeel/network/packets/client/ScriptedParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java similarity index 77% rename from src/main/java/kamkeel/network/packets/client/ScriptedParticlePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java index ea8150148..c89c4c352 100644 --- a/src/main/java/kamkeel/network/packets/client/ScriptedParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.NoppesUtil; diff --git a/src/main/java/kamkeel/network/packets/client/ScrollSelectedPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java similarity index 82% rename from src/main/java/kamkeel/network/packets/client/ScrollSelectedPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java index 7de8e9fed..381b7107a 100644 --- a/src/main/java/kamkeel/network/packets/client/ScrollSelectedPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.GuiScreen; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/StopSoundForPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java similarity index 78% rename from src/main/java/kamkeel/network/packets/client/StopSoundForPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java index ec066645b..d936f2971 100644 --- a/src/main/java/kamkeel/network/packets/client/StopSoundForPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.controllers.ScriptSoundController; diff --git a/src/main/java/kamkeel/network/packets/client/StopSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java similarity index 77% rename from src/main/java/kamkeel/network/packets/client/StopSoundsPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java index 14db7f7cc..1abedb3be 100644 --- a/src/main/java/kamkeel/network/packets/client/StopSoundsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.controllers.ScriptSoundController; diff --git a/src/main/java/kamkeel/network/packets/client/SwingPlayerArmPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java similarity index 77% rename from src/main/java/kamkeel/network/packets/client/SwingPlayerArmPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java index 6ca1511b4..cdc6eaae8 100644 --- a/src/main/java/kamkeel/network/packets/client/SwingPlayerArmPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/TeleporterPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/TeleporterPacket.java similarity index 78% rename from src/main/java/kamkeel/network/packets/client/TeleporterPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/TeleporterPacket.java index 2ffd14b3a..f6df09f6b 100644 --- a/src/main/java/kamkeel/network/packets/client/TeleporterPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/TeleporterPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.CustomNpcs; import noppes.npcs.constants.EnumGuiType; diff --git a/src/main/java/kamkeel/network/packets/client/UpdateAnimationsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java similarity index 92% rename from src/main/java/kamkeel/network/packets/client/UpdateAnimationsPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java index 99ba8f582..91399cc74 100644 --- a/src/main/java/kamkeel/network/packets/client/UpdateAnimationsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.Entity; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/UpdateNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/UpdateNpcPacket.java similarity index 83% rename from src/main/java/kamkeel/network/packets/client/UpdateNpcPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/UpdateNpcPacket.java index 1243f8c7f..05edb23e0 100644 --- a/src/main/java/kamkeel/network/packets/client/UpdateNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/UpdateNpcPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.Entity; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/VillagerListPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java similarity index 80% rename from src/main/java/kamkeel/network/packets/client/VillagerListPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java index a763c3fe4..202604664 100644 --- a/src/main/java/kamkeel/network/packets/client/VillagerListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java @@ -1,13 +1,12 @@ -package kamkeel.network.packets.client; +package kamkeel.npcs.network.packets.client; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.network.PacketBuffer; -import noppes.npcs.Server; import noppes.npcs.ServerEventsHandler; import net.minecraft.village.MerchantRecipeList; diff --git a/src/main/java/kamkeel/network/packets/client/gui/ClonerGUIPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/ClonerGUIPacket.java similarity index 79% rename from src/main/java/kamkeel/network/packets/client/gui/ClonerGUIPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/ClonerGUIPacket.java index 4d18cc63a..fda00a01b 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/ClonerGUIPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/ClonerGUIPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.gui; +package kamkeel.npcs.network.packets.client.gui; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.CustomNpcs; import noppes.npcs.constants.EnumGuiType; diff --git a/src/main/java/kamkeel/network/packets/client/gui/GUIClonerPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GUIClonerPacket.java similarity index 82% rename from src/main/java/kamkeel/network/packets/client/gui/GUIClonerPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/GUIClonerPacket.java index e69b15463..e7d26d066 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/GUIClonerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GUIClonerPacket.java @@ -1,11 +1,11 @@ -package kamkeel.network.packets.client.gui; +package kamkeel.npcs.network.packets.client.gui; import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; diff --git a/src/main/java/kamkeel/network/packets/client/gui/GuiClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java similarity index 84% rename from src/main/java/kamkeel/network/packets/client/gui/GuiClosePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java index 883fdd29e..5e3fa37ee 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/GuiClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.gui; +package kamkeel.npcs.network.packets.client.gui; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.GuiScreen; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/gui/GuiDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java similarity index 86% rename from src/main/java/kamkeel/network/packets/client/gui/GuiDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java index c41427987..7a12d3b1a 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/GuiDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.gui; +package kamkeel.npcs.network.packets.client.gui; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.GuiScreen; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/gui/GuiErrorPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java similarity index 83% rename from src/main/java/kamkeel/network/packets/client/gui/GuiErrorPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java index d653e88f8..e1242dca8 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/GuiErrorPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.gui; +package kamkeel.npcs.network.packets.client.gui; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.GuiScreen; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/kamkeel/network/packets/client/gui/GuiPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiPacket.java similarity index 80% rename from src/main/java/kamkeel/network/packets/client/gui/GuiPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/GuiPacket.java index a86c8a8fe..38f880b64 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/GuiPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.gui; +package kamkeel.npcs.network.packets.client.gui; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.CustomNpcs; import noppes.npcs.constants.EnumGuiType; diff --git a/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java similarity index 79% rename from src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java index d12bbfd60..4116e7eed 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.gui; +package kamkeel.npcs.network.packets.client.gui; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; diff --git a/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java similarity index 79% rename from src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java index 5905b517e..094e9ef90 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.gui; +package kamkeel.npcs.network.packets.client.gui; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; diff --git a/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java similarity index 79% rename from src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java index 20a04f1ca..041deba86 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.gui; +package kamkeel.npcs.network.packets.client.gui; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.entity.player.EntityPlayer; import noppes.npcs.client.NoppesUtil; diff --git a/src/main/java/kamkeel/network/packets/client/sound/ContinueSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java similarity index 77% rename from src/main/java/kamkeel/network/packets/client/sound/ContinueSoundsPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java index f6de38442..47b151726 100644 --- a/src/main/java/kamkeel/network/packets/client/sound/ContinueSoundsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sound; +package kamkeel.npcs.network.packets.client.sound; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.controllers.ScriptSoundController; diff --git a/src/main/java/kamkeel/network/packets/client/sound/PauseSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java similarity index 77% rename from src/main/java/kamkeel/network/packets/client/sound/PauseSoundsPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java index 297e9e6b6..add8d770e 100644 --- a/src/main/java/kamkeel/network/packets/client/sound/PauseSoundsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sound; +package kamkeel.npcs.network.packets.client.sound; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.controllers.ScriptSoundController; diff --git a/src/main/java/kamkeel/network/packets/client/sound/PlayMusicPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java similarity index 79% rename from src/main/java/kamkeel/network/packets/client/sound/PlayMusicPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java index e0c8fe9b5..b59cfb9e3 100644 --- a/src/main/java/kamkeel/network/packets/client/sound/PlayMusicPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sound; +package kamkeel.npcs.network.packets.client.sound; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.controllers.MusicController; diff --git a/src/main/java/kamkeel/network/packets/client/sound/PlaySoundPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java similarity index 80% rename from src/main/java/kamkeel/network/packets/client/sound/PlaySoundPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java index f0ed27cdc..a81e3873a 100644 --- a/src/main/java/kamkeel/network/packets/client/sound/PlaySoundPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sound; +package kamkeel.npcs.network.packets.client.sound; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.controllers.MusicController; diff --git a/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToNoIdPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java similarity index 82% rename from src/main/java/kamkeel/network/packets/client/sound/PlaySoundToNoIdPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java index a2b53fee6..665a477a0 100644 --- a/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToNoIdPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sound; +package kamkeel.npcs.network.packets.client.sound; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; diff --git a/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java similarity index 82% rename from src/main/java/kamkeel/network/packets/client/sound/PlaySoundToPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java index 5c651de5c..d8f4a94f0 100644 --- a/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sound; +package kamkeel.npcs.network.packets.client.sound; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; diff --git a/src/main/java/kamkeel/network/packets/client/sync/SyncAddPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncAddPacket.java similarity index 80% rename from src/main/java/kamkeel/network/packets/client/sync/SyncAddPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sync/SyncAddPacket.java index 6224bb102..4318fedd6 100644 --- a/src/main/java/kamkeel/network/packets/client/sync/SyncAddPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncAddPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sync; +package kamkeel.npcs.network.packets.client.sync; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; diff --git a/src/main/java/kamkeel/network/packets/client/sync/SyncConfigPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java similarity index 79% rename from src/main/java/kamkeel/network/packets/client/sync/SyncConfigPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java index eaf3b419a..5532cd97f 100644 --- a/src/main/java/kamkeel/network/packets/client/sync/SyncConfigPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sync; +package kamkeel.npcs.network.packets.client.sync; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; diff --git a/src/main/java/kamkeel/network/packets/client/sync/SyncEndPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncEndPacket.java similarity index 80% rename from src/main/java/kamkeel/network/packets/client/sync/SyncEndPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sync/SyncEndPacket.java index bc5a4e26d..b9cbcb7b0 100644 --- a/src/main/java/kamkeel/network/packets/client/sync/SyncEndPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncEndPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sync; +package kamkeel.npcs.network.packets.client.sync; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; diff --git a/src/main/java/kamkeel/network/packets/client/sync/SyncPlayerPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncPlayerPacket.java similarity index 77% rename from src/main/java/kamkeel/network/packets/client/sync/SyncPlayerPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sync/SyncPlayerPacket.java index 372f26e60..a595e3622 100644 --- a/src/main/java/kamkeel/network/packets/client/sync/SyncPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncPlayerPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sync; +package kamkeel.npcs.network.packets.client.sync; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.client.NoppesUtil; diff --git a/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesAddPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesAddPacket.java similarity index 85% rename from src/main/java/kamkeel/network/packets/client/sync/SyncRecipesAddPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesAddPacket.java index 8460dac7f..cdef473ec 100644 --- a/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesAddPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesAddPacket.java @@ -1,11 +1,11 @@ -package kamkeel.network.packets.client.sync; +package kamkeel.npcs.network.packets.client.sync; import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.nbt.NBTTagList; import noppes.npcs.CustomNpcs; diff --git a/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java similarity index 79% rename from src/main/java/kamkeel/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java index c49a37dc0..f78cf1ea1 100644 --- a/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sync; +package kamkeel.npcs.network.packets.client.sync; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.controllers.RecipeController; diff --git a/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesWorkbenchPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java similarity index 79% rename from src/main/java/kamkeel/network/packets/client/sync/SyncRecipesWorkbenchPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java index bb3a4ab79..da4608155 100644 --- a/src/main/java/kamkeel/network/packets/client/sync/SyncRecipesWorkbenchPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sync; +package kamkeel.npcs.network.packets.client.sync; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.controllers.RecipeController; diff --git a/src/main/java/kamkeel/network/packets/client/sync/SyncRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRemovePacket.java similarity index 78% rename from src/main/java/kamkeel/network/packets/client/sync/SyncRemovePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRemovePacket.java index adc7c9ae3..20708ec7b 100644 --- a/src/main/java/kamkeel/network/packets/client/sync/SyncRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRemovePacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sync; +package kamkeel.npcs.network.packets.client.sync; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.controllers.SyncController; diff --git a/src/main/java/kamkeel/network/packets/client/sync/SyncUpdatePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncUpdatePacket.java similarity index 80% rename from src/main/java/kamkeel/network/packets/client/sync/SyncUpdatePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sync/SyncUpdatePacket.java index c95ad6357..69ce07ae5 100644 --- a/src/main/java/kamkeel/network/packets/client/sync/SyncUpdatePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncUpdatePacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sync; +package kamkeel.npcs.network.packets.client.sync; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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 net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; diff --git a/src/main/java/kamkeel/network/packets/client/sync/SyncWeaponPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java similarity index 84% rename from src/main/java/kamkeel/network/packets/client/sync/SyncWeaponPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java index 59be33b6e..22d9d9789 100644 --- a/src/main/java/kamkeel/network/packets/client/sync/SyncWeaponPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java @@ -1,10 +1,10 @@ -package kamkeel.network.packets.client.sync; +package kamkeel.npcs.network.packets.client.sync; import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; +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.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; diff --git a/src/main/java/kamkeel/network/packets/large/LargeScrollDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java similarity index 80% rename from src/main/java/kamkeel/network/packets/large/LargeScrollDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java index acdd6757d..9a31961d6 100644 --- a/src/main/java/kamkeel/network/packets/large/LargeScrollDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java @@ -1,11 +1,11 @@ -package kamkeel.network.packets.large; +package kamkeel.npcs.network.packets.large; import io.netty.buffer.ByteBuf; -import kamkeel.network.LargeAbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import kamkeel.util.ByteBufUtils; +import kamkeel.npcs.network.LargeAbstractPacket; +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 noppes.npcs.client.NoppesUtil; diff --git a/src/main/java/kamkeel/network/packets/large/LargeScrollGroupPacket.java b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java similarity index 80% rename from src/main/java/kamkeel/network/packets/large/LargeScrollGroupPacket.java rename to src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java index 95384acfb..40a1a2f4f 100644 --- a/src/main/java/kamkeel/network/packets/large/LargeScrollGroupPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java @@ -1,11 +1,11 @@ -package kamkeel.network.packets.large; +package kamkeel.npcs.network.packets.large; import io.netty.buffer.ByteBuf; -import kamkeel.network.LargeAbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import kamkeel.util.ByteBufUtils; +import kamkeel.npcs.network.LargeAbstractPacket; +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 noppes.npcs.client.NoppesUtil; diff --git a/src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollListPacket.java similarity index 80% rename from src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java rename to src/main/java/kamkeel/npcs/network/packets/large/LargeScrollListPacket.java index 3fc99cff0..b2e8d5af5 100644 --- a/src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollListPacket.java @@ -1,12 +1,12 @@ // src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java -package kamkeel.network.packets.large; +package kamkeel.npcs.network.packets.large; import io.netty.buffer.ByteBuf; -import kamkeel.network.LargeAbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import kamkeel.util.ByteBufUtils; +import kamkeel.npcs.network.LargeAbstractPacket; +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 noppes.npcs.client.NoppesUtil; diff --git a/src/main/java/kamkeel/util/ByteBufUtils.java b/src/main/java/kamkeel/npcs/util/ByteBufUtils.java similarity index 99% rename from src/main/java/kamkeel/util/ByteBufUtils.java rename to src/main/java/kamkeel/npcs/util/ByteBufUtils.java index c5e4dee1d..0c7bfa779 100644 --- a/src/main/java/kamkeel/util/ByteBufUtils.java +++ b/src/main/java/kamkeel/npcs/util/ByteBufUtils.java @@ -1,4 +1,4 @@ -package kamkeel.util; +package kamkeel.npcs.util; import com.google.common.base.Charsets; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/kamkeel/util/TextSplitter.java b/src/main/java/kamkeel/npcs/util/TextSplitter.java similarity index 97% rename from src/main/java/kamkeel/util/TextSplitter.java rename to src/main/java/kamkeel/npcs/util/TextSplitter.java index 30092cf92..d4b887dcf 100644 --- a/src/main/java/kamkeel/util/TextSplitter.java +++ b/src/main/java/kamkeel/npcs/util/TextSplitter.java @@ -1,4 +1,4 @@ -package kamkeel.util; +package kamkeel.npcs.util; import java.util.ArrayList; import java.util.List; @@ -37,4 +37,4 @@ public class TextSplitter { System.out.println(line); } } -} \ No newline at end of file +} diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 1a8108a2f..4e800cbd7 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -10,12 +10,12 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.relauncher.Side; import foxz.command.CommandNoppes; -import kamkeel.addon.AddonManager; -import kamkeel.command.CommandKamkeel; -import kamkeel.command.profile.CommandProfile; -import kamkeel.controllers.ProfileController; -import kamkeel.controllers.data.CNPCData; -import kamkeel.developer.Developer; +import kamkeel.npcs.addon.AddonManager; +import kamkeel.npcs.command.CommandKamkeel; +import kamkeel.npcs.command.profile.CommandProfile; +import kamkeel.npcs.controllers.ProfileController; +import kamkeel.npcs.controllers.data.CNPCData; +import kamkeel.npcs.developer.Developer; import net.minecraft.block.Block; import net.minecraft.block.BlockIce; import net.minecraft.block.BlockLeavesBase; diff --git a/src/main/java/noppes/npcs/CustomNpcsPermissions.java b/src/main/java/noppes/npcs/CustomNpcsPermissions.java index ebb749fe5..24898e8a4 100644 --- a/src/main/java/noppes/npcs/CustomNpcsPermissions.java +++ b/src/main/java/noppes/npcs/CustomNpcsPermissions.java @@ -2,7 +2,7 @@ package noppes.npcs; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; -import kamkeel.developer.Developer; +import kamkeel.npcs.developer.Developer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import org.apache.logging.log4j.LogManager; diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index ec85c256b..7d57b2184 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -3,7 +3,6 @@ package noppes.npcs; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent; import io.netty.buffer.ByteBuf; -import kamkeel.addon.DBCAddon; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 83bf168df..4f5bbb9d6 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -6,7 +6,6 @@ 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.addon.DBCAddon; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.passive.EntityVillager; diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index 8ae6a17ee..211edc791 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -5,7 +5,6 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.relauncher.Side; -import kamkeel.controllers.ProfileController; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -22,9 +21,7 @@ import net.minecraftforge.event.entity.living.*; import net.minecraftforge.event.entity.player.*; import net.minecraftforge.event.world.BlockEvent; import noppes.npcs.api.entity.IPlayer; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestType; -import noppes.npcs.constants.SyncType; import noppes.npcs.controllers.PartyController; import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.controllers.ScriptController; diff --git a/src/main/java/noppes/npcs/ServerTickHandler.java b/src/main/java/noppes/npcs/ServerTickHandler.java index 2b0e79be7..4a7584060 100644 --- a/src/main/java/noppes/npcs/ServerTickHandler.java +++ b/src/main/java/noppes/npcs/ServerTickHandler.java @@ -4,7 +4,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; -import kamkeel.controllers.ProfileController; +import kamkeel.npcs.controllers.ProfileController; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; import net.minecraft.world.WorldServer; diff --git a/src/main/java/noppes/npcs/ai/CombatHandler.java b/src/main/java/noppes/npcs/ai/CombatHandler.java index eb980a959..310ec79dd 100644 --- a/src/main/java/noppes/npcs/ai/CombatHandler.java +++ b/src/main/java/noppes/npcs/ai/CombatHandler.java @@ -1,6 +1,6 @@ package noppes.npcs.ai; -import kamkeel.addon.DBCAddon; +import kamkeel.npcs.addon.DBCAddon; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/noppes/npcs/ai/EntityAIAttackTarget.java b/src/main/java/noppes/npcs/ai/EntityAIAttackTarget.java index dce5b5638..d9cae376f 100644 --- a/src/main/java/noppes/npcs/ai/EntityAIAttackTarget.java +++ b/src/main/java/noppes/npcs/ai/EntityAIAttackTarget.java @@ -1,6 +1,6 @@ package noppes.npcs.ai; -import kamkeel.addon.DBCAddon; +import kamkeel.npcs.addon.DBCAddon; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIBase; diff --git a/src/main/java/noppes/npcs/ai/selector/NPCAttackSelector.java b/src/main/java/noppes/npcs/ai/selector/NPCAttackSelector.java index 90d53919d..fbc215f11 100644 --- a/src/main/java/noppes/npcs/ai/selector/NPCAttackSelector.java +++ b/src/main/java/noppes/npcs/ai/selector/NPCAttackSelector.java @@ -1,6 +1,6 @@ package noppes.npcs.ai.selector; -import kamkeel.addon.DBCAddon; +import kamkeel.npcs.addon.DBCAddon; import net.minecraft.command.IEntitySelector; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index 8b511254e..373d52081 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -5,8 +5,7 @@ import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.ObfuscationReflectionHelper; -import kamkeel.addon.client.DBCClient; -import net.minecraft.block.Block; +import kamkeel.npcs.addon.client.DBCClient; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.model.ModelBiped; diff --git a/src/main/java/noppes/npcs/client/ClientTickHandler.java b/src/main/java/noppes/npcs/client/ClientTickHandler.java index 6424ea4ad..e1a5a53fc 100644 --- a/src/main/java/noppes/npcs/client/ClientTickHandler.java +++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java @@ -5,11 +5,8 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; -import kamkeel.addon.DBCAddon; -import kamkeel.addon.client.DBCClient; +import kamkeel.npcs.addon.client.DBCClient; import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.SoundHandler; -import net.minecraft.client.audio.SoundManager; import net.minecraft.entity.Entity; import net.minecraft.inventory.ContainerPlayer; import net.minecraft.world.World; diff --git a/src/main/java/noppes/npcs/client/EntityUtil.java b/src/main/java/noppes/npcs/client/EntityUtil.java index 824bb7dc2..2aadea2a4 100644 --- a/src/main/java/noppes/npcs/client/EntityUtil.java +++ b/src/main/java/noppes/npcs/client/EntityUtil.java @@ -1,7 +1,7 @@ package noppes.npcs.client; -import kamkeel.addon.DBCAddon; -import kamkeel.addon.GeckoAddon; +import kamkeel.npcs.addon.DBCAddon; +import kamkeel.npcs.addon.GeckoAddon; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.boss.EntityDragon; import net.minecraft.entity.passive.EntityChicken; diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java index 94c816936..eff43fae5 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java @@ -1,7 +1,7 @@ package noppes.npcs.client.gui.mainmenu; import com.mojang.authlib.GameProfile; -import kamkeel.addon.client.GeckoAddonClient; +import kamkeel.npcs.addon.client.GeckoAddonClient; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.DataDisplay; diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java index 192b405e3..7ea0de8f8 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java @@ -1,7 +1,6 @@ package noppes.npcs.client.gui.mainmenu; -import kamkeel.addon.DBCAddon; -import kamkeel.addon.client.DBCClient; +import kamkeel.npcs.addon.client.DBCClient; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java index 1aec9f0b4..a6d6c2c54 100644 --- a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java +++ b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java @@ -1,6 +1,6 @@ package noppes.npcs.client.gui.model; -import kamkeel.addon.client.GeckoAddonClient; +import kamkeel.npcs.addon.client.GeckoAddonClient; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java index 53e0d7ae6..3ab43c14e 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiCNPCInventory.java @@ -1,7 +1,7 @@ package noppes.npcs.client.gui.player.inventory; import cpw.mods.fml.common.Loader; -import kamkeel.addon.client.DBCClient; +import kamkeel.npcs.addon.client.DBCClient; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java index 7ee107877..ea9a1c700 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java @@ -1,6 +1,6 @@ package noppes.npcs.client.gui.util; -import kamkeel.util.TextSplitter; +import kamkeel.npcs.util.TextSplitter; import net.minecraft.client.gui.GuiScreen; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java index 836c25ab1..bd3e3b8f0 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java @@ -1,6 +1,6 @@ package noppes.npcs.client.gui.util; -import kamkeel.util.TextSplitter; +import kamkeel.npcs.util.TextSplitter; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.RenderHelper; diff --git a/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java b/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java index 1fb76656e..baa3d1720 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java @@ -2,7 +2,7 @@ package noppes.npcs.client.renderer; import com.mojang.authlib.minecraft.MinecraftProfileTexture; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; -import kamkeel.addon.client.GeckoAddonClient; +import kamkeel.npcs.addon.client.GeckoAddonClient; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.client.gui.FontRenderer; diff --git a/src/main/java/noppes/npcs/config/ConfigScript.java b/src/main/java/noppes/npcs/config/ConfigScript.java index 6e4c3dd72..57c6d434c 100644 --- a/src/main/java/noppes/npcs/config/ConfigScript.java +++ b/src/main/java/noppes/npcs/config/ConfigScript.java @@ -1,7 +1,7 @@ package noppes.npcs.config; import cpw.mods.fml.common.FMLLog; -import kamkeel.developer.Developer; +import kamkeel.npcs.developer.Developer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.server.MinecraftServer; import net.minecraftforge.common.config.Configuration; @@ -178,7 +178,7 @@ public class ConfigScript if(ScriptOpsOnly){ return isOp || scriptDev; } - + return scriptDev || CustomNpcsPermissions.hasPermission(player, perm); } } diff --git a/src/main/java/noppes/npcs/controllers/SyncController.java b/src/main/java/noppes/npcs/controllers/SyncController.java index 8ebf881e5..48c0891b5 100644 --- a/src/main/java/noppes/npcs/controllers/SyncController.java +++ b/src/main/java/noppes/npcs/controllers/SyncController.java @@ -1,7 +1,7 @@ package noppes.npcs.controllers; import io.netty.buffer.ByteBuf; -import kamkeel.addon.DBCAddon; +import kamkeel.npcs.addon.DBCAddon; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerData.java b/src/main/java/noppes/npcs/controllers/data/PlayerData.java index 86dfa91dd..b4d65091a 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerData.java @@ -1,6 +1,6 @@ package noppes.npcs.controllers.data; -import kamkeel.addon.DBCAddon; +import kamkeel.npcs.addon.DBCAddon; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 4353d3395..c9df8b905 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -5,8 +5,8 @@ import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import kamkeel.addon.DBCAddon; -import kamkeel.addon.client.DBCClient; +import kamkeel.npcs.addon.DBCAddon; +import kamkeel.npcs.addon.client.DBCClient; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; diff --git a/src/main/java/noppes/npcs/entity/EntityProjectile.java b/src/main/java/noppes/npcs/entity/EntityProjectile.java index 5e08eb3ae..e3e581df2 100644 --- a/src/main/java/noppes/npcs/entity/EntityProjectile.java +++ b/src/main/java/noppes/npcs/entity/EntityProjectile.java @@ -2,7 +2,7 @@ package noppes.npcs.entity; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import kamkeel.addon.DBCAddon; +import kamkeel.npcs.addon.DBCAddon; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -27,7 +27,6 @@ import net.minecraft.world.Explosion; import net.minecraft.world.World; import noppes.npcs.DataStats; import noppes.npcs.EventHooks; -import noppes.npcs.NpcDamageSource; import noppes.npcs.api.IPos; import noppes.npcs.api.IWorld; import noppes.npcs.api.entity.IEntity; diff --git a/src/main/java/tconstruct/client/tabs/InventoryTabCustomNpc.java b/src/main/java/tconstruct/client/tabs/InventoryTabCustomNpc.java index bba7409fd..888bc77f1 100644 --- a/src/main/java/tconstruct/client/tabs/InventoryTabCustomNpc.java +++ b/src/main/java/tconstruct/client/tabs/InventoryTabCustomNpc.java @@ -1,7 +1,6 @@ package tconstruct.client.tabs; -import kamkeel.addon.DBCAddon; -import kamkeel.addon.client.DBCClient; +import kamkeel.npcs.addon.client.DBCClient; import net.minecraft.client.Minecraft; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; From 36c8b70eb4dc0275ff520517956a52a8ca861e99 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 29 Jan 2025 13:28:14 -0500 Subject: [PATCH 026/157] Generate Packet Chunks for Large Packets --- .../npcs/network/LargeAbstractPacket.java | 30 ++++++++++++ .../kamkeel/npcs/network/PacketHandler.java | 46 ++++++++----------- 2 files changed, 49 insertions(+), 27 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java index 7c398dbfb..2ad5a526a 100644 --- a/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java +++ b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java @@ -1,12 +1,15 @@ package kamkeel.npcs.network; +import cpw.mods.fml.common.network.internal.FMLProxyPacket; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import net.minecraft.entity.player.EntityPlayer; import java.io.IOException; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.ArrayList; public abstract class LargeAbstractPacket extends AbstractPacket { private static final int CHUNK_SIZE = 10000; @@ -55,6 +58,33 @@ public abstract class LargeAbstractPacket extends AbstractPacket { } } + public final List generatePacketChunks() { + List chunks = new ArrayList<>(); + ByteBuf data = Unpooled.buffer(); + try { + writeData(data); + int totalSize = data.readableBytes(); + UUID packetId = UUID.randomUUID(); + int totalChunks = (int) Math.ceil((double) totalSize / CHUNK_SIZE); + + for (int i = 0; i < totalSize; i += CHUNK_SIZE) { + int chunkSize = Math.min(CHUNK_SIZE, totalSize - i); + ByteBuf chunk = data.readBytes(chunkSize); + ByteBuf out = Unpooled.buffer(); + out.writeLong(packetId.getMostSignificantBits()); + out.writeLong(packetId.getLeastSignificantBits()); + out.writeInt(totalSize); + out.writeInt(i); + out.writeInt(totalChunks); + out.writeBytes(chunk); + chunks.add(new FMLProxyPacket(out, getChannel().getChannelName())); + } + } catch (IOException e) { + e.printStackTrace(); + } + return chunks; + } + public abstract void writeData(ByteBuf out) throws IOException; public abstract void handleData(ByteBuf data, EntityPlayer player) throws IOException; diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 8c0d49162..86bc5e7a3 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -17,6 +17,7 @@ import noppes.npcs.CustomNpcs; import java.io.IOException; import java.util.*; +import java.util.function.Consumer; public final class PacketHandler { public static PacketHandler Instance; @@ -116,48 +117,39 @@ public final class PacketHandler { } } - public void sendToPlayer(AbstractPacket packet, EntityPlayerMP player) { + public void sendPacket(AbstractPacket packet, Consumer sendFunction) { try { - FMLProxyPacket proxyPacket = packet.generatePacket(); - getEventChannel(packet).sendTo(proxyPacket, player); + if (packet instanceof LargeAbstractPacket) { + List chunks = ((LargeAbstractPacket) packet).generatePacketChunks(); + for (FMLProxyPacket chunk : chunks) { + sendFunction.accept(chunk); + } + } else { + FMLProxyPacket proxyPacket = packet.generatePacket(); + sendFunction.accept(proxyPacket); + } } catch (Exception e) { e.printStackTrace(); } } + public void sendToPlayer(AbstractPacket packet, EntityPlayerMP player) { + sendPacket(packet, proxyPacket -> getEventChannel(packet).sendTo(proxyPacket, player)); + } + public void sendToServer(AbstractPacket packet) { - try { - FMLProxyPacket proxyPacket = packet.generatePacket(); - getEventChannel(packet).sendToServer(proxyPacket); - } catch (Exception e) { - e.printStackTrace(); - } + sendPacket(packet, proxyPacket -> getEventChannel(packet).sendToServer(proxyPacket)); } public void sendToAll(AbstractPacket packet) { - try { - FMLProxyPacket proxyPacket = packet.generatePacket(); - getEventChannel(packet).sendToAll(proxyPacket); - } catch (Exception e) { - e.printStackTrace(); - } + sendPacket(packet, proxyPacket -> getEventChannel(packet).sendToAll(proxyPacket)); } public void sendToAllAround(AbstractPacket packet, NetworkRegistry.TargetPoint point) { - try { - FMLProxyPacket proxyPacket = packet.generatePacket(); - getEventChannel(packet).sendToAllAround(proxyPacket, point); - } catch (Exception e) { - e.printStackTrace(); - } + sendPacket(packet, proxyPacket -> getEventChannel(packet).sendToAllAround(proxyPacket, point)); } public void sendToDimension(AbstractPacket packet, int dimensionId) { - try { - FMLProxyPacket proxyPacket = packet.generatePacket(); - getEventChannel(packet).sendToDimension(proxyPacket, dimensionId); - } catch (Exception e) { - e.printStackTrace(); - } + sendPacket(packet, proxyPacket -> getEventChannel(packet).sendToDimension(proxyPacket, dimensionId)); } } From f573259fd1504cffd63ced2429b28ec23ad10735 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 29 Jan 2025 15:04:19 -0500 Subject: [PATCH 027/157] Complete Large Packet Sending --- .../npcs/network/LargeAbstractPacket.java | 130 +++++++++++------- .../kamkeel/npcs/network/PacketHandler.java | 121 ++++++++-------- .../client/DisableMouseInputPacket.java | 1 + .../network/packets/client/MessagePacket.java | 13 +- .../packets/client/TeleporterPacket.java | 3 +- .../packets/large/LargeScrollDataPacket.java | 23 +++- .../packets/large/LargeScrollGroupPacket.java | 17 ++- .../packets/large/LargeScrollListPacket.java | 14 +- src/main/java/noppes/npcs/CustomNpcs.java | 8 ++ .../java/noppes/npcs/NoppesUtilServer.java | 26 ++-- .../java/noppes/npcs/PacketHandlerServer.java | 15 +- 11 files changed, 219 insertions(+), 152 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java index 2ad5a526a..6d97f1e83 100644 --- a/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java +++ b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java @@ -1,38 +1,43 @@ package kamkeel.npcs.network; -import cpw.mods.fml.common.network.internal.FMLProxyPacket; + import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import net.minecraft.entity.player.EntityPlayer; +import org.lwjgl.Sys; import java.io.IOException; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.UUID; -import java.util.ArrayList; +import java.util.concurrent.ConcurrentHashMap; public abstract class LargeAbstractPacket extends AbstractPacket { - private static final int CHUNK_SIZE = 10000; - private static final Map packetChunks = new HashMap<>(); - private static final Map receivedChunks = new HashMap<>(); + + private static final Map packetChunks = new ConcurrentHashMap<>(); + private static final int CHUNK_SIZE = 5000; @Override public void sendData(ByteBuf out) throws IOException { - ByteBuf data = Unpooled.buffer(); - writeData(data); - int totalSize = data.readableBytes(); - UUID packetId = UUID.randomUUID(); // Unique ID for this packet - int totalChunks = (int) Math.ceil((double) totalSize / CHUNK_SIZE); + byte[] data = getData(); + int totalSize = data.length; + UUID packetId = UUID.randomUUID(); - for (int i = 0; i < totalSize; i += CHUNK_SIZE) { - int chunkSize = Math.min(CHUNK_SIZE, totalSize - i); - ByteBuf chunk = data.readBytes(chunkSize); + System.out.println("Sending data with packetId: " + packetId + ", totalSize: " + totalSize); + + // Break the data into chunks of CHUNK_SIZE bytes each + for (int offset = 0; offset < totalSize; offset += CHUNK_SIZE) { + int chunkSize = Math.min(CHUNK_SIZE, totalSize - offset); + + // Write a header for each chunk out.writeLong(packetId.getMostSignificantBits()); out.writeLong(packetId.getLeastSignificantBits()); out.writeInt(totalSize); - out.writeInt(i); - out.writeInt(totalChunks); - out.writeBytes(chunk); + out.writeInt(offset); + out.writeInt((totalSize + CHUNK_SIZE - 1) / CHUNK_SIZE); // totalChunks + + // Write the chunk bytes + out.writeBytes(data, offset, chunkSize); + + System.out.println("Sent chunk with offset: " + offset + ", size: " + chunkSize); } } @@ -41,51 +46,70 @@ public abstract class LargeAbstractPacket extends AbstractPacket { long mostSigBits = in.readLong(); long leastSigBits = in.readLong(); UUID packetId = new UUID(mostSigBits, leastSigBits); + int totalSize = in.readInt(); int offset = in.readInt(); - int totalChunks = in.readInt(); - ByteBuf chunk = in.readBytes(in.readableBytes()); + int totalChunks = in.readInt(); // Currently unused aside from potential debugging/verification + int chunkSize = Math.min(CHUNK_SIZE, totalSize - offset); - ByteBuf data = packetChunks.computeIfAbsent(packetId, k -> Unpooled.buffer(totalSize)); - data.setBytes(offset, chunk); + // Basic validation to ensure the chunk won't overwrite out of bounds + if (chunkSize <= 0 || offset < 0 || (offset + chunkSize) > totalSize) { + throw new IndexOutOfBoundsException("Invalid chunk size/offset: chunkSize=" + + chunkSize + ", offset=" + offset + ", totalSize=" + totalSize); + } - int receivedChunkCount = receivedChunks.compute(packetId, (k, v) -> (v == null) ? 1 : v + 1); + // Read the exact chunk data + ByteBuf chunk = in.readBytes(chunkSize); - if (receivedChunkCount == totalChunks) { + System.out.println("Receiving data: packetId=" + packetId + + ", totalSize=" + totalSize + + ", offset=" + offset + + ", chunkSize=" + chunkSize); + + // Store the received chunk in a PacketStorage + PacketStorage storage = packetChunks.computeIfAbsent(packetId, + k -> new PacketStorage(Unpooled.buffer(totalSize), 0, totalSize)); + + // Write this chunk into the buffer at the correct offset + storage.data.setBytes(offset, chunk); + storage.receivedSoFar += chunkSize; + + // If we've received all bytes, finalize + if (storage.receivedSoFar >= totalSize) { + // Remove from the map to clean up packetChunks.remove(packetId); - receivedChunks.remove(packetId); - handleData(data, player); + + // We now have the complete data in storage.data + // Copy (or slice) the exact bytes, then handle them + ByteBuf completeData = storage.data.copy(0, totalSize); + + System.out.println("Received complete data for packetId: " + packetId); + + // Clean up and handle + storage.data.release(); + handleCompleteData(completeData, player); + completeData.release(); } + + chunk.release(); } - public final List generatePacketChunks() { - List chunks = new ArrayList<>(); - ByteBuf data = Unpooled.buffer(); - try { - writeData(data); - int totalSize = data.readableBytes(); - UUID packetId = UUID.randomUUID(); - int totalChunks = (int) Math.ceil((double) totalSize / CHUNK_SIZE); + protected abstract byte[] getData() throws IOException; - for (int i = 0; i < totalSize; i += CHUNK_SIZE) { - int chunkSize = Math.min(CHUNK_SIZE, totalSize - i); - ByteBuf chunk = data.readBytes(chunkSize); - ByteBuf out = Unpooled.buffer(); - out.writeLong(packetId.getMostSignificantBits()); - out.writeLong(packetId.getLeastSignificantBits()); - out.writeInt(totalSize); - out.writeInt(i); - out.writeInt(totalChunks); - out.writeBytes(chunk); - chunks.add(new FMLProxyPacket(out, getChannel().getChannelName())); - } - } catch (IOException e) { - e.printStackTrace(); + protected abstract void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException; + + /** + * Simple storage class to keep track of partial data and how many bytes we've received so far. + */ + private static class PacketStorage { + final ByteBuf data; + int receivedSoFar; + final int totalSize; + + PacketStorage(ByteBuf data, int receivedSoFar, int totalSize) { + this.data = data; + this.receivedSoFar = receivedSoFar; + this.totalSize = totalSize; } - return chunks; } - - public abstract void writeData(ByteBuf out) throws IOException; - - public abstract void handleData(ByteBuf data, EntityPlayer player) throws IOException; } diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 86bc5e7a3..ecc5dbe75 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -15,7 +15,6 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.NetHandlerPlayServer; import noppes.npcs.CustomNpcs; -import java.io.IOException; import java.util.*; import java.util.function.Consumer; @@ -43,6 +42,9 @@ public final class PacketHandler { LARGE_PACKET.registerPacket(new LargeScrollGroupPacket()); LARGE_PACKET.registerPacket(new LargeScrollDataPacket()); LARGE_PACKET.registerPacket(new LargeScrollListPacket()); + + // Log channel registration + System.out.println("PacketHandler initialized and channels registered."); } public void registerChannels() { @@ -51,105 +53,110 @@ public final class PacketHandler { eventChannel = NetworkRegistry.INSTANCE.newEventDrivenChannel(channel.getChannelName()); eventChannel.register(this); channels.put(channel.getChannelType(), eventChannel); + System.out.println("Registered channel: " + channel.getChannelName()); } } public PacketChannel getPacketChannel(EnumPacketType type){ - PacketChannel packetChannel; - switch (type){ - case DATA: - packetChannel = DATA_PACKET; - break; - case INFO: - packetChannel = INFO_PACKET; - break; - case LARGE: - packetChannel = LARGE_PACKET; - break; - default: - packetChannel = CLIENT_PACKET; - break; - } - return packetChannel; + return packetChannels.stream() + .filter(channel -> channel.getChannelType() == type) + .findFirst() + .orElse(null); } public FMLEventChannel getEventChannel(AbstractPacket abstractPacket){ - return channels.get(getPacketChannel(abstractPacket.getChannel().getChannelType())); + PacketChannel packetChannel = getPacketChannel(abstractPacket.getChannel().getChannelType()); + if (packetChannel == null) { + return null; + } + return channels.get(packetChannel.getChannelType()); } @SubscribeEvent public void onServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) { - try { - handlePacket(event.packet, ((NetHandlerPlayServer) event.handler).playerEntity); - } catch (Exception e) { - e.printStackTrace(); - } + handlePacket(event.packet, ((NetHandlerPlayServer) event.handler).playerEntity); } @SubscribeEvent public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) { - try { - handlePacket(event.packet, CustomNpcs.proxy.getPlayer()); - } catch (Exception e) { - e.printStackTrace(); - } + handlePacket(event.packet, CustomNpcs.proxy.getPlayer()); } private void handlePacket(FMLProxyPacket packet, EntityPlayer player) { ByteBuf buf = packet.payload(); try { - int channelTypeOrdinal = buf.readInt(); int packetTypeOrdinal = buf.readInt(); - - EnumPacketType channelType = EnumPacketType.values()[channelTypeOrdinal]; - PacketChannel packetChannel = getPacketChannel(channelType); - - AbstractPacket abstractPacket = packetChannel.packets.get(packetTypeOrdinal); - if (abstractPacket != null) { - try { - abstractPacket.receiveData(buf, player); - } catch (IOException e) { - e.printStackTrace(); - } + EnumPacketType packetType = EnumPacketType.values()[packetTypeOrdinal]; + PacketChannel packetChannel = getPacketChannel(packetType); + if (packetChannel == null) { + System.err.println("Error: Packet channel is null for packet type: " + packetType); + return; } + int packetId = buf.readInt(); + AbstractPacket abstractPacket = packetChannel.packets.get(packetId); + if (abstractPacket == null) { + System.err.println("Error: Abstract packet is null for packet ID: " + packetId); + return; + } + abstractPacket.receiveData(buf, player); + } catch (IndexOutOfBoundsException e) { + System.err.println("Error: IndexOutOfBoundsException in handlePacket: " + e.getMessage()); + e.printStackTrace(); } catch (Exception e) { + System.err.println("Error: Exception in handlePacket: " + e.getMessage()); e.printStackTrace(); } } public void sendPacket(AbstractPacket packet, Consumer sendFunction) { - try { - if (packet instanceof LargeAbstractPacket) { - List chunks = ((LargeAbstractPacket) packet).generatePacketChunks(); - for (FMLProxyPacket chunk : chunks) { - sendFunction.accept(chunk); - } - } else { - FMLProxyPacket proxyPacket = packet.generatePacket(); - sendFunction.accept(proxyPacket); - } - } catch (Exception e) { - e.printStackTrace(); + FMLProxyPacket proxyPacket = packet.generatePacket(); + if (proxyPacket != null) { + sendFunction.accept(proxyPacket); } } public void sendToPlayer(AbstractPacket packet, EntityPlayerMP player) { - sendPacket(packet, proxyPacket -> getEventChannel(packet).sendTo(proxyPacket, player)); + FMLEventChannel eventChannel = getEventChannel(packet); + if (eventChannel == null) { + System.err.println("Error: Event channel is null for packet: " + packet.getClass().getName()); + return; + } + sendPacket(packet, proxyPacket -> eventChannel.sendTo(proxyPacket, player)); } public void sendToServer(AbstractPacket packet) { - sendPacket(packet, proxyPacket -> getEventChannel(packet).sendToServer(proxyPacket)); + FMLEventChannel eventChannel = getEventChannel(packet); + if (eventChannel == null) { + System.err.println("Error: Event channel is null for packet: " + packet.getClass().getName()); + return; + } + sendPacket(packet, eventChannel::sendToServer); } public void sendToAll(AbstractPacket packet) { - sendPacket(packet, proxyPacket -> getEventChannel(packet).sendToAll(proxyPacket)); + FMLEventChannel eventChannel = getEventChannel(packet); + if (eventChannel == null) { + System.err.println("Error: Event channel is null for packet: " + packet.getClass().getName()); + return; + } + sendPacket(packet, eventChannel::sendToAll); } public void sendToAllAround(AbstractPacket packet, NetworkRegistry.TargetPoint point) { - sendPacket(packet, proxyPacket -> getEventChannel(packet).sendToAllAround(proxyPacket, point)); + FMLEventChannel eventChannel = getEventChannel(packet); + if (eventChannel == null) { + System.err.println("Error: Event channel is null for packet: " + packet.getClass().getName()); + return; + } + sendPacket(packet, proxyPacket -> eventChannel.sendToAllAround(proxyPacket, point)); } public void sendToDimension(AbstractPacket packet, int dimensionId) { - sendPacket(packet, proxyPacket -> getEventChannel(packet).sendToDimension(proxyPacket, dimensionId)); + FMLEventChannel eventChannel = getEventChannel(packet); + if (eventChannel == null) { + System.err.println("Error: Event channel is null for packet: " + packet.getClass().getName()); + return; + } + sendPacket(packet, proxyPacket -> eventChannel.sendToDimension(proxyPacket, dimensionId)); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java index e25032599..c2c2b4d21 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java @@ -6,6 +6,7 @@ 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.ClientEventHandler; import java.io.IOException; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/MessagePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/MessagePacket.java index 59aa475fe..f1e00a55a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/MessagePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/MessagePacket.java @@ -42,11 +42,12 @@ public final class MessagePacket extends AbstractPacket { if(CustomNpcs.side() != Side.CLIENT) return; - 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); + // 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/TeleporterPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/TeleporterPacket.java index f6df09f6b..1063f703e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/TeleporterPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/TeleporterPacket.java @@ -8,6 +8,7 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.CustomNpcs; import noppes.npcs.constants.EnumGuiType; +import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; @@ -33,6 +34,6 @@ public final class TeleporterPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - CustomNpcs.proxy.openGui(null, EnumGuiType.NpcDimensions); + CustomNpcs.proxy.openGui((EntityNPCInterface)null,EnumGuiType.NpcDimensions); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java index 9a31961d6..387d6c17c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.large; 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; @@ -10,6 +11,7 @@ import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.client.NoppesUtil; import java.io.IOException; +import java.util.HashMap; import java.util.Map; public final class LargeScrollDataPacket extends LargeAbstractPacket { @@ -34,16 +36,27 @@ public final class LargeScrollDataPacket extends LargeAbstractPacket { } @Override - public void writeData(ByteBuf out) throws IOException { - out.writeInt(data.size()); + protected byte[] getData() throws IOException { + ByteBuf buffer = Unpooled.buffer(); + buffer.writeInt(data.size()); for (Map.Entry entry : data.entrySet()) { - ByteBufUtils.writeString(out, entry.getKey()); - out.writeInt(entry.getValue()); + buffer.writeInt(entry.getValue()); + ByteBufUtils.writeString(buffer, entry.getKey()); } + byte[] bytes = new byte[buffer.readableBytes()]; + buffer.readBytes(bytes); + System.out.println("getData: Written data to buffer: " + buffer.toString()); + return bytes; } @Override - public void handleData(ByteBuf data, EntityPlayer player) throws IOException { + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { + if (data == null || data.readableBytes() <= 0) { + System.err.println("LargeScrollDataPacket: ByteBuf is empty or already read."); + return; + } + data.readerIndex(0); + System.out.println("handleCompleteData: Reading data from buffer: " + data.toString()); NoppesUtil.setScrollData(data); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java index 40a1a2f4f..bd3ef8dd5 100644 --- a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.large; 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; @@ -34,16 +35,20 @@ public final class LargeScrollGroupPacket extends LargeAbstractPacket { } @Override - public void writeData(ByteBuf out) throws IOException { - out.writeInt(data.size()); + protected byte[] getData() throws IOException { + ByteBuf buffer = Unpooled.buffer(); + buffer.writeInt(data.size()); for (Map.Entry entry : data.entrySet()) { - ByteBufUtils.writeString(out, entry.getKey()); - out.writeInt(entry.getValue()); + ByteBufUtils.writeString(buffer, entry.getKey()); + buffer.writeInt(entry.getValue()); } + byte[] bytes = new byte[buffer.readableBytes()]; + buffer.readBytes(bytes); + return bytes; } @Override - public void handleData(ByteBuf data, EntityPlayer player) throws IOException { - NoppesUtil.setScrollGroup(data); + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { + NoppesUtil.setScrollData(data); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollListPacket.java b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollListPacket.java index b2e8d5af5..6c71dc81d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollListPacket.java @@ -1,7 +1,7 @@ -// src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java package kamkeel.npcs.network.packets.large; 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; @@ -35,15 +35,19 @@ public final class LargeScrollListPacket extends LargeAbstractPacket { } @Override - public void writeData(ByteBuf out) throws IOException { - out.writeInt(data.size()); + protected byte[] getData() throws IOException { + ByteBuf buffer = Unpooled.buffer(); + buffer.writeInt(data.size()); for (String entry : data) { - ByteBufUtils.writeString(out, entry); + ByteBufUtils.writeString(buffer, entry); } + byte[] bytes = new byte[buffer.readableBytes()]; + buffer.readBytes(bytes); + return bytes; } @Override - public void handleData(ByteBuf data, EntityPlayer player) throws IOException { + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { NoppesUtil.setScrollList(data); } } diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 4e800cbd7..0acc85a7d 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -16,6 +16,7 @@ import kamkeel.npcs.command.profile.CommandProfile; import kamkeel.npcs.controllers.ProfileController; import kamkeel.npcs.controllers.data.CNPCData; import kamkeel.npcs.developer.Developer; +import kamkeel.npcs.network.PacketHandler; import net.minecraft.block.Block; import net.minecraft.block.BlockIce; import net.minecraft.block.BlockLeavesBase; @@ -249,6 +250,13 @@ public class CustomNpcs { ServerTagMapController.Instance = new ServerTagMapController(); } + //Loading items in the about to start event was corrupting items with a damage value + @EventHandler + public void postInit(FMLPostInitializationEvent event) { + PacketHandler.Instance = new PacketHandler(); + } + + @EventHandler public void stopped(FMLServerStoppedEvent event){ ServerCloneController.Instance = null; diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index ae7dcb408..313b56b61 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -49,6 +49,8 @@ import java.text.DecimalFormat; import java.util.*; import java.util.zip.GZIPOutputStream; +import static kamkeel.npcs.network.KamUtilServer.sendScrollData; + public class NoppesUtilServer { private static HashMap editingQuests = new HashMap(); @@ -505,7 +507,7 @@ public class NoppesUtilServer { } } - NoppesUtilServer.sendScrollData(player, map); + sendScrollData(player, map); } public static void removePlayerData(ByteBuf buffer, EntityPlayerMP player) throws IOException { @@ -593,17 +595,17 @@ 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 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(); diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 4f5bbb9d6..149a3db47 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -6,6 +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 net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.passive.EntityVillager; @@ -102,7 +103,7 @@ public class PacketHandlerServer{ WorldProvider provider = DimensionManager.createProviderFor(id); map.put(provider.getDimensionName(), id); } - NoppesUtilServer.sendScrollData(player, map); + KamUtilServer.sendScrollData(player, map); } else if(type == EnumPacketServer.TagsGet){ NoppesUtilServer.sendTagDataAll(player); } else if (type == EnumPacketServer.NpcTagsGet) { @@ -584,7 +585,7 @@ public class PacketHandlerServer{ Server.sendData(player, EnumPacketClient.GUI_DATA, compound); } else if(type == EnumPacketServer.DialogCategoriesGet){ - NoppesUtilServer.sendScrollData(player, DialogController.Instance.getScroll()); + KamUtilServer.sendScrollData(player, DialogController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogsGetFromDialog){ Dialog dialog = DialogController.Instance.dialogs.get(buffer.readInt()); @@ -797,7 +798,7 @@ public class PacketHandlerServer{ NoppesUtilServer.setRecipeGui(player,recipe); } else if(type == EnumPacketServer.NaturalSpawnGetAll){ - NoppesUtilServer.sendScrollData(player, SpawnController.Instance.getScroll()); + KamUtilServer.sendScrollData(player, SpawnController.Instance.getScroll()); } else if(type == EnumPacketServer.NaturalSpawnGet){ SpawnData spawn = SpawnController.Instance.getSpawnData(buffer.readInt()); @@ -810,21 +811,21 @@ public class PacketHandlerServer{ data.readNBT(Server.readNBT(buffer)); SpawnController.Instance.saveSpawnData(data); - NoppesUtilServer.sendScrollData(player, SpawnController.Instance.getScroll()); + KamUtilServer.sendScrollData(player, SpawnController.Instance.getScroll()); } else if(type == EnumPacketServer.NaturalSpawnRemove){ SpawnController.Instance.removeSpawnData(buffer.readInt()); - NoppesUtilServer.sendScrollData(player, SpawnController.Instance.getScroll()); + KamUtilServer.sendScrollData(player, SpawnController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogCategorySave){ DialogCategory category = new DialogCategory(); category.readNBT(Server.readNBT(buffer)); DialogController.Instance.saveCategory(category); - NoppesUtilServer.sendScrollData(player, DialogController.Instance.getScroll()); + KamUtilServer.sendScrollData(player, DialogController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogCategoryRemove){ DialogController.Instance.removeCategory(buffer.readInt()); - NoppesUtilServer.sendScrollData(player, DialogController.Instance.getScroll()); + KamUtilServer.sendScrollData(player, DialogController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogCategoryGet){ DialogCategory category = DialogController.Instance.categories.get(buffer.readInt()); From dcf3a0d8b09f88515274eb27486c680169126818 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 29 Jan 2025 15:08:24 -0500 Subject: [PATCH 028/157] Fix Packet Logging --- .../npcs/network/LargeAbstractPacket.java | 11 --------- .../kamkeel/npcs/network/PacketHandler.java | 23 +++++++++---------- .../packets/large/LargeScrollDataPacket.java | 7 ------ .../packets/large/LargeScrollGroupPacket.java | 2 +- 4 files changed, 12 insertions(+), 31 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java index 6d97f1e83..261eb8f4e 100644 --- a/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java +++ b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java @@ -21,8 +21,6 @@ public abstract class LargeAbstractPacket extends AbstractPacket { int totalSize = data.length; UUID packetId = UUID.randomUUID(); - System.out.println("Sending data with packetId: " + packetId + ", totalSize: " + totalSize); - // Break the data into chunks of CHUNK_SIZE bytes each for (int offset = 0; offset < totalSize; offset += CHUNK_SIZE) { int chunkSize = Math.min(CHUNK_SIZE, totalSize - offset); @@ -36,8 +34,6 @@ public abstract class LargeAbstractPacket extends AbstractPacket { // Write the chunk bytes out.writeBytes(data, offset, chunkSize); - - System.out.println("Sent chunk with offset: " + offset + ", size: " + chunkSize); } } @@ -61,11 +57,6 @@ public abstract class LargeAbstractPacket extends AbstractPacket { // Read the exact chunk data ByteBuf chunk = in.readBytes(chunkSize); - System.out.println("Receiving data: packetId=" + packetId - + ", totalSize=" + totalSize - + ", offset=" + offset - + ", chunkSize=" + chunkSize); - // Store the received chunk in a PacketStorage PacketStorage storage = packetChunks.computeIfAbsent(packetId, k -> new PacketStorage(Unpooled.buffer(totalSize), 0, totalSize)); @@ -83,8 +74,6 @@ public abstract class LargeAbstractPacket extends AbstractPacket { // Copy (or slice) the exact bytes, then handle them ByteBuf completeData = storage.data.copy(0, totalSize); - System.out.println("Received complete data for packetId: " + packetId); - // Clean up and handle storage.data.release(); handleCompleteData(completeData, player); diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index ecc5dbe75..33dd11cf7 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -14,6 +14,7 @@ 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 java.util.*; import java.util.function.Consumer; @@ -28,7 +29,7 @@ public final class PacketHandler { public final static PacketChannel CLIENT_PACKET = new PacketChannel("CNPC+|Client", EnumPacketType.CLIENT); public final static PacketChannel LARGE_PACKET = new PacketChannel("CNPC+|Large", EnumPacketType.LARGE); - public final static List packetChannels = new ArrayList<>(); + private final static List packetChannels = new ArrayList<>(); public PacketHandler() { // Register Channels @@ -89,22 +90,20 @@ public final class PacketHandler { EnumPacketType packetType = EnumPacketType.values()[packetTypeOrdinal]; PacketChannel packetChannel = getPacketChannel(packetType); if (packetChannel == null) { - System.err.println("Error: Packet channel is null for packet type: " + packetType); + LogWriter.error("Error: Packet channel is null for packet type: " + packetType); return; } int packetId = buf.readInt(); AbstractPacket abstractPacket = packetChannel.packets.get(packetId); if (abstractPacket == null) { - System.err.println("Error: Abstract packet is null for packet ID: " + packetId); + LogWriter.error("Error: Abstract packet is null for packet ID: " + packetId); return; } abstractPacket.receiveData(buf, player); } catch (IndexOutOfBoundsException e) { - System.err.println("Error: IndexOutOfBoundsException in handlePacket: " + e.getMessage()); - e.printStackTrace(); + LogWriter.error("Error: IndexOutOfBoundsException in handlePacket: " + e.getMessage()); } catch (Exception e) { - System.err.println("Error: Exception in handlePacket: " + e.getMessage()); - e.printStackTrace(); + LogWriter.error("Error: Exception in handlePacket: " + e.getMessage()); } } @@ -118,7 +117,7 @@ public final class PacketHandler { public void sendToPlayer(AbstractPacket packet, EntityPlayerMP player) { FMLEventChannel eventChannel = getEventChannel(packet); if (eventChannel == null) { - System.err.println("Error: Event channel is null for packet: " + packet.getClass().getName()); + LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); return; } sendPacket(packet, proxyPacket -> eventChannel.sendTo(proxyPacket, player)); @@ -127,7 +126,7 @@ public final class PacketHandler { public void sendToServer(AbstractPacket packet) { FMLEventChannel eventChannel = getEventChannel(packet); if (eventChannel == null) { - System.err.println("Error: Event channel is null for packet: " + packet.getClass().getName()); + LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); return; } sendPacket(packet, eventChannel::sendToServer); @@ -136,7 +135,7 @@ public final class PacketHandler { public void sendToAll(AbstractPacket packet) { FMLEventChannel eventChannel = getEventChannel(packet); if (eventChannel == null) { - System.err.println("Error: Event channel is null for packet: " + packet.getClass().getName()); + LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); return; } sendPacket(packet, eventChannel::sendToAll); @@ -145,7 +144,7 @@ public final class PacketHandler { public void sendToAllAround(AbstractPacket packet, NetworkRegistry.TargetPoint point) { FMLEventChannel eventChannel = getEventChannel(packet); if (eventChannel == null) { - System.err.println("Error: Event channel is null for packet: " + packet.getClass().getName()); + LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); return; } sendPacket(packet, proxyPacket -> eventChannel.sendToAllAround(proxyPacket, point)); @@ -154,7 +153,7 @@ public final class PacketHandler { public void sendToDimension(AbstractPacket packet, int dimensionId) { FMLEventChannel eventChannel = getEventChannel(packet); if (eventChannel == null) { - System.err.println("Error: Event channel is null for packet: " + packet.getClass().getName()); + LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); return; } sendPacket(packet, proxyPacket -> eventChannel.sendToDimension(proxyPacket, dimensionId)); diff --git a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java index 387d6c17c..0fef898a1 100644 --- a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java @@ -45,18 +45,11 @@ public final class LargeScrollDataPacket extends LargeAbstractPacket { } byte[] bytes = new byte[buffer.readableBytes()]; buffer.readBytes(bytes); - System.out.println("getData: Written data to buffer: " + buffer.toString()); return bytes; } @Override protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { - if (data == null || data.readableBytes() <= 0) { - System.err.println("LargeScrollDataPacket: ByteBuf is empty or already read."); - return; - } - data.readerIndex(0); - System.out.println("handleCompleteData: Reading data from buffer: " + data.toString()); NoppesUtil.setScrollData(data); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java index bd3ef8dd5..2301ab2f9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java @@ -39,8 +39,8 @@ public final class LargeScrollGroupPacket extends LargeAbstractPacket { ByteBuf buffer = Unpooled.buffer(); buffer.writeInt(data.size()); for (Map.Entry entry : data.entrySet()) { - ByteBufUtils.writeString(buffer, entry.getKey()); buffer.writeInt(entry.getValue()); + ByteBufUtils.writeString(buffer, entry.getKey()); } byte[] bytes = new byte[buffer.readableBytes()]; buffer.readBytes(bytes); From de560321187bdc6efef26f39a6cffb7b5e04d5e1 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 29 Jan 2025 18:25:34 -0500 Subject: [PATCH 029/157] Syncing and Large Packet Completion --- src/main/java/foxz/command/CmdDialog.java | 3 +- src/main/java/foxz/command/CmdQuest.java | 3 +- .../kamkeel/npcs/command/DialogCommand.java | 3 +- .../kamkeel/npcs/command/QuestCommand.java | 3 +- .../kamkeel/npcs/controllers/SyncMaster.java | 383 ++++++++++++++++++ .../kamkeel/npcs/network/AbstractPacket.java | 17 +- .../kamkeel/npcs/network/KamUtilServer.java | 4 +- .../npcs/network/LargeAbstractPacket.java | 54 ++- .../kamkeel/npcs/network/PacketHandler.java | 71 ++-- .../npcs/network/enums/EnumClientPacket.java | 1 + .../npcs/network/enums/EnumSyncAction.java | 7 + .../npcs/network/enums/EnumSyncType.java | 11 + .../network/packets/client/DBCFormPacket.java | 37 -- .../packets/client/LargeNBTEndPacket.java | 38 -- .../packets/client/LargeNBTPartPacket.java | 39 -- .../large/LargeScrollDataPacket.java | 2 +- .../large/LargeScrollGroupPacket.java | 2 +- .../large/LargeScrollListPacket.java | 2 +- .../client/large/sync/LargeSyncPacket.java | 102 +++++ .../packets/client/sync/SyncAddPacket.java | 41 -- .../packets/client/sync/SyncEndPacket.java | 41 -- .../packets/client/sync/SyncPlayerPacket.java | 38 -- .../packets/client/sync/SyncRemovePacket.java | 39 -- .../packets/client/sync/SyncUpdatePacket.java | 41 -- src/main/java/noppes/npcs/CommonProxy.java | 6 +- src/main/java/noppes/npcs/CustomNpcs.java | 8 +- .../java/noppes/npcs/NoppesUtilServer.java | 45 +- .../noppes/npcs/ScriptPlayerEventHandler.java | 3 +- .../java/noppes/npcs/ServerTickHandler.java | 3 +- .../noppes/npcs/blocks/BlockCampfire.java | 2 - .../java/noppes/npcs/client/NoppesUtil.java | 47 --- .../npcs/client/PacketHandlerClient.java | 28 -- .../npcs/constants/EnumPacketClient.java | 3 - .../java/noppes/npcs/constants/SyncType.java | 11 - .../npcs/controllers/DialogController.java | 15 +- .../npcs/controllers/FactionController.java | 9 +- .../npcs/controllers/MagicController.java | 5 +- .../npcs/controllers/QuestController.java | 11 +- .../npcs/controllers/SyncController.java | 332 --------------- 39 files changed, 648 insertions(+), 862 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/controllers/SyncMaster.java create mode 100644 src/main/java/kamkeel/npcs/network/enums/EnumSyncAction.java create mode 100644 src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/DBCFormPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/LargeNBTEndPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/LargeNBTPartPacket.java rename src/main/java/kamkeel/npcs/network/packets/{ => client}/large/LargeScrollDataPacket.java (96%) rename src/main/java/kamkeel/npcs/network/packets/{ => client}/large/LargeScrollGroupPacket.java (96%) rename src/main/java/kamkeel/npcs/network/packets/{ => client}/large/LargeScrollListPacket.java (96%) create mode 100644 src/main/java/kamkeel/npcs/network/packets/client/large/sync/LargeSyncPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sync/SyncAddPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sync/SyncEndPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sync/SyncPlayerPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRemovePacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sync/SyncUpdatePacket.java delete mode 100644 src/main/java/noppes/npcs/constants/SyncType.java diff --git a/src/main/java/foxz/command/CmdDialog.java b/src/main/java/foxz/command/CmdDialog.java index 250717dd4..6dfa15a4f 100644 --- a/src/main/java/foxz/command/CmdDialog.java +++ b/src/main/java/foxz/command/CmdDialog.java @@ -5,6 +5,7 @@ import foxz.commandhelper.annotations.Command; import foxz.commandhelper.annotations.SubCommand; import foxz.commandhelper.permissions.OpOnly; import foxz.commandhelper.permissions.ParamCheck; +import kamkeel.npcs.controllers.SyncMaster; import net.minecraft.command.CommandBase; import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.NoppesUtilServer; @@ -89,7 +90,7 @@ public class CmdDialog extends ChMcLogger { ) public boolean reload(String args[]){ new DialogController().load(); - SyncController.syncAllDialogs(); + SyncMaster.syncAllDialogs(); return true; } diff --git a/src/main/java/foxz/command/CmdQuest.java b/src/main/java/foxz/command/CmdQuest.java index e0500f3e1..ca5f758ae 100644 --- a/src/main/java/foxz/command/CmdQuest.java +++ b/src/main/java/foxz/command/CmdQuest.java @@ -5,6 +5,7 @@ import foxz.commandhelper.annotations.Command; import foxz.commandhelper.annotations.SubCommand; import foxz.commandhelper.permissions.OpOnly; import foxz.commandhelper.permissions.ParamCheck; +import kamkeel.npcs.controllers.SyncMaster; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.Server; import noppes.npcs.constants.EnumPacketClient; @@ -170,7 +171,7 @@ public class CmdQuest extends ChMcLogger{ ) public boolean reload(String args[]){ new QuestController().load(); - SyncController.syncAllQuests(); + SyncMaster.syncAllQuests(); return true; } } diff --git a/src/main/java/kamkeel/npcs/command/DialogCommand.java b/src/main/java/kamkeel/npcs/command/DialogCommand.java index 4a4e3bc66..c139e9b09 100644 --- a/src/main/java/kamkeel/npcs/command/DialogCommand.java +++ b/src/main/java/kamkeel/npcs/command/DialogCommand.java @@ -1,5 +1,6 @@ package kamkeel.npcs.command; +import kamkeel.npcs.controllers.SyncMaster; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; @@ -89,7 +90,7 @@ public class DialogCommand extends CommandKamkeelBase { ) public void reload(ICommandSender sender, String args[]){ new DialogController().load(); - SyncController.syncAllDialogs(); + SyncMaster.syncAllDialogs(); sendResult(sender, "Dialogs Reloaded"); } diff --git a/src/main/java/kamkeel/npcs/command/QuestCommand.java b/src/main/java/kamkeel/npcs/command/QuestCommand.java index cd89ab044..1a36ee8b7 100644 --- a/src/main/java/kamkeel/npcs/command/QuestCommand.java +++ b/src/main/java/kamkeel/npcs/command/QuestCommand.java @@ -1,5 +1,6 @@ package kamkeel.npcs.command; +import kamkeel.npcs.controllers.SyncMaster; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; @@ -382,7 +383,7 @@ public class QuestCommand extends CommandKamkeelBase { ) public void reload(ICommandSender sender, String args[]){ new QuestController().load(); - SyncController.syncAllQuests(); + SyncMaster.syncAllQuests(); sendResult(sender, "Quests Reloaded"); } } diff --git a/src/main/java/kamkeel/npcs/controllers/SyncMaster.java b/src/main/java/kamkeel/npcs/controllers/SyncMaster.java new file mode 100644 index 000000000..7b9048210 --- /dev/null +++ b/src/main/java/kamkeel/npcs/controllers/SyncMaster.java @@ -0,0 +1,383 @@ +package kamkeel.npcs.controllers; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import kamkeel.npcs.addon.DBCAddon; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.packets.client.large.sync.LargeSyncPacket; +import kamkeel.npcs.network.enums.EnumSyncAction; +import kamkeel.npcs.network.enums.EnumSyncType; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import noppes.npcs.client.ClientCacheHandler; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.FactionController; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.data.*; + +import java.util.HashMap; + +public class SyncMaster { + + public static void syncPlayer(EntityPlayerMP player){ + // 1) Factions + PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + EnumSyncType.FACTION, + EnumSyncAction.RELOAD, + -1, + factionsNBT() + ), player); + + // 2) Dialog Categories + PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + EnumSyncType.DIALOG_CATEGORY, + EnumSyncAction.RELOAD, + -1, + dialogCategoriesNBT() + ), player); + + // 3) Quest Categories + PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + EnumSyncType.QUEST_CATEGORY, + EnumSyncAction.RELOAD, + -1, + questCategoriesNBT() + ), player); + + DBCAddon.instance.syncPlayer(player); + syncPlayerData(player, false); + } + + public static NBTTagCompound factionsNBT(){ + NBTTagList list = new NBTTagList(); + NBTTagCompound compound = new NBTTagCompound(); + for(Faction faction : FactionController.getInstance().factions.values()){ + NBTTagCompound factioNBT = new NBTTagCompound(); + faction.writeNBT(factioNBT); + list.appendTag(factioNBT); + } + compound.setTag("Factions", list); + return compound; + } + + public static NBTTagCompound dialogCategoriesNBT(){ + NBTTagCompound compound = new NBTTagCompound(); + NBTTagList categoryList = new NBTTagList(); + for(DialogCategory category : DialogController.Instance.categories.values()){ + NBTTagCompound questCompound = new NBTTagCompound();; + NBTTagList dialogList = new NBTTagList(); + for(int dialogID : category.dialogs.keySet()){ + Dialog quest = category.dialogs.get(dialogID); + dialogList.appendTag(quest.writeToNBT(new NBTTagCompound())); + } + questCompound.setTag("Data", dialogList); + questCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); + } + compound.setTag("DialogCategories", categoryList); + return compound; + } + + public static void syncPlayerData(EntityPlayerMP player, boolean update){ + PlayerData data = PlayerData.get(player); + if(data != null){ + if(update){ + PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + EnumSyncType.PLAYERDATA, + EnumSyncAction.UPDATE, + -1, + data.getSyncNBT()) + , player); + } else { + PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + EnumSyncType.PLAYERDATA, + EnumSyncAction.RELOAD, + -1, + data.getSyncNBTFull()), player); + } + } + } + + public static void syncRemove(EnumSyncType enumSyncType, int id){ + PacketHandler.Instance.sendToAll(new LargeSyncPacket( + enumSyncType, + EnumSyncAction.REMOVE, + id, + new NBTTagCompound() + )); + } + + public static void syncAllDialogs() { + PacketHandler.Instance.sendToAll(new LargeSyncPacket( + EnumSyncType.DIALOG_CATEGORY, + EnumSyncAction.RELOAD, + -1, + dialogCategoriesNBT() + )); + } + + public static void syncAllQuests() { + PacketHandler.Instance.sendToAll(new LargeSyncPacket( + EnumSyncType.QUEST_CATEGORY, + EnumSyncAction.RELOAD, + -1, + questCategoriesNBT() + )); + } + + public static NBTTagCompound questCategoriesNBT(){ + NBTTagCompound compound = new NBTTagCompound(); + NBTTagList categoryList = new NBTTagList(); + for(QuestCategory category : QuestController.Instance.categories.values()){ + NBTTagCompound questCompound = new NBTTagCompound();; + NBTTagList questList = new NBTTagList(); + for(int questID : category.quests.keySet()){ + Quest quest = category.quests.get(questID); + questList.appendTag(quest.writeToNBT(new NBTTagCompound())); + } + questCompound.setTag("Data", questList); + questCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); + } + compound.setTag("QuestCategories", categoryList); + return compound; + } + + @SideOnly(Side.CLIENT) + public static void clientSync(EnumSyncType enumSyncType, NBTTagCompound fullCompound) { + switch (enumSyncType){ + case FACTION: { + NBTTagList list = fullCompound.getTagList("Factions", 10); + for (int i = 0; i < list.tagCount(); i++) { + Faction faction = new Faction(); + faction.readNBT(list.getCompoundTagAt(i)); + FactionController.getInstance().factionsSync.put(faction.id, faction); + } + FactionController.getInstance().factions = FactionController.getInstance().factionsSync; + FactionController.getInstance().factionsSync = new HashMap(); + break; + } + case DIALOG_CATEGORY: { + if(!fullCompound.hasNoTags()){ + NBTTagList categories = fullCompound.getTagList("DialogCategories", 10); + for(int j = 0; j < fullCompound.getTagList("DialogCategories", 10).tagCount(); j++) { + NBTTagCompound categoryCompound = categories.getCompoundTagAt(j); + if(categoryCompound.hasNoTags()) + continue; + + DialogCategory category = new DialogCategory(); + category.readSmallNBT(categoryCompound.getCompoundTag("CatNBT")); + NBTTagList dialogList = categoryCompound.getTagList("Data", 10); + if(DialogController.Instance.categoriesSync.containsKey(category.id)){ + category = DialogController.Instance.categoriesSync.get(category.id); + category.readSmallNBT(categoryCompound.getCompoundTag("CatNBT")); + } + for(int i = 0; i < dialogList.tagCount(); i++) + { + Dialog dialog = new Dialog(); + dialog.readNBT(dialogList.getCompoundTagAt(i)); + dialog.category = category; + category.dialogs.put(dialog.id, dialog); + } + DialogController.Instance.categoriesSync.put(category.id, category); + } + } + + HashMap dialogs = new HashMap(); + for(DialogCategory category : DialogController.Instance.categoriesSync.values()){ + for(Dialog dialog : category.dialogs.values()){ + dialogs.put(dialog.id, dialog); + } + } + + DialogController.Instance.categories = DialogController.Instance.categoriesSync; + DialogController.Instance.dialogs = dialogs; + DialogController.Instance.categoriesSync = new HashMap(); + break; + } + case QUEST_CATEGORY: { + if(!fullCompound.hasNoTags()){ + NBTTagList categories = fullCompound.getTagList("QuestCategories", 10); + for(int j = 0; j < fullCompound.getTagList("QuestCategories", 10).tagCount(); j++) { + NBTTagCompound categoryCompound = categories.getCompoundTagAt(j); + if(categoryCompound.hasNoTags()) + continue; + + QuestCategory category = new QuestCategory(); + category.readSmallNBT(categoryCompound.getCompoundTag("CatNBT")); + NBTTagList questList = categoryCompound.getTagList("Data", 10); + if(QuestController.Instance.categoriesSync.containsKey(category.id)){ + category = QuestController.Instance.categoriesSync.get(category.id); + category.readSmallNBT(categoryCompound.getCompoundTag("CatNBT")); + } + for(int i = 0; i < questList.tagCount(); i++) + { + Quest quest = new Quest(); + quest.readNBT(questList.getCompoundTagAt(i)); + quest.category = category; + category.quests.put(quest.id, quest); + } + QuestController.Instance.categoriesSync.put(category.id, category); + } + } + + HashMap quests = new HashMap(); + for(QuestCategory category : QuestController.Instance.categoriesSync.values()){ + for(Quest quest : category.quests.values()){ + quests.put(quest.id, quest); + } + } + + QuestController.Instance.categories = QuestController.Instance.categoriesSync; + QuestController.Instance.quests = quests; + QuestController.Instance.categoriesSync = new HashMap(); + break; + } + case PLAYERDATA: { + ClientCacheHandler.playerData.setSyncNBTFull(fullCompound); + break; + } + } + } + + /** + * Update Related Tasks + */ + @SideOnly(Side.CLIENT) + public static void clientUpdate(EnumSyncType enumSyncType, int category_id, NBTTagCompound compound) { + switch (enumSyncType){ + case FACTION: { + Faction faction = new Faction(); + faction.readNBT(compound); + FactionController.getInstance().factions.put(faction.id, faction); + break; + } + case DIALOG: { + DialogCategory category = DialogController.Instance.categories.get(category_id); + Dialog dialog = new Dialog(); + dialog.category = category; + dialog.readNBT(compound); + DialogController.Instance.dialogs.put(dialog.id, dialog); + category.dialogs.put(dialog.id, dialog); + break; + } + case QUEST: { + QuestCategory category = QuestController.Instance.categories.get(category_id); + Quest quest = new Quest(); + quest.category = category; + quest.readNBT(compound); + QuestController.Instance.quests.put(quest.id, quest); + category.quests.put(quest.id, quest); + break; + } + case QUEST_CATEGORY: { + QuestCategory category = new QuestCategory(); + category.readSmallNBT(compound.getCompoundTag("CatNBT")); + NBTTagList list = compound.getTagList("Data", 10); + if(QuestController.Instance.categoriesSync.containsKey(category.id)){ + category = QuestController.Instance.categoriesSync.get(category.id); + category.readSmallNBT(compound.getCompoundTag("CatNBT")); + } + for(int i = 0; i < list.tagCount(); i++) + { + Quest quest = new Quest(); + quest.readNBT(list.getCompoundTagAt(i)); + quest.category = category; + category.quests.put(quest.id, quest); + } + QuestController.Instance.categories.put(category.id, category); + break; + } + case DIALOG_CATEGORY: { + DialogCategory category = new DialogCategory(); + category.readSmallNBT(compound.getCompoundTag("CatNBT")); + NBTTagList list = compound.getTagList("Data", 10); + if(DialogController.Instance.categoriesSync.containsKey(category.id)){ + category = DialogController.Instance.categoriesSync.get(category.id); + category.readSmallNBT(compound.getCompoundTag("CatNBT")); + } + for(int i = 0; i < list.tagCount(); i++) + { + Dialog dialog = new Dialog(); + dialog.readNBT(list.getCompoundTagAt(i)); + dialog.category = category; + category.dialogs.put(dialog.id, dialog); + } + DialogController.Instance.categories.put(category.id, category); + break; + } + case PLAYERDATA: { + ClientCacheHandler.playerData.setSyncNBT(compound); + break; + } + } + } + + public static void syncUpdate(EnumSyncType type, int cat, NBTTagCompound compound) { + PacketHandler.Instance.sendToAll(new LargeSyncPacket( + type, + EnumSyncAction.UPDATE, + cat, + compound + )); + } + + + public static NBTTagCompound updateQuestCat(QuestCategory questCategory) { + NBTTagCompound questCompound = new NBTTagCompound(); + NBTTagList questList = new NBTTagList(); + for(int questID : questCategory.quests.keySet()){ + Quest quest = questCategory.quests.get(questID); + questList.appendTag(quest.writeToNBT(new NBTTagCompound())); + } + questCompound.setTag("Data", questList); + questCompound.setTag("CatNBT", questCategory.writeSmallNBT(new NBTTagCompound())); + return questCompound; + } + + public static NBTTagCompound updateDialogCat(DialogCategory dialogCategory) { + NBTTagCompound dialogCompound = new NBTTagCompound(); + NBTTagList dialogList = new NBTTagList(); + for(int questID : dialogCategory.dialogs.keySet()){ + Dialog dialog = dialogCategory.dialogs.get(questID); + dialogList.appendTag(dialog.writeToNBT(new NBTTagCompound())); + } + dialogCompound.setTag("Data", dialogList); + dialogCompound.setTag("CatNBT", dialogCategory.writeSmallNBT(new NBTTagCompound())); + return dialogCompound; + } + + @SideOnly(Side.CLIENT) + public static void clientSyncRemove(EnumSyncType enumSyncType, int id) { + switch (enumSyncType){ + case FACTION: + FactionController.getInstance().factions.remove(id); + break; + case DIALOG: + Dialog dialog = DialogController.Instance.dialogs.remove(id); + if(dialog != null) { + dialog.category.dialogs.remove(id); + } + break; + case DIALOG_CATEGORY: + DialogCategory dialogCategory = DialogController.Instance.categories.remove(id); + if(dialogCategory != null) { + DialogController.Instance.dialogs.keySet().removeAll(dialogCategory.dialogs.keySet()); + } + break; + case QUEST: + Quest quest = QuestController.Instance.quests.remove(id); + if(quest != null) { + quest.category.quests.remove(id); + } + break; + case QUEST_CATEGORY: + QuestCategory questCategory = QuestController.Instance.categories.remove(id); + if(questCategory != null) { + QuestController.Instance.quests.keySet().removeAll(questCategory.quests.keySet()); + } + break; + case MAGIC: + break; + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/AbstractPacket.java b/src/main/java/kamkeel/npcs/network/AbstractPacket.java index 7d373581d..527f50547 100644 --- a/src/main/java/kamkeel/npcs/network/AbstractPacket.java +++ b/src/main/java/kamkeel/npcs/network/AbstractPacket.java @@ -6,6 +6,8 @@ import io.netty.buffer.Unpooled; import net.minecraft.entity.player.EntityPlayer; import java.io.IOException; +import java.util.Collections; +import java.util.List; public abstract class AbstractPacket { @@ -16,11 +18,22 @@ public abstract class AbstractPacket { buf.writeInt(packetChannel.getChannelType().ordinal()); buf.writeInt(getType().ordinal()); sendData(buf); - return new FMLProxyPacket(buf, getChannel().getChannelName()); - } catch (Exception ignored) {} + return new FMLProxyPacket(buf, packetChannel.getChannelName()); + } catch (Exception e) { + // For debugging, you might want to log it + e.printStackTrace(); + } return null; } + public List generatePackets() { + FMLProxyPacket single = generatePacket(); + if (single == null) { + return Collections.emptyList(); + } + return Collections.singletonList(single); + } + public abstract Enum getType(); public abstract PacketChannel getChannel(); public abstract void sendData(ByteBuf out) throws IOException; diff --git a/src/main/java/kamkeel/npcs/network/KamUtilServer.java b/src/main/java/kamkeel/npcs/network/KamUtilServer.java index 4ffb3b7f0..e1cdce6a6 100644 --- a/src/main/java/kamkeel/npcs/network/KamUtilServer.java +++ b/src/main/java/kamkeel/npcs/network/KamUtilServer.java @@ -1,7 +1,7 @@ package kamkeel.npcs.network; -import kamkeel.npcs.network.packets.large.LargeScrollGroupPacket; -import kamkeel.npcs.network.packets.large.LargeScrollDataPacket; +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; diff --git a/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java index 261eb8f4e..d83d3cde3 100644 --- a/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java +++ b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java @@ -1,11 +1,14 @@ package kamkeel.npcs.network; +import cpw.mods.fml.common.network.internal.FMLProxyPacket; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import net.minecraft.entity.player.EntityPlayer; import org.lwjgl.Sys; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -13,28 +16,47 @@ import java.util.concurrent.ConcurrentHashMap; public abstract class LargeAbstractPacket extends AbstractPacket { private static final Map packetChunks = new ConcurrentHashMap<>(); - private static final int CHUNK_SIZE = 5000; + private static final int CHUNK_SIZE = 10000; + /** + * Create multiple FMLProxyPacket objects, each containing up to CHUNK_SIZE bytes. + */ @Override - public void sendData(ByteBuf out) throws IOException { - byte[] data = getData(); - int totalSize = data.length; + public List generatePackets() { + List packets = new ArrayList<>(); + PacketChannel packetChannel = getChannel(); + + byte[] fullData; + try { + fullData = getData(); + } catch (IOException e) { + e.printStackTrace(); + return packets; + } + + int totalSize = fullData.length; UUID packetId = UUID.randomUUID(); - // Break the data into chunks of CHUNK_SIZE bytes each + // Break data into CHUNK_SIZE chunks for (int offset = 0; offset < totalSize; offset += CHUNK_SIZE) { int chunkSize = Math.min(CHUNK_SIZE, totalSize - offset); + ByteBuf chunkBuf = Unpooled.buffer(); - // Write a header for each chunk - out.writeLong(packetId.getMostSignificantBits()); - out.writeLong(packetId.getLeastSignificantBits()); - out.writeInt(totalSize); - out.writeInt(offset); - out.writeInt((totalSize + CHUNK_SIZE - 1) / CHUNK_SIZE); // totalChunks + chunkBuf.writeInt(packetChannel.getChannelType().ordinal()); + chunkBuf.writeInt(getType().ordinal()); - // Write the chunk bytes - out.writeBytes(data, offset, chunkSize); + chunkBuf.writeLong(packetId.getMostSignificantBits()); + chunkBuf.writeLong(packetId.getLeastSignificantBits()); + chunkBuf.writeInt(totalSize); + chunkBuf.writeInt(offset); + chunkBuf.writeInt((totalSize + CHUNK_SIZE - 1) / CHUNK_SIZE); + + chunkBuf.writeBytes(fullData, offset, chunkSize); + + FMLProxyPacket proxyPacket = new FMLProxyPacket(chunkBuf, packetChannel.getChannelName()); + packets.add(proxyPacket); } + return packets; } @Override @@ -87,6 +109,12 @@ public abstract class LargeAbstractPacket extends AbstractPacket { protected abstract void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException; + @Override + public final FMLProxyPacket generatePacket() {return null;} + + @Override + public void sendData(ByteBuf out) throws IOException {} + /** * Simple storage class to keep track of partial data and how many bytes we've received so far. */ diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 33dd11cf7..80fee9beb 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -7,9 +7,10 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.internal.FMLProxyPacket; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.enums.EnumPacketType; -import kamkeel.npcs.network.packets.large.LargeScrollDataPacket; -import kamkeel.npcs.network.packets.large.LargeScrollGroupPacket; -import kamkeel.npcs.network.packets.large.LargeScrollListPacket; +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.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.NetHandlerPlayServer; @@ -17,19 +18,19 @@ import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; import java.util.*; -import java.util.function.Consumer; public final class PacketHandler { public static PacketHandler Instance; + // Channels public Map channels = new Hashtable<>(); - public final static PacketChannel INFO_PACKET = new PacketChannel("CNPC+|Info", EnumPacketType.INFO); - public final static PacketChannel DATA_PACKET = new PacketChannel("CNPC+|Data", EnumPacketType.DATA); - public final static PacketChannel CLIENT_PACKET = new PacketChannel("CNPC+|Client", EnumPacketType.CLIENT); - public final static PacketChannel LARGE_PACKET = new PacketChannel("CNPC+|Large", EnumPacketType.LARGE); + public static final PacketChannel INFO_PACKET = new PacketChannel("CNPC+|Info", EnumPacketType.INFO); + public static final PacketChannel DATA_PACKET = new PacketChannel("CNPC+|Data", EnumPacketType.DATA); + public static final PacketChannel CLIENT_PACKET = new PacketChannel("CNPC+|Client", EnumPacketType.CLIENT); + public static final PacketChannel LARGE_PACKET = new PacketChannel("CNPC+|Large", EnumPacketType.LARGE); - private final static List packetChannels = new ArrayList<>(); + private static final List packetChannels = new ArrayList<>(); public PacketHandler() { // Register Channels @@ -43,22 +44,20 @@ public final class PacketHandler { LARGE_PACKET.registerPacket(new LargeScrollGroupPacket()); LARGE_PACKET.registerPacket(new LargeScrollDataPacket()); LARGE_PACKET.registerPacket(new LargeScrollListPacket()); - - // Log channel registration - System.out.println("PacketHandler initialized and channels registered."); + LARGE_PACKET.registerPacket(new LargeSyncPacket()); } - public void registerChannels() { - FMLEventChannel eventChannel; + private void registerChannels() { for (PacketChannel channel : packetChannels) { - eventChannel = NetworkRegistry.INSTANCE.newEventDrivenChannel(channel.getChannelName()); + FMLEventChannel eventChannel = + NetworkRegistry.INSTANCE.newEventDrivenChannel(channel.getChannelName()); eventChannel.register(this); channels.put(channel.getChannelType(), eventChannel); System.out.println("Registered channel: " + channel.getChannelName()); } } - public PacketChannel getPacketChannel(EnumPacketType type){ + public PacketChannel getPacketChannel(EnumPacketType type) { return packetChannels.stream() .filter(channel -> channel.getChannelType() == type) .findFirst() @@ -86,20 +85,26 @@ public final class PacketHandler { private void handlePacket(FMLProxyPacket packet, EntityPlayer player) { ByteBuf buf = packet.payload(); try { + // First two ints are channelTypeOrdinal and packetTypeOrdinal int packetTypeOrdinal = buf.readInt(); EnumPacketType packetType = EnumPacketType.values()[packetTypeOrdinal]; + PacketChannel packetChannel = getPacketChannel(packetType); if (packetChannel == null) { LogWriter.error("Error: Packet channel is null for packet type: " + packetType); return; } + int packetId = buf.readInt(); AbstractPacket abstractPacket = packetChannel.packets.get(packetId); if (abstractPacket == null) { LogWriter.error("Error: Abstract packet is null for packet ID: " + packetId); return; } + + // Let the packet parse the rest abstractPacket.receiveData(buf, player); + } catch (IndexOutOfBoundsException e) { LogWriter.error("Error: IndexOutOfBoundsException in handlePacket: " + e.getMessage()); } catch (Exception e) { @@ -107,20 +112,31 @@ public final class PacketHandler { } } - public void sendPacket(AbstractPacket packet, Consumer sendFunction) { - FMLProxyPacket proxyPacket = packet.generatePacket(); - if (proxyPacket != null) { - sendFunction.accept(proxyPacket); + /** + * Sends every FMLProxyPacket produced by packet.generatePackets() + */ + private void sendAllPackets(AbstractPacket packet, SendAction action) { + // get all generated FMLProxyPacket objects (could be 1 for normal, or many for large) + List proxyPackets = packet.generatePackets(); + if (proxyPackets.isEmpty()) { + LogWriter.error("Warning: No packets generated for " + packet.getClass().getName()); + } + + for (FMLProxyPacket proxy : proxyPackets) { + action.send(proxy); } } + // ------------------------------------------------------------------------ + // Public API methods for sending + public void sendToPlayer(AbstractPacket packet, EntityPlayerMP player) { FMLEventChannel eventChannel = getEventChannel(packet); if (eventChannel == null) { LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); return; } - sendPacket(packet, proxyPacket -> eventChannel.sendTo(proxyPacket, player)); + sendAllPackets(packet, p -> eventChannel.sendTo(p, player)); } public void sendToServer(AbstractPacket packet) { @@ -129,7 +145,7 @@ public final class PacketHandler { LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); return; } - sendPacket(packet, eventChannel::sendToServer); + sendAllPackets(packet, eventChannel::sendToServer); } public void sendToAll(AbstractPacket packet) { @@ -138,7 +154,7 @@ public final class PacketHandler { LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); return; } - sendPacket(packet, eventChannel::sendToAll); + sendAllPackets(packet, eventChannel::sendToAll); } public void sendToAllAround(AbstractPacket packet, NetworkRegistry.TargetPoint point) { @@ -147,7 +163,7 @@ public final class PacketHandler { LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); return; } - sendPacket(packet, proxyPacket -> eventChannel.sendToAllAround(proxyPacket, point)); + sendAllPackets(packet, p -> eventChannel.sendToAllAround(p, point)); } public void sendToDimension(AbstractPacket packet, int dimensionId) { @@ -156,6 +172,11 @@ public final class PacketHandler { LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); return; } - sendPacket(packet, proxyPacket -> eventChannel.sendToDimension(proxyPacket, dimensionId)); + sendAllPackets(packet, p -> eventChannel.sendToDimension(p, dimensionId)); + } + + // Simple functional interface to unify the "send" action + private interface SendAction { + void send(FMLProxyPacket proxy); } } diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java index 83b08450d..ca253aa43 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java @@ -2,6 +2,7 @@ package kamkeel.npcs.network.enums; // Packets to the Client public enum EnumClientPacket { + SYNC, CHAT, MESSAGE, PARTY_MESSAGE, diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumSyncAction.java b/src/main/java/kamkeel/npcs/network/enums/EnumSyncAction.java new file mode 100644 index 000000000..f2260547e --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/enums/EnumSyncAction.java @@ -0,0 +1,7 @@ +package kamkeel.npcs.network.enums; + +public enum EnumSyncAction { + RELOAD, + UPDATE, + REMOVE +} diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java b/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java new file mode 100644 index 000000000..e66957598 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java @@ -0,0 +1,11 @@ +package kamkeel.npcs.network.enums; + +public enum EnumSyncType { + FACTION, + DIALOG, + DIALOG_CATEGORY, + QUEST, + QUEST_CATEGORY, + PLAYERDATA, + MAGIC +} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DBCFormPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DBCFormPacket.java deleted file mode 100644 index 2efc85ea0..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/DBCFormPacket.java +++ /dev/null @@ -1,37 +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.client.NoppesUtil; - -import java.io.IOException; - -public final class DBCFormPacket extends AbstractPacket { - public static final String packetName = "Client|DBCForm"; - - public DBCFormPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.DBC_FORM; - } - - @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 { - NoppesUtil.handleFormEnd(); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/LargeNBTEndPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/LargeNBTEndPacket.java deleted file mode 100644 index 7da3d4bce..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/LargeNBTEndPacket.java +++ /dev/null @@ -1,38 +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.client.NoppesUtil; - -import java.io.IOException; - -public final class LargeNBTEndPacket extends AbstractPacket { - public static final String packetName = "Client|LargeNBTEnd"; - - public LargeNBTEndPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.LARGE_NBT_END; - } - - @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 { - // Finalize handling of large NBT data (if needed). - NoppesUtil.handleLargeData(null); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/LargeNBTPartPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/LargeNBTPartPacket.java deleted file mode 100644 index d87db4a40..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/LargeNBTPartPacket.java +++ /dev/null @@ -1,39 +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.client.NoppesUtil; - -import java.io.IOException; - -public final class LargeNBTPartPacket extends AbstractPacket { - public static final String packetName = "Client|LargeNBTPart"; - - public LargeNBTPartPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.LARGE_NBT_PART; - } - - @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 { - byte[] chunk = new byte[in.readShort()]; - in.readBytes(chunk); - NoppesUtil.handleLargeData(chunk); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollDataPacket.java similarity index 96% rename from src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollDataPacket.java index 0fef898a1..a1d2b102a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollDataPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.large; +package kamkeel.npcs.network.packets.client.large; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; diff --git a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollGroupPacket.java similarity index 96% rename from src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollGroupPacket.java index 2301ab2f9..9a9c54bab 100644 --- a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollGroupPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollGroupPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.large; +package kamkeel.npcs.network.packets.client.large; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; diff --git a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollListPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollListPacket.java similarity index 96% rename from src/main/java/kamkeel/npcs/network/packets/large/LargeScrollListPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollListPacket.java index 6c71dc81d..c6706cf04 100644 --- a/src/main/java/kamkeel/npcs/network/packets/large/LargeScrollListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollListPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.large; +package kamkeel.npcs.network.packets.client.large; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/sync/LargeSyncPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/sync/LargeSyncPacket.java new file mode 100644 index 000000000..617188531 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/sync/LargeSyncPacket.java @@ -0,0 +1,102 @@ +package kamkeel.npcs.network.packets.client.large.sync; + +import cpw.mods.fml.relauncher.Side; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.network.LargeAbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.network.enums.EnumSyncAction; +import kamkeel.npcs.network.enums.EnumSyncType; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; + +import java.io.IOException; + +/** + * A large sync packet that sends chunked data to the client for a given SyncType + * along with a SyncAction (RELOAD, UPDATE, REMOVE). + */ +public final class LargeSyncPacket extends LargeAbstractPacket { + + private EnumSyncType enumSyncType; + private EnumSyncAction enumSyncAction; + private NBTTagCompound syncData; + private int operationID; + + public LargeSyncPacket() {} + + /** + * Constructs a new LargeSyncPacket. + */ + public LargeSyncPacket(EnumSyncType enumSyncType, EnumSyncAction enumSyncAction, int catId, NBTTagCompound syncData) { + this.enumSyncType = enumSyncType; + this.enumSyncAction = enumSyncAction; + this.syncData = syncData; + this.operationID = catId; + } + + @Override + public Enum getType() { + return EnumClientPacket.SYNC; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.LARGE_PACKET; // Or whichever channel you want. + } + + @Override + protected byte[] getData() throws IOException { + ByteBuf buffer = Unpooled.buffer(); + // 1) Write SyncType + buffer.writeInt(enumSyncType.ordinal()); + // 2) Write SyncAction + buffer.writeInt(enumSyncAction.ordinal()); + // 3) Optional Category ID + buffer.writeInt(operationID); + // 4) Write the NBTTagCompound + ByteBufUtils.writeNBT(buffer, syncData); + + // Copy the buffer’s readable bytes into a byte[] + byte[] bytes = new byte[buffer.readableBytes()]; + buffer.readBytes(bytes); + return bytes; + } + + @Override + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + + // Reconstruct everything from the ByteBuf + int syncTypeOrdinal = data.readInt(); + int syncActionOrdinal = data.readInt(); + int categoryID = data.readInt(); + + EnumSyncType type = EnumSyncType.values()[syncTypeOrdinal]; + EnumSyncAction action = EnumSyncAction.values()[syncActionOrdinal]; + NBTTagCompound tag = ByteBufUtils.readNBT(data); + + // Now do your client-side logic (similar to your old clientSync() or clientSyncUpdate() approach) + handleSyncPacketClient(type, action, categoryID, tag); + } + + private void handleSyncPacketClient(EnumSyncType enumSyncType, EnumSyncAction enumSyncAction, int id, NBTTagCompound data) { + switch (enumSyncAction) { + case RELOAD: + SyncMaster.clientSync(enumSyncType, data); + break; + case UPDATE: + SyncMaster.clientUpdate(enumSyncType, id, data); + break; + case REMOVE: + SyncMaster.clientSyncRemove(enumSyncType, id); + break; + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncAddPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncAddPacket.java deleted file mode 100644 index 4318fedd6..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncAddPacket.java +++ /dev/null @@ -1,41 +0,0 @@ -package kamkeel.npcs.network.packets.client.sync; - -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 net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.Server; -import noppes.npcs.controllers.SyncController; - -import java.io.IOException; - -public final class SyncAddPacket extends AbstractPacket { - public static final String packetName = "Client|SyncAdd"; - - public SyncAddPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SYNC_ADD; - } - - @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 { - int synctype = in.readInt(); - NBTTagCompound compound = Server.readNBT(in); - SyncController.clientSync(synctype, compound, false); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncEndPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncEndPacket.java deleted file mode 100644 index b9cbcb7b0..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncEndPacket.java +++ /dev/null @@ -1,41 +0,0 @@ -package kamkeel.npcs.network.packets.client.sync; - -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 net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.Server; -import noppes.npcs.controllers.SyncController; - -import java.io.IOException; - -public final class SyncEndPacket extends AbstractPacket { - public static final String packetName = "Client|SyncEnd"; - - public SyncEndPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SYNC_END; - } - - @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 { - int synctype = in.readInt(); - NBTTagCompound compound = Server.readNBT(in); - SyncController.clientSync(synctype, compound, true); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncPlayerPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncPlayerPacket.java deleted file mode 100644 index a595e3622..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncPlayerPacket.java +++ /dev/null @@ -1,38 +0,0 @@ -package kamkeel.npcs.network.packets.client.sync; - -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.client.NoppesUtil; - -import java.io.IOException; - -public final class SyncPlayerPacket extends AbstractPacket { - public static final String packetName = "Client|SyncPlayer"; - - public SyncPlayerPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SYNC_PLAYER; - } - - @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 { - boolean sync = in.readBoolean(); - NoppesUtil.handlePlayerDataEnd(sync); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRemovePacket.java deleted file mode 100644 index 20708ec7b..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRemovePacket.java +++ /dev/null @@ -1,39 +0,0 @@ -package kamkeel.npcs.network.packets.client.sync; - -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.controllers.SyncController; - -import java.io.IOException; - -public final class SyncRemovePacket extends AbstractPacket { - public static final String packetName = "Client|SyncRemove"; - - public SyncRemovePacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SYNC_REMOVE; - } - - @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 { - int synctype = in.readInt(); - int id = in.readInt(); - SyncController.clientSyncRemove(synctype, id); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncUpdatePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncUpdatePacket.java deleted file mode 100644 index 69ce07ae5..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncUpdatePacket.java +++ /dev/null @@ -1,41 +0,0 @@ -package kamkeel.npcs.network.packets.client.sync; - -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 net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.Server; -import noppes.npcs.controllers.SyncController; - -import java.io.IOException; - -public final class SyncUpdatePacket extends AbstractPacket { - public static final String packetName = "Client|SyncUpdate"; - - public SyncUpdatePacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SYNC_UPDATE; - } - - @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 { - int synctype = in.readInt(); - NBTTagCompound compound = Server.readNBT(in); - SyncController.clientSyncUpdate(synctype, compound, in); - } -} diff --git a/src/main/java/noppes/npcs/CommonProxy.java b/src/main/java/noppes/npcs/CommonProxy.java index a19cb1791..54fadbdbe 100644 --- a/src/main/java/noppes/npcs/CommonProxy.java +++ b/src/main/java/noppes/npcs/CommonProxy.java @@ -17,7 +17,7 @@ import noppes.npcs.containers.*; import noppes.npcs.controllers.data.PlayerData; import noppes.npcs.entity.EntityNPCInterface; -public abstract class CommonProxy implements IGuiHandler { +public class CommonProxy implements IGuiHandler { public boolean newVersionAvailable = false; public int revision = 1; @@ -159,7 +159,9 @@ public abstract class CommonProxy implements IGuiHandler { } - public abstract void generateBigSmokeParticles(World world, int x, int y, int z, boolean signalFire); + public void generateBigSmokeParticles(World world, int x, int y, int z, boolean signalFire){ + + } public String getAchievementDesc(Achievement achievement) { return ""; diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 0acc85a7d..873df4c6a 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -90,6 +90,8 @@ public class CustomNpcs { Channel = NetworkRegistry.INSTANCE.newEventDrivenChannel("CustomNPCs"); ChannelPlayer = NetworkRegistry.INSTANCE.newEventDrivenChannel("CustomNPCsPlayer"); + PacketHandler.Instance = new PacketHandler(); + MinecraftServer server = MinecraftServer.getServer(); String dir = ""; if (server != null) { @@ -250,12 +252,6 @@ public class CustomNpcs { ServerTagMapController.Instance = new ServerTagMapController(); } - //Loading items in the about to start event was corrupting items with a damage value - @EventHandler - public void postInit(FMLPostInitializationEvent event) { - PacketHandler.Instance = new PacketHandler(); - } - @EventHandler public void stopped(FMLServerStoppedEvent event){ diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 313b56b61..3273f59ec 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -1,6 +1,7 @@ package noppes.npcs; import io.netty.buffer.ByteBuf; +import kamkeel.npcs.controllers.SyncMaster; import net.minecraft.command.server.CommandBlockLogic; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; @@ -572,7 +573,7 @@ public class NoppesUtilServer { playerdata.save(); } if(pl != null) { - SyncController.syncPlayer((EntityPlayerMP) pl); + SyncMaster.syncPlayer((EntityPlayerMP) pl); } sendPlayerData(type, player, name); } @@ -847,48 +848,6 @@ public class NoppesUtilServer { return entity; } } - public static void sendPlayerDataCompound(EntityPlayerMP player, NBTTagCompound compound, boolean sync) { - try { - byte[] bytes = CompressedStreamTools.compress(compound); - - // Split byte array into chunks and send each chunk - int chunkSize = 16000; - int totalChunks = (int) Math.ceil((double) bytes.length / chunkSize); - for (int i = 0; i < totalChunks; i++) { - int start = i * chunkSize; - int length = Math.min(bytes.length - start, chunkSize); - byte[] chunk = new byte[length]; - System.arraycopy(bytes, start, chunk, 0, length); - Server.sendData(player, EnumPacketClient.LARGE_NBT_PART, (Object) chunk); - } - // Send end packet - Server.sendData(player, EnumPacketClient.SYNC_PLAYER, sync); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static void sendDBCCompound(EntityPlayerMP player, NBTTagCompound compound) { - try { - byte[] bytes = CompressedStreamTools.compress(compound); - - // Split byte array into chunks and send each chunk - int chunkSize = 16000; - int totalChunks = (int) Math.ceil((double) bytes.length / chunkSize); - for (int i = 0; i < totalChunks; i++) { - int start = i * chunkSize; - int length = Math.min(bytes.length - start, chunkSize); - byte[] chunk = new byte[length]; - System.arraycopy(bytes, start, chunk, 0, length); - Server.sendData(player, EnumPacketClient.LARGE_NBT_PART, (Object) chunk); - } - // Send end packet - Server.sendData(player, EnumPacketClient.DBC_FORM); - } catch (IOException e) { - e.printStackTrace(); - } - } - public static boolean isOp(EntityPlayer player) { return MinecraftServer.getServer().getConfigurationManager().func_152596_g(player.getGameProfile()); diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index 211edc791..2ad69fc27 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -5,6 +5,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.relauncher.Side; +import kamkeel.npcs.controllers.SyncMaster; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -62,7 +63,7 @@ public class ScriptPlayerEventHandler { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); if(playerData.updateClient) { - NoppesUtilServer.sendPlayerDataCompound((EntityPlayerMP)player, playerData.getSyncNBT(), true); + SyncMaster.syncPlayerData((EntityPlayerMP)player, true); playerData.updateClient = false; } diff --git a/src/main/java/noppes/npcs/ServerTickHandler.java b/src/main/java/noppes/npcs/ServerTickHandler.java index 4a7584060..0532401e6 100644 --- a/src/main/java/noppes/npcs/ServerTickHandler.java +++ b/src/main/java/noppes/npcs/ServerTickHandler.java @@ -5,6 +5,7 @@ import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import kamkeel.npcs.controllers.ProfileController; +import kamkeel.npcs.controllers.SyncMaster; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; import net.minecraft.world.WorldServer; @@ -52,7 +53,7 @@ public class ServerTickHandler { playerData.onLogin(); } - SyncController.syncPlayer(player); + SyncMaster.syncPlayer(player); ProfileController.login(player); } diff --git a/src/main/java/noppes/npcs/blocks/BlockCampfire.java b/src/main/java/noppes/npcs/blocks/BlockCampfire.java index 1c3cd08db..b995bf1f2 100644 --- a/src/main/java/noppes/npcs/blocks/BlockCampfire.java +++ b/src/main/java/noppes/npcs/blocks/BlockCampfire.java @@ -19,8 +19,6 @@ import org.lwjgl.opengl.GL11; import java.util.Random; -import static noppes.npcs.client.ClientProxy.RAND; - public class BlockCampfire extends BlockLightable{ public BlockCampfire(boolean lit) { diff --git a/src/main/java/noppes/npcs/client/NoppesUtil.java b/src/main/java/noppes/npcs/client/NoppesUtil.java index 2d7a11fb4..f4e3ab5ba 100644 --- a/src/main/java/noppes/npcs/client/NoppesUtil.java +++ b/src/main/java/noppes/npcs/client/NoppesUtil.java @@ -329,51 +329,4 @@ public class NoppesUtil { public static void isGUIOpen(boolean isGUIOpen) { Client.sendData(EnumPacketServer.IsGuiOpen, isGUIOpen); } - - - private static byte[] accumulatedData = new byte[0]; - public static void handleLargeData(byte[] chunk) { - // Append the chunk to the accumulated data - accumulatedData = concatByteArrays(accumulatedData, chunk); - } - - public static void handlePlayerDataEnd(boolean sync) { - NBTTagCompound compound; - try { - compound = CompressedStreamTools.func_152457_a(accumulatedData, new NBTSizeTracker(2097152L)); - if(sync){ - ClientCacheHandler.playerData.setSyncNBT(compound); - } - else { - ClientCacheHandler.playerData.setSyncNBTFull(compound); - } - } catch (IOException e) { - e.printStackTrace(); - return; - } finally { - // Reset the accumulated data after processing - accumulatedData = new byte[0]; - } - } - - public static void handleFormEnd() { - NBTTagCompound compound; - try { - compound = CompressedStreamTools.func_152457_a(accumulatedData, new NBTSizeTracker(2097152L)); - ClientCacheHandler.playerData.setDBCSync(compound); - } catch (IOException e) { - e.printStackTrace(); - return; - } finally { - accumulatedData = new byte[0]; - } - } - - // Utility method to concatenate two byte arrays - private static byte[] concatByteArrays(byte[] a, byte[] b) { - byte[] result = new byte[a.length + b.length]; - System.arraycopy(a, 0, result, 0, a.length); - System.arraycopy(b, 0, result, a.length, b.length); - return result; - } } diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index b64066ff1..f4b9f5c41 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -111,31 +111,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ RecipeController.Instance.anvilRecipes = RecipeController.syncRecipes; RecipeController.syncRecipes = new HashMap(); } - else if(type == EnumPacketClient.LARGE_NBT_PART){ - byte[] chunk = new byte[buffer.readShort()]; - buffer.readBytes(chunk); - NoppesUtil.handleLargeData(chunk); - } - else if(type == EnumPacketClient.SYNC_PLAYER){ - boolean sync = buffer.readBoolean(); - NoppesUtil.handlePlayerDataEnd(sync); - } - else if(type == EnumPacketClient.SYNC_ADD || type == EnumPacketClient.SYNC_END){ - int synctype = buffer.readInt(); - NBTTagCompound compound = Server.readNBT(buffer); - SyncController.clientSync(synctype, compound, type == EnumPacketClient.SYNC_END); - } - else if(type == EnumPacketClient.SYNC_UPDATE){ - int synctype = buffer.readInt(); - NBTTagCompound compound = Server.readNBT(buffer); - SyncController.clientSyncUpdate(synctype, compound, buffer); - } - else if(type == EnumPacketClient.SYNC_REMOVE){ - int synctype = buffer.readInt(); - int id = buffer.readInt(); - - SyncController.clientSyncRemove(synctype, id); - } else if(type == EnumPacketClient.SYNC_CONFIG){ NBTTagCompound configNBT = Server.readNBT(buffer); SyncController.receiveConfigs(configNBT); @@ -450,8 +425,5 @@ public class PacketHandlerClient extends PacketHandlerServer{ if(gui instanceof IPartyData) ((IPartyData)gui).setPartyData(Server.readNBT(buffer)); } - else if(type == EnumPacketClient.DBC_FORM){ - NoppesUtil.handleFormEnd(); - } } } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index dc6ff6880..3ce788527 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -55,9 +55,6 @@ public enum EnumPacketClient { STOP_SOUNDS, SYNC_WEAPON, MARK_DATA, - SYNC_ADD, SYNC_END, SYNC_UPDATE, SYNC_REMOVE, SYNC_PLAYER, SYNC_CONFIG, - DBC_FORM, - LARGE_NBT_PART, LARGE_NBT_END, PARTY_DATA } diff --git a/src/main/java/noppes/npcs/constants/SyncType.java b/src/main/java/noppes/npcs/constants/SyncType.java deleted file mode 100644 index d3e76ae93..000000000 --- a/src/main/java/noppes/npcs/constants/SyncType.java +++ /dev/null @@ -1,11 +0,0 @@ -package noppes.npcs.constants; - -public class SyncType { - public static final int FACTION = 1; - public static final int QUEST = 2; - public static final int QUEST_CATEGORY = 3; - public static final int DIALOG = 4; - public static final int DIALOG_CATEGORY = 5; - public static final int PLAYER_DATA = 6; - public static final int MAGIC = 7; -} diff --git a/src/main/java/noppes/npcs/controllers/DialogController.java b/src/main/java/noppes/npcs/controllers/DialogController.java index b25f88c91..1a19dd8b5 100644 --- a/src/main/java/noppes/npcs/controllers/DialogController.java +++ b/src/main/java/noppes/npcs/controllers/DialogController.java @@ -1,18 +1,17 @@ package noppes.npcs.controllers; +import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; import noppes.npcs.NoppesStringUtils; -import noppes.npcs.Server; import noppes.npcs.api.handler.IDialogHandler; import noppes.npcs.api.handler.data.IDialog; import noppes.npcs.api.handler.data.IDialogCategory; import noppes.npcs.constants.EnumOptionType; -import noppes.npcs.constants.EnumPacketClient; -import noppes.npcs.constants.SyncType; import noppes.npcs.controllers.data.Dialog; import noppes.npcs.controllers.data.DialogCategory; import noppes.npcs.controllers.data.DialogOption; @@ -230,7 +229,7 @@ public class DialogController implements IDialogHandler { dir.mkdirs(); } categories.put(category.id, category); - SyncController.updateDialogCat(category); + SyncMaster.syncUpdate(EnumSyncType.DIALOG_CATEGORY, -1, SyncMaster.updateDialogCat(category)); } public void removeCategory(int category){ @@ -243,8 +242,8 @@ public class DialogController implements IDialogHandler { for(int dia : cat.dialogs.keySet()) dialogs.remove(dia); categories.remove(category); - Server.sendToAll(EnumPacketClient.SYNC_REMOVE, SyncType.DIALOG_CATEGORY, category); - } + SyncMaster.syncRemove(EnumSyncType.DIALOG_CATEGORY, category); + } private boolean containsCategoryName(String name) { name = name.toLowerCase(); @@ -291,7 +290,7 @@ public class DialogController implements IDialogHandler { if(file2.exists()) file2.delete(); file.renameTo(file2); - Server.sendToAll(EnumPacketClient.SYNC_UPDATE, SyncType.DIALOG, dialog.writeToNBT(new NBTTagCompound()), category.id); + SyncMaster.syncUpdate(EnumSyncType.DIALOG, category.id, dialog.writeToNBT(new NBTTagCompound())); } catch (Exception e) { LogWriter.except(e); } @@ -305,7 +304,7 @@ public class DialogController implements IDialogHandler { return; category.dialogs.remove(dialog.id); dialogs.remove(dialog.id); - Server.sendToAll(EnumPacketClient.SYNC_REMOVE, SyncType.DIALOG, dialog.id); + SyncMaster.syncRemove(EnumSyncType.DIALOG, dialog.id); } private File getDir(){ diff --git a/src/main/java/noppes/npcs/controllers/FactionController.java b/src/main/java/noppes/npcs/controllers/FactionController.java index 7536cdb97..d9419131c 100644 --- a/src/main/java/noppes/npcs/controllers/FactionController.java +++ b/src/main/java/noppes/npcs/controllers/FactionController.java @@ -1,15 +1,14 @@ package noppes.npcs.controllers; +import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; -import noppes.npcs.Server; import noppes.npcs.api.handler.IFactionHandler; import noppes.npcs.api.handler.data.IFaction; -import noppes.npcs.constants.EnumPacketClient; -import noppes.npcs.constants.SyncType; import noppes.npcs.controllers.data.Faction; import java.io.*; @@ -158,7 +157,7 @@ public class FactionController implements IFactionHandler { NBTTagCompound facCompound = new NBTTagCompound(); faction.writeNBT(facCompound); - Server.sendToAll(EnumPacketClient.SYNC_UPDATE, SyncType.FACTION, facCompound); + SyncMaster.syncUpdate(EnumSyncType.FACTION, -1, facCompound); saveFactions(); } @@ -193,7 +192,7 @@ public class FactionController implements IFactionHandler { } else { this.saveFactions(); faction.id = -1; - Server.sendToAll(EnumPacketClient.SYNC_REMOVE, SyncType.FACTION, id); + SyncMaster.syncRemove(EnumSyncType.FACTION, id); return faction; } } else { diff --git a/src/main/java/noppes/npcs/controllers/MagicController.java b/src/main/java/noppes/npcs/controllers/MagicController.java index 30b2bed89..a14f01384 100644 --- a/src/main/java/noppes/npcs/controllers/MagicController.java +++ b/src/main/java/noppes/npcs/controllers/MagicController.java @@ -5,10 +5,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; -import noppes.npcs.Server; import noppes.npcs.api.handler.data.IMagic; -import noppes.npcs.constants.EnumPacketClient; -import noppes.npcs.constants.SyncType; import noppes.npcs.controllers.data.Magic; import java.io.*; @@ -160,7 +157,7 @@ public class MagicController { NBTTagCompound facCompound = new NBTTagCompound(); mag.writeNBT(facCompound); - Server.sendToAll(EnumPacketClient.SYNC_UPDATE, SyncType.MAGIC, facCompound); + // Server.sendToAll(EnumPacketClient.SYNC_UPDATE, SyncType.MAGIC, facCompound); saveFactions(); } diff --git a/src/main/java/noppes/npcs/controllers/QuestController.java b/src/main/java/noppes/npcs/controllers/QuestController.java index e8ec57f7d..3b1c2c30e 100644 --- a/src/main/java/noppes/npcs/controllers/QuestController.java +++ b/src/main/java/noppes/npcs/controllers/QuestController.java @@ -1,17 +1,16 @@ package noppes.npcs.controllers; +import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; import noppes.npcs.NoppesStringUtils; -import noppes.npcs.Server; import noppes.npcs.api.handler.IQuestHandler; import noppes.npcs.api.handler.data.IQuest; import noppes.npcs.api.handler.data.IQuestCategory; -import noppes.npcs.constants.EnumPacketClient; -import noppes.npcs.constants.SyncType; import noppes.npcs.controllers.data.Quest; import noppes.npcs.controllers.data.QuestCategory; import noppes.npcs.util.NBTJsonUtil; @@ -146,7 +145,7 @@ public class QuestController implements IQuestHandler { for(int dia : cat.quests.keySet()) quests.remove(dia); categories.remove(category); - Server.sendToAll(EnumPacketClient.SYNC_REMOVE, SyncType.QUEST_CATEGORY, category); + SyncMaster.syncRemove(EnumSyncType.QUEST_CATEGORY, category); } public void saveCategory(QuestCategory category){ @@ -177,7 +176,7 @@ public class QuestController implements IQuestHandler { dir.mkdirs(); } categories.put(category.id, category); - SyncController.updateQuestCat(category); + SyncMaster.syncUpdate(EnumSyncType.QUEST_CATEGORY, -1, SyncMaster.updateQuestCat(category)); } private boolean containsCategoryName(String name) { name = name.toLowerCase(); @@ -225,7 +224,7 @@ public class QuestController implements IQuestHandler { if(file2.exists()) file2.delete(); file.renameTo(file2); - Server.sendToAll(EnumPacketClient.SYNC_UPDATE, SyncType.QUEST, quest.writeToNBT(new NBTTagCompound()), category.id); + SyncMaster.syncUpdate(EnumSyncType.QUEST, category.id, quest.writeToNBT(new NBTTagCompound())); } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/noppes/npcs/controllers/SyncController.java b/src/main/java/noppes/npcs/controllers/SyncController.java index 48c0891b5..d66792574 100644 --- a/src/main/java/noppes/npcs/controllers/SyncController.java +++ b/src/main/java/noppes/npcs/controllers/SyncController.java @@ -9,10 +9,6 @@ import noppes.npcs.NoppesUtilServer; import noppes.npcs.Server; import noppes.npcs.config.ConfigMain; import noppes.npcs.constants.EnumPacketClient; -import noppes.npcs.constants.SyncType; -import noppes.npcs.controllers.data.*; - -import java.util.HashMap; public class SyncController { @@ -26,332 +22,4 @@ public class SyncController { ConfigMain.EnableProfiles = compound.getBoolean("Profiles"); } - public static void syncPlayer(EntityPlayerMP player){ - NBTTagList list = new NBTTagList(); - NBTTagCompound compound = new NBTTagCompound(); - - //////////////////////////////////////////////////////////////////////////////// - // Faction Sync - for(Faction faction : FactionController.getInstance().factions.values()){ - NBTTagCompound factioNBT = new NBTTagCompound(); - faction.writeNBT(factioNBT); - list.appendTag(factioNBT); - if(list.tagCount() > 10){ - compound = new NBTTagCompound(); - compound.setTag("Data", list); - Server.sendData(player, EnumPacketClient.SYNC_ADD, SyncType.FACTION, compound); - list = new NBTTagList(); - } - } - compound = new NBTTagCompound(); - compound.setTag("Data", list); - Server.sendData(player, EnumPacketClient.SYNC_END, SyncType.FACTION, compound); - //////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////// - // Quest Sync - for(QuestCategory category : QuestController.Instance.categories.values()){ - NBTTagCompound questCompound; - NBTTagList questList = new NBTTagList(); - for(int questID : category.quests.keySet()){ - Quest quest = category.quests.get(questID); - questList.appendTag(quest.writeToNBT(new NBTTagCompound())); - if(questList.tagCount() > 20){ - questCompound = new NBTTagCompound(); - questCompound.setTag("Data", questList); - questCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); - Server.sendData(player, EnumPacketClient.SYNC_ADD, SyncType.QUEST_CATEGORY, questCompound); - questList = new NBTTagList(); - } - } - questCompound = new NBTTagCompound(); - questCompound.setTag("Data", questList); - questCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); - Server.sendData(player, EnumPacketClient.SYNC_ADD, SyncType.QUEST_CATEGORY, questCompound); - } - Server.sendData(player, EnumPacketClient.SYNC_END, SyncType.QUEST_CATEGORY, new NBTTagCompound()); - //////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////// - // Dialog Sync - for(DialogCategory category : DialogController.Instance.categories.values()){ - NBTTagCompound dialogCompound; - NBTTagList dialogList = new NBTTagList(); - for(int dialogID : category.dialogs.keySet()){ - Dialog dialog = category.dialogs.get(dialogID); - dialogList.appendTag(dialog.writeToNBT(new NBTTagCompound())); - if(dialogList.tagCount() > 20){ - dialogCompound = new NBTTagCompound(); - dialogCompound.setTag("Data", dialogList); - dialogCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); - Server.sendData(player, EnumPacketClient.SYNC_ADD, SyncType.DIALOG_CATEGORY, dialogCompound); - dialogList = new NBTTagList(); - } - } - dialogCompound = new NBTTagCompound(); - dialogCompound.setTag("Data", dialogList); - dialogCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); - Server.sendData(player, EnumPacketClient.SYNC_ADD, SyncType.DIALOG_CATEGORY, dialogCompound); - } - Server.sendData(player, EnumPacketClient.SYNC_END, SyncType.DIALOG_CATEGORY, new NBTTagCompound()); - //////////////////////////////////////////////////////////////////////////////// - - DBCAddon.instance.syncPlayer(player); - - PlayerData data = PlayerData.get(player); - if(data != null){ - NoppesUtilServer.sendPlayerDataCompound(player, data.getSyncNBTFull(), false); - } - } - - public static void syncAllDialogs() { - for(DialogCategory category : DialogController.Instance.categories.values()){ - NBTTagCompound dialogCompound; - NBTTagList dialogList = new NBTTagList(); - for(int dialogID : category.dialogs.keySet()){ - Dialog dialog = category.dialogs.get(dialogID); - dialogList.appendTag(dialog.writeToNBT(new NBTTagCompound())); - if(dialogList.tagCount() > 20){ - dialogCompound = new NBTTagCompound(); - dialogCompound.setTag("Data", dialogList); - dialogCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); - Server.sendToAll(EnumPacketClient.SYNC_ADD, SyncType.DIALOG_CATEGORY, dialogCompound); - dialogList = new NBTTagList(); - } - } - dialogCompound = new NBTTagCompound(); - dialogCompound.setTag("Data", dialogList); - dialogCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); - Server.sendToAll(EnumPacketClient.SYNC_ADD, SyncType.DIALOG_CATEGORY, dialogCompound); - } - Server.sendToAll(EnumPacketClient.SYNC_END, SyncType.DIALOG_CATEGORY, new NBTTagCompound()); - } - - public static void syncAllQuests() { - for(QuestCategory category : QuestController.Instance.categories.values()){ - NBTTagCompound questCompound; - NBTTagList questList = new NBTTagList(); - for(int questID : category.quests.keySet()){ - Quest quest = category.quests.get(questID); - questList.appendTag(quest.writeToNBT(new NBTTagCompound())); - if(questList.tagCount() > 20){ - questCompound = new NBTTagCompound(); - questCompound.setTag("Data", questList); - questCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); - Server.sendToAll(EnumPacketClient.SYNC_ADD, SyncType.QUEST_CATEGORY, questCompound); - questList = new NBTTagList(); - } - } - questCompound = new NBTTagCompound(); - questCompound.setTag("Data", questList); - questCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); - Server.sendToAll(EnumPacketClient.SYNC_ADD, SyncType.QUEST_CATEGORY, questCompound); - } - Server.sendToAll(EnumPacketClient.SYNC_END, SyncType.QUEST_CATEGORY, new NBTTagCompound()); - } - - public static void updateQuestCat(QuestCategory questCategory) { - NBTTagCompound questCompound; - NBTTagList questList = new NBTTagList(); - for(int questID : questCategory.quests.keySet()){ - Quest quest = questCategory.quests.get(questID); - questList.appendTag(quest.writeToNBT(new NBTTagCompound())); - if(questList.tagCount() > 20){ - questCompound = new NBTTagCompound(); - questCompound.setTag("Data", questList); - questCompound.setTag("CatNBT", questCategory.writeSmallNBT(new NBTTagCompound())); - Server.sendToAll(EnumPacketClient.SYNC_UPDATE, SyncType.QUEST_CATEGORY, questCompound); - questList = new NBTTagList(); - } - } - questCompound = new NBTTagCompound(); - questCompound.setTag("Data", questList); - questCompound.setTag("CatNBT", questCategory.writeSmallNBT(new NBTTagCompound())); - Server.sendToAll(EnumPacketClient.SYNC_UPDATE, SyncType.QUEST_CATEGORY, questCompound); - } - - public static void updateDialogCat(DialogCategory dialogCategory) { - NBTTagCompound dialogCompound; - NBTTagList dialogList = new NBTTagList(); - for(int questID : dialogCategory.dialogs.keySet()){ - Dialog dialog = dialogCategory.dialogs.get(questID); - dialogList.appendTag(dialog.writeToNBT(new NBTTagCompound())); - if(dialogList.tagCount() > 20){ - dialogCompound = new NBTTagCompound(); - dialogCompound.setTag("Data", dialogList); - dialogCompound.setTag("CatNBT", dialogCategory.writeSmallNBT(new NBTTagCompound())); - Server.sendToAll(EnumPacketClient.SYNC_UPDATE, SyncType.DIALOG_CATEGORY, dialogCompound); - dialogList = new NBTTagList(); - } - } - dialogCompound = new NBTTagCompound(); - dialogCompound.setTag("Data", dialogList); - dialogCompound.setTag("CatNBT", dialogCategory.writeSmallNBT(new NBTTagCompound())); - Server.sendToAll(EnumPacketClient.SYNC_UPDATE, SyncType.DIALOG_CATEGORY, dialogCompound); - } - - public static void clientSync(int synctype, NBTTagCompound compound, boolean syncEnd) { - if(synctype == SyncType.FACTION){ - NBTTagList list = compound.getTagList("Data", 10); - for(int i = 0; i < list.tagCount(); i++) - { - Faction faction = new Faction(); - faction.readNBT(list.getCompoundTagAt(i)); - FactionController.getInstance().factionsSync.put(faction.id, faction); - } - if(syncEnd){ - FactionController.getInstance().factions = FactionController.getInstance().factionsSync; - FactionController.getInstance().factionsSync = new HashMap(); - } - } - else if(synctype == SyncType.QUEST_CATEGORY){ - if(!compound.hasNoTags()){ - QuestCategory category = new QuestCategory(); - category.readSmallNBT(compound.getCompoundTag("CatNBT")); - NBTTagList list = compound.getTagList("Data", 10); - if(QuestController.Instance.categoriesSync.containsKey(category.id)){ - category = QuestController.Instance.categoriesSync.get(category.id); - category.readSmallNBT(compound.getCompoundTag("CatNBT")); - } - for(int i = 0; i < list.tagCount(); i++) - { - Quest quest = new Quest(); - quest.readNBT(list.getCompoundTagAt(i)); - quest.category = category; - category.quests.put(quest.id, quest); - } - QuestController.Instance.categoriesSync.put(category.id, category); - } - if(syncEnd){ - HashMap quests = new HashMap(); - for(QuestCategory category : QuestController.Instance.categoriesSync.values()){ - for(Quest quest : category.quests.values()){ - quests.put(quest.id, quest); - } - } - QuestController.Instance.categories = QuestController.Instance.categoriesSync; - QuestController.Instance.quests = quests; - QuestController.Instance.categoriesSync = new HashMap(); - } - } - else if(synctype == SyncType.DIALOG_CATEGORY){ - if(!compound.hasNoTags()){ - DialogCategory category = new DialogCategory(); - category.readSmallNBT(compound.getCompoundTag("CatNBT")); - NBTTagList list = compound.getTagList("Data", 10); - if(DialogController.Instance.categoriesSync.containsKey(category.id)){ - category = DialogController.Instance.categoriesSync.get(category.id); - category.readSmallNBT(compound.getCompoundTag("CatNBT")); - } - for(int i = 0; i < list.tagCount(); i++) - { - Dialog dialog = new Dialog(); - dialog.readNBT(list.getCompoundTagAt(i)); - dialog.category = category; - category.dialogs.put(dialog.id, dialog); - } - DialogController.Instance.categoriesSync.put(category.id, category); - } - if(syncEnd){ - HashMap dialogs = new HashMap(); - for(DialogCategory category : DialogController.Instance.categoriesSync.values()){ - for(Dialog dialog : category.dialogs.values()){ - dialogs.put(dialog.id, dialog); - } - } - DialogController.Instance.categories = DialogController.Instance.categoriesSync; - DialogController.Instance.dialogs = dialogs; - DialogController.Instance.categoriesSync = new HashMap(); - } - } - } - - public static void clientSyncUpdate(int synctype, NBTTagCompound compound, ByteBuf buffer) { - if(synctype == SyncType.FACTION){ - Faction faction = new Faction(); - faction.readNBT(compound); - FactionController.getInstance().factions.put(faction.id, faction); - } - else if(synctype == SyncType.DIALOG){ - DialogCategory category = DialogController.Instance.categories.get(buffer.readInt()); - Dialog dialog = new Dialog(); - dialog.category = category; - dialog.readNBT(compound); - DialogController.Instance.dialogs.put(dialog.id, dialog); - category.dialogs.put(dialog.id, dialog); - } - else if(synctype == SyncType.DIALOG_CATEGORY){ - DialogCategory category = new DialogCategory(); - category.readSmallNBT(compound.getCompoundTag("CatNBT")); - NBTTagList list = compound.getTagList("Data", 10); - if(DialogController.Instance.categoriesSync.containsKey(category.id)){ - category = DialogController.Instance.categoriesSync.get(category.id); - category.readSmallNBT(compound.getCompoundTag("CatNBT")); - } - for(int i = 0; i < list.tagCount(); i++) - { - Dialog dialog = new Dialog(); - dialog.readNBT(list.getCompoundTagAt(i)); - dialog.category = category; - category.dialogs.put(dialog.id, dialog); - } - DialogController.Instance.categories.put(category.id, category); - } - else if(synctype == SyncType.QUEST){ - QuestCategory category = QuestController.Instance.categories.get(buffer.readInt()); - Quest quest = new Quest(); - quest.category = category; - quest.readNBT(compound); - QuestController.Instance.quests.put(quest.id, quest); - category.quests.put(quest.id, quest); - } - else if(synctype == SyncType.QUEST_CATEGORY){ - QuestCategory category = new QuestCategory(); - category.readSmallNBT(compound.getCompoundTag("CatNBT")); - NBTTagList list = compound.getTagList("Data", 10); - if(QuestController.Instance.categoriesSync.containsKey(category.id)){ - category = QuestController.Instance.categoriesSync.get(category.id); - category.readSmallNBT(compound.getCompoundTag("CatNBT")); - } - for(int i = 0; i < list.tagCount(); i++) - { - Quest quest = new Quest(); - quest.readNBT(list.getCompoundTagAt(i)); - quest.category = category; - category.quests.put(quest.id, quest); - } - QuestController.Instance.categories.put(category.id, category); - } - } - - public static void clientSyncRemove(int synctype, int id) { - if(synctype == SyncType.FACTION){ - FactionController.getInstance().factions.remove(id); - } - else if(synctype == SyncType.DIALOG){ - Dialog dialog = DialogController.Instance.dialogs.remove(id); - if(dialog != null) { - dialog.category.dialogs.remove(id); - } - } - else if(synctype == SyncType.DIALOG_CATEGORY){ - DialogCategory category = DialogController.Instance.categories.remove(id); - if(category != null) { - DialogController.Instance.dialogs.keySet().removeAll(category.dialogs.keySet()); - } - } - else if(synctype == SyncType.QUEST){ - Quest quest = QuestController.Instance.quests.remove(id); - if(quest != null) { - quest.category.quests.remove(id); - } - } - else if(synctype == SyncType.QUEST_CATEGORY){ - QuestCategory category = QuestController.Instance.categories.remove(id); - if(category != null) { - QuestController.Instance.quests.keySet().removeAll(category.quests.keySet()); - } - } - } - } From 06275fffa62d80ec7c335af0e0ade335b3d226d8 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 29 Jan 2025 19:43:45 -0500 Subject: [PATCH 030/157] All 10MB of NBT Size to function --- .../kamkeel/npcs/controllers/SyncMaster.java | 38 ++++++++++--------- .../kamkeel/npcs/network/PacketHandler.java | 2 + .../client/large/sync/LargeSyncPacket.java | 7 +++- .../java/kamkeel/npcs/util/ByteBufUtils.java | 15 ++++++++ 4 files changed, 42 insertions(+), 20 deletions(-) diff --git a/src/main/java/kamkeel/npcs/controllers/SyncMaster.java b/src/main/java/kamkeel/npcs/controllers/SyncMaster.java index 7b9048210..3b166459e 100644 --- a/src/main/java/kamkeel/npcs/controllers/SyncMaster.java +++ b/src/main/java/kamkeel/npcs/controllers/SyncMaster.java @@ -65,7 +65,7 @@ public class SyncMaster { NBTTagCompound compound = new NBTTagCompound(); NBTTagList categoryList = new NBTTagList(); for(DialogCategory category : DialogController.Instance.categories.values()){ - NBTTagCompound questCompound = new NBTTagCompound();; + NBTTagCompound questCompound = new NBTTagCompound(); NBTTagList dialogList = new NBTTagList(); for(int dialogID : category.dialogs.keySet()){ Dialog quest = category.dialogs.get(dialogID); @@ -73,11 +73,30 @@ public class SyncMaster { } questCompound.setTag("Data", dialogList); questCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); + categoryList.appendTag(questCompound); } compound.setTag("DialogCategories", categoryList); return compound; } + public static NBTTagCompound questCategoriesNBT(){ + NBTTagCompound compound = new NBTTagCompound(); + NBTTagList categoryList = new NBTTagList(); + for(QuestCategory category : QuestController.Instance.categories.values()){ + NBTTagCompound questCompound = new NBTTagCompound();; + NBTTagList questList = new NBTTagList(); + for(int questID : category.quests.keySet()){ + Quest quest = category.quests.get(questID); + questList.appendTag(quest.writeToNBT(new NBTTagCompound())); + } + questCompound.setTag("Data", questList); + questCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); + categoryList.appendTag(questCompound); + } + compound.setTag("QuestCategories", categoryList); + return compound; + } + public static void syncPlayerData(EntityPlayerMP player, boolean update){ PlayerData data = PlayerData.get(player); if(data != null){ @@ -125,23 +144,6 @@ public class SyncMaster { )); } - public static NBTTagCompound questCategoriesNBT(){ - NBTTagCompound compound = new NBTTagCompound(); - NBTTagList categoryList = new NBTTagList(); - for(QuestCategory category : QuestController.Instance.categories.values()){ - NBTTagCompound questCompound = new NBTTagCompound();; - NBTTagList questList = new NBTTagList(); - for(int questID : category.quests.keySet()){ - Quest quest = category.quests.get(questID); - questList.appendTag(quest.writeToNBT(new NBTTagCompound())); - } - questCompound.setTag("Data", questList); - questCompound.setTag("CatNBT", category.writeSmallNBT(new NBTTagCompound())); - } - compound.setTag("QuestCategories", categoryList); - return compound; - } - @SideOnly(Side.CLIENT) public static void clientSync(EnumSyncType enumSyncType, NBTTagCompound fullCompound) { switch (enumSyncType){ diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 80fee9beb..6ef7210e2 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -107,8 +107,10 @@ public final class PacketHandler { } catch (IndexOutOfBoundsException e) { LogWriter.error("Error: IndexOutOfBoundsException in handlePacket: " + e.getMessage()); + e.printStackTrace(); } catch (Exception e) { LogWriter.error("Error: Exception in handlePacket: " + e.getMessage()); + e.printStackTrace(); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/sync/LargeSyncPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/sync/LargeSyncPacket.java index 617188531..250fdfca2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/sync/LargeSyncPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/sync/LargeSyncPacket.java @@ -12,9 +12,12 @@ import kamkeel.npcs.network.enums.EnumSyncAction; import kamkeel.npcs.network.enums.EnumSyncType; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; import java.io.IOException; /** @@ -60,7 +63,7 @@ public final class LargeSyncPacket extends LargeAbstractPacket { // 3) Optional Category ID buffer.writeInt(operationID); // 4) Write the NBTTagCompound - ByteBufUtils.writeNBT(buffer, syncData); + ByteBufUtils.writeBigNBT(buffer, syncData); // Copy the buffer’s readable bytes into a byte[] byte[] bytes = new byte[buffer.readableBytes()]; @@ -80,7 +83,7 @@ public final class LargeSyncPacket extends LargeAbstractPacket { EnumSyncType type = EnumSyncType.values()[syncTypeOrdinal]; EnumSyncAction action = EnumSyncAction.values()[syncActionOrdinal]; - NBTTagCompound tag = ByteBufUtils.readNBT(data); + NBTTagCompound tag = ByteBufUtils.readBigNBT(data); // Now do your client-side logic (similar to your old clientSync() or clientSyncUpdate() approach) handleSyncPacketClient(type, action, categoryID, tag); diff --git a/src/main/java/kamkeel/npcs/util/ByteBufUtils.java b/src/main/java/kamkeel/npcs/util/ByteBufUtils.java index 0c7bfa779..06b512228 100644 --- a/src/main/java/kamkeel/npcs/util/ByteBufUtils.java +++ b/src/main/java/kamkeel/npcs/util/ByteBufUtils.java @@ -9,6 +9,8 @@ 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; @@ -100,6 +102,19 @@ public class ByteBufUtils extends cpw.mods.fml.common.network.ByteBufUtils { return CompressedStreamTools.func_152457_a(bytes, new NBTSizeTracker(2097152L)); } + public static void writeBigNBT(ByteBuf buffer, NBTTagCompound compound) throws IOException { + byte[] bytes = CompressedStreamTools.compress(compound); + buffer.writeInt(bytes.length); + buffer.writeBytes(bytes); + } + + public static NBTTagCompound readBigNBT(ByteBuf buffer) throws IOException { + int length = buffer.readInt(); + byte[] bytes = new byte[length]; + buffer.readBytes(bytes); + return CompressedStreamTools.func_152457_a(bytes, new NBTSizeTracker(10485760L)); + } + public static void writeString(ByteBuf buffer, String s){ byte[] bytes = s.getBytes(Charsets.UTF_8); buffer.writeShort((short)bytes.length); From d91d4668d6cd524c57c2ff7d91d0718ef70dcb85 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 29 Jan 2025 21:50:55 -0500 Subject: [PATCH 031/157] WHEN WILL THIS END! --- src/main/java/foxz/command/CmdQuest.java | 8 +- .../npcs/command/QuestCategoryCommand.java | 11 +- .../kamkeel/npcs/command/QuestCommand.java | 12 +- .../kamkeel/npcs/network/KamUtilServer.java | 20 --- .../kamkeel/npcs/network/PacketHandler.java | 33 +++-- .../java/kamkeel/npcs/network/PacketUtil.java | 39 ++++++ .../npcs/network/enums/EnumClientPacket.java | 5 +- .../packets/client/AchievementPacket.java | 71 ++++++++++ .../{ChatPacket.java => ChatAlertPacket.java} | 21 ++- .../packets/client/ChatBubblePacket.java | 20 ++- .../packets/client/DialogDummyPacket.java | 41 ------ .../network/packets/client/DialogPacket.java | 37 +++++- .../network/packets/client/EditNpcPacket.java | 7 +- .../network/packets/client/MessagePacket.java | 53 -------- .../network/packets/client/RolePacket.java | 11 +- .../java/kamkeel/npcs/util/ByteBufUtils.java | 14 +- .../java/noppes/npcs/NoppesUtilServer.java | 121 ++++++++---------- .../java/noppes/npcs/PacketHandlerServer.java | 16 +-- .../npcs/client/PacketHandlerClient.java | 51 +------- .../npcs/constants/EnumPacketClient.java | 9 -- .../npcs/controllers/PartyController.java | 25 ++-- .../controllers/PlayerQuestController.java | 15 +-- .../npcs/controllers/data/PlayerData.java | 8 +- .../controllers/data/PlayerQuestData.java | 5 +- .../npcs/entity/EntityNPCInterface.java | 5 +- .../npcs/scripted/entity/ScriptPlayer.java | 7 +- 26 files changed, 322 insertions(+), 343 deletions(-) delete mode 100644 src/main/java/kamkeel/npcs/network/KamUtilServer.java create mode 100644 src/main/java/kamkeel/npcs/network/PacketUtil.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/client/AchievementPacket.java rename src/main/java/kamkeel/npcs/network/packets/client/{ChatPacket.java => ChatAlertPacket.java} (69%) delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/DialogDummyPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/MessagePacket.java 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; } From 4eae773f86aa0ccfbd3e06cad61f850937449da1 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 29 Jan 2025 22:56:28 -0500 Subject: [PATCH 032/157] Still going --- .../kamkeel/npcs/network/PacketHandler.java | 12 ++++++ .../java/kamkeel/npcs/network/PacketUtil.java | 26 ++++++++++++ .../npcs/network/enums/EnumClientPacket.java | 1 - .../packets/client/gui/ClonerGUIPacket.java | 41 ------------------- .../packets/client/gui/GuiClosePacket.java | 14 ++++++- .../packets/client/gui/GuiDataPacket.java | 13 ++++-- .../packets/client/gui/GuiErrorPacket.java | 14 ++++++- .../{GuiPacket.java => GuiOpenPacket.java} | 27 ++++++++++-- .../java/noppes/npcs/NoppesUtilServer.java | 19 ++++----- .../java/noppes/npcs/PacketHandlerServer.java | 6 +-- .../java/noppes/npcs/client/ClientProxy.java | 2 +- .../npcs/client/PacketHandlerClient.java | 7 +--- .../noppes/npcs/constants/EnumGuiType.java | 2 +- 13 files changed, 110 insertions(+), 74 deletions(-) delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/gui/ClonerGUIPacket.java rename src/main/java/kamkeel/npcs/network/packets/client/gui/{GuiPacket.java => GuiOpenPacket.java} (61%) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 184a64329..b80ec1480 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -11,6 +11,11 @@ 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.EditNpcPacket; +import kamkeel.npcs.network.packets.client.gui.GuiClosePacket; +import kamkeel.npcs.network.packets.client.gui.GuiDataPacket; +import kamkeel.npcs.network.packets.client.gui.GuiErrorPacket; +import kamkeel.npcs.network.packets.client.gui.GuiOpenPacket; import kamkeel.npcs.network.packets.client.large.LargeScrollDataPacket; import kamkeel.npcs.network.packets.client.large.LargeScrollGroupPacket; import kamkeel.npcs.network.packets.client.large.LargeScrollListPacket; @@ -57,6 +62,13 @@ public final class PacketHandler { CLIENT_PACKET.registerPacket(new ChatBubblePacket()); CLIENT_PACKET.registerPacket(new ChatAlertPacket()); CLIENT_PACKET.registerPacket(new AchievementPacket()); + CLIENT_PACKET.registerPacket(new EditNpcPacket()); + + // Client | GUI Packets + CLIENT_PACKET.registerPacket(new GuiClosePacket()); + CLIENT_PACKET.registerPacket(new GuiOpenPacket()); + CLIENT_PACKET.registerPacket(new GuiErrorPacket()); + CLIENT_PACKET.registerPacket(new GuiDataPacket()); } private void registerChannels() { diff --git a/src/main/java/kamkeel/npcs/network/PacketUtil.java b/src/main/java/kamkeel/npcs/network/PacketUtil.java index 1d677aeb4..a2f93d585 100644 --- a/src/main/java/kamkeel/npcs/network/PacketUtil.java +++ b/src/main/java/kamkeel/npcs/network/PacketUtil.java @@ -2,10 +2,16 @@ package kamkeel.npcs.network; import kamkeel.npcs.network.packets.client.ChatAlertPacket; import kamkeel.npcs.network.packets.client.AchievementPacket; +import kamkeel.npcs.network.packets.client.gui.GuiClosePacket; +import kamkeel.npcs.network.packets.client.gui.GuiDataPacket; +import kamkeel.npcs.network.packets.client.gui.GuiErrorPacket; +import kamkeel.npcs.network.packets.client.gui.GuiOpenPacket; 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 net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.constants.EnumGuiType; import java.util.List; import java.util.Map; @@ -36,4 +42,24 @@ public class PacketUtil { AchievementPacket packet = new AchievementPacket(isParty, description, message); PacketHandler.Instance.sendToPlayer(packet, playerMP); } + + public static void openGUI(EntityPlayerMP playerMP, EnumGuiType type, int x, int y, int z){ + GuiOpenPacket packet = new GuiOpenPacket(type, x, y, z); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + + public static void closeGUI(EntityPlayerMP playerMP, int closeCode, NBTTagCompound compound){ + GuiClosePacket packet = new GuiClosePacket(closeCode, compound); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + + public static void errorGUI(EntityPlayerMP playerMP, int closeCode, NBTTagCompound compound){ + GuiErrorPacket packet = new GuiErrorPacket(closeCode, compound); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + + public static void sendGuiData(EntityPlayerMP playerMP, NBTTagCompound compound){ + GuiDataPacket packet = new GuiDataPacket(compound); + 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 8e538163e..e6e93e6ff 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java @@ -32,7 +32,6 @@ public enum EnumClientPacket { CHATBUBBLE, SYNCRECIPES_CARPENTRYBENCH, CLONE, - CLONER, TELEPORTER, OPEN_BOOK, CONFIG, diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/ClonerGUIPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/ClonerGUIPacket.java deleted file mode 100644 index fda00a01b..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/ClonerGUIPacket.java +++ /dev/null @@ -1,41 +0,0 @@ -package kamkeel.npcs.network.packets.client.gui; - -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.CustomNpcs; -import noppes.npcs.constants.EnumGuiType; - -import java.io.IOException; - -public final class ClonerGUIPacket extends AbstractPacket { - public static final String packetName = "Client|Cloner"; - - public ClonerGUIPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.CLONER; - } - - @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 { - int x = in.readInt(); - int y = in.readInt(); - int z = in.readInt(); - CustomNpcs.proxy.openGui(x, y, z, EnumGuiType.MobSpawner, player); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java index 5e3fa37ee..edfd24540 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.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.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -17,8 +18,16 @@ import java.io.IOException; public final class GuiClosePacket extends AbstractPacket { public static final String packetName = "Client|GuiClose"; + private int code; + private NBTTagCompound compound; + public GuiClosePacket() {} + public GuiClosePacket(int code, NBTTagCompound compound) { + this.code = code; + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.GUI_CLOSE; @@ -31,7 +40,8 @@ public final class GuiClosePacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeInt(code); + ByteBufUtils.writeNBT(out, compound); } @Override @@ -39,7 +49,7 @@ public final class GuiClosePacket extends AbstractPacket { GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof IGuiClose) { int closeCode = in.readInt(); - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); ((IGuiClose) gui).setClose(closeCode, nbt); } Minecraft.getMinecraft().displayGuiScreen(null); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java index 7a12d3b1a..d7f81e9bd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.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.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -19,7 +20,13 @@ import java.io.IOException; public final class GuiDataPacket extends AbstractPacket { public static final String packetName = "Client|GuiData"; - public GuiDataPacket() {} + private NBTTagCompound compound; + + public GuiDataPacket(){} + + public GuiDataPacket(NBTTagCompound comp){ + this.compound = comp; + } @Override public Enum getType() { @@ -33,7 +40,7 @@ public final class GuiDataPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, compound); } @Override @@ -45,7 +52,7 @@ public final class GuiDataPacket extends AbstractPacket { gui = (GuiScreen) ((GuiContainerNPCInterface) gui).getSubGui(); } if (gui instanceof IGuiData) { - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); ((IGuiData) gui).setGuiData(nbt); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java index e1242dca8..9dcf12367 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.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.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -17,8 +18,16 @@ import java.io.IOException; public final class GuiErrorPacket extends AbstractPacket { public static final String packetName = "Client|GuiError"; + private int code; + private NBTTagCompound compound; + public GuiErrorPacket() {} + public GuiErrorPacket(int code, NBTTagCompound compound) { + this.code = code; + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.GUI_ERROR; @@ -31,7 +40,8 @@ public final class GuiErrorPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeInt(code); + ByteBufUtils.writeNBT(out, compound); } @Override @@ -39,7 +49,7 @@ public final class GuiErrorPacket extends AbstractPacket { GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof IGuiError) { int errorCode = in.readInt(); - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); ((IGuiError) gui).setError(errorCode, nbt); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java similarity index 61% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/GuiPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java index 38f880b64..58aa52879 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.gui; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -11,10 +12,22 @@ import noppes.npcs.constants.EnumGuiType; import java.io.IOException; -public final class GuiPacket extends AbstractPacket { - public static final String packetName = "Client|Gui"; +public final class GuiOpenPacket extends AbstractPacket { + public static final String packetName = "Client|OpenGui"; - public GuiPacket() {} + private EnumGuiType type; + private int x; + private int y; + private int z; + + public GuiOpenPacket() {} + + public GuiOpenPacket(EnumGuiType type, int x, int y, int z) { + this.type = type; + this.x = x; + this.y = y; + this.z = z; + } @Override public Enum getType() { @@ -28,11 +41,17 @@ public final class GuiPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeInt(type.ordinal()); + out.writeInt(x); + out.writeInt(y); + out.writeInt(z); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + EnumGuiType gui = EnumGuiType.values()[in.readInt()]; int x = in.readInt(); int y = in.readInt(); diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 0511b4e7e..727483674 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -295,7 +295,7 @@ public class NoppesUtilServer { return; } else{ - BOB.sendDataChecked((EntityPlayerMP)player, EnumPacketClient.GUI, gui.ordinal(), i, j, k); + PacketUtil.openGUI((EntityPlayerMP)player, gui, i, j, k); } ArrayList list = getScrollData(player, gui, npc); if(list == null || list.isEmpty()) @@ -317,7 +317,7 @@ public class NoppesUtilServer { return; } else{ - BOB.sendDataChecked((EntityPlayerMP)player, EnumPacketClient.GUI, gui.ordinal(), i, j, k); + PacketUtil.openGUI((EntityPlayerMP)player, gui, i, j, k); } ArrayList list = getScrollData(player, gui, npc); if(list == null || list.isEmpty()) @@ -358,7 +358,7 @@ public class NoppesUtilServer { } return null; } - public static void spawnParticle(Entity entity,String particle,int dimension){ + public static void spawnParticle(Entity entity,String particle, int dimension){ BOB.sendAssociatedData(entity, EnumPacketClient.PARTICLE, entity.posX, entity.posY, entity.posZ, entity.height, entity.width, entity.yOffset, particle); } @@ -673,7 +673,7 @@ public class NoppesUtilServer { NBTTagCompound compound = option.writeNBT(); compound.setInteger("Position", pos); - BOB.sendData((EntityPlayerMP)player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData((EntityPlayerMP)player, compound); } } @@ -709,7 +709,7 @@ public class NoppesUtilServer { public static void setClonerGui(EntityPlayerMP player, int x, int y, int z){ if(player == null) return; - BOB.sendData(player, EnumPacketClient.CLONER, x, y, z); + PacketUtil.openGUI(player, EnumGuiType.Cloner, x, y, z); } public static void setTeleporterGUI(EntityPlayerMP player){ @@ -726,14 +726,13 @@ public class NoppesUtilServer { ContainerManageRecipes container = (ContainerManageRecipes) player.openContainer; container.setRecipe(recipe); - - BOB.sendData(player, EnumPacketClient.GUI_DATA, recipe.writeNBT()); + PacketUtil.sendGuiData((EntityPlayerMP)player, recipe.writeNBT()); } public static void sendBank(EntityPlayerMP player,Bank bank) { NBTTagCompound compound = new NBTTagCompound(); bank.writeEntityToNBT(compound); - BOB.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData((EntityPlayerMP)player, compound); if(player.openContainer instanceof ContainerManageBanks){ ((ContainerManageBanks)player.openContainer).setBank(bank); @@ -759,14 +758,14 @@ public class NoppesUtilServer { } public static void sendGuiError(EntityPlayer player, int i) { - BOB.sendData((EntityPlayerMP)player, EnumPacketClient.GUI_ERROR, i, new NBTTagCompound()); + PacketUtil.errorGUI((EntityPlayerMP)player, i, new NBTTagCompound()); } public static void sendGuiClose(EntityPlayerMP player, int i, NBTTagCompound comp) { if(player.openContainer != player.inventoryContainer){ player.openContainer = player.inventoryContainer; } - BOB.sendData(player, EnumPacketClient.GUI_CLOSE, i, comp); + PacketUtil.closeGUI(player, i, comp); } public static Entity spawnCloneWithProtection(NBTTagCompound compound, int x, int y, diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index ac713f384..7b5f99866 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -672,7 +672,7 @@ public class PacketHandlerServer{ List list = new ArrayList(); for(LinkedData data : LinkedNpcController.Instance.list) list.add(data.name); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.SCROLL_LIST, list); + PacketUtil.sendList((EntityPlayerMP)player, list); } else if(type == EnumPacketServer.LinkedRemove){ LinkedNpcController.Instance.removeData(Server.readString(buffer)); @@ -680,13 +680,13 @@ public class PacketHandlerServer{ List list = new ArrayList(); for(LinkedData data : LinkedNpcController.Instance.list) list.add(data.name); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.SCROLL_LIST, list); + PacketUtil.sendList((EntityPlayerMP)player, list); } else if(type == EnumPacketServer.LinkedGetAll){ List list = new ArrayList(); for(LinkedData data : LinkedNpcController.Instance.list) list.add(data.name); - Server.sendData(player, EnumPacketClient.SCROLL_LIST, list); + PacketUtil.sendList((EntityPlayerMP)player, list); if(npc != null) Server.sendData(player, EnumPacketClient.SCROLL_SELECTED, npc.linkedName); } diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index 373d52081..ec70a949f 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -365,7 +365,7 @@ public class ClientProxy extends CommonProxy { else if (gui == EnumGuiType.RedstoneBlock) return new GuiNpcRedstoneBlock(x, y, z); - else if(gui == EnumGuiType.MobSpawner) + else if(gui == EnumGuiType.Cloner) return new GuiNpcMobSpawner(x, y, z); else if(gui == EnumGuiType.MobSpawnerMounter) diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index 657fbf12b..6d669008f 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -1,22 +1,17 @@ package noppes.npcs.client; -import cpw.mods.fml.common.ObfuscationReflectionHelper; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.gui.achievement.GuiAchievement; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.network.PacketBuffer; -import net.minecraft.stats.Achievement; import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.StatCollector; import net.minecraft.village.MerchantRecipeList; import noppes.npcs.*; import noppes.npcs.client.ClientProxy.FontContainer; @@ -169,7 +164,7 @@ public class PacketHandlerClient extends PacketHandlerServer{ int x = buffer.readInt(); int y = buffer.readInt(); int z = buffer.readInt(); - CustomNpcs.proxy.openGui(x, y, z, EnumGuiType.MobSpawner, player); + CustomNpcs.proxy.openGui(x, y, z, EnumGuiType.Cloner, player); } else if(type == EnumPacketClient.TELEPORTER){ CustomNpcs.proxy.openGui((EntityNPCInterface)null,EnumGuiType.NpcDimensions); diff --git a/src/main/java/noppes/npcs/constants/EnumGuiType.java b/src/main/java/noppes/npcs/constants/EnumGuiType.java index 7d356220e..5b028c886 100644 --- a/src/main/java/noppes/npcs/constants/EnumGuiType.java +++ b/src/main/java/noppes/npcs/constants/EnumGuiType.java @@ -23,7 +23,7 @@ public enum EnumGuiType { SetupTransporter, ManageTransport, ManageBanks, - MobSpawner, + Cloner, SetupBank, ManageDialogs, ManageQuests, From 29f9774d1f98f496c49b7e7c521fc415d8bbc394 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 29 Jan 2025 23:33:35 -0500 Subject: [PATCH 033/157] WE KEEPPPP ON GOING --- .../kamkeel/npcs/network/PacketHandler.java | 25 ++++++++------- .../packets/client/ParticlePacket.java | 31 ++++++++++++++++++- .../client/ScriptedParticlePacket.java | 10 +++++- ...ClonerPacket.java => GuiClonerPacket.java} | 16 ++++++---- .../GuiTeleporterPacket.java} | 12 +++---- .../client/{ => gui}/OpenBookPacket.java | 2 +- .../client/{ => npc}/DeleteNpcPacket.java | 10 ++++-- .../client/{ => npc}/EditNpcPacket.java | 2 +- .../client/{ => npc}/UpdateNpcPacket.java | 2 +- .../java/noppes/npcs/NoppesUtilServer.java | 19 ++++++------ .../npcs/client/PacketHandlerClient.java | 12 ------- .../npcs/constants/EnumPacketClient.java | 2 -- 12 files changed, 88 insertions(+), 55 deletions(-) rename src/main/java/kamkeel/npcs/network/packets/client/gui/{GUIClonerPacket.java => GuiClonerPacket.java} (75%) rename src/main/java/kamkeel/npcs/network/packets/client/{TeleporterPacket.java => gui/GuiTeleporterPacket.java} (71%) rename src/main/java/kamkeel/npcs/network/packets/client/{ => gui}/OpenBookPacket.java (96%) rename src/main/java/kamkeel/npcs/network/packets/client/{ => npc}/DeleteNpcPacket.java (86%) rename src/main/java/kamkeel/npcs/network/packets/client/{ => npc}/EditNpcPacket.java (96%) rename src/main/java/kamkeel/npcs/network/packets/client/{ => npc}/UpdateNpcPacket.java (96%) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index b80ec1480..1265552c7 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -6,29 +6,22 @@ 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.EditNpcPacket; -import kamkeel.npcs.network.packets.client.gui.GuiClosePacket; -import kamkeel.npcs.network.packets.client.gui.GuiDataPacket; -import kamkeel.npcs.network.packets.client.gui.GuiErrorPacket; -import kamkeel.npcs.network.packets.client.gui.GuiOpenPacket; +import kamkeel.npcs.network.packets.client.*; +import kamkeel.npcs.network.packets.client.gui.*; 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 kamkeel.npcs.network.packets.client.npc.DeleteNpcPacket; +import kamkeel.npcs.network.packets.client.npc.EditNpcPacket; 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 { @@ -63,12 +56,22 @@ public final class PacketHandler { CLIENT_PACKET.registerPacket(new ChatAlertPacket()); CLIENT_PACKET.registerPacket(new AchievementPacket()); CLIENT_PACKET.registerPacket(new EditNpcPacket()); + CLIENT_PACKET.registerPacket(new RolePacket()); + CLIENT_PACKET.registerPacket(new GuiTeleporterPacket()); // Client | GUI Packets CLIENT_PACKET.registerPacket(new GuiClosePacket()); CLIENT_PACKET.registerPacket(new GuiOpenPacket()); CLIENT_PACKET.registerPacket(new GuiErrorPacket()); CLIENT_PACKET.registerPacket(new GuiDataPacket()); + CLIENT_PACKET.registerPacket(new GuiClonerPacket()); + + // Client | NPC Packets + CLIENT_PACKET.registerPacket(new DeleteNpcPacket()); + + // Client | Other + CLIENT_PACKET.registerPacket(new ParticlePacket()); + CLIENT_PACKET.registerPacket(new ScriptedParticlePacket()); } private void registerChannels() { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java index 1e7c4f6a0..2265eb3b3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.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.entity.player.EntityPlayer; import noppes.npcs.client.NoppesUtil; @@ -13,8 +14,28 @@ import java.io.IOException; public final class ParticlePacket extends AbstractPacket { public static final String packetName = "Client|Particle"; + private double x; + private double y; + private double z; + + private float height; + private float width; + private float yOffset; + + private String particle; + public ParticlePacket() {} + public ParticlePacket(double x, double y, double z, float height, float width, float yOffset, String particle) { + this.x = x; + this.y = y; + this.z = z; + this.height = height; + this.width = width; + this.yOffset = yOffset; + this.particle = particle; + } + @Override public Enum getType() { return EnumClientPacket.PARTICLE; @@ -27,7 +48,15 @@ public final class ParticlePacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeDouble(x); + out.writeDouble(y); + out.writeDouble(z); + + out.writeFloat(height); + out.writeFloat(width); + out.writeFloat(yOffset); + + ByteBufUtils.writeString(out, particle); } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java index c89c4c352..d8d2c1878 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java @@ -5,7 +5,9 @@ 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.nbt.NBTTagCompound; import noppes.npcs.client.NoppesUtil; import java.io.IOException; @@ -13,8 +15,14 @@ import java.io.IOException; public final class ScriptedParticlePacket extends AbstractPacket { public static final String packetName = "Client|ScriptedParticle"; + private NBTTagCompound compound; + public ScriptedParticlePacket() {} + public ScriptedParticlePacket(NBTTagCompound compound) { + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.SCRIPTED_PARTICLE; @@ -27,7 +35,7 @@ public final class ScriptedParticlePacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, compound); } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GUIClonerPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClonerPacket.java similarity index 75% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/GUIClonerPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClonerPacket.java index e7d26d066..3e3004f28 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GUIClonerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClonerPacket.java @@ -6,21 +6,25 @@ 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.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.GuiNpcMobSpawnerAdd; import java.io.IOException; -public final class GUIClonerPacket extends AbstractPacket { +public final class GuiClonerPacket extends AbstractPacket { public static final String packetName = "Client|Clone"; - public GUIClonerPacket() {} + private NBTTagCompound compound; - public GUIClonerPacket(boolean ok) {} + public GuiClonerPacket() {} + + public GuiClonerPacket(NBTTagCompound comp){ + this.compound = comp; + } @Override public Enum getType() { @@ -34,14 +38,14 @@ public final class GUIClonerPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, compound); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { if(CustomNpcs.side() != Side.CLIENT) return; - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); NoppesUtil.openGUI(player, new GuiNpcMobSpawnerAdd(nbt)); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/TeleporterPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java similarity index 71% rename from src/main/java/kamkeel/npcs/network/packets/client/TeleporterPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java index 1063f703e..b9df7dd7c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/TeleporterPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.gui; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; @@ -12,10 +12,10 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; -public final class TeleporterPacket extends AbstractPacket { +public final class GuiTeleporterPacket extends AbstractPacket { public static final String packetName = "Client|Teleporter"; - public TeleporterPacket() {} + public GuiTeleporterPacket(){} @Override public Enum getType() { @@ -28,12 +28,10 @@ public final class TeleporterPacket extends AbstractPacket { } @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } + public void sendData(ByteBuf out) throws IOException {} @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - CustomNpcs.proxy.openGui((EntityNPCInterface)null,EnumGuiType.NpcDimensions); + CustomNpcs.proxy.openGui((EntityNPCInterface)null, EnumGuiType.NpcDimensions); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/OpenBookPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java similarity index 96% rename from src/main/java/kamkeel/npcs/network/packets/client/OpenBookPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java index 1028896bd..864b8d8e3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/OpenBookPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.gui; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DeleteNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java similarity index 86% rename from src/main/java/kamkeel/npcs/network/packets/client/DeleteNpcPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java index 24b167de8..738a3c91a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DeleteNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.npc; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; @@ -15,8 +15,14 @@ import java.io.IOException; public final class DeleteNpcPacket extends AbstractPacket { public static final String packetName = "Client|DeleteNpc"; + private int entityId; + public DeleteNpcPacket() {} + public DeleteNpcPacket(int id){ + this.entityId = id; + } + @Override public Enum getType() { return EnumClientPacket.DELETE_NPC; @@ -29,7 +35,7 @@ public final class DeleteNpcPacket 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/EditNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java similarity index 96% rename from src/main/java/kamkeel/npcs/network/packets/client/EditNpcPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java index cbac6a98c..9e2b8fa83 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/EditNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.npc; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/UpdateNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java similarity index 96% rename from src/main/java/kamkeel/npcs/network/packets/client/UpdateNpcPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java index 05edb23e0..916db40fa 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/UpdateNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.npc; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 727483674..04b46d069 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -5,8 +5,12 @@ 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.ParticlePacket; +import kamkeel.npcs.network.packets.client.ScriptedParticlePacket; +import kamkeel.npcs.network.packets.client.npc.DeleteNpcPacket; +import kamkeel.npcs.network.packets.client.npc.EditNpcPacket; import kamkeel.npcs.network.packets.client.RolePacket; +import kamkeel.npcs.network.packets.client.gui.GuiTeleporterPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.command.server.CommandBlockLogic; import net.minecraft.entity.Entity; @@ -359,16 +363,11 @@ public class NoppesUtilServer { return null; } public static void spawnParticle(Entity entity,String particle, int dimension){ - BOB.sendAssociatedData(entity, EnumPacketClient.PARTICLE, entity.posX, entity.posY, entity.posZ, entity.height, entity.width, entity.yOffset, particle); + PacketHandler.Instance.sendTracking(new ParticlePacket(entity.posX, entity.posY, entity.posZ, entity.height, entity.width, entity.yOffset, particle), entity); } public static void spawnScriptedParticle(NBTTagCompound compound, int dimensionId){ - List list = MinecraftServer.getServer().getConfigurationManager().playerEntityList; - for (EntityPlayer player : list) { - if (player.worldObj.provider.dimensionId == dimensionId) { - BOB.sendData((EntityPlayerMP) player, EnumPacketClient.SCRIPTED_PARTICLE, compound); - } - } + PacketHandler.Instance.sendToDimension(new ScriptedParticlePacket(compound), dimensionId); } public static void playSound(int id, ScriptSound sound) { @@ -414,7 +413,7 @@ public class NoppesUtilServer { } public static void deleteNpc(EntityNPCInterface npc,EntityPlayer player) { - BOB.sendAssociatedData(npc, EnumPacketClient.DELETE_NPC, npc.getEntityId()); + PacketHandler.Instance.sendTracking(new DeleteNpcPacket(npc.getEntityId()), npc); } public static void createMobSpawner(int x, int y, int z, NBTTagCompound comp, EntityPlayer player) { @@ -715,7 +714,7 @@ public class NoppesUtilServer { public static void setTeleporterGUI(EntityPlayerMP player){ if(player == null) return; - BOB.sendData(player, EnumPacketClient.TELEPORTER); + PacketHandler.Instance.sendToPlayer(new GuiTeleporterPacket(), player); } public static void setRecipeGui(EntityPlayerMP player, RecipeCarpentry recipe){ diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index 6d669008f..b13f8df8b 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -89,12 +89,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ return; NoppesUtil.openDialog(Server.readNBT(buffer), (EntityNPCInterface) entity, player); } - else if(type == EnumPacketClient.DIALOG_DUMMY){ - EntityDialogNpc npc = new EntityDialogNpc(player.worldObj); - npc.display.name = Server.readString(buffer); - EntityUtil.Copy(player, npc); - NoppesUtil.openDialog(Server.readNBT(buffer), npc, player); - } else if(type == EnumPacketClient.QUEST_COMPLETION){ NoppesUtil.guiQuestCompletion(player, Server.readNBT(buffer)); } @@ -160,12 +154,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ NBTTagCompound compound = Server.readNBT(buffer); NoppesUtil.openGUI(player, new GuiNpcMobSpawnerAdd(compound)); } - else if(type == EnumPacketClient.CLONER){ - int x = buffer.readInt(); - int y = buffer.readInt(); - int z = buffer.readInt(); - CustomNpcs.proxy.openGui(x, y, z, EnumGuiType.Cloner, player); - } else if(type == EnumPacketClient.TELEPORTER){ CustomNpcs.proxy.openGui((EntityNPCInterface)null,EnumGuiType.NpcDimensions); } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index b6b9ffa45..ec0ceb509 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -24,10 +24,8 @@ public enum EnumPacketClient { VILLAGER_LIST, SYNCRECIPES_CARPENTRYBENCH, CLONE, - CLONER, TELEPORTER, OPEN_BOOK, - DIALOG_DUMMY, CONFIG, ISGUIOPEN, SCRIPT_OVERLAY_DATA, From 1c97d845181b27adcb5c59b6aafc7b1ce9cb3b92 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 29 Jan 2025 23:40:05 -0500 Subject: [PATCH 034/157] uh oh --- .../packets/client/ConfigCommandPacket.java | 5 ++ .../network/packets/client/DialogPacket.java | 5 ++ .../client/DisableMouseInputPacket.java | 5 ++ .../packets/client/MarkDataPacket.java | 5 ++ .../client/OverlayQuestTrackingPacket.java | 5 ++ .../packets/client/ParticlePacket.java | 35 +++++++++- .../packets/client/PartyDataPacket.java | 5 ++ .../PlayerUpdateSkinOverlaysPacket.java | 5 ++ .../packets/client/QuestCompletionPacket.java | 5 ++ .../network/packets/client/RolePacket.java | 5 ++ .../client/ScriptOverlayClosePacket.java | 5 ++ .../client/ScriptOverlayDataPacket.java | 5 ++ .../client/ScriptedParticlePacket.java | 48 +++++++++++++- .../packets/client/ScrollSelectedPacket.java | 5 ++ .../packets/client/StopSoundForPacket.java | 5 ++ .../packets/client/StopSoundsPacket.java | 5 ++ .../packets/client/SwingPlayerArmPacket.java | 5 ++ .../client/UpdateAnimationsPacket.java | 5 ++ .../packets/client/VillagerListPacket.java | 5 ++ .../packets/client/gui/GuiClosePacket.java | 5 ++ .../packets/client/gui/GuiDataPacket.java | 5 ++ .../packets/client/gui/GuiErrorPacket.java | 5 ++ .../packets/client/gui/GuiRedstonePacket.java | 5 ++ .../client/gui/GuiTeleporterPacket.java | 4 ++ .../packets/client/gui/GuiWaypointPacket.java | 5 ++ .../packets/client/gui/IsGuiOpenPacket.java | 5 ++ .../packets/client/gui/OpenBookPacket.java | 5 ++ .../packets/client/npc/DeleteNpcPacket.java | 5 ++ .../packets/client/npc/EditNpcPacket.java | 5 ++ .../packets/client/npc/UpdateNpcPacket.java | 5 ++ .../client/sound/ContinueSoundsPacket.java | 5 ++ .../client/sound/PauseSoundsPacket.java | 5 ++ .../packets/client/sound/PlayMusicPacket.java | 5 ++ .../packets/client/sound/PlaySoundPacket.java | 5 ++ .../client/sound/PlaySoundToNoIdPacket.java | 5 ++ .../client/sound/PlaySoundToPacket.java | 5 ++ .../packets/client/sync/SyncConfigPacket.java | 5 ++ .../sync/SyncRecipesCarpentryBenchPacket.java | 5 ++ .../sync/SyncRecipesWorkbenchPacket.java | 5 ++ .../packets/client/sync/SyncWeaponPacket.java | 5 ++ .../java/noppes/npcs/client/NoppesUtil.java | 65 +------------------ .../npcs/client/PacketHandlerClient.java | 6 -- .../npcs/constants/EnumPacketClient.java | 2 - 43 files changed, 270 insertions(+), 75 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java index 2e030eb9e..6e41fe008 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.ClientProxy; import noppes.npcs.config.ConfigClient; @@ -36,6 +38,9 @@ public final class ConfigCommandPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + int configType = in.readInt(); if (configType == 0) { // Font Configuration String font = Server.readString(in); 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 afd0e2162..1533ccad6 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -10,6 +11,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; import noppes.npcs.entity.EntityDialogNpc; @@ -51,6 +53,9 @@ public final class DialogPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + int entityID = in.readInt(); String name = ByteBufUtils.readString(in); NBTTagCompound tagCompound = ByteBufUtils.readNBT(in); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java index c2c2b4d21..6c325f803 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.ClientEventHandler; @@ -33,6 +35,9 @@ public final class DisableMouseInputPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + long duration = in.readLong(); String parsedButtons = Server.readString(in); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java index 6d053a132..47df043a3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -8,6 +9,7 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.controllers.data.MarkData; import noppes.npcs.entity.EntityNPCInterface; @@ -36,6 +38,9 @@ public final class MarkDataPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + Entity entity = player.worldObj.getEntityByID(in.readInt()); if (!(entity instanceof EntityNPCInterface)) return; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java index 46d4c1a84..cc7dca9aa 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -8,6 +9,7 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.gui.OverlayQuestTracking; import noppes.npcs.client.ClientCacheHandler; @@ -36,6 +38,9 @@ public final class OverlayQuestTrackingPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + try { NBTTagCompound nbt = Server.readNBT(in); ClientCacheHandler.questTrackingOverlay = new OverlayQuestTracking(Minecraft.getMinecraft()); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java index 2265eb3b3..f59f63248 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java @@ -1,15 +1,21 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; 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.entity.player.EntityPlayer; -import noppes.npcs.client.NoppesUtil; +import net.minecraft.world.World; +import noppes.npcs.CustomNpcs; +import noppes.npcs.Server; import java.io.IOException; +import java.util.Random; public final class ParticlePacket extends AbstractPacket { public static final String packetName = "Client|Particle"; @@ -61,6 +67,31 @@ public final class ParticlePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NoppesUtil.spawnParticle(in); + if(CustomNpcs.side() != Side.CLIENT) + return; + + spawnParticle(in); + } + + @SideOnly(Side.CLIENT) + public static void spawnParticle(ByteBuf buffer) throws IOException{ + double posX = buffer.readDouble(); + double posY = buffer.readDouble(); + double posZ = buffer.readDouble(); + float height = buffer.readFloat(); + float width = buffer.readFloat(); + float yOffset = buffer.readFloat(); + + String particle = Server.readString(buffer); + World worldObj = Minecraft.getMinecraft().theWorld; + + Random rand = worldObj.rand; + if(particle.equals("heal")){ + for (int k = 0; k < 6; k++) + { + worldObj.spawnParticle("instantSpell", posX + (rand.nextDouble() - 0.5D) * (double)width, (posY + rand.nextDouble() * (double)height) - (double)yOffset, posZ + (rand.nextDouble() - 0.5D) * (double)width, 0, 0, 0); + worldObj.spawnParticle("spell", posX + (rand.nextDouble() - 0.5D) * (double)width, (posY + rand.nextDouble() * (double)height) - (double)yOffset, posZ + (rand.nextDouble() - 0.5D) * (double)width, 0, 0, 0); + } + } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java index 4243be0da..8bfad94b8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -9,6 +10,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.gui.util.GuiContainerNPCInterface; import noppes.npcs.client.gui.util.GuiNPCInterface; @@ -38,6 +40,9 @@ public final class PartyDataPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof GuiNPCInterface && ((GuiNPCInterface) gui).hasSubGui()) { gui = (GuiScreen) ((GuiNPCInterface) gui).getSubGui(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java index a61e06ad5..d8537f1a2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -8,6 +9,7 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; @@ -35,6 +37,9 @@ public final class PlayerUpdateSkinOverlaysPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + String playerName = Server.readString(in); NBTTagCompound nbt = Server.readNBT(in); EntityPlayer sendingPlayer = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(playerName); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java index ab1928890..62db8e592 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; @@ -33,6 +35,9 @@ public final class QuestCompletionPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + NoppesUtil.guiQuestCompletion(player, Server.readNBT(in)); } } 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 1fa8fcb2f..801a6efb3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -10,6 +11,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; import noppes.npcs.entity.EntityNPCInterface; @@ -44,6 +46,9 @@ public final class RolePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + NBTTagCompound compound = ByteBufUtils.readNBT(in); Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); if (entity instanceof EntityNPCInterface) { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java index 3181e3749..7215684e7 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.client.ClientCacheHandler; import java.io.IOException; @@ -32,6 +34,9 @@ public final class ScriptOverlayClosePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + int overlayId = in.readInt(); ClientCacheHandler.customOverlays.remove(overlayId); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java index a3979c5fb..7e9680584 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -7,6 +8,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.gui.customoverlay.OverlayCustom; import noppes.npcs.client.ClientCacheHandler; @@ -35,6 +37,9 @@ public final class ScriptOverlayDataPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + OverlayCustom overlayCustom = new OverlayCustom(Minecraft.getMinecraft()); overlayCustom.setOverlayData(Server.readNBT(in)); ClientCacheHandler.customOverlays.put(overlayCustom.overlay.getID(), overlayCustom); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java index d8d2c1878..07c60cba5 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java @@ -1,14 +1,22 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; 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.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.NoppesUtil; +import net.minecraft.world.World; +import noppes.npcs.CustomNpcs; +import noppes.npcs.Server; +import noppes.npcs.client.fx.CustomFX; +import noppes.npcs.scripted.ScriptParticle; import java.io.IOException; @@ -40,6 +48,42 @@ public final class ScriptedParticlePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NoppesUtil.spawnScriptedParticle(player, in); + if(CustomNpcs.side() != Side.CLIENT) + return; + + spawnScriptedParticle(player, in); + } + + @SideOnly(Side.CLIENT) + public static void spawnScriptedParticle(EntityPlayer player, ByteBuf buffer){ + Minecraft minecraft = Minecraft.getMinecraft(); + + NBTTagCompound compound; + ScriptParticle particle; + try { + compound = Server.readNBT(buffer); + particle = ScriptParticle.fromNBT(compound); + } catch (IOException ignored) { + return; + } + + World worldObj = player.worldObj; + if (worldObj == null) { + return; + } + + Entity entity = null; + if (compound.hasKey("EntityID")) { + entity = worldObj.getEntityByID(compound.getInteger("EntityID")); + if (entity != null) + worldObj = entity.worldObj; + else return; + } + + CustomFX fx = CustomFX.fromScriptedParticle(particle, worldObj, entity); + + for(int i = 0; i < particle.amount; i++){ + minecraft.effectRenderer.addEffect(fx); + } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java index 381b7107a..7a5750051 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -8,6 +9,7 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.gui.util.IScrollData; @@ -35,6 +37,9 @@ public final class ScrollSelectedPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof IScrollData) { String selected = Server.readString(in); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java index d936f2971..d2de64a97 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.client.controllers.ScriptSoundController; import java.io.IOException; @@ -32,6 +34,9 @@ public final class StopSoundForPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + int soundId = in.readInt(); ScriptSoundController.Instance.stopSound(soundId); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java index 1abedb3be..07920a16c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.client.controllers.ScriptSoundController; import java.io.IOException; @@ -32,6 +34,9 @@ public final class StopSoundsPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + ScriptSoundController.Instance.stopAllSounds(); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java index cdc6eaae8..05ba2a996 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -7,6 +8,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import java.io.IOException; @@ -32,6 +34,9 @@ public final class SwingPlayerArmPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + Minecraft.getMinecraft().thePlayer.swingItem(); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java index 91399cc74..5776abd9b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -9,6 +10,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.ClientCacheHandler; import noppes.npcs.controllers.data.Animation; @@ -39,6 +41,9 @@ public final class UpdateAnimationsPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + NBTTagCompound nbt = Server.readNBT(in); AnimationData animationData = null; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java index 202604664..d9d437155 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -7,6 +8,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.PacketBuffer; +import noppes.npcs.CustomNpcs; import noppes.npcs.ServerEventsHandler; import net.minecraft.village.MerchantRecipeList; @@ -34,6 +36,9 @@ public final class VillagerListPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + MerchantRecipeList recipes = MerchantRecipeList.func_151390_b(new PacketBuffer(in)); ServerEventsHandler.Merchant.setRecipes(recipes); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java index edfd24540..515f7acb0 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.gui; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -10,6 +11,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.gui.util.IGuiClose; @@ -46,6 +48,9 @@ public final class GuiClosePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof IGuiClose) { int closeCode = in.readInt(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java index d7f81e9bd..cd10c94dc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.gui; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -10,6 +11,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.gui.util.GuiContainerNPCInterface; import noppes.npcs.client.gui.util.GuiNPCInterface; @@ -45,6 +47,9 @@ public final class GuiDataPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof GuiNPCInterface && ((GuiNPCInterface) gui).hasSubGui()) { gui = (GuiScreen) ((GuiNPCInterface) gui).getSubGui(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java index 9dcf12367..1f1593b00 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.gui; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -10,6 +11,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.gui.util.IGuiError; @@ -46,6 +48,9 @@ public final class GuiErrorPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof IGuiError) { int errorCode = in.readInt(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java index 4116e7eed..b96c8a19d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.gui; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -7,6 +8,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; @@ -34,6 +36,9 @@ public final class GuiRedstonePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + NBTTagCompound nbt = Server.readNBT(in); NoppesUtil.saveRedstoneBlock(player, nbt); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java index b9df7dd7c..2011197fb 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.gui; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -32,6 +33,9 @@ public final class GuiTeleporterPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + CustomNpcs.proxy.openGui((EntityNPCInterface)null, EnumGuiType.NpcDimensions); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java index 094e9ef90..3ad029dd3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.gui; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -7,6 +8,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; @@ -34,6 +36,9 @@ public final class GuiWaypointPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + NBTTagCompound nbt = Server.readNBT(in); NoppesUtil.saveWayPointBlock(player, nbt); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java index 041deba86..6531c89a4 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.gui; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -7,6 +8,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.client.NoppesUtil; import java.io.IOException; @@ -33,6 +35,9 @@ public final class IsGuiOpenPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + boolean isGuiOpen = Minecraft.getMinecraft().currentScreen != null; NoppesUtil.isGUIOpen(isGuiOpen); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java index 864b8d8e3..0c5d09a6e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.gui; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -8,6 +9,7 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.gui.player.GuiBook; import noppes.npcs.client.NoppesUtil; @@ -36,6 +38,9 @@ public final class OpenBookPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + int x = in.readInt(); int y = in.readInt(); int z = in.readInt(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java index 738a3c91a..d46d66c8b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.npc; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -8,6 +9,7 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; @@ -40,6 +42,9 @@ public final class DeleteNpcPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); if (entity instanceof EntityNPCInterface) { ((EntityNPCInterface) entity).delete(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java index 9e2b8fa83..986f98a71 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.npc; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -8,6 +9,7 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.client.NoppesUtil; import noppes.npcs.entity.EntityNPCInterface; @@ -40,6 +42,9 @@ public final class EditNpcPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); if (!(entity instanceof EntityNPCInterface)) { return; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java index 916db40fa..69435950b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.npc; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -9,6 +10,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.entity.EntityNPCInterface; @@ -36,6 +38,9 @@ public final class UpdateNpcPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + NBTTagCompound compound = Server.readNBT(in); Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); if (entity instanceof EntityNPCInterface) { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java index 47b151726..c577c945a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client.sound; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.client.controllers.ScriptSoundController; import java.io.IOException; @@ -32,6 +34,9 @@ public final class ContinueSoundsPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + ScriptSoundController.Instance.continueAllSounds(); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java index add8d770e..e7998ca12 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client.sound; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.client.controllers.ScriptSoundController; import java.io.IOException; @@ -32,6 +34,9 @@ public final class PauseSoundsPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + ScriptSoundController.Instance.pauseAllSounds(); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java index b59cfb9e3..85ede77bd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client.sound; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.controllers.MusicController; @@ -33,6 +35,9 @@ public final class PlayMusicPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + String musicName = Server.readString(in); MusicController.Instance.playMusicBackground(musicName, player, Integer.MAX_VALUE); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java index a81e3873a..6288417a5 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client.sound; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.controllers.MusicController; @@ -33,6 +35,9 @@ public final class PlaySoundPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + String soundName = Server.readString(in); float x = in.readFloat(); float y = in.readFloat(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java index 665a477a0..b6ca766df 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.sound; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -7,6 +8,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.controllers.ScriptClientSound; import noppes.npcs.client.controllers.ScriptSoundController; @@ -35,6 +37,9 @@ public final class PlaySoundToNoIdPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + NBTTagCompound nbt = Server.readNBT(in); ScriptClientSound sound = ScriptClientSound.fromScriptSound(nbt, player.worldObj); ScriptSoundController.Instance.playSound(sound); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java index d8f4a94f0..8643c63dd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.sound; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -7,6 +8,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.controllers.ScriptClientSound; import noppes.npcs.client.controllers.ScriptSoundController; @@ -35,6 +37,9 @@ public final class PlaySoundToPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + int soundId = in.readInt(); NBTTagCompound nbt = Server.readNBT(in); ScriptClientSound sound = ScriptClientSound.fromScriptSound(nbt, player.worldObj); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java index 5532cd97f..bbf0aefd7 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.sync; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -7,6 +8,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.controllers.SyncController; @@ -34,6 +36,9 @@ public final class SyncConfigPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + NBTTagCompound configNBT = Server.readNBT(in); SyncController.receiveConfigs(configNBT); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java index f78cf1ea1..445d85c81 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client.sync; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.controllers.RecipeController; import java.io.IOException; @@ -32,6 +34,9 @@ public final class SyncRecipesCarpentryBenchPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + RecipeController.Instance.anvilRecipes = RecipeController.syncRecipes; RecipeController.syncRecipes.clear(); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java index da4608155..0e35a66a6 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java @@ -1,11 +1,13 @@ package kamkeel.npcs.network.packets.client.sync; +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.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcs; import noppes.npcs.controllers.RecipeController; import java.io.IOException; @@ -32,6 +34,9 @@ public final class SyncRecipesWorkbenchPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + RecipeController.reloadGlobalRecipes(RecipeController.syncRecipes); RecipeController.syncRecipes.clear(); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java index 22d9d9789..503c219e6 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java @@ -1,5 +1,6 @@ package kamkeel.npcs.network.packets.client.sync; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -9,6 +10,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.entity.EntityNPCInterface; @@ -36,6 +38,9 @@ public final class SyncWeaponPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; + Entity entity = player.worldObj.getEntityByID(in.readInt()); if (!(entity instanceof EntityNPCInterface)) return; diff --git a/src/main/java/noppes/npcs/client/NoppesUtil.java b/src/main/java/noppes/npcs/client/NoppesUtil.java index f4e3ab5ba..b0df591f8 100644 --- a/src/main/java/noppes/npcs/client/NoppesUtil.java +++ b/src/main/java/noppes/npcs/client/NoppesUtil.java @@ -4,19 +4,14 @@ import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.CompressedStreamTools; -import net.minecraft.nbt.NBTSizeTracker; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Util; -import net.minecraft.world.World; import noppes.npcs.CustomNpcs; import noppes.npcs.Server; -import noppes.npcs.client.fx.CustomFX; import noppes.npcs.client.gui.player.GuiDialogInteract; import noppes.npcs.client.gui.player.GuiQuestCompletion; import noppes.npcs.client.gui.util.GuiContainerNPCInterface; @@ -29,15 +24,12 @@ import noppes.npcs.controllers.data.Dialog; import noppes.npcs.controllers.data.Quest; import noppes.npcs.controllers.data.SkinOverlay; import noppes.npcs.entity.EntityNPCInterface; -import noppes.npcs.scripted.ScriptParticle; import org.lwjgl.Sys; -import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.net.URI; import java.util.HashMap; -import java.util.Random; import java.util.Vector; public class NoppesUtil { @@ -50,28 +42,7 @@ public class NoppesUtil { Client.sendData(EnumPacketServer.Gui, gui.ordinal(), i, j, k); } - public static void spawnParticle(ByteBuf buffer) throws IOException{ - double posX = buffer.readDouble(); - double posY = buffer.readDouble(); - double posZ = buffer.readDouble(); - float height = buffer.readFloat(); - float width = buffer.readFloat(); - float yOffset = buffer.readFloat(); - - String particle = Server.readString(buffer); - World worldObj = Minecraft.getMinecraft().theWorld; - - Random rand = worldObj.rand; - if(particle.equals("heal")){ - for (int k = 0; k < 6; k++) - { - worldObj.spawnParticle("instantSpell", posX + (rand.nextDouble() - 0.5D) * (double)width, (posY + rand.nextDouble() * (double)height) - (double)yOffset, posZ + (rand.nextDouble() - 0.5D) * (double)width, 0, 0, 0); - worldObj.spawnParticle("spell", posX + (rand.nextDouble() - 0.5D) * (double)width, (posY + rand.nextDouble() * (double)height) - (double)yOffset, posZ + (rand.nextDouble() - 0.5D) * (double)width, 0, 0, 0); - } - } - } - - public static void updateSkinOverlayData(EntityPlayer player, NBTTagCompound compound) { + public static void updateSkinOverlayData(EntityPlayer player, NBTTagCompound compound) { HashMap skinOverlays = new HashMap<>(); HashMap oldOverlays = new HashMap<>(); NBTTagList skinOverlayList = compound.getTagList("SkinOverlayData",10); @@ -90,39 +61,7 @@ public class NoppesUtil { ClientCacheHandler.skinOverlays.put(player.getUniqueID(), skinOverlays); } - public static void spawnScriptedParticle(EntityPlayer player, ByteBuf buffer){ - Minecraft minecraft = Minecraft.getMinecraft(); - - NBTTagCompound compound; - ScriptParticle particle; - try { - compound = Server.readNBT(buffer); - particle = ScriptParticle.fromNBT(compound); - } catch (IOException ignored) { - return; - } - - World worldObj = player.worldObj; - if (worldObj == null) { - return; - } - - Entity entity = null; - if (compound.hasKey("EntityID")) { - entity = worldObj.getEntityByID(compound.getInteger("EntityID")); - if (entity != null) - worldObj = entity.worldObj; - else return; - } - - CustomFX fx = CustomFX.fromScriptedParticle(particle, worldObj, entity); - - for(int i = 0; i < particle.amount; i++){ - minecraft.effectRenderer.addEffect(fx); - } - } - - public static void clickSound() { + public static void clickSound() { Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); } diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index b13f8df8b..d6c4c0f7a 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -124,12 +124,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ EnumGuiType gui = EnumGuiType.values()[buffer.readInt()]; CustomNpcs.proxy.openGui(NoppesUtil.getLastNpc(), gui, buffer.readInt(), buffer.readInt(), buffer.readInt()); } - else if(type == EnumPacketClient.SCRIPTED_PARTICLE){ - NoppesUtil.spawnScriptedParticle(player, buffer); - } - else if(type == EnumPacketClient.PARTICLE){ - NoppesUtil.spawnParticle(buffer); - } else if(type == EnumPacketClient.DELETE_NPC){ Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(buffer.readInt()); if(entity == null || !(entity instanceof EntityNPCInterface)) diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index ec0ceb509..34b1a9934 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -12,8 +12,6 @@ public enum EnumPacketClient { UPDATE_NPC, ROLE, GUI, - SCRIPTED_PARTICLE, - PARTICLE, DELETE_NPC, SCROLL_SELECTED, GUI_REDSTONE, From e8e868993b5e3d339710169e0f3be7496f815f89 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 29 Jan 2025 23:47:50 -0500 Subject: [PATCH 035/157] SideOnly Client for Client Packets --- .../npcs/network/packets/client/AchievementPacket.java | 5 ++--- .../kamkeel/npcs/network/packets/client/ChatAlertPacket.java | 5 ++--- .../npcs/network/packets/client/ChatBubblePacket.java | 5 ++--- .../npcs/network/packets/client/ConfigCommandPacket.java | 5 ++--- .../kamkeel/npcs/network/packets/client/DialogPacket.java | 5 ++--- .../npcs/network/packets/client/DisableMouseInputPacket.java | 5 ++--- .../kamkeel/npcs/network/packets/client/MarkDataPacket.java | 5 ++--- .../network/packets/client/OverlayQuestTrackingPacket.java | 5 ++--- .../kamkeel/npcs/network/packets/client/ParticlePacket.java | 4 +--- .../kamkeel/npcs/network/packets/client/PartyDataPacket.java | 5 ++--- .../packets/client/PlayerUpdateSkinOverlaysPacket.java | 5 ++--- .../npcs/network/packets/client/QuestCompletionPacket.java | 5 ++--- .../java/kamkeel/npcs/network/packets/client/RolePacket.java | 5 ++--- .../network/packets/client/ScriptOverlayClosePacket.java | 5 ++--- .../npcs/network/packets/client/ScriptOverlayDataPacket.java | 5 ++--- .../npcs/network/packets/client/ScriptedParticlePacket.java | 1 + .../npcs/network/packets/client/ScrollSelectedPacket.java | 5 ++--- .../npcs/network/packets/client/StopSoundForPacket.java | 5 ++--- .../npcs/network/packets/client/StopSoundsPacket.java | 5 ++--- .../npcs/network/packets/client/SwingPlayerArmPacket.java | 5 ++--- .../npcs/network/packets/client/UpdateAnimationsPacket.java | 5 ++--- .../npcs/network/packets/client/VillagerListPacket.java | 5 ++--- .../npcs/network/packets/client/gui/GuiClonerPacket.java | 4 ++-- .../npcs/network/packets/client/gui/GuiClosePacket.java | 5 ++--- .../npcs/network/packets/client/gui/GuiDataPacket.java | 5 ++--- .../npcs/network/packets/client/gui/GuiErrorPacket.java | 5 ++--- .../npcs/network/packets/client/gui/GuiOpenPacket.java | 5 ++--- .../npcs/network/packets/client/gui/GuiRedstonePacket.java | 5 ++--- .../npcs/network/packets/client/gui/GuiTeleporterPacket.java | 5 ++--- .../npcs/network/packets/client/gui/GuiWaypointPacket.java | 5 ++--- .../npcs/network/packets/client/gui/IsGuiOpenPacket.java | 5 ++--- .../npcs/network/packets/client/gui/OpenBookPacket.java | 5 ++--- .../npcs/network/packets/client/npc/DeleteNpcPacket.java | 5 ++--- .../npcs/network/packets/client/npc/EditNpcPacket.java | 5 ++--- .../npcs/network/packets/client/npc/UpdateNpcPacket.java | 5 ++--- .../network/packets/client/sound/ContinueSoundsPacket.java | 5 ++--- .../npcs/network/packets/client/sound/PauseSoundsPacket.java | 5 ++--- .../npcs/network/packets/client/sound/PlayMusicPacket.java | 5 ++--- .../npcs/network/packets/client/sound/PlaySoundPacket.java | 5 ++--- .../network/packets/client/sound/PlaySoundToNoIdPacket.java | 5 ++--- .../npcs/network/packets/client/sound/PlaySoundToPacket.java | 5 ++--- .../npcs/network/packets/client/sync/SyncConfigPacket.java | 5 ++--- .../network/packets/client/sync/SyncRecipesAddPacket.java | 5 ++--- .../packets/client/sync/SyncRecipesCarpentryBenchPacket.java | 5 ++--- .../packets/client/sync/SyncRecipesWorkbenchPacket.java | 5 ++--- .../npcs/network/packets/client/sync/SyncWeaponPacket.java | 5 ++--- 46 files changed, 90 insertions(+), 134 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/client/AchievementPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/AchievementPacket.java index cec1f3b5e..253234780 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/AchievementPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/AchievementPacket.java @@ -2,6 +2,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.common.ObfuscationReflectionHelper; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -53,14 +54,12 @@ public final class AchievementPacket extends AbstractPacket { ByteBufUtils.writeString(out, this.message); } + @SideOnly(Side.CLIENT) @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); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java index 055f34f1a..b5aa7cd28 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -41,14 +42,12 @@ public final class ChatAlertPacket extends AbstractPacket { ByteBufUtils.fillBuffer(out, this.objects); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { if(!ConfigClient.ChatAlerts) return; - if(CustomNpcs.side() != Side.CLIENT) - return; - StringBuilder message = new StringBuilder(); String str; while ((str = Server.readString(in)) != null && !str.isEmpty()) { 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 511dd76e3..3920bc337 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -50,11 +51,9 @@ public final class ChatBubblePacket extends AbstractPacket { out.writeBoolean(this.hideText); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); if(!(entity instanceof EntityNPCInterface)) return; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java index 6e41fe008..cb85e4f28 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -36,11 +37,9 @@ public final class ConfigCommandPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - int configType = in.readInt(); if (configType == 0) { // Font Configuration String font = Server.readString(in); 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 1533ccad6..c254b308d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -51,11 +52,9 @@ public final class DialogPacket extends AbstractPacket { ByteBufUtils.writeNBT(out, this.compound); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - int entityID = in.readInt(); String name = ByteBufUtils.readString(in); NBTTagCompound tagCompound = ByteBufUtils.readNBT(in); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java index 6c325f803..a94e52bb0 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -33,11 +34,9 @@ public final class DisableMouseInputPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - long duration = in.readLong(); String parsedButtons = Server.readString(in); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java index 47df043a3..86f58f0fc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -36,11 +37,9 @@ public final class MarkDataPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - Entity entity = player.worldObj.getEntityByID(in.readInt()); if (!(entity instanceof EntityNPCInterface)) return; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java index cc7dca9aa..ec7e42fa9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -36,11 +37,9 @@ public final class OverlayQuestTrackingPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - try { NBTTagCompound nbt = Server.readNBT(in); ClientCacheHandler.questTrackingOverlay = new OverlayQuestTracking(Minecraft.getMinecraft()); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java index f59f63248..060c02cc8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java @@ -65,11 +65,9 @@ public final class ParticlePacket extends AbstractPacket { ByteBufUtils.writeString(out, particle); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - spawnParticle(in); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java index 8bfad94b8..6bdbc2023 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -38,11 +39,9 @@ public final class PartyDataPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof GuiNPCInterface && ((GuiNPCInterface) gui).hasSubGui()) { gui = (GuiScreen) ((GuiNPCInterface) gui).getSubGui(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java index d8537f1a2..efdb92eab 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -35,11 +36,9 @@ public final class PlayerUpdateSkinOverlaysPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - String playerName = Server.readString(in); NBTTagCompound nbt = Server.readNBT(in); EntityPlayer sendingPlayer = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(playerName); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java index 62db8e592..951edf70a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -33,11 +34,9 @@ public final class QuestCompletionPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - NoppesUtil.guiQuestCompletion(player, Server.readNBT(in)); } } 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 801a6efb3..2b088ca6f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -44,11 +45,9 @@ public final class RolePacket extends AbstractPacket { ByteBufUtils.writeNBT(out, this.compound); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - NBTTagCompound compound = ByteBufUtils.readNBT(in); Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); if (entity instanceof EntityNPCInterface) { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java index 7215684e7..145de9c51 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -32,11 +33,9 @@ public final class ScriptOverlayClosePacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - int overlayId = in.readInt(); ClientCacheHandler.customOverlays.remove(overlayId); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java index 7e9680584..936549389 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -35,11 +36,9 @@ public final class ScriptOverlayDataPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - OverlayCustom overlayCustom = new OverlayCustom(Minecraft.getMinecraft()); overlayCustom.setOverlayData(Server.readNBT(in)); ClientCacheHandler.customOverlays.put(overlayCustom.overlay.getID(), overlayCustom); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java index 07c60cba5..9e08af69a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java @@ -46,6 +46,7 @@ public final class ScriptedParticlePacket extends AbstractPacket { ByteBufUtils.writeNBT(out, compound); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { if(CustomNpcs.side() != Side.CLIENT) diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java index 7a5750051..d705df2de 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -35,11 +36,9 @@ public final class ScrollSelectedPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof IScrollData) { String selected = Server.readString(in); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java index d2de64a97..1d972d0aa 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -32,11 +33,9 @@ public final class StopSoundForPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - int soundId = in.readInt(); ScriptSoundController.Instance.stopSound(soundId); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java index 07920a16c..384d04cb7 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -32,11 +33,9 @@ public final class StopSoundsPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - ScriptSoundController.Instance.stopAllSounds(); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java index 05ba2a996..56217ae4b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -32,11 +33,9 @@ public final class SwingPlayerArmPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - Minecraft.getMinecraft().thePlayer.swingItem(); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java index 5776abd9b..57f14ce49 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -39,11 +40,9 @@ public final class UpdateAnimationsPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - NBTTagCompound nbt = Server.readNBT(in); AnimationData animationData = null; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java index d9d437155..8f67e4fe6 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -34,11 +35,9 @@ public final class VillagerListPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - MerchantRecipeList recipes = MerchantRecipeList.func_151390_b(new PacketBuffer(in)); ServerEventsHandler.Merchant.setRecipes(recipes); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClonerPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClonerPacket.java index 3e3004f28..486a6e128 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClonerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClonerPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.gui; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -41,10 +42,9 @@ public final class GuiClonerPacket extends AbstractPacket { ByteBufUtils.writeNBT(out, compound); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; NBTTagCompound nbt = ByteBufUtils.readNBT(in); NoppesUtil.openGUI(player, new GuiNpcMobSpawnerAdd(nbt)); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java index 515f7acb0..cf1c75ee9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.gui; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -46,11 +47,9 @@ public final class GuiClosePacket extends AbstractPacket { ByteBufUtils.writeNBT(out, compound); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof IGuiClose) { int closeCode = in.readInt(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java index cd10c94dc..1ee404bd0 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.gui; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -45,11 +46,9 @@ public final class GuiDataPacket extends AbstractPacket { ByteBufUtils.writeNBT(out, compound); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof GuiNPCInterface && ((GuiNPCInterface) gui).hasSubGui()) { gui = (GuiScreen) ((GuiNPCInterface) gui).getSubGui(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java index 1f1593b00..b1620962b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.gui; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -46,11 +47,9 @@ public final class GuiErrorPacket extends AbstractPacket { ByteBufUtils.writeNBT(out, compound); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof IGuiError) { int errorCode = in.readInt(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java index 58aa52879..d85ac885e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.gui; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -47,11 +48,9 @@ public final class GuiOpenPacket extends AbstractPacket { out.writeInt(z); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - EnumGuiType gui = EnumGuiType.values()[in.readInt()]; int x = in.readInt(); int y = in.readInt(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java index b96c8a19d..1284d70e2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.gui; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -34,11 +35,9 @@ public final class GuiRedstonePacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - NBTTagCompound nbt = Server.readNBT(in); NoppesUtil.saveRedstoneBlock(player, nbt); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java index 2011197fb..c42bc8a89 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.gui; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -31,11 +32,9 @@ public final class GuiTeleporterPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException {} + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - CustomNpcs.proxy.openGui((EntityNPCInterface)null, EnumGuiType.NpcDimensions); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java index 3ad029dd3..e449e7b18 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.gui; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -34,11 +35,9 @@ public final class GuiWaypointPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - NBTTagCompound nbt = Server.readNBT(in); NoppesUtil.saveWayPointBlock(player, nbt); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java index 6531c89a4..30be1b9fc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.gui; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -33,11 +34,9 @@ public final class IsGuiOpenPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - boolean isGuiOpen = Minecraft.getMinecraft().currentScreen != null; NoppesUtil.isGUIOpen(isGuiOpen); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java index 0c5d09a6e..b8848ba1b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.gui; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -36,11 +37,9 @@ public final class OpenBookPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - int x = in.readInt(); int y = in.readInt(); int z = in.readInt(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java index d46d66c8b..3f841ac54 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.npc; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -40,11 +41,9 @@ public final class DeleteNpcPacket extends AbstractPacket { out.writeInt(this.entityId); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); if (entity instanceof EntityNPCInterface) { ((EntityNPCInterface) entity).delete(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java index 986f98a71..87524d037 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.npc; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -40,11 +41,9 @@ public final class EditNpcPacket extends AbstractPacket { out.writeInt(this.entityId); } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); if (!(entity instanceof EntityNPCInterface)) { return; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java index 69435950b..7fd6a281d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.npc; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -36,11 +37,9 @@ public final class UpdateNpcPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - NBTTagCompound compound = Server.readNBT(in); Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); if (entity instanceof EntityNPCInterface) { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java index c577c945a..8c7f54a52 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.sound; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -32,11 +33,9 @@ public final class ContinueSoundsPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - ScriptSoundController.Instance.continueAllSounds(); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java index e7998ca12..e80ff0970 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.sound; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -32,11 +33,9 @@ public final class PauseSoundsPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - ScriptSoundController.Instance.pauseAllSounds(); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java index 85ede77bd..488f0a0db 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.sound; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -33,11 +34,9 @@ public final class PlayMusicPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - String musicName = Server.readString(in); MusicController.Instance.playMusicBackground(musicName, player, Integer.MAX_VALUE); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java index 6288417a5..bbee638d3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.sound; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -33,11 +34,9 @@ public final class PlaySoundPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - String soundName = Server.readString(in); float x = in.readFloat(); float y = in.readFloat(); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java index b6ca766df..a82b687e6 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.sound; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -35,11 +36,9 @@ public final class PlaySoundToNoIdPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - NBTTagCompound nbt = Server.readNBT(in); ScriptClientSound sound = ScriptClientSound.fromScriptSound(nbt, player.worldObj); ScriptSoundController.Instance.playSound(sound); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java index 8643c63dd..bc364fbee 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.sound; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -35,11 +36,9 @@ public final class PlaySoundToPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - int soundId = in.readInt(); NBTTagCompound nbt = Server.readNBT(in); ScriptClientSound sound = ScriptClientSound.fromScriptSound(nbt, player.worldObj); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java index bbf0aefd7..b27bc4dd9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.sync; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -34,11 +35,9 @@ public final class SyncConfigPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - NBTTagCompound configNBT = Server.readNBT(in); SyncController.receiveConfigs(configNBT); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesAddPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesAddPacket.java index cdef473ec..b3cd733f3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesAddPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesAddPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.sync; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -35,11 +36,9 @@ public final class SyncRecipesAddPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - NBTTagList list = Server.readNBT(in).getTagList("recipes", 10); if (list != null) { for (int i = 0; i < list.tagCount(); i++) { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java index 445d85c81..d30ca5643 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.sync; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -32,11 +33,9 @@ public final class SyncRecipesCarpentryBenchPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - RecipeController.Instance.anvilRecipes = RecipeController.syncRecipes; RecipeController.syncRecipes.clear(); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java index 0e35a66a6..2b489d00a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.sync; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -32,11 +33,9 @@ public final class SyncRecipesWorkbenchPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - RecipeController.reloadGlobalRecipes(RecipeController.syncRecipes); RecipeController.syncRecipes.clear(); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java index 503c219e6..9640fa422 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.sync; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -36,11 +37,9 @@ public final class SyncWeaponPacket extends AbstractPacket { // TODO: Send Packet } + @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - Entity entity = player.worldObj.getEntityByID(in.readInt()); if (!(entity instanceof EntityNPCInterface)) return; From 31c7ceacab512b4bcd59fa96b824a4ff46e0dab1 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 01:35:48 -0500 Subject: [PATCH 036/157] Sound Packet Commit --- .../kamkeel/npcs/network/PacketHandler.java | 1 + .../npcs/network/enums/EnumClientPacket.java | 7 +- .../network/enums/EnumSoundOperation.java | 12 ++ .../packets/client/SoundManagementPacket.java | 145 ++++++++++++++++++ .../packets/client/StopSoundForPacket.java | 42 ----- .../packets/client/StopSoundsPacket.java | 41 ----- .../ScriptOverlayClosePacket.java | 3 +- .../{ => script}/ScriptOverlayDataPacket.java | 3 +- .../{ => script}/ScriptedParticlePacket.java | 2 +- .../client/sound/ContinueSoundsPacket.java | 41 ----- .../client/sound/PauseSoundsPacket.java | 41 ----- .../packets/client/sound/PlayMusicPacket.java | 43 ------ .../packets/client/sound/PlaySoundPacket.java | 46 ------ .../client/sound/PlaySoundToNoIdPacket.java | 46 ------ .../client/sound/PlaySoundToPacket.java | 47 ------ .../java/noppes/npcs/NoppesUtilPlayer.java | 16 +- .../java/noppes/npcs/NoppesUtilServer.java | 3 +- .../java/noppes/npcs/ServerEventsHandler.java | 5 +- .../npcs/client/PacketHandlerClient.java | 31 ---- .../npcs/constants/EnumPacketClient.java | 8 - .../npcs/entity/EntityNPCInterface.java | 7 +- 21 files changed, 181 insertions(+), 409 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/enums/EnumSoundOperation.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/client/SoundManagementPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java rename src/main/java/kamkeel/npcs/network/packets/client/{ => script}/ScriptOverlayClosePacket.java (93%) rename src/main/java/kamkeel/npcs/network/packets/client/{ => script}/ScriptOverlayDataPacket.java (94%) rename src/main/java/kamkeel/npcs/network/packets/client/{ => script}/ScriptedParticlePacket.java (98%) delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 1265552c7..90da65178 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -15,6 +15,7 @@ import kamkeel.npcs.network.packets.client.large.LargeScrollListPacket; import kamkeel.npcs.network.packets.client.large.sync.LargeSyncPacket; import kamkeel.npcs.network.packets.client.npc.DeleteNpcPacket; import kamkeel.npcs.network.packets.client.npc.EditNpcPacket; +import kamkeel.npcs.network.packets.client.script.ScriptedParticlePacket; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java index e6e93e6ff..489662c7d 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java @@ -5,6 +5,7 @@ public enum EnumClientPacket { SYNC, CHAT_ALERT, ACHIEVEMENT, + SOUND, PARTY_MESSAGE, SYNCRECIPES_ADD, SYNCRECIPES_WORKBENCH, @@ -44,12 +45,6 @@ public enum EnumClientPacket { UPDATE_ANIMATIONS, OVERLAY_QUEST_TRACKING, DISABLE_MOUSE_INPUT, - PLAY_SOUND_TO, - PLAY_SOUND_TO_NO_ID, - STOP_SOUND_FOR, - PAUSE_SOUNDS, - CONTINUE_SOUNDS, - STOP_SOUNDS, SYNC_WEAPON, MARK_DATA, SYNC_ADD, SYNC_END, SYNC_UPDATE, SYNC_REMOVE, SYNC_PLAYER, diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumSoundOperation.java b/src/main/java/kamkeel/npcs/network/enums/EnumSoundOperation.java new file mode 100644 index 000000000..3295df155 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/enums/EnumSoundOperation.java @@ -0,0 +1,12 @@ +package kamkeel.npcs.network.enums; + +public enum EnumSoundOperation { + CONTINUE_SOUNDS, + PAUSE_SOUNDS, + PLAY_MUSIC, + PLAY_SOUND, + PLAY_SOUND_TO, + PLAY_SOUND_TO_NO_ID, + STOP_SOUND_FOR, + STOP_SOUNDS +} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/SoundManagementPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/SoundManagementPacket.java new file mode 100644 index 000000000..8356b7397 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/client/SoundManagementPacket.java @@ -0,0 +1,145 @@ +package kamkeel.npcs.network.packets.client; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.network.enums.EnumSoundOperation; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.client.controllers.MusicController; +import noppes.npcs.client.controllers.ScriptClientSound; +import noppes.npcs.client.controllers.ScriptSoundController; + +import java.io.IOException; + +public final class SoundManagementPacket extends AbstractPacket { + private EnumSoundOperation operation; + private String soundName; + private float x, y, z; + private NBTTagCompound nbt; + private int soundId; + + public SoundManagementPacket() {} + + public SoundManagementPacket(EnumSoundOperation operation) { + this.operation = operation; + } + + public SoundManagementPacket(EnumSoundOperation operation, String soundName) { + this.operation = operation; + this.soundName = soundName; + } + + public SoundManagementPacket(EnumSoundOperation operation, String soundName, float x, float y, float z) { + this.operation = operation; + this.soundName = soundName; + this.x = x; + this.y = y; + this.z = z; + } + + public SoundManagementPacket(EnumSoundOperation operation, int soundId, NBTTagCompound nbt) { + this.operation = operation; + this.soundId = soundId; + this.nbt = nbt; + } + + public SoundManagementPacket(EnumSoundOperation operation, NBTTagCompound nbt) { + this.operation = operation; + this.nbt = nbt; + } + + public SoundManagementPacket(EnumSoundOperation operation, int soundId) { + this.operation = operation; + this.soundId = soundId; + } + + @Override + public Enum getType() { + return EnumClientPacket.SOUND; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.CLIENT_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(operation.ordinal()); + switch (operation) { + case PLAY_MUSIC: + case PLAY_SOUND: + ByteBufUtils.writeString(out, soundName); + if (operation == EnumSoundOperation.PLAY_SOUND) { + out.writeFloat(x); + out.writeFloat(y); + out.writeFloat(z); + } + break; + case PLAY_SOUND_TO: + out.writeInt(soundId); + ByteBufUtils.writeNBT(out, nbt); + break; + case PLAY_SOUND_TO_NO_ID: + ByteBufUtils.writeNBT(out, nbt); + break; + case STOP_SOUND_FOR: + out.writeInt(soundId); + break; + default: + break; + } + } + + @SideOnly(Side.CLIENT) + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + EnumSoundOperation operation = EnumSoundOperation.values()[in.readInt()]; + switch (operation) { + case CONTINUE_SOUNDS: + ScriptSoundController.Instance.continueAllSounds(); + break; + case PAUSE_SOUNDS: + ScriptSoundController.Instance.pauseAllSounds(); + break; + case PLAY_MUSIC: + String soundName = ByteBufUtils.readString(in); + MusicController.Instance.playMusicBackground(soundName, player, Integer.MAX_VALUE); + break; + case PLAY_SOUND: + String name = ByteBufUtils.readString(in); + float x = in.readFloat(); + float y = in.readFloat(); + float z = in.readFloat(); + MusicController.Instance.playSound(name, x, y, z); + break; + case PLAY_SOUND_TO: + int id = in.readInt(); + NBTTagCompound comp = ByteBufUtils.readNBT(in); + ScriptClientSound sound = ScriptClientSound.fromScriptSound(comp, player.worldObj); + ScriptSoundController.Instance.playSound(id, sound); + break; + case PLAY_SOUND_TO_NO_ID: + NBTTagCompound tagCompound = ByteBufUtils.readNBT(in); + ScriptClientSound soundNoId = ScriptClientSound.fromScriptSound(tagCompound, player.worldObj); + ScriptSoundController.Instance.playSound(soundNoId); + break; + case STOP_SOUND_FOR: + int stopID = in.readInt(); + ScriptSoundController.Instance.stopSound(stopID); + break; + case STOP_SOUNDS: + ScriptSoundController.Instance.stopAllSounds(); + break; + default: + break; + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java deleted file mode 100644 index 1d972d0aa..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundForPacket.java +++ /dev/null @@ -1,42 +0,0 @@ -package kamkeel.npcs.network.packets.client; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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.CustomNpcs; -import noppes.npcs.client.controllers.ScriptSoundController; - -import java.io.IOException; - -public final class StopSoundForPacket extends AbstractPacket { - public static final String packetName = "Client|StopSoundFor"; - - public StopSoundForPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.STOP_SOUND_FOR; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - int soundId = in.readInt(); - ScriptSoundController.Instance.stopSound(soundId); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java deleted file mode 100644 index 384d04cb7..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/StopSoundsPacket.java +++ /dev/null @@ -1,41 +0,0 @@ -package kamkeel.npcs.network.packets.client; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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.CustomNpcs; -import noppes.npcs.client.controllers.ScriptSoundController; - -import java.io.IOException; - -public final class StopSoundsPacket extends AbstractPacket { - public static final String packetName = "Client|StopSounds"; - - public StopSoundsPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.STOP_SOUNDS; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - ScriptSoundController.Instance.stopAllSounds(); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayClosePacket.java similarity index 93% rename from src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayClosePacket.java index 145de9c51..a7a6325b8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayClosePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.script; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -8,7 +8,6 @@ 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.CustomNpcs; import noppes.npcs.client.ClientCacheHandler; import java.io.IOException; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayDataPacket.java similarity index 94% rename from src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayDataPacket.java index 936549389..c435e1ae1 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScriptOverlayDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayDataPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.script; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -9,7 +9,6 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.gui.customoverlay.OverlayCustom; import noppes.npcs.client.ClientCacheHandler; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptedParticlePacket.java similarity index 98% rename from src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/script/ScriptedParticlePacket.java index 9e08af69a..a1aab8fa1 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScriptedParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptedParticlePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.script; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java deleted file mode 100644 index 8c7f54a52..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/ContinueSoundsPacket.java +++ /dev/null @@ -1,41 +0,0 @@ -package kamkeel.npcs.network.packets.client.sound; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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.CustomNpcs; -import noppes.npcs.client.controllers.ScriptSoundController; - -import java.io.IOException; - -public final class ContinueSoundsPacket extends AbstractPacket { - public static final String packetName = "Client|ContinueSounds"; - - public ContinueSoundsPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.CONTINUE_SOUNDS; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - ScriptSoundController.Instance.continueAllSounds(); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java deleted file mode 100644 index e80ff0970..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PauseSoundsPacket.java +++ /dev/null @@ -1,41 +0,0 @@ -package kamkeel.npcs.network.packets.client.sound; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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.CustomNpcs; -import noppes.npcs.client.controllers.ScriptSoundController; - -import java.io.IOException; - -public final class PauseSoundsPacket extends AbstractPacket { - public static final String packetName = "Client|PauseSounds"; - - public PauseSoundsPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.PAUSE_SOUNDS; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - ScriptSoundController.Instance.pauseAllSounds(); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java deleted file mode 100644 index 488f0a0db..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlayMusicPacket.java +++ /dev/null @@ -1,43 +0,0 @@ -package kamkeel.npcs.network.packets.client.sound; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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.CustomNpcs; -import noppes.npcs.Server; -import noppes.npcs.client.controllers.MusicController; - -import java.io.IOException; - -public final class PlayMusicPacket extends AbstractPacket { - public static final String packetName = "Client|PlayMusic"; - - public PlayMusicPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.PLAY_MUSIC; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - String musicName = Server.readString(in); - MusicController.Instance.playMusicBackground(musicName, player, Integer.MAX_VALUE); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java deleted file mode 100644 index bbee638d3..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundPacket.java +++ /dev/null @@ -1,46 +0,0 @@ -package kamkeel.npcs.network.packets.client.sound; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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.CustomNpcs; -import noppes.npcs.Server; -import noppes.npcs.client.controllers.MusicController; - -import java.io.IOException; - -public final class PlaySoundPacket extends AbstractPacket { - public static final String packetName = "Client|PlaySound"; - - public PlaySoundPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.PLAY_SOUND; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - String soundName = Server.readString(in); - float x = in.readFloat(); - float y = in.readFloat(); - float z = in.readFloat(); - MusicController.Instance.playSound(soundName, x, y, z); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java deleted file mode 100644 index a82b687e6..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToNoIdPacket.java +++ /dev/null @@ -1,46 +0,0 @@ -package kamkeel.npcs.network.packets.client.sound; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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 net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; -import noppes.npcs.client.controllers.ScriptClientSound; -import noppes.npcs.client.controllers.ScriptSoundController; - -import java.io.IOException; - -public final class PlaySoundToNoIdPacket extends AbstractPacket { - public static final String packetName = "Client|PlaySoundToNoId"; - - public PlaySoundToNoIdPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.PLAY_SOUND_TO_NO_ID; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NBTTagCompound nbt = Server.readNBT(in); - ScriptClientSound sound = ScriptClientSound.fromScriptSound(nbt, player.worldObj); - ScriptSoundController.Instance.playSound(sound); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java deleted file mode 100644 index bc364fbee..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sound/PlaySoundToPacket.java +++ /dev/null @@ -1,47 +0,0 @@ -package kamkeel.npcs.network.packets.client.sound; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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 net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; -import noppes.npcs.client.controllers.ScriptClientSound; -import noppes.npcs.client.controllers.ScriptSoundController; - -import java.io.IOException; - -public final class PlaySoundToPacket extends AbstractPacket { - public static final String packetName = "Client|PlaySoundTo"; - - public PlaySoundToPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.PLAY_SOUND_TO; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - int soundId = in.readInt(); - NBTTagCompound nbt = Server.readNBT(in); - ScriptClientSound sound = ScriptClientSound.fromScriptSound(nbt, player.worldObj); - ScriptSoundController.Instance.playSound(soundId, sound); - } -} diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index 7290bef48..65724ad84 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -3,6 +3,10 @@ package noppes.npcs; import cpw.mods.fml.common.network.internal.FMLProxyPacket; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumSoundOperation; +import kamkeel.npcs.network.packets.client.SoundManagementPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; @@ -773,30 +777,30 @@ public class NoppesUtilPlayer { public static void playSoundTo(EntityPlayerMP player, int id, ScriptSound sound) { NBTTagCompound compound = sound.writeToNBT(); if (sound.sourceEntity == null || player.worldObj.provider.dimensionId == sound.sourceEntity.getDimension()) { - Server.sendData(player, EnumPacketClient.PLAY_SOUND_TO, id, compound); + PacketHandler.Instance.sendToPlayer(new SoundManagementPacket(EnumSoundOperation.PLAY_SOUND_TO, id, compound), player); } } public static void playSoundTo(EntityPlayerMP player, ScriptSound sound) { NBTTagCompound compound = sound.writeToNBT(); if (sound.sourceEntity == null || player.worldObj.provider.dimensionId == sound.sourceEntity.getDimension()) { - Server.sendData(player, EnumPacketClient.PLAY_SOUND_TO_NO_ID, compound); + PacketHandler.Instance.sendToPlayer(new SoundManagementPacket(EnumSoundOperation.PLAY_SOUND_TO_NO_ID, compound), player); } } public static void stopSoundFor(EntityPlayerMP player, int id) { - Server.sendData(player, EnumPacketClient.STOP_SOUND_FOR, id); + PacketHandler.Instance.sendToPlayer(new SoundManagementPacket(EnumSoundOperation.STOP_SOUND_FOR, id), player); } public static void pauseSoundsFor(EntityPlayerMP player) { - Server.sendData(player, EnumPacketClient.PAUSE_SOUNDS); + PacketHandler.Instance.sendToPlayer(new SoundManagementPacket(EnumSoundOperation.PAUSE_SOUNDS), player); } public static void continueSoundsFor(EntityPlayerMP player) { - Server.sendData(player, EnumPacketClient.CONTINUE_SOUNDS); + PacketHandler.Instance.sendToPlayer(new SoundManagementPacket(EnumSoundOperation.CONTINUE_SOUNDS), player); } public static void stopSoundsFor(EntityPlayerMP player) { - Server.sendData(player, EnumPacketClient.STOP_SOUNDS); + PacketHandler.Instance.sendToPlayer(new SoundManagementPacket(EnumSoundOperation.STOP_SOUNDS), player); } } diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 04b46d069..bdd8978c8 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -6,7 +6,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.packets.client.DialogPacket; import kamkeel.npcs.network.packets.client.ParticlePacket; -import kamkeel.npcs.network.packets.client.ScriptedParticlePacket; +import kamkeel.npcs.network.packets.client.script.ScriptedParticlePacket; import kamkeel.npcs.network.packets.client.npc.DeleteNpcPacket; import kamkeel.npcs.network.packets.client.npc.EditNpcPacket; import kamkeel.npcs.network.packets.client.RolePacket; @@ -37,7 +37,6 @@ import net.minecraft.world.World; import noppes.npcs.api.entity.IPlayer; import noppes.npcs.config.ConfigMain; import noppes.npcs.constants.EnumGuiType; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumPlayerData; import noppes.npcs.constants.EnumRoleType; import noppes.npcs.containers.ContainerManageBanks; diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index f67759ed5..7b01dd466 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -3,6 +3,9 @@ package noppes.npcs; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.enums.EnumSoundOperation; +import kamkeel.npcs.network.packets.client.SoundManagementPacket; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; @@ -327,7 +330,7 @@ public class ServerEventsHandler { ItemStack item = player.getCurrentEquippedItem(); if(item == null || item.getItem() != CustomItems.excalibur) return; - Server.sendData((EntityPlayerMP)player, EnumPacketClient.PLAY_MUSIC, "customnpcs:songs.excalibur"); + PacketHandler.Instance.sendToPlayer(new SoundManagementPacket(EnumSoundOperation.PLAY_MUSIC, "customnpcs:songs.excalibur"), (EntityPlayerMP)player); player.addChatMessage(new ChatComponentTranslation("<" + StatCollector.translateToLocal(item.getItem().getUnlocalizedName() + ".name") + "> " + ItemExcalibur.quotes[player.getRNG().nextInt(ItemExcalibur.quotes.length)])); } diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index d6c4c0f7a..c3c41c549 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -98,12 +98,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ return; NoppesUtil.setLastNpc((EntityNPCInterface) entity); } - else if(type == EnumPacketClient.PLAY_MUSIC){ - MusicController.Instance.playMusicBackground(Server.readString(buffer), player, Integer.MAX_VALUE); - } - else if(type == EnumPacketClient.PLAY_SOUND){ - MusicController.Instance.playSound(Server.readString(buffer),buffer.readFloat(),buffer.readFloat(),buffer.readFloat()); - } else if(type == EnumPacketClient.UPDATE_NPC){ NBTTagCompound compound = Server.readNBT(buffer); Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); @@ -305,31 +299,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ } } catch (Exception ignored) {} } - else if(type == EnumPacketClient.PLAY_SOUND_TO) { - int id = buffer.readInt(); - NBTTagCompound compound = Server.readNBT(buffer); - ScriptClientSound sound = ScriptClientSound.fromScriptSound(compound, player.worldObj); - - ScriptSoundController.Instance.playSound(id,sound); - } - else if(type == EnumPacketClient.PLAY_SOUND_TO_NO_ID) { - NBTTagCompound compound = Server.readNBT(buffer); - ScriptClientSound sound = ScriptClientSound.fromScriptSound(compound, player.worldObj); - ScriptSoundController.Instance.playSound(sound); - } - else if(type == EnumPacketClient.STOP_SOUND_FOR) { - int id = buffer.readInt(); - ScriptSoundController.Instance.stopSound(id); - } - else if(type == EnumPacketClient.PAUSE_SOUNDS) { - ScriptSoundController.Instance.pauseAllSounds(); - } - else if(type == EnumPacketClient.CONTINUE_SOUNDS) { - ScriptSoundController.Instance.continueAllSounds(); - } - else if(type == EnumPacketClient.STOP_SOUNDS) { - ScriptSoundController.Instance.stopAllSounds(); - } else if(type == EnumPacketClient.SYNC_WEAPON) { Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(buffer.readInt()); if(!(entity instanceof EntityNPCInterface)) diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index 34b1a9934..22992e872 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -7,8 +7,6 @@ public enum EnumPacketClient { DIALOG, QUEST_COMPLETION, EDIT_NPC, - PLAY_SOUND, - PLAY_MUSIC, UPDATE_NPC, ROLE, GUI, @@ -34,12 +32,6 @@ public enum EnumPacketClient { UPDATE_ANIMATIONS, OVERLAY_QUEST_TRACKING, DISABLE_MOUSE_INPUT, - PLAY_SOUND_TO, - PLAY_SOUND_TO_NO_ID, - STOP_SOUND_FOR, - PAUSE_SOUNDS, - CONTINUE_SOUNDS, - STOP_SOUNDS, SYNC_WEAPON, MARK_DATA, SYNC_CONFIG, diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 1a222c915..ba49853bd 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -8,7 +8,9 @@ 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.enums.EnumSoundOperation; import kamkeel.npcs.network.packets.client.ChatBubblePacket; +import kamkeel.npcs.network.packets.client.SoundManagementPacket; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; @@ -1022,9 +1024,8 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti return; if(!line.getSound().isEmpty()){ - Server.sendData((EntityPlayerMP)player, EnumPacketClient.PLAY_SOUND, line.getSound(), (float)posX, (float)posY, (float)posZ); - } - + PacketHandler.Instance.sendToPlayer(new SoundManagementPacket(EnumSoundOperation.PLAY_SOUND, line.getSound(), (float)posX, (float)posY, (float)posZ), (EntityPlayerMP)player); + } PacketHandler.Instance.sendToPlayer(new ChatBubblePacket(this.getEntityId(), line.getText(), !line.hideText()), (EntityPlayerMP)player); } public boolean getAlwaysRenderNameTagForRender(){ From 90605ee808e9c83bc1466918e16efae7f3fc73d1 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 01:44:45 -0500 Subject: [PATCH 037/157] ok --- src/main/java/kamkeel/npcs/controllers/SyncMaster.java | 2 +- src/main/java/kamkeel/npcs/network/PacketHandler.java | 3 ++- .../packets/client/large/{sync => }/LargeSyncPacket.java | 5 +---- 3 files changed, 4 insertions(+), 6 deletions(-) rename src/main/java/kamkeel/npcs/network/packets/client/large/{sync => }/LargeSyncPacket.java (95%) diff --git a/src/main/java/kamkeel/npcs/controllers/SyncMaster.java b/src/main/java/kamkeel/npcs/controllers/SyncMaster.java index 3b166459e..af1bcad98 100644 --- a/src/main/java/kamkeel/npcs/controllers/SyncMaster.java +++ b/src/main/java/kamkeel/npcs/controllers/SyncMaster.java @@ -4,7 +4,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import kamkeel.npcs.addon.DBCAddon; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.packets.client.large.sync.LargeSyncPacket; +import kamkeel.npcs.network.packets.client.large.LargeSyncPacket; import kamkeel.npcs.network.enums.EnumSyncAction; import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.entity.player.EntityPlayerMP; diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 90da65178..c65ae3d00 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -12,7 +12,7 @@ import kamkeel.npcs.network.packets.client.gui.*; 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 kamkeel.npcs.network.packets.client.large.LargeSyncPacket; import kamkeel.npcs.network.packets.client.npc.DeleteNpcPacket; import kamkeel.npcs.network.packets.client.npc.EditNpcPacket; import kamkeel.npcs.network.packets.client.script.ScriptedParticlePacket; @@ -59,6 +59,7 @@ public final class PacketHandler { CLIENT_PACKET.registerPacket(new EditNpcPacket()); CLIENT_PACKET.registerPacket(new RolePacket()); CLIENT_PACKET.registerPacket(new GuiTeleporterPacket()); + CLIENT_PACKET.registerPacket(new SoundManagementPacket()); // Client | GUI Packets CLIENT_PACKET.registerPacket(new GuiClosePacket()); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/sync/LargeSyncPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java similarity index 95% rename from src/main/java/kamkeel/npcs/network/packets/client/large/sync/LargeSyncPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java index 250fdfca2..2ce8f59e9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/sync/LargeSyncPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.large.sync; +package kamkeel.npcs.network.packets.client.large; import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; @@ -12,12 +12,9 @@ import kamkeel.npcs.network.enums.EnumSyncAction; import kamkeel.npcs.network.enums.EnumSyncType; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; import java.io.IOException; /** From 5d308b1f564343f39a79b1f4b67be74538880c00 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 09:22:43 -0500 Subject: [PATCH 038/157] Sync Recipes --- src/main/java/foxz/command/CmdConfig.java | 5 +- src/main/java/foxz/command/CmdDialog.java | 1 - .../kamkeel/npcs/command/ConfigCommand.java | 6 +- .../kamkeel/npcs/command/DialogCommand.java | 1 - .../kamkeel/npcs/controllers/SyncMaster.java | 89 +++++++++++++++++++ .../kamkeel/npcs/network/PacketHandler.java | 7 +- .../network/enums/EnumConfigOperation.java | 5 ++ .../npcs/network/enums/EnumSyncType.java | 4 +- .../packets/client/ConfigCommandPacket.java | 19 +++- .../packets/client/sync/SyncConfigPacket.java | 2 - .../sync/SyncRecipesCarpentryBenchPacket.java | 3 +- .../java/noppes/npcs/NoppesUtilServer.java | 2 +- .../java/noppes/npcs/ServerEventsHandler.java | 59 ++++-------- .../java/noppes/npcs/ServerTickHandler.java | 1 - .../npcs/client/PacketHandlerClient.java | 71 +-------------- .../gui/player/GuiNpcCarpentryBench.java | 4 +- .../npcs/client/gui/player/GuiRecipes.java | 18 ++-- .../npcs/constants/EnumPacketClient.java | 7 -- .../npcs/controllers/RecipeController.java | 35 +++++--- .../npcs/controllers/SyncController.java | 25 ------ 20 files changed, 174 insertions(+), 190 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/enums/EnumConfigOperation.java delete mode 100644 src/main/java/noppes/npcs/controllers/SyncController.java diff --git a/src/main/java/foxz/command/CmdConfig.java b/src/main/java/foxz/command/CmdConfig.java index d947513b0..e712fa4ca 100644 --- a/src/main/java/foxz/command/CmdConfig.java +++ b/src/main/java/foxz/command/CmdConfig.java @@ -5,6 +5,9 @@ import foxz.commandhelper.annotations.Command; import foxz.commandhelper.annotations.SubCommand; import foxz.commandhelper.permissions.OpOnly; import foxz.commandhelper.permissions.PlayerOnly; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.enums.EnumConfigOperation; +import kamkeel.npcs.network.packets.client.ConfigCommandPacket; import net.minecraft.block.Block; import net.minecraft.block.BlockIce; import net.minecraft.block.BlockLeavesBase; @@ -207,6 +210,6 @@ public class CmdConfig extends ChMcLogger { for(int i = 0; i < args.length; i++){ font += " " + args[i]; } - Server.sendData((EntityPlayerMP)this.pcParam, EnumPacketClient.CONFIG, 0, font.trim(), size); + PacketHandler.Instance.sendToPlayer(new ConfigCommandPacket(EnumConfigOperation.FONT, font.trim(), size), (EntityPlayerMP)this.pcParam); } } diff --git a/src/main/java/foxz/command/CmdDialog.java b/src/main/java/foxz/command/CmdDialog.java index 6dfa15a4f..842611930 100644 --- a/src/main/java/foxz/command/CmdDialog.java +++ b/src/main/java/foxz/command/CmdDialog.java @@ -11,7 +11,6 @@ import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.NoppesUtilServer; import noppes.npcs.client.EntityUtil; import noppes.npcs.controllers.DialogController; -import noppes.npcs.controllers.SyncController; import noppes.npcs.controllers.data.Dialog; import noppes.npcs.controllers.data.DialogOption; import noppes.npcs.controllers.data.PlayerData; diff --git a/src/main/java/kamkeel/npcs/command/ConfigCommand.java b/src/main/java/kamkeel/npcs/command/ConfigCommand.java index 89d22db44..0459e469a 100644 --- a/src/main/java/kamkeel/npcs/command/ConfigCommand.java +++ b/src/main/java/kamkeel/npcs/command/ConfigCommand.java @@ -1,6 +1,9 @@ package kamkeel.npcs.command; import foxz.utils.Market; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.enums.EnumConfigOperation; +import kamkeel.npcs.network.packets.client.ConfigCommandPacket; import net.minecraft.block.Block; import net.minecraft.block.BlockIce; import net.minecraft.block.BlockLeavesBase; @@ -291,8 +294,7 @@ public class ConfigCommand extends CommandKamkeelBase { for(int i = 0; i < args.length; i++){ font += " " + args[i]; } - Server.sendData((EntityPlayerMP)sender, EnumPacketClient.CONFIG, 0, font.trim(), size); + PacketHandler.Instance.sendToPlayer(new ConfigCommandPacket(EnumConfigOperation.FONT, font.trim(), size), (EntityPlayerMP)sender); } - } diff --git a/src/main/java/kamkeel/npcs/command/DialogCommand.java b/src/main/java/kamkeel/npcs/command/DialogCommand.java index c139e9b09..d89311880 100644 --- a/src/main/java/kamkeel/npcs/command/DialogCommand.java +++ b/src/main/java/kamkeel/npcs/command/DialogCommand.java @@ -11,7 +11,6 @@ import noppes.npcs.constants.EnumAvailabilityDialog; import noppes.npcs.constants.EnumAvailabilityQuest; import noppes.npcs.controllers.DialogController; import noppes.npcs.controllers.PlayerDataController; -import noppes.npcs.controllers.SyncController; import noppes.npcs.controllers.data.Availability; import noppes.npcs.controllers.data.Dialog; import noppes.npcs.controllers.data.DialogOption; diff --git a/src/main/java/kamkeel/npcs/controllers/SyncMaster.java b/src/main/java/kamkeel/npcs/controllers/SyncMaster.java index af1bcad98..6f8332934 100644 --- a/src/main/java/kamkeel/npcs/controllers/SyncMaster.java +++ b/src/main/java/kamkeel/npcs/controllers/SyncMaster.java @@ -10,10 +10,13 @@ import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import noppes.npcs.Server; import noppes.npcs.client.ClientCacheHandler; +import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.controllers.DialogController; import noppes.npcs.controllers.FactionController; import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.RecipeController; import noppes.npcs.controllers.data.*; import java.util.HashMap; @@ -45,10 +48,48 @@ public class SyncMaster { questCategoriesNBT() ), player); + // 4) Workbench Recipes + PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + EnumSyncType.WORKBENCH_RECIPES, + EnumSyncAction.RELOAD, + -1, + workbenchNBT() + ), player); + + // 5) Carpentry Recipes + PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + EnumSyncType.CARPENTRY_RECIPES, + EnumSyncAction.RELOAD, + -1, + carpentryNBT() + ), player); + DBCAddon.instance.syncPlayer(player); syncPlayerData(player, false); } + public static NBTTagCompound workbenchNBT(){ + RecipeController controller = RecipeController.Instance; + NBTTagList list = new NBTTagList(); + NBTTagCompound compound = new NBTTagCompound(); + for(RecipeCarpentry recipe : controller.globalRecipes.values()){ + list.appendTag(recipe.writeNBT()); + } + compound.setTag("recipes", list); + return compound; + } + + public static NBTTagCompound carpentryNBT(){ + RecipeController controller = RecipeController.Instance; + NBTTagList list = new NBTTagList(); + NBTTagCompound compound = new NBTTagCompound(); + for(RecipeCarpentry recipe : controller.carpentryRecipes.values()){ + list.appendTag(recipe.writeNBT()); + } + compound.setTag("recipes", list); + return compound; + } + public static NBTTagCompound factionsNBT(){ NBTTagList list = new NBTTagList(); NBTTagCompound compound = new NBTTagCompound(); @@ -144,6 +185,24 @@ public class SyncMaster { )); } + public static void syncAllWorkbenchRecipes() { + PacketHandler.Instance.sendToAll(new LargeSyncPacket( + EnumSyncType.WORKBENCH_RECIPES, + EnumSyncAction.RELOAD, + -1, + workbenchNBT() + )); + } + + public static void syncAllCarpentryRecipes() { + PacketHandler.Instance.sendToAll(new LargeSyncPacket( + EnumSyncType.CARPENTRY_RECIPES, + EnumSyncAction.RELOAD, + -1, + carpentryNBT() + )); + } + @SideOnly(Side.CLIENT) public static void clientSync(EnumSyncType enumSyncType, NBTTagCompound fullCompound) { switch (enumSyncType){ @@ -238,6 +297,36 @@ public class SyncMaster { ClientCacheHandler.playerData.setSyncNBTFull(fullCompound); break; } + case WORKBENCH_RECIPES: { + NBTTagList list = fullCompound.getTagList("recipes", 10); + if(list == null) + return; + + for(int i = 0; i < list.tagCount(); i++) + { + RecipeCarpentry recipe = RecipeCarpentry.read(list.getCompoundTagAt(i)); + RecipeController.syncRecipes.put(recipe.id,recipe); + } + + RecipeController.reloadGlobalRecipes(RecipeController.syncRecipes); + RecipeController.syncRecipes = new HashMap(); + break; + } + case CARPENTRY_RECIPES: { + NBTTagList list = fullCompound.getTagList("recipes", 10); + if(list == null) + return; + + for(int i = 0; i < list.tagCount(); i++) + { + RecipeCarpentry recipe = RecipeCarpentry.read(list.getCompoundTagAt(i)); + RecipeController.syncRecipes.put(recipe.id,recipe); + } + + RecipeController.Instance.carpentryRecipes = RecipeController.syncRecipes; + RecipeController.syncRecipes = new HashMap(); + break; + } } } diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index c65ae3d00..c3bf6b871 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -60,6 +60,9 @@ public final class PacketHandler { CLIENT_PACKET.registerPacket(new RolePacket()); CLIENT_PACKET.registerPacket(new GuiTeleporterPacket()); CLIENT_PACKET.registerPacket(new SoundManagementPacket()); + CLIENT_PACKET.registerPacket(new ParticlePacket()); + CLIENT_PACKET.registerPacket(new ScriptedParticlePacket()); + CLIENT_PACKET.registerPacket(new ConfigCommandPacket()); // Client | GUI Packets CLIENT_PACKET.registerPacket(new GuiClosePacket()); @@ -70,10 +73,6 @@ public final class PacketHandler { // Client | NPC Packets CLIENT_PACKET.registerPacket(new DeleteNpcPacket()); - - // Client | Other - CLIENT_PACKET.registerPacket(new ParticlePacket()); - CLIENT_PACKET.registerPacket(new ScriptedParticlePacket()); } private void registerChannels() { diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumConfigOperation.java b/src/main/java/kamkeel/npcs/network/enums/EnumConfigOperation.java new file mode 100644 index 000000000..d210c00a9 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/enums/EnumConfigOperation.java @@ -0,0 +1,5 @@ +package kamkeel.npcs.network.enums; + +public enum EnumConfigOperation { + FONT, +} diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java b/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java index e66957598..e573f5346 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java @@ -7,5 +7,7 @@ public enum EnumSyncType { QUEST, QUEST_CATEGORY, PLAYERDATA, - MAGIC + MAGIC, + WORKBENCH_RECIPES, + CARPENTRY_RECIPES } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java index cb85e4f28..506e8032e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java @@ -7,6 +7,8 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.network.enums.EnumConfigOperation; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.CustomNpcs; import noppes.npcs.Server; @@ -20,8 +22,16 @@ import java.io.IOException; public final class ConfigCommandPacket extends AbstractPacket { public static final String packetName = "Client|ConfigCommand"; + private EnumConfigOperation configOperation; + private Object[] objects; + public ConfigCommandPacket() {} + public ConfigCommandPacket(EnumConfigOperation operation, Object... obs) { + this.configOperation = operation; + this.objects = obs; + } + @Override public Enum getType() { return EnumClientPacket.CONFIG; @@ -34,15 +44,16 @@ public final class ConfigCommandPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeInt(this.configOperation.ordinal()); + ByteBufUtils.fillBuffer(out, objects); } @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - int configType = in.readInt(); - if (configType == 0) { // Font Configuration - String font = Server.readString(in); + EnumConfigOperation configType = EnumConfigOperation.values()[in.readInt()]; + if (configType == EnumConfigOperation.FONT) { // Font Configuration + String font = ByteBufUtils.readString(in); int size = in.readInt(); if (!font.isEmpty()) { ConfigClient.FontType = font; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java index b27bc4dd9..f1e6ad99f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java @@ -9,9 +9,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; import noppes.npcs.Server; -import noppes.npcs.controllers.SyncController; import java.io.IOException; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java index d30ca5643..c82b39987 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java @@ -8,7 +8,6 @@ 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.CustomNpcs; import noppes.npcs.controllers.RecipeController; import java.io.IOException; @@ -36,7 +35,7 @@ public final class SyncRecipesCarpentryBenchPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - RecipeController.Instance.anvilRecipes = RecipeController.syncRecipes; + RecipeController.Instance.carpentryRecipes = RecipeController.syncRecipes; RecipeController.syncRecipes.clear(); } } diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index bdd8978c8..56f6cbf05 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -591,7 +591,7 @@ public class NoppesUtilServer { } } else{ - for(RecipeCarpentry recipe : RecipeController.Instance.anvilRecipes.values()){ + for(RecipeCarpentry recipe : RecipeController.Instance.carpentryRecipes.values()){ map.put(recipe.name, recipe.id); } } diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index 7b01dd466..3c8d18487 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -3,9 +3,13 @@ package noppes.npcs; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; +import kamkeel.npcs.controllers.SyncMaster; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumSoundOperation; +import kamkeel.npcs.network.enums.EnumSyncAction; +import kamkeel.npcs.network.enums.EnumSyncType; import kamkeel.npcs.network.packets.client.SoundManagementPacket; +import kamkeel.npcs.network.packets.client.large.LargeSyncPacket; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; @@ -24,13 +28,11 @@ import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.MathHelper; import net.minecraft.util.StatCollector; import net.minecraft.village.MerchantRecipeList; -import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.player.EntityInteractEvent; -import net.minecraftforge.event.entity.player.EntityItemPickupEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; @@ -48,7 +50,6 @@ import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.items.ItemExcalibur; import noppes.npcs.items.ItemShield; import noppes.npcs.items.ItemSoulstoneEmpty; -import noppes.npcs.quests.QuestItem; import noppes.npcs.quests.QuestKill; import noppes.npcs.roles.RoleFollower; @@ -197,48 +198,20 @@ public class ServerEventsHandler { } if(block == Blocks.crafting_table && event.action == Action.RIGHT_CLICK_BLOCK && !player.worldObj.isRemote){ - RecipeController controller = RecipeController.Instance; - NBTTagList list = new NBTTagList(); - int i = 0; - for(RecipeCarpentry recipe : controller.globalRecipes.values()){ - list.appendTag(recipe.writeNBT()); - i++; - if(i % 10 == 0){ - NBTTagCompound compound = new NBTTagCompound(); - compound.setTag("recipes", list); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.SYNCRECIPES_ADD, compound); - list = new NBTTagList(); - } - } - - if(i % 10 != 0){ - NBTTagCompound compound = new NBTTagCompound(); - compound.setTag("recipes", list); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.SYNCRECIPES_ADD, compound); - } - Server.sendData((EntityPlayerMP)player, EnumPacketClient.SYNCRECIPES_WORKBENCH); + PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + EnumSyncType.WORKBENCH_RECIPES, + EnumSyncAction.RELOAD, + -1, + SyncMaster.workbenchNBT() + ), (EntityPlayerMP) player); } if(block == CustomItems.carpentyBench && event.action == Action.RIGHT_CLICK_BLOCK && !player.worldObj.isRemote){ - RecipeController controller = RecipeController.Instance; - NBTTagList list = new NBTTagList(); - int i = 0; - for(RecipeCarpentry recipe : controller.anvilRecipes.values()){ - list.appendTag(recipe.writeNBT()); - i++; - if(i % 10 == 0){ - NBTTagCompound compound = new NBTTagCompound(); - compound.setTag("recipes", list); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.SYNCRECIPES_ADD, compound); - list = new NBTTagList(); - } - } - - if(i % 10 != 0){ - NBTTagCompound compound = new NBTTagCompound(); - compound.setTag("recipes", list); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.SYNCRECIPES_ADD, compound); - } - Server.sendData((EntityPlayerMP)player, EnumPacketClient.SYNCRECIPES_CARPENTRYBENCH); + PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + EnumSyncType.CARPENTRY_RECIPES, + EnumSyncAction.RELOAD, + -1, + SyncMaster.carpentryNBT() + ), (EntityPlayerMP) player); } if((block == CustomItems.banner || block == CustomItems.wallBanner || block == CustomItems.sign) && event.action == Action.RIGHT_CLICK_BLOCK){ ItemStack item = player.inventory.getCurrentItem(); diff --git a/src/main/java/noppes/npcs/ServerTickHandler.java b/src/main/java/noppes/npcs/ServerTickHandler.java index 0532401e6..e121889c3 100644 --- a/src/main/java/noppes/npcs/ServerTickHandler.java +++ b/src/main/java/noppes/npcs/ServerTickHandler.java @@ -11,7 +11,6 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.world.WorldServer; import noppes.npcs.client.AnalyticsTracking; import noppes.npcs.controllers.PlayerDataController; -import noppes.npcs.controllers.SyncController; import noppes.npcs.controllers.data.PlayerData; import java.net.InetAddress; diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index c3c41c549..15bc2e6ba 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -9,35 +9,23 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.network.PacketBuffer; -import net.minecraft.util.ChatComponentTranslation; import net.minecraft.village.MerchantRecipeList; import noppes.npcs.*; -import noppes.npcs.client.ClientProxy.FontContainer; -import noppes.npcs.client.controllers.MusicController; -import noppes.npcs.client.controllers.ScriptClientSound; -import noppes.npcs.client.controllers.ScriptSoundController; import noppes.npcs.client.gui.GuiNpcMobSpawnerAdd; import noppes.npcs.client.gui.OverlayQuestTracking; import noppes.npcs.client.gui.customoverlay.OverlayCustom; import noppes.npcs.client.gui.player.GuiBook; import noppes.npcs.client.gui.util.*; -import noppes.npcs.config.ConfigClient; import noppes.npcs.constants.EnumGuiType; import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumPacketServer; -import noppes.npcs.controllers.RecipeController; -import noppes.npcs.controllers.SyncController; import noppes.npcs.controllers.data.Animation; import noppes.npcs.controllers.data.AnimationData; import noppes.npcs.controllers.data.MarkData; -import noppes.npcs.controllers.data.RecipeCarpentry; -import noppes.npcs.entity.EntityDialogNpc; import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; -import java.util.HashMap; public class PacketHandlerClient extends PacketHandlerServer{ @@ -53,30 +41,7 @@ public class PacketHandlerClient extends PacketHandlerServer{ } private void client(ByteBuf buffer, final EntityPlayer player, EnumPacketClient type) throws IOException{ - if(type == EnumPacketClient.SYNCRECIPES_ADD){ - NBTTagList list = Server.readNBT(buffer).getTagList("recipes", 10); - if(list == null) - return; - for(int i = 0; i < list.tagCount(); i++) - { - RecipeCarpentry recipe = RecipeCarpentry.read(list.getCompoundTagAt(i)); - RecipeController.syncRecipes.put(recipe.id,recipe); - } - - } - else if(type == EnumPacketClient.SYNCRECIPES_WORKBENCH){ - RecipeController.reloadGlobalRecipes(RecipeController.syncRecipes); - RecipeController.syncRecipes = new HashMap(); - } - else if(type == EnumPacketClient.SYNCRECIPES_CARPENTRYBENCH){ - RecipeController.Instance.anvilRecipes = RecipeController.syncRecipes; - RecipeController.syncRecipes = new HashMap(); - } - else if(type == EnumPacketClient.SYNC_CONFIG){ - NBTTagCompound configNBT = Server.readNBT(buffer); - SyncController.receiveConfigs(configNBT); - } - else if(type == EnumPacketClient.MARK_DATA){ + if(type == EnumPacketClient.MARK_DATA){ Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(buffer.readInt()); if(!(entity instanceof EntityNPCInterface)) return; @@ -92,12 +57,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ else if(type == EnumPacketClient.QUEST_COMPLETION){ NoppesUtil.guiQuestCompletion(player, Server.readNBT(buffer)); } - else if(type == EnumPacketClient.EDIT_NPC){ - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(buffer.readInt()); - if(entity == null || !(entity instanceof EntityNPCInterface)) - return; - NoppesUtil.setLastNpc((EntityNPCInterface) entity); - } else if(type == EnumPacketClient.UPDATE_NPC){ NBTTagCompound compound = Server.readNBT(buffer); Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); @@ -118,12 +77,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ EnumGuiType gui = EnumGuiType.values()[buffer.readInt()]; CustomNpcs.proxy.openGui(NoppesUtil.getLastNpc(), gui, buffer.readInt(), buffer.readInt(), buffer.readInt()); } - else if(type == EnumPacketClient.DELETE_NPC){ - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(buffer.readInt()); - if(entity == null || !(entity instanceof EntityNPCInterface)) - return; - ((EntityNPCInterface)entity).delete(); - } else if(type == EnumPacketClient.SCROLL_SELECTED){ GuiScreen gui = Minecraft.getMinecraft().currentScreen; if(gui == null || !(gui instanceof IScrollData)) @@ -193,28 +146,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ NoppesUtil.openGUI(player, new GuiBook(player, ItemStack.loadItemStackFromNBT(Server.readNBT(buffer)), x, y, z)); } - else if(type == EnumPacketClient.CONFIG){ - int config = buffer.readInt(); - if(config == 0){//Font - String font = Server.readString(buffer); - int size = buffer.readInt(); - if(!font.isEmpty()){ - ConfigClient.FontType = font; - ConfigClient.FontSize = size; - ClientProxy.Font = new FontContainer(ConfigClient.FontType, ConfigClient.FontSize); - - ConfigClient.FontTypeProperty.set(ConfigClient.FontType); - ConfigClient.FontSizeProperty.set(ConfigClient.FontSize); - if(ConfigClient.config.hasChanged()){ - ConfigClient.config.save(); - } - - player.addChatMessage(new ChatComponentTranslation("Font set to %s", ClientProxy.Font.getName())); - } - else - player.addChatMessage(new ChatComponentTranslation("Current font is %s", ClientProxy.Font.getName())); - } - } else if(type == EnumPacketClient.ISGUIOPEN){ boolean isGUIOpen = Minecraft.getMinecraft().currentScreen != null; diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiNpcCarpentryBench.java b/src/main/java/noppes/npcs/client/gui/player/GuiNpcCarpentryBench.java index 290a02b5f..b40544fa2 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiNpcCarpentryBench.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiNpcCarpentryBench.java @@ -15,7 +15,7 @@ public class GuiNpcCarpentryBench extends GuiContainerNPCInterface private final ResourceLocation resource = new ResourceLocation("customnpcs","textures/gui/carpentry.png"); private ContainerCarpentryBench container; private GuiNpcButton button; - + public GuiNpcCarpentryBench(ContainerCarpentryBench container) { super(null,container); @@ -38,7 +38,7 @@ public class GuiNpcCarpentryBench extends GuiContainerNPCInterface @Override protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { - button.enabled = RecipeController.Instance != null && !RecipeController.Instance.anvilRecipes.isEmpty(); + button.enabled = RecipeController.Instance != null && !RecipeController.Instance.carpentryRecipes.isEmpty(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); mc.renderEngine.bindTexture(resource); int l = (width - xSize) / 2; diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiRecipes.java b/src/main/java/noppes/npcs/client/gui/player/GuiRecipes.java index 5e0c94073..64895af87 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiRecipes.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiRecipes.java @@ -33,7 +33,7 @@ public class GuiRecipes extends GuiNPCInterface this.xSize = 256; setBackground("recipes.png"); this.closeOnEsc = true; - recipes.addAll(RecipeController.Instance.anvilRecipes.values()); + recipes.addAll(RecipeController.Instance.carpentryRecipes.values()); } @Override public void initGui(){ @@ -47,7 +47,7 @@ public class GuiRecipes extends GuiNPCInterface addButton(this.left = new GuiButtonNextPage(1, guiLeft + 150, guiTop + 164, true)); addButton(this.right = new GuiButtonNextPage(2, guiLeft + 80, guiTop + 164, false)); - + updateButton(); } private void updateButton(){ @@ -67,10 +67,10 @@ public class GuiRecipes extends GuiNPCInterface private List getSearchList(){ if(search.isEmpty()){ - return new ArrayList(RecipeController.Instance.anvilRecipes.values()); + return new ArrayList(RecipeController.Instance.carpentryRecipes.values()); } List list = new ArrayList(); - for(IRecipe recipe : RecipeController.Instance.anvilRecipes.values()){ + for(IRecipe recipe : RecipeController.Instance.carpentryRecipes.values()){ if(recipe.getRecipeOutput() == null) continue; @@ -96,12 +96,12 @@ public class GuiRecipes extends GuiNPCInterface page++; updateButton(); } - + @Override public void drawScreen(int xMouse, int yMouse, float f){ super.drawScreen(xMouse, yMouse, f); mc.renderEngine.bindTexture(resource); - + label.label = page + 1 + "/" + MathHelper.ceiling_float_int(recipes.size() / 4f); label.x = guiLeft + (256 - Minecraft.getMinecraft().fontRenderer.getStringWidth(label.label)) / 2; for(int i = 0; i < 4; i++){ @@ -165,11 +165,11 @@ public class GuiRecipes extends GuiNPCInterface itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.renderEngine, item, x, y); itemRender.renderItemOverlayIntoGUI(fontRendererObj, mc.renderEngine, item, x, y); itemRender.zLevel = 0.0F; - RenderHelper.disableStandardItemLighting(); + RenderHelper.disableStandardItemLighting(); GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } - + private void drawOverlay(ItemStack item, int x, int y, int xMouse, int yMouse){ if (this.func_146978_c(x - guiLeft, y - guiTop, 16, 16, xMouse, yMouse)){ this.renderToolTip(item, xMouse, yMouse); @@ -187,4 +187,4 @@ public class GuiRecipes extends GuiNPCInterface @Override public void save() { } -} \ No newline at end of file +} diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index 22992e872..4d4032d19 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -2,15 +2,11 @@ package noppes.npcs.constants; public enum EnumPacketClient { - SYNCRECIPES_ADD, - SYNCRECIPES_WORKBENCH, DIALOG, QUEST_COMPLETION, - EDIT_NPC, UPDATE_NPC, ROLE, GUI, - DELETE_NPC, SCROLL_SELECTED, GUI_REDSTONE, GUI_WAYPOINT, @@ -18,11 +14,9 @@ public enum EnumPacketClient { GUI_ERROR, GUI_CLOSE, VILLAGER_LIST, - SYNCRECIPES_CARPENTRYBENCH, CLONE, TELEPORTER, OPEN_BOOK, - CONFIG, ISGUIOPEN, SCRIPT_OVERLAY_DATA, SCRIPT_OVERLAY_CLOSE, @@ -34,6 +28,5 @@ public enum EnumPacketClient { DISABLE_MOUSE_INPUT, SYNC_WEAPON, MARK_DATA, - SYNC_CONFIG, PARTY_DATA } diff --git a/src/main/java/noppes/npcs/controllers/RecipeController.java b/src/main/java/noppes/npcs/controllers/RecipeController.java index bd129f508..e1b5d84f9 100644 --- a/src/main/java/noppes/npcs/controllers/RecipeController.java +++ b/src/main/java/noppes/npcs/controllers/RecipeController.java @@ -1,5 +1,6 @@ package noppes.npcs.controllers; +import kamkeel.npcs.controllers.SyncMaster; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; @@ -21,7 +22,7 @@ import java.util.*; public class RecipeController implements IRecipeHandler { private static Collection prevRecipes; public HashMap globalRecipes = new HashMap(); - public HashMap anvilRecipes = new HashMap(); + public HashMap carpentryRecipes = new HashMap(); public static RecipeController Instance; public static final int version = 1; @@ -59,7 +60,7 @@ public class RecipeController implements IRecipeHandler { } else{ globalRecipes.clear(); - anvilRecipes.clear(); + carpentryRecipes.clear(); loadDefaultRecipes(-1); } } catch (Exception e) { @@ -99,7 +100,7 @@ public class RecipeController implements IRecipeHandler { nextId = recipe.id; } } - this.anvilRecipes = anvilRecipes; + this.carpentryRecipes = anvilRecipes; this.globalRecipes = globalRecipes; loadDefaultRecipes(nbttagcompound1.getInteger("Version")); } @@ -110,7 +111,7 @@ public class RecipeController implements IRecipeHandler { for(RecipeCarpentry recipe : globalRecipes.values()){ list.appendTag(recipe.writeNBT()); } - for(RecipeCarpentry recipe : anvilRecipes.values()){ + for(RecipeCarpentry recipe : carpentryRecipes.values()){ list.appendTag(recipe.writeNBT()); } NBTTagCompound nbttagcompound = new NBTTagCompound(); @@ -141,7 +142,7 @@ public class RecipeController implements IRecipeHandler { } public RecipeCarpentry findMatchingRecipe(InventoryCrafting par1InventoryCrafting){ - for(RecipeCarpentry recipe : anvilRecipes.values()){ + for(RecipeCarpentry recipe : carpentryRecipes.values()){ if(recipe.isValid() && recipe.matches(par1InventoryCrafting,null)) return recipe; } @@ -151,8 +152,8 @@ public class RecipeController implements IRecipeHandler { public RecipeCarpentry getRecipe(int id) { if(globalRecipes.containsKey(id)) return globalRecipes.get(id); - if(anvilRecipes.containsKey(id)) - return anvilRecipes.get(id); + if(carpentryRecipes.containsKey(id)) + return carpentryRecipes.get(id); return null; } @@ -171,12 +172,12 @@ public class RecipeController implements IRecipeHandler { recipe.name += "_"; } if(recipe.isGlobal){ - anvilRecipes.remove(recipe.id); + carpentryRecipes.remove(recipe.id); globalRecipes.put(recipe.id, recipe); } else{ globalRecipes.remove(recipe.id); - anvilRecipes.put(recipe.id, recipe); + carpentryRecipes.put(recipe.id, recipe); } saveCategories(); reloadGlobalRecipes(globalRecipes); @@ -192,7 +193,7 @@ public class RecipeController implements IRecipeHandler { if(recipe.name.toLowerCase().equals(name)) return true; } - for(RecipeCarpentry recipe : anvilRecipes.values()){ + for(RecipeCarpentry recipe : carpentryRecipes.values()){ if(recipe.name.toLowerCase().equals(name)) return true; } @@ -203,8 +204,14 @@ public class RecipeController implements IRecipeHandler { RecipeCarpentry recipe = getRecipe(id); if(recipe == null) return null; - globalRecipes.remove(recipe.id); - anvilRecipes.remove(recipe.id); + RecipeCarpentry globalRecipe = globalRecipes.remove(recipe.id); + if(globalRecipe != null) + SyncMaster.syncAllWorkbenchRecipes(); + + RecipeCarpentry carpentry = carpentryRecipes.remove(recipe.id); + if(carpentry != null) + SyncMaster.syncAllWorkbenchRecipes(); + saveCategories(); reloadGlobalRecipes(globalRecipes); return recipe; @@ -212,7 +219,7 @@ public class RecipeController implements IRecipeHandler { public void addRecipe(RecipeCarpentry recipeAnvil) { recipeAnvil.id = getUniqueId(); if(!recipeAnvil.isGlobal) - RecipeController.Instance.anvilRecipes.put(recipeAnvil.id, recipeAnvil); + RecipeController.Instance.carpentryRecipes.put(recipeAnvil.id, recipeAnvil); else{ RecipeController.Instance.globalRecipes.put(recipeAnvil.id, recipeAnvil); } @@ -223,7 +230,7 @@ public class RecipeController implements IRecipeHandler { } public List getCarpentryList() { - return new ArrayList(this.anvilRecipes.values()); + return new ArrayList(this.carpentryRecipes.values()); } public void addRecipe(String name, boolean global, ItemStack result, Object... objects) { diff --git a/src/main/java/noppes/npcs/controllers/SyncController.java b/src/main/java/noppes/npcs/controllers/SyncController.java deleted file mode 100644 index d66792574..000000000 --- a/src/main/java/noppes/npcs/controllers/SyncController.java +++ /dev/null @@ -1,25 +0,0 @@ -package noppes.npcs.controllers; - -import io.netty.buffer.ByteBuf; -import kamkeel.npcs.addon.DBCAddon; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import noppes.npcs.NoppesUtilServer; -import noppes.npcs.Server; -import noppes.npcs.config.ConfigMain; -import noppes.npcs.constants.EnumPacketClient; - -public class SyncController { - - public static void syncConfigs(EntityPlayerMP player){ - NBTTagCompound nbtTagCompound = new NBTTagCompound(); - nbtTagCompound.setBoolean("Profiles", true); - Server.sendData(player, EnumPacketClient.SYNC_CONFIG, nbtTagCompound); - } - - public static void receiveConfigs(NBTTagCompound compound){ - ConfigMain.EnableProfiles = compound.getBoolean("Profiles"); - } - -} From ee8527f261f1e993ffe464467f75ffad35753289 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 09:26:04 -0500 Subject: [PATCH 039/157] SyncController Fixes --- src/main/java/foxz/command/CmdQuest.java | 4 ++-- .../{SyncMaster.java => SyncController.java} | 4 +--- src/main/java/noppes/npcs/NoppesUtilPlayer.java | 6 +++--- src/main/java/noppes/npcs/ServerTickHandler.java | 4 ++-- .../java/noppes/npcs/controllers/DialogController.java | 10 +++++----- .../java/noppes/npcs/controllers/QuestController.java | 8 ++++---- 6 files changed, 17 insertions(+), 19 deletions(-) rename src/main/java/kamkeel/npcs/controllers/{SyncMaster.java => SyncController.java} (99%) diff --git a/src/main/java/foxz/command/CmdQuest.java b/src/main/java/foxz/command/CmdQuest.java index 332b55e79..efac25afe 100644 --- a/src/main/java/foxz/command/CmdQuest.java +++ b/src/main/java/foxz/command/CmdQuest.java @@ -5,7 +5,7 @@ import foxz.commandhelper.annotations.Command; import foxz.commandhelper.annotations.SubCommand; import foxz.commandhelper.permissions.OpOnly; import foxz.commandhelper.permissions.ParamCheck; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.PacketUtil; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.controllers.QuestController; @@ -169,7 +169,7 @@ public class CmdQuest extends ChMcLogger{ ) public boolean reload(String args[]){ new QuestController().load(); - SyncMaster.syncAllQuests(); + SyncController.syncAllQuests(); return true; } } diff --git a/src/main/java/kamkeel/npcs/controllers/SyncMaster.java b/src/main/java/kamkeel/npcs/controllers/SyncController.java similarity index 99% rename from src/main/java/kamkeel/npcs/controllers/SyncMaster.java rename to src/main/java/kamkeel/npcs/controllers/SyncController.java index 6f8332934..4d5397f7e 100644 --- a/src/main/java/kamkeel/npcs/controllers/SyncMaster.java +++ b/src/main/java/kamkeel/npcs/controllers/SyncController.java @@ -10,9 +10,7 @@ import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import noppes.npcs.Server; import noppes.npcs.client.ClientCacheHandler; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.controllers.DialogController; import noppes.npcs.controllers.FactionController; import noppes.npcs.controllers.QuestController; @@ -21,7 +19,7 @@ import noppes.npcs.controllers.data.*; import java.util.HashMap; -public class SyncMaster { +public class SyncController { public static void syncPlayer(EntityPlayerMP player){ // 1) Factions diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index 65724ad84..3802edca2 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -290,17 +290,17 @@ public class NoppesUtilPlayer { if(npc.roleInterface != null) npc.roleInterface.interact(player); else - Server.sendData(player, EnumPacketClient.GUI_CLOSE); + PacketUtil.closeGUI(player, -1 , new NBTTagCompound()); } else if(option.optionType == EnumOptionType.DialogOption){ NoppesUtilServer.openDialog(player, npc, option.getDialog(), optionId+1); } else if(option.optionType == EnumOptionType.CommandBlock){ - Server.sendData(player, EnumPacketClient.GUI_CLOSE); + PacketUtil.closeGUI(player, -1 , new NBTTagCompound()); NoppesUtilServer.runCommand(player, npc.getCommandSenderName(), option.command); } else - Server.sendData(player, EnumPacketClient.GUI_CLOSE); + PacketUtil.closeGUI(player, -1 , new NBTTagCompound()); } public static void updateQuestLogData(ByteBuf buffer, EntityPlayerMP player) throws IOException { diff --git a/src/main/java/noppes/npcs/ServerTickHandler.java b/src/main/java/noppes/npcs/ServerTickHandler.java index e121889c3..2b628659f 100644 --- a/src/main/java/noppes/npcs/ServerTickHandler.java +++ b/src/main/java/noppes/npcs/ServerTickHandler.java @@ -5,7 +5,7 @@ import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import kamkeel.npcs.controllers.ProfileController; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; import net.minecraft.world.WorldServer; @@ -52,7 +52,7 @@ public class ServerTickHandler { playerData.onLogin(); } - SyncMaster.syncPlayer(player); + SyncController.syncPlayer(player); ProfileController.login(player); } diff --git a/src/main/java/noppes/npcs/controllers/DialogController.java b/src/main/java/noppes/npcs/controllers/DialogController.java index 1a19dd8b5..f87c0fe5a 100644 --- a/src/main/java/noppes/npcs/controllers/DialogController.java +++ b/src/main/java/noppes/npcs/controllers/DialogController.java @@ -1,6 +1,6 @@ package noppes.npcs.controllers; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; @@ -229,7 +229,7 @@ public class DialogController implements IDialogHandler { dir.mkdirs(); } categories.put(category.id, category); - SyncMaster.syncUpdate(EnumSyncType.DIALOG_CATEGORY, -1, SyncMaster.updateDialogCat(category)); + SyncController.syncUpdate(EnumSyncType.DIALOG_CATEGORY, -1, SyncController.updateDialogCat(category)); } public void removeCategory(int category){ @@ -242,7 +242,7 @@ public class DialogController implements IDialogHandler { for(int dia : cat.dialogs.keySet()) dialogs.remove(dia); categories.remove(category); - SyncMaster.syncRemove(EnumSyncType.DIALOG_CATEGORY, category); + SyncController.syncRemove(EnumSyncType.DIALOG_CATEGORY, category); } private boolean containsCategoryName(String name) { @@ -290,7 +290,7 @@ public class DialogController implements IDialogHandler { if(file2.exists()) file2.delete(); file.renameTo(file2); - SyncMaster.syncUpdate(EnumSyncType.DIALOG, category.id, dialog.writeToNBT(new NBTTagCompound())); + SyncController.syncUpdate(EnumSyncType.DIALOG, category.id, dialog.writeToNBT(new NBTTagCompound())); } catch (Exception e) { LogWriter.except(e); } @@ -304,7 +304,7 @@ public class DialogController implements IDialogHandler { return; category.dialogs.remove(dialog.id); dialogs.remove(dialog.id); - SyncMaster.syncRemove(EnumSyncType.DIALOG, dialog.id); + SyncController.syncRemove(EnumSyncType.DIALOG, dialog.id); } private File getDir(){ diff --git a/src/main/java/noppes/npcs/controllers/QuestController.java b/src/main/java/noppes/npcs/controllers/QuestController.java index 3b1c2c30e..51051bcb4 100644 --- a/src/main/java/noppes/npcs/controllers/QuestController.java +++ b/src/main/java/noppes/npcs/controllers/QuestController.java @@ -1,6 +1,6 @@ package noppes.npcs.controllers; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; @@ -145,7 +145,7 @@ public class QuestController implements IQuestHandler { for(int dia : cat.quests.keySet()) quests.remove(dia); categories.remove(category); - SyncMaster.syncRemove(EnumSyncType.QUEST_CATEGORY, category); + SyncController.syncRemove(EnumSyncType.QUEST_CATEGORY, category); } public void saveCategory(QuestCategory category){ @@ -176,7 +176,7 @@ public class QuestController implements IQuestHandler { dir.mkdirs(); } categories.put(category.id, category); - SyncMaster.syncUpdate(EnumSyncType.QUEST_CATEGORY, -1, SyncMaster.updateQuestCat(category)); + SyncController.syncUpdate(EnumSyncType.QUEST_CATEGORY, -1, SyncController.updateQuestCat(category)); } private boolean containsCategoryName(String name) { name = name.toLowerCase(); @@ -224,7 +224,7 @@ public class QuestController implements IQuestHandler { if(file2.exists()) file2.delete(); file.renameTo(file2); - SyncMaster.syncUpdate(EnumSyncType.QUEST, category.id, quest.writeToNBT(new NBTTagCompound())); + SyncController.syncUpdate(EnumSyncType.QUEST, category.id, quest.writeToNBT(new NBTTagCompound())); } catch (Exception e) { e.printStackTrace(); } From fb496ce1e2f944a907d2ff9f4ec1295f9f67a5a2 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 09:26:10 -0500 Subject: [PATCH 040/157] SyncController --- src/main/java/foxz/command/CmdDialog.java | 4 +-- .../kamkeel/npcs/command/DialogCommand.java | 4 +-- .../kamkeel/npcs/command/QuestCommand.java | 4 +-- .../packets/client/large/LargeSyncPacket.java | 8 +++--- .../java/noppes/npcs/NoppesUtilServer.java | 4 +-- .../noppes/npcs/ScriptPlayerEventHandler.java | 4 +-- .../java/noppes/npcs/ServerEventsHandler.java | 8 +++--- .../npcs/client/PacketHandlerClient.java | 25 ------------------- .../npcs/constants/EnumPacketClient.java | 2 -- .../npcs/controllers/FactionController.java | 6 ++--- .../npcs/controllers/RecipeController.java | 6 ++--- .../npcs/scripted/entity/ScriptPlayer.java | 2 +- 12 files changed, 24 insertions(+), 53 deletions(-) diff --git a/src/main/java/foxz/command/CmdDialog.java b/src/main/java/foxz/command/CmdDialog.java index 842611930..3b6a3e857 100644 --- a/src/main/java/foxz/command/CmdDialog.java +++ b/src/main/java/foxz/command/CmdDialog.java @@ -5,7 +5,7 @@ import foxz.commandhelper.annotations.Command; import foxz.commandhelper.annotations.SubCommand; import foxz.commandhelper.permissions.OpOnly; import foxz.commandhelper.permissions.ParamCheck; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import net.minecraft.command.CommandBase; import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.NoppesUtilServer; @@ -89,7 +89,7 @@ public class CmdDialog extends ChMcLogger { ) public boolean reload(String args[]){ new DialogController().load(); - SyncMaster.syncAllDialogs(); + SyncController.syncAllDialogs(); return true; } diff --git a/src/main/java/kamkeel/npcs/command/DialogCommand.java b/src/main/java/kamkeel/npcs/command/DialogCommand.java index d89311880..4ad1e7e22 100644 --- a/src/main/java/kamkeel/npcs/command/DialogCommand.java +++ b/src/main/java/kamkeel/npcs/command/DialogCommand.java @@ -1,6 +1,6 @@ package kamkeel.npcs.command; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; @@ -89,7 +89,7 @@ public class DialogCommand extends CommandKamkeelBase { ) public void reload(ICommandSender sender, String args[]){ new DialogController().load(); - SyncMaster.syncAllDialogs(); + SyncController.syncAllDialogs(); sendResult(sender, "Dialogs Reloaded"); } diff --git a/src/main/java/kamkeel/npcs/command/QuestCommand.java b/src/main/java/kamkeel/npcs/command/QuestCommand.java index 4dc1a334e..644b64ddc 100644 --- a/src/main/java/kamkeel/npcs/command/QuestCommand.java +++ b/src/main/java/kamkeel/npcs/command/QuestCommand.java @@ -1,6 +1,6 @@ package kamkeel.npcs.command; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.PacketUtil; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; @@ -381,7 +381,7 @@ public class QuestCommand extends CommandKamkeelBase { ) public void reload(ICommandSender sender, String args[]){ new QuestController().load(); - SyncMaster.syncAllQuests(); + SyncController.syncAllQuests(); sendResult(sender, "Quests Reloaded"); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java index 2ce8f59e9..e454467f9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java @@ -3,7 +3,7 @@ package kamkeel.npcs.network.packets.client.large; import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.LargeAbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; @@ -89,13 +89,13 @@ public final class LargeSyncPacket extends LargeAbstractPacket { private void handleSyncPacketClient(EnumSyncType enumSyncType, EnumSyncAction enumSyncAction, int id, NBTTagCompound data) { switch (enumSyncAction) { case RELOAD: - SyncMaster.clientSync(enumSyncType, data); + SyncController.clientSync(enumSyncType, data); break; case UPDATE: - SyncMaster.clientUpdate(enumSyncType, id, data); + SyncController.clientUpdate(enumSyncType, id, data); break; case REMOVE: - SyncMaster.clientSyncRemove(enumSyncType, id); + SyncController.clientSyncRemove(enumSyncType, id); break; } } diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 56f6cbf05..d81bc9abe 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -1,7 +1,7 @@ package noppes.npcs; import io.netty.buffer.ByteBuf; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.packets.client.DialogPacket; @@ -574,7 +574,7 @@ public class NoppesUtilServer { playerdata.save(); } if(pl != null) { - SyncMaster.syncPlayer((EntityPlayerMP) pl); + SyncController.syncPlayer((EntityPlayerMP) pl); } sendPlayerData(type, player, name); } diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index 2ad69fc27..e9afafd53 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -5,7 +5,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.relauncher.Side; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -63,7 +63,7 @@ public class ScriptPlayerEventHandler { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); if(playerData.updateClient) { - SyncMaster.syncPlayerData((EntityPlayerMP)player, true); + SyncController.syncPlayerData((EntityPlayerMP)player, true); playerData.updateClient = false; } diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index 3c8d18487..3e59a2325 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -3,7 +3,7 @@ package noppes.npcs; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumSoundOperation; import kamkeel.npcs.network.enums.EnumSyncAction; @@ -21,7 +21,6 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.server.MinecraftServer; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; @@ -43,7 +42,6 @@ import noppes.npcs.config.ConfigMain; import noppes.npcs.constants.*; import noppes.npcs.controllers.PartyController; import noppes.npcs.controllers.PlayerDataController; -import noppes.npcs.controllers.RecipeController; import noppes.npcs.controllers.ServerCloneController; import noppes.npcs.controllers.data.*; import noppes.npcs.entity.EntityNPCInterface; @@ -202,7 +200,7 @@ public class ServerEventsHandler { EnumSyncType.WORKBENCH_RECIPES, EnumSyncAction.RELOAD, -1, - SyncMaster.workbenchNBT() + SyncController.workbenchNBT() ), (EntityPlayerMP) player); } if(block == CustomItems.carpentyBench && event.action == Action.RIGHT_CLICK_BLOCK && !player.worldObj.isRemote){ @@ -210,7 +208,7 @@ public class ServerEventsHandler { EnumSyncType.CARPENTRY_RECIPES, EnumSyncAction.RELOAD, -1, - SyncMaster.carpentryNBT() + SyncController.carpentryNBT() ), (EntityPlayerMP) player); } if((block == CustomItems.banner || block == CustomItems.wallBanner || block == CustomItems.sign) && event.action == Action.RIGHT_CLICK_BLOCK){ diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index 15bc2e6ba..fd9be163d 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -112,31 +112,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ if(gui instanceof IGuiData) ((IGuiData)gui).setGuiData(Server.readNBT(buffer)); } - else if(type == EnumPacketClient.GUI_ERROR){ - GuiScreen gui = Minecraft.getMinecraft().currentScreen; - if(gui == null || !(gui instanceof IGuiError)) - return; - - int i = buffer.readInt(); - NBTTagCompound compound = Server.readNBT(buffer); - - ((IGuiError)gui).setError(i, compound); - } - else if(type == EnumPacketClient.GUI_CLOSE){ - GuiScreen gui = Minecraft.getMinecraft().currentScreen; - if(gui == null) - return; - - if(gui instanceof IGuiClose){ - int i = buffer.readInt(); - NBTTagCompound compound = Server.readNBT(buffer); - ((IGuiClose)gui).setClose(i, compound); - } - - Minecraft mc = Minecraft.getMinecraft(); - mc.displayGuiScreen(null); - mc.setIngameFocus(); - } else if(type == EnumPacketClient.VILLAGER_LIST){ MerchantRecipeList merchantrecipelist = MerchantRecipeList.func_151390_b(new PacketBuffer(buffer)); ServerEventsHandler.Merchant.setRecipes(merchantrecipelist); diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index 4d4032d19..a372477a4 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -11,8 +11,6 @@ public enum EnumPacketClient { GUI_REDSTONE, GUI_WAYPOINT, GUI_DATA, - GUI_ERROR, - GUI_CLOSE, VILLAGER_LIST, CLONE, TELEPORTER, diff --git a/src/main/java/noppes/npcs/controllers/FactionController.java b/src/main/java/noppes/npcs/controllers/FactionController.java index d9419131c..9ab4b6311 100644 --- a/src/main/java/noppes/npcs/controllers/FactionController.java +++ b/src/main/java/noppes/npcs/controllers/FactionController.java @@ -1,6 +1,6 @@ package noppes.npcs.controllers; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; @@ -157,7 +157,7 @@ public class FactionController implements IFactionHandler { NBTTagCompound facCompound = new NBTTagCompound(); faction.writeNBT(facCompound); - SyncMaster.syncUpdate(EnumSyncType.FACTION, -1, facCompound); + SyncController.syncUpdate(EnumSyncType.FACTION, -1, facCompound); saveFactions(); } @@ -192,7 +192,7 @@ public class FactionController implements IFactionHandler { } else { this.saveFactions(); faction.id = -1; - SyncMaster.syncRemove(EnumSyncType.FACTION, id); + SyncController.syncRemove(EnumSyncType.FACTION, id); return faction; } } else { diff --git a/src/main/java/noppes/npcs/controllers/RecipeController.java b/src/main/java/noppes/npcs/controllers/RecipeController.java index e1b5d84f9..1bdddd556 100644 --- a/src/main/java/noppes/npcs/controllers/RecipeController.java +++ b/src/main/java/noppes/npcs/controllers/RecipeController.java @@ -1,6 +1,6 @@ package noppes.npcs.controllers; -import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.controllers.SyncController; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; @@ -206,11 +206,11 @@ public class RecipeController implements IRecipeHandler { return null; RecipeCarpentry globalRecipe = globalRecipes.remove(recipe.id); if(globalRecipe != null) - SyncMaster.syncAllWorkbenchRecipes(); + SyncController.syncAllWorkbenchRecipes(); RecipeCarpentry carpentry = carpentryRecipes.remove(recipe.id); if(carpentry != null) - SyncMaster.syncAllWorkbenchRecipes(); + SyncController.syncAllWorkbenchRecipes(); saveCategories(); reloadGlobalRecipes(globalRecipes); diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index 2aee9c6a0..4dc28df83 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -757,7 +757,7 @@ public class ScriptPlayer extends ScriptLivingBase public void closeGui() { ((EntityPlayerMP)this.entity).closeContainer(); - Server.sendData((EntityPlayerMP)this.entity, EnumPacketClient.GUI_CLOSE, -1, new NBTTagCompound()); + PacketUtil.closeGUI(player, -1 , new NBTTagCompound()); } public void showCustomOverlay(ICustomOverlay overlay) { From 87cad579ae19775c40b2398ed2410e399f7ce338 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 09:30:31 -0500 Subject: [PATCH 041/157] Large GUI Data Packet --- .../kamkeel/npcs/network/PacketHandler.java | 7 ++--- .../java/kamkeel/npcs/network/PacketUtil.java | 4 +-- .../LargeGuiDataPacket.java} | 27 +++++++++++-------- 3 files changed, 20 insertions(+), 18 deletions(-) rename src/main/java/kamkeel/npcs/network/packets/client/{gui/GuiDataPacket.java => large/LargeGuiDataPacket.java} (66%) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index c3bf6b871..7cce24566 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -9,10 +9,7 @@ import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.enums.EnumPacketType; import kamkeel.npcs.network.packets.client.*; import kamkeel.npcs.network.packets.client.gui.*; -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.LargeSyncPacket; +import kamkeel.npcs.network.packets.client.large.*; import kamkeel.npcs.network.packets.client.npc.DeleteNpcPacket; import kamkeel.npcs.network.packets.client.npc.EditNpcPacket; import kamkeel.npcs.network.packets.client.script.ScriptedParticlePacket; @@ -68,7 +65,7 @@ public final class PacketHandler { CLIENT_PACKET.registerPacket(new GuiClosePacket()); CLIENT_PACKET.registerPacket(new GuiOpenPacket()); CLIENT_PACKET.registerPacket(new GuiErrorPacket()); - CLIENT_PACKET.registerPacket(new GuiDataPacket()); + CLIENT_PACKET.registerPacket(new LargeGuiDataPacket()); CLIENT_PACKET.registerPacket(new GuiClonerPacket()); // Client | NPC Packets diff --git a/src/main/java/kamkeel/npcs/network/PacketUtil.java b/src/main/java/kamkeel/npcs/network/PacketUtil.java index a2f93d585..c44eae29b 100644 --- a/src/main/java/kamkeel/npcs/network/PacketUtil.java +++ b/src/main/java/kamkeel/npcs/network/PacketUtil.java @@ -3,7 +3,7 @@ package kamkeel.npcs.network; import kamkeel.npcs.network.packets.client.ChatAlertPacket; import kamkeel.npcs.network.packets.client.AchievementPacket; import kamkeel.npcs.network.packets.client.gui.GuiClosePacket; -import kamkeel.npcs.network.packets.client.gui.GuiDataPacket; +import kamkeel.npcs.network.packets.client.large.LargeGuiDataPacket; import kamkeel.npcs.network.packets.client.gui.GuiErrorPacket; import kamkeel.npcs.network.packets.client.gui.GuiOpenPacket; import kamkeel.npcs.network.packets.client.large.LargeScrollGroupPacket; @@ -59,7 +59,7 @@ public class PacketUtil { } public static void sendGuiData(EntityPlayerMP playerMP, NBTTagCompound compound){ - GuiDataPacket packet = new GuiDataPacket(compound); + LargeGuiDataPacket packet = new LargeGuiDataPacket(compound); PacketHandler.Instance.sendToPlayer(packet, playerMP); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeGuiDataPacket.java similarity index 66% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/large/LargeGuiDataPacket.java index 1ee404bd0..8bf57d986 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeGuiDataPacket.java @@ -1,9 +1,11 @@ -package kamkeel.npcs.network.packets.client.gui; +package kamkeel.npcs.network.packets.client.large; 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.AbstractPacket; +import kamkeel.npcs.network.LargeAbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; @@ -12,22 +14,21 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.gui.util.GuiContainerNPCInterface; import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.client.gui.util.IGuiData; import java.io.IOException; +import java.util.Map; -public final class GuiDataPacket extends AbstractPacket { +public final class LargeGuiDataPacket extends LargeAbstractPacket { public static final String packetName = "Client|GuiData"; private NBTTagCompound compound; - public GuiDataPacket(){} + public LargeGuiDataPacket(){} - public GuiDataPacket(NBTTagCompound comp){ + public LargeGuiDataPacket(NBTTagCompound comp){ this.compound = comp; } @@ -38,17 +39,21 @@ public final class GuiDataPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.LARGE_PACKET; } @Override - public void sendData(ByteBuf out) throws IOException { - ByteBufUtils.writeNBT(out, compound); + protected byte[] getData() throws IOException { + ByteBuf buffer = Unpooled.buffer(); + ByteBufUtils.writeBigNBT(buffer, compound); + byte[] bytes = new byte[buffer.readableBytes()]; + buffer.readBytes(bytes); + return bytes; } @SideOnly(Side.CLIENT) @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof GuiNPCInterface && ((GuiNPCInterface) gui).hasSubGui()) { gui = (GuiScreen) ((GuiNPCInterface) gui).getSubGui(); @@ -56,7 +61,7 @@ public final class GuiDataPacket extends AbstractPacket { gui = (GuiScreen) ((GuiContainerNPCInterface) gui).getSubGui(); } if (gui instanceof IGuiData) { - NBTTagCompound nbt = ByteBufUtils.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readBigNBT(data); ((IGuiData) gui).setGuiData(nbt); } } From a70300c54b653bde5a388b59b2a738cb735a9384 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 10:32:01 -0500 Subject: [PATCH 042/157] Register More Packets + Remove Useless Sync Packets --- .../kamkeel/npcs/network/PacketHandler.java | 14 +++-- .../client/{ => npc}/DialogPacket.java | 4 +- .../packets/client/{ => npc}/RolePacket.java | 4 +- .../packets/client/npc/UpdateNpcPacket.java | 11 +++- .../script/ScriptOverlayClosePacket.java | 8 ++- .../script/ScriptOverlayDataPacket.java | 12 ++++- .../packets/client/sync/SyncConfigPacket.java | 42 --------------- .../client/sync/SyncRecipesAddPacket.java | 50 ------------------ .../sync/SyncRecipesCarpentryBenchPacket.java | 41 --------------- .../sync/SyncRecipesWorkbenchPacket.java | 42 --------------- .../packets/client/sync/SyncWeaponPacket.java | 52 ------------------- .../java/noppes/npcs/NoppesUtilServer.java | 4 +- .../npcs/client/PacketHandlerClient.java | 6 --- .../npcs/constants/EnumPacketClient.java | 2 - 14 files changed, 39 insertions(+), 253 deletions(-) rename src/main/java/kamkeel/npcs/network/packets/client/{ => npc}/DialogPacket.java (95%) rename src/main/java/kamkeel/npcs/network/packets/client/{ => npc}/RolePacket.java (94%) delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesAddPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java delete mode 100644 src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 7cce24566..4824b3186 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -10,9 +10,8 @@ import kamkeel.npcs.network.enums.EnumPacketType; import kamkeel.npcs.network.packets.client.*; import kamkeel.npcs.network.packets.client.gui.*; import kamkeel.npcs.network.packets.client.large.*; -import kamkeel.npcs.network.packets.client.npc.DeleteNpcPacket; -import kamkeel.npcs.network.packets.client.npc.EditNpcPacket; -import kamkeel.npcs.network.packets.client.script.ScriptedParticlePacket; +import kamkeel.npcs.network.packets.client.npc.*; +import kamkeel.npcs.network.packets.client.script.*; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -48,17 +47,18 @@ public final class PacketHandler { LARGE_PACKET.registerPacket(new LargeScrollDataPacket()); LARGE_PACKET.registerPacket(new LargeScrollListPacket()); LARGE_PACKET.registerPacket(new LargeSyncPacket()); + LARGE_PACKET.registerPacket(new LargeGuiDataPacket()); // Client Packets CLIENT_PACKET.registerPacket(new ChatBubblePacket()); CLIENT_PACKET.registerPacket(new ChatAlertPacket()); CLIENT_PACKET.registerPacket(new AchievementPacket()); - CLIENT_PACKET.registerPacket(new EditNpcPacket()); - CLIENT_PACKET.registerPacket(new RolePacket()); CLIENT_PACKET.registerPacket(new GuiTeleporterPacket()); CLIENT_PACKET.registerPacket(new SoundManagementPacket()); CLIENT_PACKET.registerPacket(new ParticlePacket()); CLIENT_PACKET.registerPacket(new ScriptedParticlePacket()); + CLIENT_PACKET.registerPacket(new ScriptOverlayClosePacket()); + CLIENT_PACKET.registerPacket(new ScriptOverlayDataPacket()); CLIENT_PACKET.registerPacket(new ConfigCommandPacket()); // Client | GUI Packets @@ -70,6 +70,10 @@ public final class PacketHandler { // Client | NPC Packets CLIENT_PACKET.registerPacket(new DeleteNpcPacket()); + CLIENT_PACKET.registerPacket(new EditNpcPacket()); + CLIENT_PACKET.registerPacket(new UpdateNpcPacket()); + CLIENT_PACKET.registerPacket(new DialogPacket()); + CLIENT_PACKET.registerPacket(new RolePacket()); } private void registerChannels() { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/DialogPacket.java similarity index 95% rename from src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/npc/DialogPacket.java index c254b308d..0478b08ed 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/DialogPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.npc; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,8 +12,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; import noppes.npcs.entity.EntityDialogNpc; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/RolePacket.java similarity index 94% rename from src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/npc/RolePacket.java index 2b088ca6f..a39ccd7fb 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/RolePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.npc; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,8 +12,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java index 7fd6a281d..5174ba430 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java @@ -7,6 +7,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; @@ -20,8 +21,14 @@ import java.io.IOException; public final class UpdateNpcPacket extends AbstractPacket { public static final String packetName = "Client|UpdateNpc"; + private NBTTagCompound npcCompound; + public UpdateNpcPacket() {} + public UpdateNpcPacket(NBTTagCompound npcCompound) { + this.npcCompound = npcCompound; + } + @Override public Enum getType() { return EnumClientPacket.UPDATE_NPC; @@ -34,13 +41,13 @@ public final class UpdateNpcPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, this.npcCompound); } @SideOnly(Side.CLIENT) @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) entity).readSpawnData(compound); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayClosePacket.java index a7a6325b8..49032706d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayClosePacket.java @@ -15,8 +15,14 @@ import java.io.IOException; public final class ScriptOverlayClosePacket extends AbstractPacket { public static final String packetName = "Client|ScriptOverlayClose"; + private int particleId; + public ScriptOverlayClosePacket() {} + public ScriptOverlayClosePacket(int particleId) { + this.particleId = particleId; + } + @Override public Enum getType() { return EnumClientPacket.SCRIPT_OVERLAY_CLOSE; @@ -29,7 +35,7 @@ public final class ScriptOverlayClosePacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeInt(this.particleId); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayDataPacket.java index c435e1ae1..631e5843d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayDataPacket.java @@ -7,8 +7,10 @@ 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.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; import noppes.npcs.client.gui.customoverlay.OverlayCustom; import noppes.npcs.client.ClientCacheHandler; @@ -18,8 +20,14 @@ import java.io.IOException; public final class ScriptOverlayDataPacket extends AbstractPacket { public static final String packetName = "Client|ScriptOverlayData"; + private NBTTagCompound overlayCompound; + public ScriptOverlayDataPacket() {} + public ScriptOverlayDataPacket(NBTTagCompound overlayCompound) { + this.overlayCompound = overlayCompound; + } + @Override public Enum getType() { return EnumClientPacket.SCRIPT_OVERLAY_DATA; @@ -32,14 +40,14 @@ public final class ScriptOverlayDataPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, this.overlayCompound); } @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { OverlayCustom overlayCustom = new OverlayCustom(Minecraft.getMinecraft()); - overlayCustom.setOverlayData(Server.readNBT(in)); + overlayCustom.setOverlayData(ByteBufUtils.readNBT(in)); ClientCacheHandler.customOverlays.put(overlayCustom.overlay.getID(), overlayCustom); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java deleted file mode 100644 index f1e6ad99f..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncConfigPacket.java +++ /dev/null @@ -1,42 +0,0 @@ -package kamkeel.npcs.network.packets.client.sync; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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 net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.Server; - -import java.io.IOException; - -public final class SyncConfigPacket extends AbstractPacket { - public static final String packetName = "Client|SyncConfig"; - - public SyncConfigPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SYNC_CONFIG; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NBTTagCompound configNBT = Server.readNBT(in); - SyncController.receiveConfigs(configNBT); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesAddPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesAddPacket.java deleted file mode 100644 index b3cd733f3..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesAddPacket.java +++ /dev/null @@ -1,50 +0,0 @@ -package kamkeel.npcs.network.packets.client.sync; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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 net.minecraft.nbt.NBTTagList; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; -import noppes.npcs.controllers.RecipeController; -import noppes.npcs.controllers.data.RecipeCarpentry; - -import java.io.IOException; - -public final class SyncRecipesAddPacket extends AbstractPacket { - public static final String packetName = "Client|SyncRecipesAdd"; - - public SyncRecipesAddPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SYNCRECIPES_ADD; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NBTTagList list = Server.readNBT(in).getTagList("recipes", 10); - if (list != null) { - for (int i = 0; i < list.tagCount(); i++) { - RecipeCarpentry recipe = RecipeCarpentry.read(list.getCompoundTagAt(i)); - RecipeController.syncRecipes.put(recipe.id, recipe); - } - } - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java deleted file mode 100644 index c82b39987..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesCarpentryBenchPacket.java +++ /dev/null @@ -1,41 +0,0 @@ -package kamkeel.npcs.network.packets.client.sync; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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.controllers.RecipeController; - -import java.io.IOException; - -public final class SyncRecipesCarpentryBenchPacket extends AbstractPacket { - public static final String packetName = "Client|SyncRecipesCarpentryBench"; - - public SyncRecipesCarpentryBenchPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SYNCRECIPES_CARPENTRYBENCH; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - RecipeController.Instance.carpentryRecipes = RecipeController.syncRecipes; - RecipeController.syncRecipes.clear(); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java deleted file mode 100644 index 2b489d00a..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncRecipesWorkbenchPacket.java +++ /dev/null @@ -1,42 +0,0 @@ -package kamkeel.npcs.network.packets.client.sync; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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.CustomNpcs; -import noppes.npcs.controllers.RecipeController; - -import java.io.IOException; - -public final class SyncRecipesWorkbenchPacket extends AbstractPacket { - public static final String packetName = "Client|SyncRecipesWorkbench"; - - public SyncRecipesWorkbenchPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SYNCRECIPES_WORKBENCH; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - RecipeController.reloadGlobalRecipes(RecipeController.syncRecipes); - RecipeController.syncRecipes.clear(); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java deleted file mode 100644 index 9640fa422..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/sync/SyncWeaponPacket.java +++ /dev/null @@ -1,52 +0,0 @@ -package kamkeel.npcs.network.packets.client.sync; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; -import noppes.npcs.entity.EntityNPCInterface; - -import java.io.IOException; - -public final class SyncWeaponPacket extends AbstractPacket { - public static final String packetName = "Client|SyncWeapon"; - - public SyncWeaponPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SYNC_WEAPON; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - Entity entity = player.worldObj.getEntityByID(in.readInt()); - if (!(entity instanceof EntityNPCInterface)) return; - - EntityNPCInterface npc = (EntityNPCInterface) entity; - int weaponSlotIndex = in.readInt(); - NBTTagCompound nbt = Server.readNBT(in); - ItemStack stack = ItemStack.loadItemStackFromNBT(nbt); - npc.inventory.weapons.put(weaponSlotIndex, stack); - } -} diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index d81bc9abe..101823217 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -4,12 +4,12 @@ import io.netty.buffer.ByteBuf; import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; -import kamkeel.npcs.network.packets.client.DialogPacket; +import kamkeel.npcs.network.packets.client.npc.DialogPacket; import kamkeel.npcs.network.packets.client.ParticlePacket; import kamkeel.npcs.network.packets.client.script.ScriptedParticlePacket; import kamkeel.npcs.network.packets.client.npc.DeleteNpcPacket; import kamkeel.npcs.network.packets.client.npc.EditNpcPacket; -import kamkeel.npcs.network.packets.client.RolePacket; +import kamkeel.npcs.network.packets.client.npc.RolePacket; import kamkeel.npcs.network.packets.client.gui.GuiTeleporterPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.command.server.CommandBlockLogic; diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index fd9be163d..169e7613a 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -48,12 +48,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ MarkData data = MarkData.get((EntityNPCInterface) entity); data.setNBT(Server.readNBT(buffer)); } - else if(type == EnumPacketClient.DIALOG){ - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(buffer.readInt()); - if(entity == null || !(entity instanceof EntityNPCInterface)) - return; - NoppesUtil.openDialog(Server.readNBT(buffer), (EntityNPCInterface) entity, player); - } else if(type == EnumPacketClient.QUEST_COMPLETION){ NoppesUtil.guiQuestCompletion(player, Server.readNBT(buffer)); } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index a372477a4..b7f749e20 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -2,7 +2,6 @@ package noppes.npcs.constants; public enum EnumPacketClient { - DIALOG, QUEST_COMPLETION, UPDATE_NPC, ROLE, @@ -19,7 +18,6 @@ public enum EnumPacketClient { SCRIPT_OVERLAY_DATA, SCRIPT_OVERLAY_CLOSE, SWING_PLAYER_ARM, - UPDATE_ITEM, PLAYER_UPDATE_SKIN_OVERLAYS, UPDATE_ANIMATIONS, OVERLAY_QUEST_TRACKING, From 4f5f870e2bce1cd3c1c49cd872b96837dc6bba78 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 11:03:52 -0500 Subject: [PATCH 043/157] More Packet Swapping --- .../kamkeel/npcs/network/PacketHandler.java | 44 ++++++++++++++----- .../client/DisableMouseInputPacket.java | 13 +++++- .../PlayerUpdateSkinOverlaysPacket.java | 16 +++++-- .../client/UpdateAnimationsPacket.java | 16 +++++-- .../LargePartyDataPacket.java} | 32 +++++++++----- .../java/noppes/npcs/PacketHandlerServer.java | 8 ++-- 6 files changed, 96 insertions(+), 33 deletions(-) rename src/main/java/kamkeel/npcs/network/packets/client/{PartyDataPacket.java => large/LargePartyDataPacket.java} (61%) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 4824b3186..cd01b870a 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -40,33 +40,50 @@ public final class PacketHandler { packetChannels.add(DATA_PACKET); packetChannels.add(CLIENT_PACKET); packetChannels.add(LARGE_PACKET); - this.registerChannels(); + this.registerChannels(); + this.registerLargePackets(); + this.registerClientPackets(); + } + + public void registerLargePackets(){ // Large Packets LARGE_PACKET.registerPacket(new LargeScrollGroupPacket()); LARGE_PACKET.registerPacket(new LargeScrollDataPacket()); LARGE_PACKET.registerPacket(new LargeScrollListPacket()); LARGE_PACKET.registerPacket(new LargeSyncPacket()); LARGE_PACKET.registerPacket(new LargeGuiDataPacket()); + LARGE_PACKET.registerPacket(new LargePartyDataPacket()); + } + public void registerClientPackets(){ // Client Packets - CLIENT_PACKET.registerPacket(new ChatBubblePacket()); - CLIENT_PACKET.registerPacket(new ChatAlertPacket()); CLIENT_PACKET.registerPacket(new AchievementPacket()); - CLIENT_PACKET.registerPacket(new GuiTeleporterPacket()); - CLIENT_PACKET.registerPacket(new SoundManagementPacket()); - CLIENT_PACKET.registerPacket(new ParticlePacket()); - CLIENT_PACKET.registerPacket(new ScriptedParticlePacket()); - CLIENT_PACKET.registerPacket(new ScriptOverlayClosePacket()); - CLIENT_PACKET.registerPacket(new ScriptOverlayDataPacket()); + CLIENT_PACKET.registerPacket(new ChatAlertPacket()); + CLIENT_PACKET.registerPacket(new ChatBubblePacket()); CLIENT_PACKET.registerPacket(new ConfigCommandPacket()); + CLIENT_PACKET.registerPacket(new DisableMouseInputPacket()); + CLIENT_PACKET.registerPacket(new MarkDataPacket()); + CLIENT_PACKET.registerPacket(new OverlayQuestTrackingPacket()); + CLIENT_PACKET.registerPacket(new ParticlePacket()); + CLIENT_PACKET.registerPacket(new PlayerUpdateSkinOverlaysPacket()); + CLIENT_PACKET.registerPacket(new QuestCompletionPacket()); + CLIENT_PACKET.registerPacket(new ScrollSelectedPacket()); + CLIENT_PACKET.registerPacket(new SoundManagementPacket()); + CLIENT_PACKET.registerPacket(new SwingPlayerArmPacket()); + CLIENT_PACKET.registerPacket(new UpdateAnimationsPacket()); + CLIENT_PACKET.registerPacket(new VillagerListPacket()); // Client | GUI Packets + CLIENT_PACKET.registerPacket(new GuiClonerPacket()); CLIENT_PACKET.registerPacket(new GuiClosePacket()); CLIENT_PACKET.registerPacket(new GuiOpenPacket()); CLIENT_PACKET.registerPacket(new GuiErrorPacket()); - CLIENT_PACKET.registerPacket(new LargeGuiDataPacket()); - CLIENT_PACKET.registerPacket(new GuiClonerPacket()); + CLIENT_PACKET.registerPacket(new GuiRedstonePacket()); + CLIENT_PACKET.registerPacket(new GuiTeleporterPacket()); + CLIENT_PACKET.registerPacket(new GuiWaypointPacket()); + CLIENT_PACKET.registerPacket(new IsGuiOpenPacket()); + CLIENT_PACKET.registerPacket(new OpenBookPacket()); // Client | NPC Packets CLIENT_PACKET.registerPacket(new DeleteNpcPacket()); @@ -74,6 +91,11 @@ public final class PacketHandler { CLIENT_PACKET.registerPacket(new UpdateNpcPacket()); CLIENT_PACKET.registerPacket(new DialogPacket()); CLIENT_PACKET.registerPacket(new RolePacket()); + + // Client | Script Packets + CLIENT_PACKET.registerPacket(new ScriptedParticlePacket()); + CLIENT_PACKET.registerPacket(new ScriptOverlayClosePacket()); + CLIENT_PACKET.registerPacket(new ScriptOverlayDataPacket()); } private void registerChannels() { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java index a94e52bb0..806d6f3a2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java @@ -7,8 +7,8 @@ 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 noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.ClientEventHandler; @@ -17,8 +17,16 @@ import java.io.IOException; public final class DisableMouseInputPacket extends AbstractPacket { public static final String packetName = "Client|DisableMouseInput"; + private long duration; + private String keys; + public DisableMouseInputPacket() {} + public DisableMouseInputPacket(long duration, String keys) { + this.duration = duration; + this.keys = keys; + } + @Override public Enum getType() { return EnumClientPacket.DISABLE_MOUSE_INPUT; @@ -31,7 +39,8 @@ public final class DisableMouseInputPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeLong(this.duration); + ByteBufUtils.writeString(out, this.keys); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java index efdb92eab..e92f9c75b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java @@ -7,6 +7,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.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -19,8 +20,16 @@ import java.io.IOException; public final class PlayerUpdateSkinOverlaysPacket extends AbstractPacket { public static final String packetName = "Client|PlayerUpdateSkinOverlays"; + private String playerName; + private NBTTagCompound compound; + public PlayerUpdateSkinOverlaysPacket() {} + public PlayerUpdateSkinOverlaysPacket(String playerName, NBTTagCompound compound) { + this.playerName = playerName; + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.PLAYER_UPDATE_SKIN_OVERLAYS; @@ -33,14 +42,15 @@ public final class PlayerUpdateSkinOverlaysPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeString(out, this.playerName); + ByteBufUtils.writeNBT(out, this.compound); } @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - String playerName = Server.readString(in); - NBTTagCompound nbt = Server.readNBT(in); + String playerName = ByteBufUtils.readString(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); EntityPlayer sendingPlayer = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(playerName); if (sendingPlayer != null) { NoppesUtil.updateSkinOverlayData(sendingPlayer, nbt); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java index 57f14ce49..81977a264 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java @@ -7,6 +7,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; @@ -23,8 +24,16 @@ import java.io.IOException; public final class UpdateAnimationsPacket extends AbstractPacket { public static final String packetName = "Client|UpdateAnimations"; + private NBTTagCompound animationCompound; + private String playername; + public UpdateAnimationsPacket() {} + public UpdateAnimationsPacket(NBTTagCompound animationCompound, String playername) { + this.animationCompound = animationCompound; + this.playername = playername; + } + @Override public Enum getType() { return EnumClientPacket.UPDATE_ANIMATIONS; @@ -37,13 +46,14 @@ public final class UpdateAnimationsPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, this.animationCompound); + ByteBufUtils.writeString(out, this.playername); } @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); AnimationData animationData = null; if (nbt.hasKey("EntityId")) { @@ -52,7 +62,7 @@ public final class UpdateAnimationsPacket extends AbstractPacket { animationData = ((EntityNPCInterface) entity).display.animationData; } } else { - String playerName = Server.readString(in); + String playerName = ByteBufUtils.readString(in); EntityPlayer sendingPlayer = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(playerName); if (sendingPlayer != null) { if (!ClientCacheHandler.playerAnimations.containsKey(sendingPlayer.getUniqueID())) { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java similarity index 61% rename from src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java index 6bdbc2023..b7b40c2dc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java @@ -1,28 +1,36 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.large; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import kamkeel.npcs.network.AbstractPacket; +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.EnumClientPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.gui.util.GuiContainerNPCInterface; import noppes.npcs.client.gui.util.GuiNPCInterface; +import noppes.npcs.client.gui.util.IGuiData; import noppes.npcs.client.gui.util.IPartyData; import java.io.IOException; -public final class PartyDataPacket extends AbstractPacket { +public final class LargePartyDataPacket extends LargeAbstractPacket { public static final String packetName = "Client|PartyData"; - public PartyDataPacket() {} + private NBTTagCompound compound; + + public LargePartyDataPacket(){} + + public LargePartyDataPacket(NBTTagCompound comp){ + this.compound = comp; + } @Override public Enum getType() { @@ -31,17 +39,21 @@ public final class PartyDataPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.LARGE_PACKET; } @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + protected byte[] getData() throws IOException { + ByteBuf buffer = Unpooled.buffer(); + ByteBufUtils.writeBigNBT(buffer, compound); + byte[] bytes = new byte[buffer.readableBytes()]; + buffer.readBytes(bytes); + return bytes; } @SideOnly(Side.CLIENT) @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof GuiNPCInterface && ((GuiNPCInterface) gui).hasSubGui()) { gui = (GuiScreen) ((GuiNPCInterface) gui).getSubGui(); @@ -49,7 +61,7 @@ public final class PartyDataPacket extends AbstractPacket { gui = (GuiScreen) ((GuiContainerNPCInterface) gui).getSubGui(); } if (gui instanceof IPartyData) { - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readBigNBT(data); ((IPartyData) gui).setPartyData(nbt); } } diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 7b5f99866..8f7267409 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -688,7 +688,7 @@ public class PacketHandlerServer{ list.add(data.name); PacketUtil.sendList((EntityPlayerMP)player, list); if(npc != null) - Server.sendData(player, EnumPacketClient.SCROLL_SELECTED, npc.linkedName); + PacketUtil.setSelectedList(player, npc.linkedName); } else if(type == EnumPacketServer.LinkedSet){ npc.linkedName = Server.readString(buffer); @@ -754,10 +754,10 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.RemoteFreeze){ CustomNpcs.FreezeNPCs = !CustomNpcs.FreezeNPCs; - Server.sendData(player, EnumPacketClient.SCROLL_SELECTED, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); + PacketUtil.setSelectedList(player, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); } else if(type == EnumPacketServer.RemoteFreezeGet){ - Server.sendData(player, EnumPacketClient.SCROLL_SELECTED, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); + PacketUtil.setSelectedList(player, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); } else if(type == EnumPacketServer.RemoteReset){ Entity entity = player.worldObj.getEntityByID(buffer.readInt()); @@ -981,7 +981,7 @@ public class PacketHandlerServer{ RoleTransporter role = (RoleTransporter) npc.roleInterface; if(role.hasTransport()){ Server.sendData(player,EnumPacketClient.GUI_DATA,role.getLocation().writeNBT()); - Server.sendData(player, EnumPacketClient.SCROLL_SELECTED,role.getLocation().category.title); + PacketUtil.setSelectedList(player, role.getLocation().category.title); } } else if(type == EnumPacketServer.FactionSet){ From e8c3fc4d0a41d587c91264210d3c36ab40ba2537 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 11:03:57 -0500 Subject: [PATCH 044/157] MORE SWAPPING --- .../java/kamkeel/npcs/network/PacketUtil.java | 12 +++++++ .../packets/client/MarkDataPacket.java | 14 +++++++-- .../client/OverlayQuestTrackingPacket.java | 9 +++++- .../packets/client/QuestCompletionPacket.java | 12 +++++-- .../packets/client/ScrollSelectedPacket.java | 9 +++++- .../packets/client/SwingPlayerArmPacket.java | 4 +-- .../packets/client/VillagerListPacket.java | 9 +++++- .../java/noppes/npcs/NoppesUtilPlayer.java | 2 +- .../java/noppes/npcs/ServerEventsHandler.java | 5 +-- .../java/noppes/npcs/blocks/BlockMailbox.java | 30 +++++++++--------- .../npcs/client/PacketHandlerClient.java | 31 ------------------- .../npcs/constants/EnumPacketClient.java | 5 --- .../noppes/npcs/controllers/data/Quest.java | 3 +- .../npcs/entity/EntityNPCInterface.java | 8 +++-- 14 files changed, 86 insertions(+), 67 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketUtil.java b/src/main/java/kamkeel/npcs/network/PacketUtil.java index c44eae29b..0afb9cb1d 100644 --- a/src/main/java/kamkeel/npcs/network/PacketUtil.java +++ b/src/main/java/kamkeel/npcs/network/PacketUtil.java @@ -2,6 +2,8 @@ package kamkeel.npcs.network; import kamkeel.npcs.network.packets.client.ChatAlertPacket; import kamkeel.npcs.network.packets.client.AchievementPacket; +import kamkeel.npcs.network.packets.client.QuestCompletionPacket; +import kamkeel.npcs.network.packets.client.ScrollSelectedPacket; import kamkeel.npcs.network.packets.client.gui.GuiClosePacket; import kamkeel.npcs.network.packets.client.large.LargeGuiDataPacket; import kamkeel.npcs.network.packets.client.gui.GuiErrorPacket; @@ -62,4 +64,14 @@ public class PacketUtil { LargeGuiDataPacket packet = new LargeGuiDataPacket(compound); PacketHandler.Instance.sendToPlayer(packet, playerMP); } + + public static void sendQuestComplete(EntityPlayerMP playerMP, NBTTagCompound compound){ + QuestCompletionPacket packet = new QuestCompletionPacket(compound); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + + public static void setSelectedList(EntityPlayerMP playerMP, String item){ + ScrollSelectedPacket packet = new ScrollSelectedPacket(item); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java index 86f58f0fc..193ee560f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java @@ -7,6 +7,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.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -20,8 +21,16 @@ import java.io.IOException; public final class MarkDataPacket extends AbstractPacket { public static final String packetName = "Client|MarkData"; + private int entityID; + private NBTTagCompound compound; + public MarkDataPacket() {} + public MarkDataPacket(int entityID, NBTTagCompound compound) { + this.entityID = entityID; + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.MARK_DATA; @@ -34,7 +43,8 @@ public final class MarkDataPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeInt(this.entityID); + ByteBufUtils.writeNBT(out, this.compound); } @SideOnly(Side.CLIENT) @@ -44,7 +54,7 @@ public final class MarkDataPacket extends AbstractPacket { if (!(entity instanceof EntityNPCInterface)) return; EntityNPCInterface npc = (EntityNPCInterface) entity; - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); MarkData data = MarkData.get(npc); data.setNBT(nbt); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java index ec7e42fa9..70a8be71f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java @@ -7,6 +7,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.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -20,8 +21,14 @@ import java.io.IOException; public final class OverlayQuestTrackingPacket extends AbstractPacket { public static final String packetName = "Client|OverlayQuestTracking"; + private NBTTagCompound compound; + public OverlayQuestTrackingPacket() {} + public OverlayQuestTrackingPacket(NBTTagCompound compound) { + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.OVERLAY_QUEST_TRACKING; @@ -34,7 +41,7 @@ public final class OverlayQuestTrackingPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, compound); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java index 951edf70a..cf8178bd4 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java @@ -7,7 +7,9 @@ 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.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; @@ -17,8 +19,14 @@ import java.io.IOException; public final class QuestCompletionPacket extends AbstractPacket { public static final String packetName = "Client|QuestCompletion"; + private NBTTagCompound compound; + public QuestCompletionPacket() {} + public QuestCompletionPacket(NBTTagCompound compound) { + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.QUEST_COMPLETION; @@ -31,12 +39,12 @@ public final class QuestCompletionPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, this.compound); } @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NoppesUtil.guiQuestCompletion(player, Server.readNBT(in)); + NoppesUtil.guiQuestCompletion(player, ByteBufUtils.readNBT(in)); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java index d705df2de..a43bdc77f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java @@ -7,6 +7,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.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -19,8 +20,14 @@ import java.io.IOException; public final class ScrollSelectedPacket extends AbstractPacket { public static final String packetName = "Client|ScrollSelected"; + private String selected; + public ScrollSelectedPacket() {} + public ScrollSelectedPacket(String selected) { + this.selected = selected; + } + @Override public Enum getType() { return EnumClientPacket.SCROLL_SELECTED; @@ -33,7 +40,7 @@ public final class ScrollSelectedPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeString(out, this.selected); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java index 56217ae4b..fa3978e34 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java @@ -29,9 +29,7 @@ public final class SwingPlayerArmPacket extends AbstractPacket { } @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } + public void sendData(ByteBuf out) throws IOException {} @SideOnly(Side.CLIENT) @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java index 8f67e4fe6..2b56d4ffd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java @@ -7,6 +7,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.entity.player.EntityPlayer; import net.minecraft.network.PacketBuffer; import noppes.npcs.CustomNpcs; @@ -18,8 +19,14 @@ import java.io.IOException; public final class VillagerListPacket extends AbstractPacket { public static final String packetName = "Client|VillagerList"; + private MerchantRecipeList merchantrecipelist; + public VillagerListPacket() {} + public VillagerListPacket(MerchantRecipeList merchantrecipelist) { + this.merchantrecipelist = merchantrecipelist; + } + @Override public Enum getType() { return EnumClientPacket.VILLAGER_LIST; @@ -32,7 +39,7 @@ public final class VillagerListPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.fillBuffer(out, merchantrecipelist); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index 3802edca2..cfdd0f1c6 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -630,7 +630,7 @@ public class NoppesUtilPlayer { } playerData.save(); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.QUEST_COMPLETION, data.quest.writeToNBT(new NBTTagCompound())); + PacketUtil.sendQuestComplete((EntityPlayerMP)player, data.quest.writeToNBT(new NBTTagCompound())); } if(quest.type == EnumQuestType.Item && partyOptions.objectiveRequirement == EnumPartyObjectives.Shared){ diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index 3e59a2325..ff3eec5b8 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -5,6 +5,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumSoundOperation; import kamkeel.npcs.network.enums.EnumSyncAction; import kamkeel.npcs.network.enums.EnumSyncType; @@ -110,8 +111,8 @@ public class ServerEventsHandler { return; NoppesUtilServer.setEditingNpc(event.entityPlayer, (EntityNPCInterface)event.target); event.setCanceled(true); - Server.sendData((EntityPlayerMP)event.entityPlayer, EnumPacketClient.GUI, EnumGuiType.Script.ordinal()); - if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ + PacketUtil.openGUI((EntityPlayerMP)event.entityPlayer, EnumGuiType.Script, 0, 0, 0); + if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ LogWriter.script(String.format("[%s] (Player) %s OPEN NPC %s (%s, %s, %s) [%s]", "SCRIPTER", event.entityPlayer.getCommandSenderName(), ((EntityNPCInterface)(event.target)).display.getName(), (int)(event.target).posX, (int)(event.target).posY, (int)(event.target).posZ, (event.target).worldObj.getWorldInfo().getWorldName())); } } diff --git a/src/main/java/noppes/npcs/blocks/BlockMailbox.java b/src/main/java/noppes/npcs/blocks/BlockMailbox.java index 062aec591..50ba865e9 100644 --- a/src/main/java/noppes/npcs/blocks/BlockMailbox.java +++ b/src/main/java/noppes/npcs/blocks/BlockMailbox.java @@ -2,6 +2,8 @@ package noppes.npcs.blocks; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -25,29 +27,29 @@ import java.util.ArrayList; import java.util.List; public class BlockMailbox extends BlockContainer{ - + public int renderId = -1; public BlockMailbox() { super(Material.iron); } - @Override + @Override public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { par3List.add(new ItemStack(par1, 1, 0)); par3List.add(new ItemStack(par1, 1, 1)); } - - @Override + + @Override public boolean onBlockActivated(World par1World, int i, int j, int k, EntityPlayer player, int par6, float par7, float par8, float par9){ if(!par1World.isRemote){ - Server.sendData((EntityPlayerMP)player, EnumPacketClient.GUI, EnumGuiType.PlayerMailbox, i, j, k); + PacketUtil.openGUI((EntityPlayerMP)player, EnumGuiType.PlayerMailbox, i, j, k); } return true; } - @Override + @Override public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { ArrayList ret = new ArrayList(); @@ -56,40 +58,40 @@ public class BlockMailbox extends BlockContainer{ return ret; } - @Override + @Override public int damageDropped(int par1) { return par1 >> 2; } - @Override + @Override public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) { int l = MathHelper.floor_double((double)(par5EntityLivingBase.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; l %= 4; - + par1World.setBlockMetadataWithNotify(par2, par3, par4, l | par6ItemStack.getItemDamage() << 2, 2); } - @Override + @Override public boolean isOpaqueCube(){ return false; } - @Override + @Override public boolean renderAsNormalBlock(){ return false; } - @Override + @Override public int getRenderType(){ - return renderId; + return renderId; } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister par1IconRegister) { - + } @SideOnly(Side.CLIENT) public IIcon getIcon(int p_149691_1_, int p_149691_2_) diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index 169e7613a..5ec05b4af 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -48,37 +48,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ MarkData data = MarkData.get((EntityNPCInterface) entity); data.setNBT(Server.readNBT(buffer)); } - else if(type == EnumPacketClient.QUEST_COMPLETION){ - NoppesUtil.guiQuestCompletion(player, Server.readNBT(buffer)); - } - else if(type == EnumPacketClient.UPDATE_NPC){ - NBTTagCompound compound = Server.readNBT(buffer); - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); - if(entity == null || !(entity instanceof EntityNPCInterface)) - return; - ((EntityNPCInterface)entity).readSpawnData(compound); - } - else if(type == EnumPacketClient.ROLE){ - NBTTagCompound compound = Server.readNBT(buffer); - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); - if(entity == null || !(entity instanceof EntityNPCInterface)) - return; - ((EntityNPCInterface)entity).advanced.setRole(compound.getInteger("Role")); - ((EntityNPCInterface)entity).roleInterface.readFromNBT(compound); - NoppesUtil.setLastNpc((EntityNPCInterface) entity); - } - else if(type == EnumPacketClient.GUI){ - EnumGuiType gui = EnumGuiType.values()[buffer.readInt()]; - CustomNpcs.proxy.openGui(NoppesUtil.getLastNpc(), gui, buffer.readInt(), buffer.readInt(), buffer.readInt()); - } - else if(type == EnumPacketClient.SCROLL_SELECTED){ - GuiScreen gui = Minecraft.getMinecraft().currentScreen; - if(gui == null || !(gui instanceof IScrollData)) - return; - String selected = Server.readString(buffer); - - ((IScrollData)gui).setSelected(selected); - } else if(type == EnumPacketClient.GUI_REDSTONE){ NoppesUtil.saveRedstoneBlock(player, Server.readNBT(buffer)); } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index b7f749e20..cec4a7eb3 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -2,11 +2,6 @@ package noppes.npcs.constants; public enum EnumPacketClient { - QUEST_COMPLETION, - UPDATE_NPC, - ROLE, - GUI, - SCROLL_SELECTED, GUI_REDSTONE, GUI_WAYPOINT, GUI_DATA, diff --git a/src/main/java/noppes/npcs/controllers/data/Quest.java b/src/main/java/noppes/npcs/controllers/data/Quest.java index d780ee053..73e34bbe8 100644 --- a/src/main/java/noppes/npcs/controllers/data/Quest.java +++ b/src/main/java/noppes/npcs/controllers/data/Quest.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; @@ -139,7 +140,7 @@ public class Quest implements ICompatibilty, IQuest { public boolean instantComplete(EntityPlayer player, QuestData data) { if(completion == EnumQuestCompletion.Instant && NoppesUtilPlayer.questCompletion((EntityPlayerMP) player, data.quest.id)){ - Server.sendData((EntityPlayerMP)player, EnumPacketClient.QUEST_COMPLETION, data.quest.writeToNBT(new NBTTagCompound())); + PacketUtil.sendQuestComplete((EntityPlayerMP)player, data.quest.writeToNBT(new NBTTagCompound())); return true; } return false; diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index ba49853bd..88c43470f 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -8,9 +8,11 @@ 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.PacketUtil; import kamkeel.npcs.network.enums.EnumSoundOperation; import kamkeel.npcs.network.packets.client.ChatBubblePacket; import kamkeel.npcs.network.packets.client.SoundManagementPacket; +import kamkeel.npcs.network.packets.client.npc.UpdateNpcPacket; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; @@ -411,8 +413,8 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti public void updateClient() { NBTTagCompound compound = writeSpawnData(); compound.setInteger("EntityId", getEntityId()); - Server.sendAssociatedData(this, EnumPacketClient.UPDATE_NPC, compound); - updateClient = false; + PacketHandler.Instance.sendTracking(new UpdateNpcPacket(compound), this); + updateClient = false; } @Override @@ -452,7 +454,7 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti } else if (data != null){ NoppesUtilPlayer.questCompletion((EntityPlayerMP) player, data.quest.id); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.QUEST_COMPLETION, data.quest.writeToNBT(new NBTTagCompound())); + PacketUtil.sendQuestComplete((EntityPlayerMP)player, data.quest.writeToNBT(new NBTTagCompound())); } else if (dialog != null){ NoppesUtilServer.openDialog(player, this, dialog, 0); From a1f10db0de570a296aad82aee862385c67d210f3 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 12:16:11 -0500 Subject: [PATCH 045/157] Continue to replace Client Packet Handler with PacketHandler --- ...BookPacket.java => GuiOpenBookPacket.java} | 31 +++++-- .../packets/client/gui/GuiOpenPacket.java | 2 +- .../packets/client/gui/GuiRedstonePacket.java | 11 ++- .../client/gui/GuiTeleporterPacket.java | 2 +- .../packets/client/gui/GuiWaypointPacket.java | 11 ++- .../LargeClonerPacket.java} | 35 +++++--- .../client/large/LargeGuiDataPacket.java | 2 +- .../java/noppes/npcs/NoppesUtilPlayer.java | 2 +- .../java/noppes/npcs/PacketHandlerPlayer.java | 13 +-- .../java/noppes/npcs/PacketHandlerServer.java | 88 +++++++++---------- .../java/noppes/npcs/ServerEventsHandler.java | 7 +- .../noppes/npcs/blocks/BlockNpcRedstone.java | 6 +- .../noppes/npcs/blocks/BlockWaypoint.java | 4 +- .../npcs/client/PacketHandlerClient.java | 36 -------- .../npcs/constants/EnumPacketClient.java | 7 -- .../npcs/controllers/CustomGuiController.java | 5 +- .../npcs/controllers/data/BankData.java | 4 +- .../npcs/controllers/data/DataTransform.java | 48 +++++----- 18 files changed, 160 insertions(+), 154 deletions(-) rename src/main/java/kamkeel/npcs/network/packets/client/gui/{OpenBookPacket.java => GuiOpenBookPacket.java} (61%) rename src/main/java/kamkeel/npcs/network/packets/client/{gui/GuiClonerPacket.java => large/LargeClonerPacket.java} (55%) diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenBookPacket.java similarity index 61% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenBookPacket.java index b8848ba1b..9f3ef0a92 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/OpenBookPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenBookPacket.java @@ -7,24 +7,35 @@ 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.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.gui.player.GuiBook; import noppes.npcs.client.NoppesUtil; import java.io.IOException; -public final class OpenBookPacket extends AbstractPacket { - public static final String packetName = "Client|OpenBook"; +public final class GuiOpenBookPacket extends AbstractPacket { + public static final String packetName = "Client|GuiOpenBook"; - public OpenBookPacket() {} + private int i; + private int j; + private int k; + private NBTTagCompound nbtTagCompound; + + public GuiOpenBookPacket() {} + + public GuiOpenBookPacket(int i, int j, int k, NBTTagCompound nbtTagCompound) { + this.i = i; + this.j = j; + this.k = k; + this.nbtTagCompound = nbtTagCompound; + } @Override public Enum getType() { - return EnumClientPacket.OPEN_BOOK; + return EnumClientPacket.GUI_BOOK; } @Override @@ -34,7 +45,11 @@ public final class OpenBookPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeInt(this.i); + out.writeInt(this.j); + out.writeInt(this.k); + + ByteBufUtils.writeNBT(out, this.nbtTagCompound); } @SideOnly(Side.CLIENT) @@ -43,7 +58,7 @@ public final class OpenBookPacket extends AbstractPacket { int x = in.readInt(); int y = in.readInt(); int z = in.readInt(); - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); ItemStack book = ItemStack.loadItemStackFromNBT(nbt); NoppesUtil.openGUI(player, new GuiBook(player, book, x, y, z)); } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java index d85ac885e..105bb08f8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java @@ -32,7 +32,7 @@ public final class GuiOpenPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.GUI; + return EnumClientPacket.GUI_OPEN; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java index 1284d70e2..c67ca326b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java @@ -7,6 +7,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.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; @@ -18,8 +19,14 @@ import java.io.IOException; public final class GuiRedstonePacket extends AbstractPacket { public static final String packetName = "Client|GuiRedstone"; + private NBTTagCompound compound; + public GuiRedstonePacket() {} + public GuiRedstonePacket(NBTTagCompound compound) { + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.GUI_REDSTONE; @@ -32,13 +39,13 @@ public final class GuiRedstonePacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, this.compound); } @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); NoppesUtil.saveRedstoneBlock(player, nbt); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java index c42bc8a89..734c60002 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java @@ -21,7 +21,7 @@ public final class GuiTeleporterPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.TELEPORTER; + return EnumClientPacket.GUI_TELEPORTER; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java index e449e7b18..55408fc0d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java @@ -7,6 +7,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.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; @@ -18,8 +19,14 @@ import java.io.IOException; public final class GuiWaypointPacket extends AbstractPacket { public static final String packetName = "Client|GuiWaypoint"; + private NBTTagCompound compound; + public GuiWaypointPacket() {} + public GuiWaypointPacket(NBTTagCompound compound) { + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.GUI_WAYPOINT; @@ -32,13 +39,13 @@ public final class GuiWaypointPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, this.compound); } @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); NoppesUtil.saveWayPointBlock(player, nbt); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClonerPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeClonerPacket.java similarity index 55% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClonerPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/large/LargeClonerPacket.java index 486a6e128..5ad8d3857 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClonerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeClonerPacket.java @@ -1,35 +1,35 @@ -package kamkeel.npcs.network.packets.client.gui; +package kamkeel.npcs.network.packets.client.large; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import kamkeel.npcs.network.AbstractPacket; +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.EnumClientPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.GuiNpcMobSpawnerAdd; import java.io.IOException; -public final class GuiClonerPacket extends AbstractPacket { +public final class LargeClonerPacket extends LargeAbstractPacket { public static final String packetName = "Client|Clone"; private NBTTagCompound compound; - public GuiClonerPacket() {} + public LargeClonerPacket() {} - public GuiClonerPacket(NBTTagCompound comp){ + public LargeClonerPacket(NBTTagCompound comp){ this.compound = comp; } @Override public Enum getType() { - return EnumClientPacket.CLONE; + return EnumClientPacket.CLONE_NPC; } @Override @@ -37,15 +37,26 @@ public final class GuiClonerPacket extends AbstractPacket { return PacketHandler.CLIENT_PACKET; } - @Override - public void sendData(ByteBuf out) throws IOException { - ByteBufUtils.writeNBT(out, compound); - } - @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { NBTTagCompound nbt = ByteBufUtils.readNBT(in); NoppesUtil.openGUI(player, new GuiNpcMobSpawnerAdd(nbt)); } + + @Override + protected byte[] getData() throws IOException { + ByteBuf buffer = Unpooled.buffer(); + ByteBufUtils.writeBigNBT(buffer, compound); + byte[] bytes = new byte[buffer.readableBytes()]; + buffer.readBytes(bytes); + return bytes; + } + + @SideOnly(Side.CLIENT) + @Override + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { + NBTTagCompound nbt = ByteBufUtils.readBigNBT(data); + NoppesUtil.openGUI(player, new GuiNpcMobSpawnerAdd(nbt)); + } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeGuiDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeGuiDataPacket.java index 8bf57d986..a370f3a2e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeGuiDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeGuiDataPacket.java @@ -39,7 +39,7 @@ public final class LargeGuiDataPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.LARGE_PACKET; + return PacketHandler.CLIENT_PACKET; } @Override diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index cfdd0f1c6..46fe77a0a 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -422,7 +422,7 @@ public class NoppesUtilPlayer { } QuestLogData data = new QuestLogData(); data.setData(player); - Server.sendData(player, EnumPacketClient.GUI_DATA, data.writeNBT()); + PacketUtil.sendGuiData(player, data.writeNBT()); } public static void sendTrackedQuest(EntityPlayerMP player) { diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index 7d57b2184..ae44217e8 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -3,6 +3,7 @@ package noppes.npcs; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent; import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; @@ -147,20 +148,20 @@ public class PacketHandlerPlayer{ if(npc == null || npc.advanced.role != EnumRoleType.Follower) return; NoppesUtilPlayer.extendFollower(player, npc); - Server.sendData(player, EnumPacketClient.GUI_DATA, npc.roleInterface.writeToNBT(new NBTTagCompound())); + PacketUtil.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); } else if(type == EnumPlayerPacket.FollowerState){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null || npc.advanced.role != EnumRoleType.Follower) return; NoppesUtilPlayer.changeFollowerState(player,npc); - Server.sendData(player, EnumPacketClient.GUI_DATA, npc.roleInterface.writeToNBT(new NBTTagCompound())); + PacketUtil.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); } else if(type == EnumPlayerPacket.RoleGet){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null || npc.advanced.role == EnumRoleType.None) return; - Server.sendData(player, EnumPacketClient.GUI_DATA, npc.roleInterface.writeToNBT(new NBTTagCompound())); + PacketUtil.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); } else if(type == EnumPlayerPacket.Transport){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); @@ -212,11 +213,11 @@ public class PacketHandlerPlayer{ } else if(type == EnumPlayerPacket.FactionsGet){ PlayerFactionData data = PlayerDataController.Instance.getPlayerData(player).factionData; - Server.sendData(player, EnumPacketClient.GUI_DATA, data.getPlayerGuiData()); + PacketUtil.sendGuiData(player, data.getPlayerGuiData()); } else if(type == EnumPlayerPacket.MailGet){ PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; - Server.sendData(player, EnumPacketClient.GUI_DATA, data.saveNBTData(new NBTTagCompound())); + PacketUtil.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); } else if(type == EnumPlayerPacket.MailDelete){ long time = buffer.readLong(); @@ -230,7 +231,7 @@ public class PacketHandlerPlayer{ it.remove(); } } - Server.sendData(player, EnumPacketClient.GUI_DATA, data.saveNBTData(new NBTTagCompound())); + PacketUtil.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); } else if(type == EnumPlayerPacket.MailSend){ if(!(player.openContainer instanceof ContainerMail)) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 8f7267409..8151c2149 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -116,7 +116,7 @@ public class PacketHandlerServer{ } } compound.setTag("TagNames",tagList); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if (type == EnumPacketServer.CacheAnimation) { PlayerDataController.Instance.getPlayerData(player).animationData.cacheAnimation(buffer.readInt()); return; @@ -372,7 +372,7 @@ public class PacketHandlerServer{ compound.setBoolean("PlayerScriptsEnabled", ConfigScript.GlobalPlayerScripts); compound.setBoolean("GlobalNPCScriptsEnabled", ConfigScript.GlobalNPCScripts); compound.setBoolean("ForgeScriptsEnabled", ConfigScript.GlobalForgeScripts); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if (type == EnumPacketServer.ScriptGlobalGuiDataSave) { NBTTagCompound compound = Server.readNBT(buffer); @@ -395,7 +395,7 @@ public class PacketHandlerServer{ else if(type == EnumPacketServer.ScriptDataGet){ NBTTagCompound compound = npc.script.writeToNBT(new NBTTagCompound()); compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } } @@ -405,7 +405,7 @@ public class PacketHandlerServer{ compound.setString("ScriptLanguage", data.getLanguage()); compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); compound.setTag("ScriptConsole", NBTTags.NBTLongStringMap(data.getConsoleText())); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); List containers = data.getScripts(); for (int i = 0; i < containers.size(); i++) { ScriptContainer container = containers.get(i); @@ -413,7 +413,7 @@ public class PacketHandlerServer{ tabCompound.setInteger("Tab",i); tabCompound.setTag("Script",container.writeToNBT(new NBTTagCompound())); tabCompound.setInteger("TotalScripts",containers.size()); - Server.sendData(player, EnumPacketClient.GUI_DATA, tabCompound); + PacketUtil.sendGuiData(player, tabCompound); } } @@ -507,7 +507,7 @@ public class PacketHandlerServer{ iw.loadScriptData(); NBTTagCompound compound = iw.getMCNbt(); compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); - Server.sendData(player, EnumPacketClient.GUI_DATA, new Object[]{compound}); + PacketUtil.sendGuiData(player, compound); } else if (type == EnumPacketServer.ScriptItemDataSave) { if (!player.capabilities.isCreativeMode) { return; @@ -530,7 +530,7 @@ public class PacketHandlerServer{ return; NBTTagCompound compound = ((TileScripted) tile).getNBT(new NBTTagCompound()); compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if (type == EnumPacketServer.ScriptBlockDataSave) { if (!player.capabilities.isCreativeMode) { return; @@ -567,7 +567,7 @@ public class PacketHandlerServer{ private void movingPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws IOException { if(type == EnumPacketServer.MovingPathGet){ - Server.sendData(player, EnumPacketClient.GUI_DATA, npc.ai.writeToNBT(new NBTTagCompound())); + PacketUtil.sendGuiData(player, npc.ai.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MovingPathSave){ npc.ai.setMovingPath(NBTTags.getIntegerArraySet(Server.readNBT(buffer).getTagList("MovingPathNew",10))); @@ -582,7 +582,7 @@ public class PacketHandlerServer{ TileEntity tile = player.worldObj.getTileEntity(buffer.readInt(), buffer.readInt(), buffer.readInt()); NBTTagCompound compound = new NBTTagCompound(); tile.writeToNBT(compound); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if(type == EnumPacketServer.DialogCategoriesGet){ PacketUtil.sendScrollData(player, DialogController.Instance.getScroll()); @@ -632,7 +632,7 @@ public class PacketHandlerServer{ Quest quest = QuestController.Instance.quests.get(dialog.quest); if(quest != null) compound.setString("DialogQuestName", quest.title); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } } else if(type == EnumPacketServer.QuestGet){ @@ -641,20 +641,20 @@ public class PacketHandlerServer{ NBTTagCompound compound = new NBTTagCompound(); if(quest.hasNewQuest()) compound.setString("NextQuestTitle", quest.getNextQuest().title); - Server.sendData(player, EnumPacketClient.GUI_DATA, quest.writeToNBT(compound)); + PacketUtil.sendGuiData(player, quest.writeToNBT(compound)); } } else if(type == EnumPacketServer.FactionGet){ NBTTagCompound compound = new NBTTagCompound(); Faction faction = FactionController.getInstance().get(buffer.readInt()); faction.writeNBT(compound); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if(type == EnumPacketServer.TagGet){ NBTTagCompound compound = new NBTTagCompound(); Tag tag = TagController.getInstance().get(buffer.readInt()); tag.writeNBT(compound); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } } @@ -803,7 +803,7 @@ public class PacketHandlerServer{ else if(type == EnumPacketServer.NaturalSpawnGet){ SpawnData spawn = SpawnController.Instance.getSpawnData(buffer.readInt()); if(spawn != null){ - Server.sendData(player, EnumPacketClient.GUI_DATA, spawn.writeNBT(new NBTTagCompound())); + PacketUtil.sendGuiData(player, spawn.writeNBT(new NBTTagCompound())); } } else if(type == EnumPacketServer.NaturalSpawnSave){ @@ -832,7 +832,7 @@ public class PacketHandlerServer{ if(category != null){ NBTTagCompound comp = category.writeNBT(new NBTTagCompound()); comp.removeTag("Dialogs"); - Server.sendData(player, EnumPacketClient.GUI_DATA, comp); + PacketUtil.sendGuiData(player, comp); } } else if(type == EnumPacketServer.DialogSave){ @@ -881,7 +881,7 @@ public class PacketHandlerServer{ if(option != null && option.hasDialog()){ NBTTagCompound compound = option.writeNBT(); compound.setInteger("Position", slot); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } } else if(type == EnumPacketServer.DialogNpcRemove){ @@ -892,7 +892,7 @@ public class PacketHandlerServer{ if(category != null){ NBTTagCompound comp = category.writeNBT(new NBTTagCompound()); comp.removeTag("Dialogs"); - Server.sendData(player, EnumPacketClient.GUI_DATA, comp); + PacketUtil.sendGuiData(player, comp); } } else if(type == EnumPacketServer.QuestCategorySave){ @@ -931,7 +931,7 @@ public class PacketHandlerServer{ compound.setString("2", quest2.title); if(quest3 != null) compound.setString("3", quest3.title); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if(type == EnumPacketServer.QuestRemove){ Quest quest = QuestController.Instance.quests.get(buffer.readInt()); @@ -980,7 +980,7 @@ public class PacketHandlerServer{ return; RoleTransporter role = (RoleTransporter) npc.roleInterface; if(role.hasTransport()){ - Server.sendData(player,EnumPacketClient.GUI_DATA,role.getLocation().writeNBT()); + PacketUtil.sendGuiData(player, role.getLocation().writeNBT()); PacketUtil.setSelectedList(player, role.getLocation().category.title); } } @@ -994,14 +994,14 @@ public class PacketHandlerServer{ NoppesUtilServer.sendFactionDataAll(player); NBTTagCompound compound = new NBTTagCompound(); faction.writeNBT(compound); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if(type == EnumPacketServer.FactionRemove){ FactionController.getInstance().delete(buffer.readInt()); NoppesUtilServer.sendFactionDataAll(player); NBTTagCompound compound = new NBTTagCompound(); (new Faction()).writeNBT(compound); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if(type == EnumPacketServer.TagSet){ this.setTags(npc,buffer); @@ -1013,14 +1013,14 @@ public class PacketHandlerServer{ NoppesUtilServer.sendTagDataAll(player); NBTTagCompound compound = new NBTTagCompound(); tag.writeNBT(compound); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if(type == EnumPacketServer.TagRemove){ TagController.getInstance().delete(buffer.readInt()); NoppesUtilServer.sendTagDataAll(player); NBTTagCompound compound = new NBTTagCompound(); (new Tag()).writeNBT(compound); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if(type == EnumPacketServer.PlayerDataGet){ int id = buffer.readInt(); @@ -1039,21 +1039,21 @@ public class PacketHandlerServer{ NoppesUtilServer.regenPlayerData(player); } else if(type == EnumPacketServer.MainmenuDisplayGet){ - Server.sendData(player, EnumPacketClient.GUI_DATA, npc.display.writeToNBT(new NBTTagCompound())); + PacketUtil.sendGuiData(player, npc.display.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuDisplaySave){ npc.display.readToNBT(Server.readNBT(buffer)); npc.updateClient = true; } else if(type == EnumPacketServer.MainmenuStatsGet){ - Server.sendData(player, EnumPacketClient.GUI_DATA, npc.stats.writeToNBT(new NBTTagCompound())); + PacketUtil.sendGuiData(player, npc.stats.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuStatsSave){ npc.stats.readToNBT(Server.readNBT(buffer)); npc.updateClient = true; } else if(type == EnumPacketServer.MainmenuInvGet){ - Server.sendData(player, EnumPacketClient.GUI_DATA, npc.inventory.writeEntityToNBT(new NBTTagCompound())); + PacketUtil.sendGuiData(player, npc.inventory.writeEntityToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuInvSave){ npc.inventory.readEntityFromNBT(Server.readNBT(buffer)); @@ -1061,7 +1061,7 @@ public class PacketHandlerServer{ npc.updateClient = true; } else if(type == EnumPacketServer.MainmenuAIGet){ - Server.sendData(player, EnumPacketClient.GUI_DATA, npc.ai.writeToNBT(new NBTTagCompound())); + PacketUtil.sendGuiData(player, npc.ai.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuAISave){ npc.ai.readToNBT(Server.readNBT(buffer)); @@ -1070,7 +1070,7 @@ public class PacketHandlerServer{ npc.updateClient = true; } else if(type == EnumPacketServer.MainmenuAdvancedGet){ - Server.sendData(player, EnumPacketClient.GUI_DATA, npc.advanced.writeToNBT(new NBTTagCompound())); + PacketUtil.sendGuiData(player, npc.advanced.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuAdvancedSave){ npc.advanced.readToNBT(Server.readNBT(buffer)); @@ -1101,10 +1101,10 @@ public class PacketHandlerServer{ if(npc.advanced.job == EnumJobType.Spawner) ((JobSpawner)npc.jobInterface).cleanCompound(compound); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); if(npc.advanced.job == EnumJobType.Spawner) - Server.sendData(player, EnumPacketClient.GUI_DATA, ((JobSpawner)npc.jobInterface).getTitles()); + PacketUtil.sendGuiData(player, ((JobSpawner)npc.jobInterface).getTitles()); } else if(type == EnumPacketServer.JobSpawnerAdd){ if(npc.advanced.job != EnumJobType.Spawner) @@ -1118,7 +1118,7 @@ public class PacketHandlerServer{ else{ job.setJobCompound(buffer.readInt(), Server.readNBT(buffer)); } - Server.sendData(player, EnumPacketClient.GUI_DATA, job.getTitles()); + PacketUtil.sendGuiData(player, job.getTitles()); } else if(type == EnumPacketServer.RoleCompanionUpdate){ if(npc.advanced.role != EnumRoleType.Companion) @@ -1131,7 +1131,7 @@ public class PacketHandlerServer{ return; JobSpawner job = (JobSpawner) npc.jobInterface; job.setJobCompound(buffer.readInt(), null); - Server.sendData(player, EnumPacketClient.GUI_DATA, job.getTitles()); + PacketUtil.sendGuiData(player, job.getTitles()); } else if(type == EnumPacketServer.RoleSave){ npc.roleInterface.readFromNBT(Server.readNBT(buffer)); @@ -1142,7 +1142,7 @@ public class PacketHandlerServer{ return; NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("RoleData", true); - Server.sendData(player, EnumPacketClient.GUI_DATA, npc.roleInterface.writeToNBT(compound)); + PacketUtil.sendGuiData(player, npc.roleInterface.writeToNBT(compound)); } else if(type == EnumPacketServer.MerchantUpdate){ Entity entity = player.worldObj.getEntityByID(buffer.readInt()); @@ -1168,7 +1168,7 @@ public class PacketHandlerServer{ npc.updateAI = true; } else if(type == EnumPacketServer.TransformGet){ - Server.sendData(player, EnumPacketClient.GUI_DATA, npc.transform.writeOptions(new NBTTagCompound())); + PacketUtil.sendGuiData(player, npc.transform.writeOptions(new NBTTagCompound())); } else if(type == EnumPacketServer.TransformLoad){ if(npc.transform.isValid()) @@ -1192,20 +1192,20 @@ public class PacketHandlerServer{ else if(type == EnumPacketServer.AnimationGet){ Animation animation = (Animation) AnimationController.getInstance().get(buffer.readInt()); NBTTagCompound compound = animation.writeToNBT(); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if(type == EnumPacketServer.AnimationRemove){ AnimationController.getInstance().delete(buffer.readInt()); NoppesUtilServer.sendAnimationDataAll(player); NBTTagCompound compound = (new Animation()).writeToNBT(); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if(type == EnumPacketServer.AnimationSave){ Animation animation = new Animation(); animation.readFromNBT(Server.readNBT(buffer)); AnimationController.getInstance().saveAnimation(animation); NoppesUtilServer.sendAnimationDataAll(player); - Server.sendData(player, EnumPacketClient.GUI_DATA, animation.writeToNBT()); + PacketUtil.sendGuiData(player, animation.writeToNBT()); } else blockPackets(type, buffer, player); @@ -1234,7 +1234,7 @@ public class PacketHandlerServer{ compound.setTag("List", list); compound.setTag("ListDate", listDate); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else warn(player,"WE 1 tried todo something with the wrong tool, probably a hacker"); @@ -1290,7 +1290,7 @@ public class PacketHandlerServer{ boolean bo = ServerCloneController.Instance.getCloneData(null, Server.readString(buffer), buffer.readInt()) != null; NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("NameExists", bo); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if(type == EnumPacketServer.CloneSave){ PlayerData data = PlayerDataController.Instance.getPlayerData(player); @@ -1322,7 +1322,7 @@ public class PacketHandlerServer{ compound.setTag("List", list); compound.setTag("ListDate", listDate); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if(type == EnumPacketServer.CloneList){ NBTTagList list = new NBTTagList(); @@ -1338,14 +1338,14 @@ public class PacketHandlerServer{ compound.setTag("List", list); compound.setTag("ListDate", listDate); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if (type == EnumPacketServer.CloneTagList) { int tab = buffer.readInt(); TagMap tagMap = ServerTagMapController.Instance.getTagMap(tab); NBTTagCompound compound = new NBTTagCompound(); compound.setTag("CloneTags", tagMap.writeNBT()); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if (type == EnumPacketServer.CloneAllTags) { NBTTagCompound compound = new NBTTagCompound(); @@ -1357,7 +1357,7 @@ public class PacketHandlerServer{ validTagList.appendTag(tagCompound); } compound.setTag("AllTags", validTagList); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if (type == EnumPacketServer.CloneAllTagsShort) { NBTTagCompound compound = new NBTTagCompound(); @@ -1369,7 +1369,7 @@ public class PacketHandlerServer{ validTagList.appendTag(tagCompound); } compound.setTag("ShortTags", validTagList); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + PacketUtil.sendGuiData(player, compound); } else if (type == EnumPacketServer.TagSet) { EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index ff3eec5b8..364f5f87c 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -10,6 +10,8 @@ import kamkeel.npcs.network.enums.EnumSoundOperation; import kamkeel.npcs.network.enums.EnumSyncAction; import kamkeel.npcs.network.enums.EnumSyncType; import kamkeel.npcs.network.packets.client.SoundManagementPacket; +import kamkeel.npcs.network.packets.client.VillagerListPacket; +import kamkeel.npcs.network.packets.client.large.LargeClonerPacket; import kamkeel.npcs.network.packets.client.large.LargeSyncPacket; import net.minecraft.block.Block; import net.minecraft.entity.Entity; @@ -98,8 +100,7 @@ public class ServerEventsHandler { return; PlayerData data = PlayerDataController.Instance.getPlayerData(event.entityPlayer); ServerCloneController.Instance.cleanTags(compound); - if(!Server.sendDataChecked((EntityPlayerMP)event.entityPlayer, EnumPacketClient.CLONE, compound)) - event.entityPlayer.addChatMessage(new ChatComponentText("Entity too big to clone")); + PacketHandler.Instance.sendToPlayer(new LargeClonerPacket(compound), (EntityPlayerMP)event.entityPlayer); data.cloned = compound; if (event.target instanceof EntityNPCInterface) { NoppesUtilServer.setEditingNpc(event.entityPlayer, (EntityNPCInterface) event.target); @@ -137,7 +138,7 @@ public class ServerEventsHandler { if (merchantrecipelist != null) { - Server.sendData(player, EnumPacketClient.VILLAGER_LIST, merchantrecipelist); + PacketHandler.Instance.sendToPlayer(new VillagerListPacket(merchantrecipelist), player); } } } diff --git a/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java b/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java index cf46229f2..c38ae3a64 100644 --- a/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java +++ b/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java @@ -1,5 +1,7 @@ package noppes.npcs.blocks; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.packets.client.gui.GuiRedstonePacket; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; @@ -32,8 +34,8 @@ public class BlockNpcRedstone extends BlockContainer{ TileEntity tile = par1World.getTileEntity(i, j, k); NBTTagCompound compound = new NBTTagCompound(); tile.writeToNBT(compound); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.GUI_REDSTONE, compound); - return true; + PacketHandler.Instance.sendToPlayer(new GuiRedstonePacket(compound), (EntityPlayerMP)player); + return true; } return false; } diff --git a/src/main/java/noppes/npcs/blocks/BlockWaypoint.java b/src/main/java/noppes/npcs/blocks/BlockWaypoint.java index f089c3f15..632b4b89a 100644 --- a/src/main/java/noppes/npcs/blocks/BlockWaypoint.java +++ b/src/main/java/noppes/npcs/blocks/BlockWaypoint.java @@ -1,5 +1,7 @@ package noppes.npcs.blocks; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.packets.client.gui.GuiWaypointPacket; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; @@ -34,7 +36,7 @@ public class BlockWaypoint extends BlockContainer{ TileEntity tile = par1World.getTileEntity(i, j, k); NBTTagCompound compound = new NBTTagCompound(); tile.writeToNBT(compound); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.GUI_WAYPOINT, compound); + PacketHandler.Instance.sendToPlayer(new GuiWaypointPacket(compound), (EntityPlayerMP)player); return true; } return false; diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index 5ec05b4af..49ea68513 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -48,42 +48,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ MarkData data = MarkData.get((EntityNPCInterface) entity); data.setNBT(Server.readNBT(buffer)); } - else if(type == EnumPacketClient.GUI_REDSTONE){ - NoppesUtil.saveRedstoneBlock(player, Server.readNBT(buffer)); - } - else if(type == EnumPacketClient.GUI_WAYPOINT){ - NoppesUtil.saveWayPointBlock(player, Server.readNBT(buffer)); - } - else if(type == EnumPacketClient.CLONE){ - NBTTagCompound compound = Server.readNBT(buffer); - NoppesUtil.openGUI(player, new GuiNpcMobSpawnerAdd(compound)); - } - else if(type == EnumPacketClient.TELEPORTER){ - CustomNpcs.proxy.openGui((EntityNPCInterface)null,EnumGuiType.NpcDimensions); - } - else if(type == EnumPacketClient.GUI_DATA){ - GuiScreen gui = Minecraft.getMinecraft().currentScreen; - if(gui == null) - return; - - if(gui instanceof GuiNPCInterface && ((GuiNPCInterface)gui).hasSubGui()){ - gui = (GuiScreen) ((GuiNPCInterface)gui).getSubGui(); - } - else if(gui instanceof GuiContainerNPCInterface && ((GuiContainerNPCInterface)gui).hasSubGui()){ - gui = (GuiScreen) ((GuiContainerNPCInterface)gui).getSubGui(); - } - if(gui instanceof IGuiData) - ((IGuiData)gui).setGuiData(Server.readNBT(buffer)); - } - else if(type == EnumPacketClient.VILLAGER_LIST){ - MerchantRecipeList merchantrecipelist = MerchantRecipeList.func_151390_b(new PacketBuffer(buffer)); - ServerEventsHandler.Merchant.setRecipes(merchantrecipelist); - } - else if(type == EnumPacketClient.OPEN_BOOK){ - int x = buffer.readInt(), y = buffer.readInt(), z = buffer.readInt(); - - NoppesUtil.openGUI(player, new GuiBook(player, ItemStack.loadItemStackFromNBT(Server.readNBT(buffer)), x, y, z)); - } else if(type == EnumPacketClient.ISGUIOPEN){ boolean isGUIOpen = Minecraft.getMinecraft().currentScreen != null; diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index cec4a7eb3..13f19c93d 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -2,13 +2,6 @@ package noppes.npcs.constants; public enum EnumPacketClient { - GUI_REDSTONE, - GUI_WAYPOINT, - GUI_DATA, - VILLAGER_LIST, - CLONE, - TELEPORTER, - OPEN_BOOK, ISGUIOPEN, SCRIPT_OVERLAY_DATA, SCRIPT_OVERLAY_CLOSE, diff --git a/src/main/java/noppes/npcs/controllers/CustomGuiController.java b/src/main/java/noppes/npcs/controllers/CustomGuiController.java index dc4817b39..ef8c2112d 100644 --- a/src/main/java/noppes/npcs/controllers/CustomGuiController.java +++ b/src/main/java/noppes/npcs/controllers/CustomGuiController.java @@ -1,6 +1,7 @@ package noppes.npcs.controllers; import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagList; @@ -27,13 +28,13 @@ public class CustomGuiController { EntityPlayerMP entityPlayerMP = (EntityPlayerMP) player.getMCEntity(); entityPlayerMP.openGui(CustomNpcs.instance, EnumGuiType.CustomGui.ordinal(), player.getWorld().getMCWorld(), gui.getSlots().size(), 0, 0); ((ContainerCustomGui)((EntityPlayerMP)player.getMCEntity()).openContainer).setGui(gui, (EntityPlayer)player.getMCEntity()); - Server.sendDataChecked((EntityPlayerMP)player.getMCEntity(), EnumPacketClient.GUI_DATA, new Object[]{gui.toNBT()}); + PacketUtil.sendGuiData((EntityPlayerMP)player.getMCEntity(), gui.toNBT()); } public static boolean updateGui(IPlayer player, ScriptGui gui) { if (((EntityPlayerMP)player.getMCEntity()).openContainer instanceof ContainerCustomGui) { ((ContainerCustomGui)((EntityPlayerMP)player.getMCEntity()).openContainer).setGui(gui, (EntityPlayer)player.getMCEntity()); - Server.sendDataChecked((EntityPlayerMP)player.getMCEntity(), EnumPacketClient.GUI_DATA, new Object[]{gui.toNBT()}); + PacketUtil.sendGuiData((EntityPlayerMP)player.getMCEntity(), gui.toNBT()); return true; } else { return false; diff --git a/src/main/java/noppes/npcs/controllers/data/BankData.java b/src/main/java/noppes/npcs/controllers/data/BankData.java index 95fa3aa1e..cef17492d 100644 --- a/src/main/java/noppes/npcs/controllers/data/BankData.java +++ b/src/main/java/noppes/npcs/controllers/data/BankData.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.inventory.Container; @@ -108,7 +109,8 @@ public class BankData { if (container != null) container.setCurrency(item); } - Server.sendDataChecked((EntityPlayerMP) player, EnumPacketClient.GUI_DATA, compound); + + PacketUtil.sendGuiData((EntityPlayerMP) player, compound); } private ContainerNPCBankInterface getContainer(EntityPlayer player){ Container con = player.openContainer; diff --git a/src/main/java/noppes/npcs/controllers/data/DataTransform.java b/src/main/java/noppes/npcs/controllers/data/DataTransform.java index ad5402165..f4f1a08e5 100644 --- a/src/main/java/noppes/npcs/controllers/data/DataTransform.java +++ b/src/main/java/noppes/npcs/controllers/data/DataTransform.java @@ -18,13 +18,13 @@ public class DataTransform { public NBTTagCompound stats; public NBTTagCompound role; public NBTTagCompound job; - + public boolean hasDisplay, hasAi, hasAdvanced, hasInv, hasStats, hasRole, hasJob, isActive; - + private EntityNPCInterface npc; - + public boolean editingModus = false; - + public DataTransform(EntityNPCInterface npc){ this.npc = npc; } @@ -47,11 +47,11 @@ public class DataTransform { compound.setTag("TransformRole", role); if(hasJob) compound.setTag("TransformJob", job); - + return compound; } - - public Object writeOptions(NBTTagCompound compound) { + + public NBTTagCompound writeOptions(NBTTagCompound compound) { compound.setBoolean("TransformHasDisplay", hasDisplay); compound.setBoolean("TransformHasAI", hasAi); compound.setBoolean("TransformHasAdvanced", hasAdvanced); @@ -62,7 +62,7 @@ public class DataTransform { compound.setBoolean("TransformEditingModus", editingModus); return compound; } - + public void readToNBT(NBTTagCompound compound) { isActive = compound.getBoolean("TransformIsActive"); @@ -75,7 +75,7 @@ public class DataTransform { job = hasJob?compound.getCompoundTag("TransformJob"): getJob(); role = hasRole?compound.getCompoundTag("TransformRole"): getRole(); } - + public NBTTagCompound getJob() { NBTTagCompound compound = new NBTTagCompound(); @@ -83,17 +83,17 @@ public class DataTransform { if (npc.advanced.job != EnumJobType.None && npc.jobInterface != null) { npc.jobInterface.writeToNBT(compound); } - + return compound; } public NBTTagCompound getRole() { NBTTagCompound compound = new NBTTagCompound(); - compound.setInteger("Role", npc.advanced.role.ordinal()); + compound.setInteger("Role", npc.advanced.role.ordinal()); if (npc.advanced.role != EnumRoleType.None && npc.roleInterface != null) { npc.roleInterface.writeToNBT(compound); } - + return compound; } @@ -102,7 +102,7 @@ public class DataTransform { if(npc instanceof EntityCustomNpc){ compound.setTag("ModelData", ((EntityCustomNpc)npc).modelData.writeToNBT()); } - + return compound; } @@ -119,7 +119,7 @@ public class DataTransform { npc.advanced.job = jopType; npc.advanced.role = roleType; - + return compound; } @@ -132,7 +132,7 @@ public class DataTransform { boolean hadStats = hasStats; boolean hadRole = hasRole; boolean hadJob = hasJob; - + hasDisplay = compound.getBoolean("TransformHasDisplay"); hasAi = compound.getBoolean("TransformHasAI"); hasAdvanced = compound.getBoolean("TransformHasAdvanced"); @@ -158,7 +158,7 @@ public class DataTransform { if(hasRole && !hadRole) role = getRole(); } - + public boolean isValid(){ return hasAdvanced || hasAi || hasDisplay || hasInv || hasStats || hasJob || hasRole; } @@ -166,14 +166,14 @@ public class DataTransform { public NBTTagCompound processAdvanced(NBTTagCompound compoundAdv, NBTTagCompound compoundRole, NBTTagCompound compoundJob) { - + if(hasAdvanced) compoundAdv = advanced; if(hasRole) compoundRole = role; if(hasJob) compoundJob = job; - + Set names = compoundRole.func_150296_c(); for(String name : names) compoundAdv.setTag(name, compoundRole.getTag(name)); @@ -181,10 +181,10 @@ public class DataTransform { names = compoundJob.func_150296_c(); for(String name : names) compoundAdv.setTag(name, compoundJob.getTag(name)); - + return compoundAdv; } - + public void transform(boolean isActive){ if(this.isActive == isActive) return; @@ -205,14 +205,14 @@ public class DataTransform { NBTTagCompound compoundAdv = getAdvanced(); NBTTagCompound compoundRole = getRole(); NBTTagCompound compoundJob = getJob(); - + NBTTagCompound compound = processAdvanced(compoundAdv, compoundRole, compoundJob); npc.advanced.readToNBT(compound); - if (npc.advanced.role != EnumRoleType.None && npc.roleInterface != null) + if (npc.advanced.role != EnumRoleType.None && npc.roleInterface != null) npc.roleInterface.readFromNBT(NBTTags.NBTMerge(compoundRole, compound)); if (npc.advanced.job != EnumJobType.None && npc.jobInterface != null) - npc.jobInterface.readFromNBT(NBTTags.NBTMerge(compoundJob, compound)); - + npc.jobInterface.readFromNBT(NBTTags.NBTMerge(compoundJob, compound)); + if(hasAdvanced) advanced = compoundAdv; if(hasRole) From 43b0e7c23b6bd5550cf82c1c0e90bf6147187b30 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 12:16:16 -0500 Subject: [PATCH 046/157] More Reworking --- .../kamkeel/npcs/network/PacketHandler.java | 24 ++++---- .../npcs/network/enums/EnumClientPacket.java | 56 ++++++++++--------- .../packets/client/ConfigCommandPacket.java | 4 +- .../client/large/LargePartyDataPacket.java | 2 +- .../client/large/LargeScrollDataPacket.java | 2 +- .../client/large/LargeScrollGroupPacket.java | 2 +- .../client/large/LargeScrollListPacket.java | 2 +- .../packets/client/large/LargeSyncPacket.java | 2 +- .../packets/client/npc/RolePacket.java | 2 +- .../java/noppes/npcs/blocks/BlockBook.java | 8 +-- 10 files changed, 50 insertions(+), 54 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index cd01b870a..0feb0f131 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -30,7 +30,6 @@ public final class PacketHandler { public static final PacketChannel INFO_PACKET = new PacketChannel("CNPC+|Info", EnumPacketType.INFO); public static final PacketChannel DATA_PACKET = new PacketChannel("CNPC+|Data", EnumPacketType.DATA); public static final PacketChannel CLIENT_PACKET = new PacketChannel("CNPC+|Client", EnumPacketType.CLIENT); - public static final PacketChannel LARGE_PACKET = new PacketChannel("CNPC+|Large", EnumPacketType.LARGE); private static final List packetChannels = new ArrayList<>(); @@ -39,23 +38,12 @@ public final class PacketHandler { packetChannels.add(INFO_PACKET); packetChannels.add(DATA_PACKET); packetChannels.add(CLIENT_PACKET); - packetChannels.add(LARGE_PACKET); this.registerChannels(); this.registerLargePackets(); this.registerClientPackets(); } - public void registerLargePackets(){ - // Large Packets - LARGE_PACKET.registerPacket(new LargeScrollGroupPacket()); - LARGE_PACKET.registerPacket(new LargeScrollDataPacket()); - LARGE_PACKET.registerPacket(new LargeScrollListPacket()); - LARGE_PACKET.registerPacket(new LargeSyncPacket()); - LARGE_PACKET.registerPacket(new LargeGuiDataPacket()); - LARGE_PACKET.registerPacket(new LargePartyDataPacket()); - } - public void registerClientPackets(){ // Client Packets CLIENT_PACKET.registerPacket(new AchievementPacket()); @@ -75,7 +63,6 @@ public final class PacketHandler { CLIENT_PACKET.registerPacket(new VillagerListPacket()); // Client | GUI Packets - CLIENT_PACKET.registerPacket(new GuiClonerPacket()); CLIENT_PACKET.registerPacket(new GuiClosePacket()); CLIENT_PACKET.registerPacket(new GuiOpenPacket()); CLIENT_PACKET.registerPacket(new GuiErrorPacket()); @@ -83,7 +70,7 @@ public final class PacketHandler { CLIENT_PACKET.registerPacket(new GuiTeleporterPacket()); CLIENT_PACKET.registerPacket(new GuiWaypointPacket()); CLIENT_PACKET.registerPacket(new IsGuiOpenPacket()); - CLIENT_PACKET.registerPacket(new OpenBookPacket()); + CLIENT_PACKET.registerPacket(new GuiOpenBookPacket()); // Client | NPC Packets CLIENT_PACKET.registerPacket(new DeleteNpcPacket()); @@ -96,6 +83,15 @@ public final class PacketHandler { CLIENT_PACKET.registerPacket(new ScriptedParticlePacket()); CLIENT_PACKET.registerPacket(new ScriptOverlayClosePacket()); CLIENT_PACKET.registerPacket(new ScriptOverlayDataPacket()); + + // Client | Large Packets + CLIENT_PACKET.registerPacket(new LargeClonerPacket()); + CLIENT_PACKET.registerPacket(new LargeScrollGroupPacket()); + CLIENT_PACKET.registerPacket(new LargeScrollDataPacket()); + CLIENT_PACKET.registerPacket(new LargeScrollListPacket()); + CLIENT_PACKET.registerPacket(new LargeSyncPacket()); + CLIENT_PACKET.registerPacket(new LargeGuiDataPacket()); + CLIENT_PACKET.registerPacket(new LargePartyDataPacket()); } private void registerChannels() { diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java index 489662c7d..54035092f 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java @@ -2,54 +2,56 @@ package kamkeel.npcs.network.enums; // Packets to the Client public enum EnumClientPacket { + // Synchronization SYNC, + CONFIG_COMMAND, + + // Messages CHAT_ALERT, ACHIEVEMENT, + CHATBUBBLE, SOUND, - PARTY_MESSAGE, - SYNCRECIPES_ADD, - SYNCRECIPES_WORKBENCH, DIALOG, QUEST_COMPLETION, + + + // NPC EDIT_NPC, - PLAY_SOUND, - PLAY_MUSIC, UPDATE_NPC, - ROLE, - GUI, - SCRIPTED_PARTICLE, - PARTICLE, + ROLE_NPC, DELETE_NPC, + CLONE_NPC, + + // Data SCROLL_LIST, SCROLL_DATA, SCROLL_GROUP, SCROLL_SELECTED, + PARTY_DATA, + + // GUI + GUI_OPEN, GUI_REDSTONE, GUI_WAYPOINT, + GUI_TELEPORTER, + GUI_BOOK, GUI_DATA, GUI_ERROR, GUI_CLOSE, - VILLAGER_LIST, - CHATBUBBLE, - SYNCRECIPES_CARPENTRYBENCH, - CLONE, - TELEPORTER, - OPEN_BOOK, - CONFIG, ISGUIOPEN, - SCRIPT_OVERLAY_DATA, - SCRIPT_OVERLAY_CLOSE, - SWING_PLAYER_ARM, - UPDATE_ITEM, + + // Visual + SCRIPTED_PARTICLE, + PARTICLE, PLAYER_UPDATE_SKIN_OVERLAYS, UPDATE_ANIMATIONS, + SCRIPT_OVERLAY_DATA, + SCRIPT_OVERLAY_CLOSE, OVERLAY_QUEST_TRACKING, - DISABLE_MOUSE_INPUT, - SYNC_WEAPON, MARK_DATA, - SYNC_ADD, SYNC_END, SYNC_UPDATE, SYNC_REMOVE, SYNC_PLAYER, - SYNC_CONFIG, - DBC_FORM, - LARGE_NBT_PART, LARGE_NBT_END, - PARTY_DATA + + // Other + VILLAGER_LIST, + SWING_PLAYER_ARM, + DISABLE_MOUSE_INPUT, } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java index 506e8032e..b88f11929 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java @@ -10,8 +10,6 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import kamkeel.npcs.network.enums.EnumConfigOperation; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.ClientProxy; import noppes.npcs.config.ConfigClient; import noppes.npcs.client.ClientProxy.FontContainer; @@ -34,7 +32,7 @@ public final class ConfigCommandPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.CONFIG; + return EnumClientPacket.CONFIG_COMMAND; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java index b7b40c2dc..9d4f115e1 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java @@ -39,7 +39,7 @@ public final class LargePartyDataPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.LARGE_PACKET; + return PacketHandler.CLIENT_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollDataPacket.java index a1d2b102a..377bbc5e9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollDataPacket.java @@ -32,7 +32,7 @@ public final class LargeScrollDataPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.LARGE_PACKET; + return PacketHandler.CLIENT_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollGroupPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollGroupPacket.java index 9a9c54bab..67cca5755 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollGroupPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollGroupPacket.java @@ -31,7 +31,7 @@ public final class LargeScrollGroupPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.LARGE_PACKET; + return PacketHandler.CLIENT_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollListPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollListPacket.java index c6706cf04..2649421e4 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollListPacket.java @@ -31,7 +31,7 @@ public final class LargeScrollListPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.LARGE_PACKET; + return PacketHandler.CLIENT_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java index e454467f9..d7f7bd4da 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java @@ -47,7 +47,7 @@ public final class LargeSyncPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.LARGE_PACKET; // Or whichever channel you want. + return PacketHandler.CLIENT_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/RolePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/RolePacket.java index a39ccd7fb..484a609aa 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/RolePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/RolePacket.java @@ -30,7 +30,7 @@ public final class RolePacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.ROLE; + return EnumClientPacket.ROLE_NPC; } @Override diff --git a/src/main/java/noppes/npcs/blocks/BlockBook.java b/src/main/java/noppes/npcs/blocks/BlockBook.java index e031f61b6..c67fa3ebe 100644 --- a/src/main/java/noppes/npcs/blocks/BlockBook.java +++ b/src/main/java/noppes/npcs/blocks/BlockBook.java @@ -1,5 +1,7 @@ package noppes.npcs.blocks; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.packets.client.gui.GuiOpenBookPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; @@ -10,9 +12,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import noppes.npcs.CustomItems; import noppes.npcs.CustomNpcsPermissions; -import noppes.npcs.Server; import noppes.npcs.blocks.tiles.TileBook; -import noppes.npcs.constants.EnumPacketClient; public class BlockBook extends BlockRotated{ @@ -32,8 +32,8 @@ public class BlockBook extends BlockRotated{ if (currentItem != null && currentItem.getItem() == CustomItems.wand && CustomNpcsPermissions.hasPermission(player, CustomNpcsPermissions.EDIT_BOOK)) { ((TileBook)tile).book.func_150996_a(Items.writable_book); } - Server.sendData((EntityPlayerMP)player, EnumPacketClient.OPEN_BOOK, i, j, k, ((TileBook)tile).book.writeToNBT(new NBTTagCompound())); - return true; + PacketHandler.Instance.sendToPlayer(new GuiOpenBookPacket(i, j, k, ((TileBook)tile).book.writeToNBT(new NBTTagCompound())), (EntityPlayerMP) player); + return true; } @Override From c3179b36f22c66c8f0e7c62ac47f676e0226cc6f Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 12:44:39 -0500 Subject: [PATCH 047/157] Remove PacketHandlerClient --- .../kamkeel/npcs/network/PacketChannel.java | 4 + .../kamkeel/npcs/network/PacketHandler.java | 2 +- .../java/kamkeel/npcs/network/PacketUtil.java | 11 +- .../npcs/network/enums/EnumClientPacket.java | 3 +- .../npcs/network/enums/EnumPacketType.java | 2 +- .../packets/client/ChatAlertPacket.java | 4 +- .../client/DisableMouseInputPacket.java | 3 +- .../client/OverlayQuestTrackingPacket.java | 4 +- .../packets/client/ParticlePacket.java | 4 +- .../packets/client/ScrollSelectedPacket.java | 4 +- .../packets/client/gui/IsGuiOpenPacket.java | 4 +- .../packets/client/large/LargeSyncPacket.java | 6 + .../packets/client/npc/WeaponNpcPacket.java | 66 ++++++++ .../client/script/ScriptedParticlePacket.java | 3 +- .../java/noppes/npcs/NoppesUtilPlayer.java | 25 +-- .../java/noppes/npcs/PacketHandlerPlayer.java | 23 +-- .../java/noppes/npcs/PacketHandlerServer.java | 133 +++++++-------- src/main/java/noppes/npcs/Server.java | 88 +--------- .../java/noppes/npcs/ServerEventsHandler.java | 4 +- .../java/noppes/npcs/client/NoppesUtil.java | 12 +- .../npcs/client/PacketHandlerClient.java | 159 ------------------ .../npcs/constants/EnumPacketClient.java | 14 +- .../npcs/controllers/CustomGuiController.java | 11 +- .../npcs/controllers/PartyController.java | 4 +- .../npcs/controllers/data/AnimationData.java | 5 +- .../npcs/controllers/data/MarkData.java | 5 +- .../controllers/data/PlayerQuestData.java | 6 +- .../npcs/entity/EntityNPCInterface.java | 14 +- .../npcs/entity/data/DataSkinOverlays.java | 4 +- .../npcs/scripted/entity/ScriptPlayer.java | 7 +- 30 files changed, 238 insertions(+), 396 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/client/npc/WeaponNpcPacket.java delete mode 100644 src/main/java/noppes/npcs/client/PacketHandlerClient.java diff --git a/src/main/java/kamkeel/npcs/network/PacketChannel.java b/src/main/java/kamkeel/npcs/network/PacketChannel.java index c7109d856..aae7eca34 100644 --- a/src/main/java/kamkeel/npcs/network/PacketChannel.java +++ b/src/main/java/kamkeel/npcs/network/PacketChannel.java @@ -34,6 +34,10 @@ public class PacketChannel { } public void registerPacket(AbstractPacket packet) { + if(packets.containsKey(packet.getType().ordinal())){ + System.out.println("Packet ID: " + packet.getType().ordinal() + " is already registered in " + this.channelName); + return; + } this.packets.put(packet.getType().ordinal(), packet); } } diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 0feb0f131..e1f6e0407 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -40,7 +40,6 @@ public final class PacketHandler { packetChannels.add(CLIENT_PACKET); this.registerChannels(); - this.registerLargePackets(); this.registerClientPackets(); } @@ -78,6 +77,7 @@ public final class PacketHandler { CLIENT_PACKET.registerPacket(new UpdateNpcPacket()); CLIENT_PACKET.registerPacket(new DialogPacket()); CLIENT_PACKET.registerPacket(new RolePacket()); + CLIENT_PACKET.registerPacket(new WeaponNpcPacket()); // Client | Script Packets CLIENT_PACKET.registerPacket(new ScriptedParticlePacket()); diff --git a/src/main/java/kamkeel/npcs/network/PacketUtil.java b/src/main/java/kamkeel/npcs/network/PacketUtil.java index 0afb9cb1d..d108e7517 100644 --- a/src/main/java/kamkeel/npcs/network/PacketUtil.java +++ b/src/main/java/kamkeel/npcs/network/PacketUtil.java @@ -5,12 +5,9 @@ import kamkeel.npcs.network.packets.client.AchievementPacket; import kamkeel.npcs.network.packets.client.QuestCompletionPacket; import kamkeel.npcs.network.packets.client.ScrollSelectedPacket; import kamkeel.npcs.network.packets.client.gui.GuiClosePacket; -import kamkeel.npcs.network.packets.client.large.LargeGuiDataPacket; +import kamkeel.npcs.network.packets.client.large.*; import kamkeel.npcs.network.packets.client.gui.GuiErrorPacket; import kamkeel.npcs.network.packets.client.gui.GuiOpenPacket; -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 net.minecraft.nbt.NBTTagCompound; import noppes.npcs.constants.EnumGuiType; @@ -65,6 +62,12 @@ public class PacketUtil { PacketHandler.Instance.sendToPlayer(packet, playerMP); } + public static void sendPartyData(EntityPlayerMP playerMP, NBTTagCompound compound){ + LargePartyDataPacket packet = new LargePartyDataPacket(compound); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + + public static void sendQuestComplete(EntityPlayerMP playerMP, NBTTagCompound compound){ QuestCompletionPacket packet = new QuestCompletionPacket(compound); 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 54035092f..934b8a8c2 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java @@ -21,6 +21,7 @@ public enum EnumClientPacket { ROLE_NPC, DELETE_NPC, CLONE_NPC, + WEAPON_NPC, // Data SCROLL_LIST, @@ -49,7 +50,7 @@ public enum EnumClientPacket { SCRIPT_OVERLAY_CLOSE, OVERLAY_QUEST_TRACKING, MARK_DATA, - + // Other VILLAGER_LIST, SWING_PLAYER_ARM, diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java b/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java index c7ccd39cc..83f9049f7 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java @@ -1,5 +1,5 @@ package kamkeel.npcs.network.enums; public enum EnumPacketType { - INFO, DATA, CLIENT, LARGE + INFO, DATA, CLIENT } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java index b5aa7cd28..de17c3f37 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java @@ -10,8 +10,6 @@ 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; @@ -50,7 +48,7 @@ public final class ChatAlertPacket extends AbstractPacket { StringBuilder message = new StringBuilder(); String str; - while ((str = Server.readString(in)) != null && !str.isEmpty()) { + while ((str = ByteBufUtils.readString(in)) != null && !str.isEmpty()) { message.append(str); } player.addChatMessage(new ChatComponentTranslation(message.toString())); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java index 806d6f3a2..6df5e1d9b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java @@ -9,7 +9,6 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.Server; import noppes.npcs.client.ClientEventHandler; import java.io.IOException; @@ -47,7 +46,7 @@ public final class DisableMouseInputPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { long duration = in.readLong(); - String parsedButtons = Server.readString(in); + String parsedButtons = ByteBufUtils.readString(in); if (parsedButtons == null || parsedButtons.isEmpty()) { ClientEventHandler.disabledButtonTimes.put(-1, duration); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java index 70a8be71f..eb75f6e13 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java @@ -11,8 +11,6 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.gui.OverlayQuestTracking; import noppes.npcs.client.ClientCacheHandler; @@ -48,7 +46,7 @@ public final class OverlayQuestTrackingPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { try { - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); ClientCacheHandler.questTrackingOverlay = new OverlayQuestTracking(Minecraft.getMinecraft()); ClientCacheHandler.questTrackingOverlay.setOverlayData(nbt); } catch (IOException e) { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java index 060c02cc8..3a0475a86 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java @@ -11,8 +11,6 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import java.io.IOException; import java.util.Random; @@ -80,7 +78,7 @@ public final class ParticlePacket extends AbstractPacket { float width = buffer.readFloat(); float yOffset = buffer.readFloat(); - String particle = Server.readString(buffer); + String particle = ByteBufUtils.readString(buffer); World worldObj = Minecraft.getMinecraft().theWorld; Random rand = worldObj.rand; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java index a43bdc77f..d91d4ca76 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java @@ -11,8 +11,6 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.gui.util.IScrollData; import java.io.IOException; @@ -48,7 +46,7 @@ public final class ScrollSelectedPacket extends AbstractPacket { public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof IScrollData) { - String selected = Server.readString(in); + String selected = ByteBufUtils.readString(in); ((IScrollData) gui).setSelected(selected); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java index 30be1b9fc..f8e1758f0 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java @@ -30,9 +30,7 @@ public final class IsGuiOpenPacket extends AbstractPacket { } @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } + public void sendData(ByteBuf out) throws IOException {} @SideOnly(Side.CLIENT) @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java index d7f7bd4da..d634794b9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java @@ -1,6 +1,7 @@ package kamkeel.npcs.network.packets.client.large; 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.controllers.SyncController; @@ -11,9 +12,14 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import kamkeel.npcs.network.enums.EnumSyncAction; import kamkeel.npcs.network.enums.EnumSyncType; import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; +import noppes.npcs.Server; +import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/WeaponNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/npc/WeaponNpcPacket.java new file mode 100644 index 000000000..c1e8f48f1 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/client/npc/WeaponNpcPacket.java @@ -0,0 +1,66 @@ +package kamkeel.npcs.network.packets.client.npc; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.Server; +import noppes.npcs.client.NoppesUtil; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class WeaponNpcPacket extends AbstractPacket { + public static final String packetName = "Client|WeaponNpc"; + + private int entityId; + private int weaponIndex; + private NBTTagCompound compound; + + public WeaponNpcPacket() {} + + public WeaponNpcPacket(int entityId, int weaponIndex, NBTTagCompound compound) { + this.entityId = entityId; + this.weaponIndex = weaponIndex; + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumClientPacket.WEAPON_NPC; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.CLIENT_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.entityId); + out.writeInt(this.weaponIndex); + + ByteBufUtils.writeNBT(out, this.compound); + } + + @SideOnly(Side.CLIENT) + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); + if(!(entity instanceof EntityNPCInterface)) + return; + EntityNPCInterface npc = (EntityNPCInterface) entity; + int weaponSlotIndex = in.readInt(); + ItemStack stack = ItemStack.loadItemStackFromNBT(ByteBufUtils.readNBT(in)); + npc.inventory.weapons.put(weaponSlotIndex,stack); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptedParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptedParticlePacket.java index a1aab8fa1..cd5cda8cd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptedParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptedParticlePacket.java @@ -14,7 +14,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.fx.CustomFX; import noppes.npcs.scripted.ScriptParticle; @@ -62,7 +61,7 @@ public final class ScriptedParticlePacket extends AbstractPacket { NBTTagCompound compound; ScriptParticle particle; try { - compound = Server.readNBT(buffer); + compound = ByteBufUtils.readNBT(buffer); particle = ScriptParticle.fromNBT(compound); } catch (IOException ignored) { return; diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index 46fe77a0a..794804db7 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -6,7 +6,12 @@ import io.netty.buffer.Unpooled; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumSoundOperation; +import kamkeel.npcs.network.packets.client.DisableMouseInputPacket; +import kamkeel.npcs.network.packets.client.OverlayQuestTrackingPacket; import kamkeel.npcs.network.packets.client.SoundManagementPacket; +import kamkeel.npcs.network.packets.client.SwingPlayerArmPacket; +import kamkeel.npcs.network.packets.client.gui.IsGuiOpenPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; @@ -137,11 +142,11 @@ public class NoppesUtilPlayer { } } - Server.sendData(player, EnumPacketClient.DISABLE_MOUSE_INPUT, time, stringedIds.toString()); + PacketHandler.Instance.sendToPlayer(new DisableMouseInputPacket(time, stringedIds.toString()), player); } public static void swingPlayerArm(EntityPlayerMP player){ - Server.sendData(player, EnumPacketClient.SWING_PLAYER_ARM); + PacketHandler.Instance.sendToPlayer(new SwingPlayerArmPacket(), player); } private static void followerBuy(RoleFollower role,IInventory currencyInv,EntityPlayerMP player, EntityNPCInterface npc){ @@ -306,7 +311,7 @@ public class NoppesUtilPlayer { public static void updateQuestLogData(ByteBuf buffer, EntityPlayerMP player) throws IOException { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - NBTTagCompound compound = Server.readNBT(buffer); + NBTTagCompound compound = ByteBufUtils.readNBT(buffer); HashMap questAlerts = NBTTags.getStringStringMap(compound.getTagList("Alerts", 10)); for (Map.Entry entry : questAlerts.entrySet()) { Quest quest = getQuestFromStringKey(entry.getKey()); @@ -315,7 +320,7 @@ public class NoppesUtilPlayer { } } - String trackedQuestString = Server.readString(buffer); + String trackedQuestString = ByteBufUtils.readString(buffer); Quest trackedQuest = getQuestFromStringKey(trackedQuestString); if (trackedQuest != null) { playerData.questData.trackQuest(trackedQuest); @@ -332,7 +337,7 @@ public class NoppesUtilPlayer { public static void updatePartyQuestLogData(ByteBuf buffer, EntityPlayerMP player) throws IOException { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - String trackedQuestString = Server.readString(buffer); + String trackedQuestString = ByteBufUtils.readString(buffer); Quest trackedQuest = getQuestFromStringKey(trackedQuestString); if (trackedQuest != null) { playerData.questData.trackParty(playerData.getPlayerParty()); @@ -388,7 +393,7 @@ public class NoppesUtilPlayer { } compound.setTag("ObjectiveList",nbtTagList); - Server.sendData(player, EnumPacketClient.OVERLAY_QUEST_TRACKING, compound); + PacketHandler.Instance.sendToPlayer(new OverlayQuestTrackingPacket(compound), player); } } @@ -411,8 +416,7 @@ public class NoppesUtilPlayer { nbtTagList.appendTag(new NBTTagString(objective.getAdditionalText())); } compound.setTag("ObjectiveList",nbtTagList); - - Server.sendData(player, EnumPacketClient.OVERLAY_QUEST_TRACKING, compound); + PacketHandler.Instance.sendToPlayer(new OverlayQuestTrackingPacket(compound), player); } } @@ -428,7 +432,8 @@ public class NoppesUtilPlayer { public static void sendTrackedQuest(EntityPlayerMP player) { QuestLogData data = new QuestLogData(); data.setTrackedQuestKey(player); - Server.sendData(player, EnumPacketClient.PARTY_DATA, data.writeTrackedQuest()); + + PacketUtil.sendPartyData(player, data.writeTrackedQuest()); } public static boolean questCompletion(EntityPlayerMP player, int questId) { @@ -744,7 +749,7 @@ public class NoppesUtilPlayer { } } public static void isGUIOpen(EntityPlayerMP player){ - Server.sendData(player, EnumPacketClient.ISGUIOPEN); + PacketHandler.Instance.sendToPlayer(new IsGuiOpenPacket(), player); } public static List countStacks(IInventory inv, boolean ignoreDamage, boolean ignoreNBT) { diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index ae44217e8..95d2d05d3 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -4,6 +4,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; @@ -45,7 +46,7 @@ public class PacketHandlerPlayer{ private void player(ByteBuf buffer, EntityPlayerMP player, EnumPlayerPacket type) throws IOException { if(type == EnumPlayerPacket.MarkData){ - String uuid = Server.readString(buffer); + String uuid = ByteBufUtils.readString(buffer); if(uuid == null) return; @@ -85,7 +86,7 @@ public class PacketHandlerPlayer{ boolean isMetaPressed = buffer.readBoolean(); boolean buttonDown = buffer.readBoolean(); - String ints = Server.readString(buffer); + String ints = ByteBufUtils.readString(buffer); String[] split = ints.split(","); int[] keysDown; @@ -118,7 +119,7 @@ public class PacketHandlerPlayer{ boolean isAltPressed = buffer.readBoolean(); boolean isMetaPressed = buffer.readBoolean(); - String ints = Server.readString(buffer); + String ints = ByteBufUtils.readString(buffer); String[] split = ints.split(","); int[] keysDown; @@ -167,7 +168,7 @@ public class PacketHandlerPlayer{ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null || npc.advanced.role != EnumRoleType.Transporter) return; - NoppesUtilPlayer.transport(player, npc, Server.readString(buffer)); + NoppesUtilPlayer.transport(player, npc, ByteBufUtils.readString(buffer)); } else if(type == EnumPlayerPacket.BankUpgrade){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); @@ -221,7 +222,7 @@ public class PacketHandlerPlayer{ } else if(type == EnumPlayerPacket.MailDelete){ long time = buffer.readLong(); - String username = Server.readString(buffer); + String username = ByteBufUtils.readString(buffer); PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; Iterator it = data.playermail.iterator(); @@ -236,7 +237,7 @@ public class PacketHandlerPlayer{ else if(type == EnumPlayerPacket.MailSend){ if(!(player.openContainer instanceof ContainerMail)) return; - String username = PlayerDataController.Instance.hasPlayer(Server.readString(buffer)); + String username = PlayerDataController.Instance.hasPlayer(ByteBufUtils.readString(buffer)); if(username.isEmpty()){ NoppesUtilServer.sendGuiError(player, 0); return; @@ -247,7 +248,7 @@ public class PacketHandlerPlayer{ String s = player.getDisplayName(); if(!s.equals(player.getCommandSenderName())) s += "(" + player.getCommandSenderName() + ")"; - mail.readNBT(Server.readNBT(buffer)); + mail.readNBT(ByteBufUtils.readNBT(buffer)); mail.sender = s; mail.items = ((ContainerMail)player.openContainer).mail.items; @@ -263,7 +264,7 @@ public class PacketHandlerPlayer{ } else if(type == EnumPlayerPacket.MailboxOpenMail){ long time = buffer.readLong(); - String username = Server.readString(buffer); + String username = ByteBufUtils.readString(buffer); player.closeContainer(); PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; @@ -279,7 +280,7 @@ public class PacketHandlerPlayer{ } else if(type == EnumPlayerPacket.MailRead){ long time = buffer.readLong(); - String username = Server.readString(buffer); + String username = ByteBufUtils.readString(buffer); PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; Iterator it = data.playermail.iterator(); @@ -300,7 +301,7 @@ public class PacketHandlerPlayer{ return; TileBigSign sign = (TileBigSign) tile; if (sign.canEdit) { - sign.setText(Server.readString(buffer)); + sign.setText(ByteBufUtils.readString(buffer)); sign.canEdit = false; player.worldObj.markBlockForUpdate(x, y, z); } @@ -316,7 +317,7 @@ public class PacketHandlerPlayer{ if (tile.book.getItem() == Items.written_book) return; boolean sign = buffer.readBoolean(); - ItemStack book = ItemStack.loadItemStackFromNBT(Server.readNBT(buffer)); + ItemStack book = ItemStack.loadItemStackFromNBT(ByteBufUtils.readNBT(buffer)); if (book == null) return; if (book.getItem() == Items.writable_book && !sign && ItemWritableBook.func_150930_a(book.getTagCompound())) { diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 8151c2149..8419eb7e4 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -7,6 +7,7 @@ import cpw.mods.fml.relauncher.Side; import foxz.utils.Market; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.passive.EntityVillager; @@ -74,19 +75,19 @@ public class PacketHandlerServer{ isGuiOpenPacket(buffer, player); return; } else if (type == EnumPacketServer.CustomGuiButton && player.openContainer instanceof ContainerCustomGui) { - ((ContainerCustomGui) player.openContainer).customGui.fromNBT(Server.readNBT(buffer)); + ((ContainerCustomGui) player.openContainer).customGui.fromNBT(ByteBufUtils.readNBT(buffer)); EventHooks.onCustomGuiButton((IPlayer) NpcAPI.Instance().getIEntity(player), ((ContainerCustomGui) player.openContainer).customGui, buffer.readInt()); return; } else if (type == EnumPacketServer.CustomGuiUnfocused && player.openContainer instanceof ContainerCustomGui) { - ((ContainerCustomGui) player.openContainer).customGui.fromNBT(Server.readNBT(buffer)); + ((ContainerCustomGui) player.openContainer).customGui.fromNBT(ByteBufUtils.readNBT(buffer)); EventHooks.onCustomGuiUnfocused((IPlayer) NpcAPI.Instance().getIEntity(player), ((ContainerCustomGui) player.openContainer).customGui, buffer.readInt()); return; } else if (type == EnumPacketServer.CustomGuiScrollClick && player.openContainer instanceof ContainerCustomGui) { - ((ContainerCustomGui) player.openContainer).customGui.fromNBT(Server.readNBT(buffer)); + ((ContainerCustomGui) player.openContainer).customGui.fromNBT(ByteBufUtils.readNBT(buffer)); EventHooks.onCustomGuiScrollClick((IPlayer) NpcAPI.Instance().getIEntity(player), ((ContainerCustomGui) player.openContainer).customGui, buffer.readInt(), buffer.readInt(), CustomGuiController.readScrollSelection(buffer), buffer.readBoolean()); return; } else if (type == EnumPacketServer.CustomGuiClose) { - EventHooks.onCustomGuiClose((IPlayer) NpcAPI.Instance().getIEntity(player), (new ScriptGui()).fromNBT(Server.readNBT(buffer))); + EventHooks.onCustomGuiClose((IPlayer) NpcAPI.Instance().getIEntity(player), (new ScriptGui()).fromNBT(ByteBufUtils.readNBT(buffer))); return; } else if (type == EnumPacketServer.QuestLogToServer) { NoppesUtilPlayer.updateQuestLogData(buffer, player); @@ -137,9 +138,9 @@ public class PacketHandlerServer{ } NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("Disband", true); - Server.sendData(player, EnumPacketClient.PARTY_DATA, compound); + PacketUtil.sendPartyData(player, compound); } else if (type == EnumPacketServer.KickPlayer) { - String kickPlayerName = Server.readString(buffer); + String kickPlayerName = ByteBufUtils.readString(buffer); EntityPlayer kickPlayer = NoppesUtilServer.getPlayerByName(kickPlayerName); PlayerData playerData = null; UUID playerUUID = null; @@ -176,7 +177,7 @@ public class PacketHandlerServer{ } } } else if (type == EnumPacketServer.LeavePlayer) { - EntityPlayer leavingPlayer = NoppesUtilServer.getPlayerByName(Server.readString(buffer)); + EntityPlayer leavingPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(buffer)); if (leavingPlayer != null) { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); if (playerData.partyUUID != null) { @@ -195,19 +196,19 @@ public class PacketHandlerServer{ PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); if (playerData.partyUUID != null) { Party party = PartyController.Instance().getParty(playerData.partyUUID); - party.readClientNBT(Server.readNBT(buffer)); + party.readClientNBT(ByteBufUtils.readNBT(buffer)); } } else if (type == EnumPacketServer.SetPartyLeader) { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); if (playerData.partyUUID != null) { Party party = PartyController.Instance().getParty(playerData.partyUUID); if (!party.getIsLocked()) { - party.setLeader(NoppesUtilServer.getPlayerByName(Server.readString(buffer))); + party.setLeader(NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(buffer))); PartyController.Instance().pingPartyUpdate(party); } } } else if (type == EnumPacketServer.PartyInvite) { - EntityPlayer invitedPlayer = NoppesUtilServer.getPlayerByName(Server.readString(buffer)); + EntityPlayer invitedPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(buffer)); if (invitedPlayer != null) { PlayerData senderData = PlayerDataController.Instance.getPlayerData(player); PlayerData invitedData = PlayerDataController.Instance.getPlayerData(invitedPlayer); @@ -227,14 +228,14 @@ public class PacketHandlerServer{ sendInviteData(player); } else if (type == EnumPacketServer.AcceptInvite) { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - String uuidString = Server.readString(buffer); + String uuidString = ByteBufUtils.readString(buffer); if (uuidString != null) { UUID uuid = UUID.fromString(uuidString); playerData.acceptInvite(uuid); } } else if (type == EnumPacketServer.IgnoreInvite) { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - String uuidString = Server.readString(buffer); + String uuidString = ByteBufUtils.readString(buffer); if (uuidString != null) { UUID uuid = UUID.fromString(uuidString); playerData.ignoreInvite(uuid); @@ -337,8 +338,8 @@ public class PacketHandlerServer{ compound.setString("QuestCompleteWith", quest.completerNpc); } } - Server.sendData(player, EnumPacketClient.PARTY_DATA, compound); - } else { + PacketUtil.sendPartyData(player, compound); + } else { sendInviteData(player); } } @@ -357,8 +358,8 @@ public class PacketHandlerServer{ list.appendTag(partyCompound); } compound.setTag("PartyInvites", list); - Server.sendData(player, EnumPacketClient.PARTY_DATA, compound); - } + PacketUtil.sendPartyData(player, compound); + } } private void isGuiOpenPacket(ByteBuf buffer, EntityPlayerMP player) throws IOException { @@ -375,7 +376,7 @@ public class PacketHandlerServer{ PacketUtil.sendGuiData(player, compound); } else if (type == EnumPacketServer.ScriptGlobalGuiDataSave) { - NBTTagCompound compound = Server.readNBT(buffer); + NBTTagCompound compound = ByteBufUtils.readNBT(buffer); ConfigScript.ScriptingEnabled = compound.getBoolean("ScriptsEnabled"); ConfigScript.GlobalPlayerScripts = compound.getBoolean("PlayerScriptsEnabled"); ConfigScript.GlobalNPCScripts = compound.getBoolean("GlobalNPCScriptsEnabled"); @@ -385,7 +386,7 @@ public class PacketHandlerServer{ private void scriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws Exception { if(type == EnumPacketServer.ScriptDataSave){ - npc.script.readFromNBT(Server.readNBT(buffer)); + npc.script.readFromNBT(ByteBufUtils.readNBT(buffer)); npc.updateAI = true; npc.script.hasInited = false; if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ @@ -430,12 +431,12 @@ public class PacketHandlerServer{ } else while (data.getScripts().size() < totalScripts) { data.getScripts().add(new ScriptContainer(data)); } - NBTTagCompound tabCompound = Server.readNBT(buffer); + NBTTagCompound tabCompound = ByteBufUtils.readNBT(buffer); ScriptContainer script = new ScriptContainer(data); script.readFromNBT(tabCompound); data.getScripts().set(tab,script); } else { - NBTTagCompound compound = Server.readNBT(buffer); + NBTTagCompound compound = ByteBufUtils.readNBT(buffer); data.setLanguage(compound.getString("ScriptLanguage")); if (!ScriptController.Instance.languages.containsKey(data.getLanguage())) { if (!ScriptController.Instance.languages.isEmpty()) { @@ -513,7 +514,7 @@ public class PacketHandlerServer{ return; } - NBTTagCompound compound = Server.readNBT(buffer); + NBTTagCompound compound = ByteBufUtils.readNBT(buffer); ScriptCustomItem wrapper = (ScriptCustomItem) NpcAPI.Instance().getIItemStack(player.getHeldItem()); wrapper.setMCNbt(compound); wrapper.saveScriptData(); @@ -539,7 +540,7 @@ public class PacketHandlerServer{ if(!(tile instanceof TileScripted)) return; TileScripted script = (TileScripted) tile; - script.setNBT(Server.readNBT(buffer)); + script.setNBT(ByteBufUtils.readNBT(buffer)); script.lastInited = -1; } } @@ -570,13 +571,13 @@ public class PacketHandlerServer{ PacketUtil.sendGuiData(player, npc.ai.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MovingPathSave){ - npc.ai.setMovingPath(NBTTags.getIntegerArraySet(Server.readNBT(buffer).getTagList("MovingPathNew",10))); + npc.ai.setMovingPath(NBTTags.getIntegerArraySet(ByteBufUtils.readNBT(buffer).getTagList("MovingPathNew",10))); } } private void blockPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { if (type == EnumPacketServer.SaveTileEntity) { - NoppesUtilServer.saveTileEntity(player, Server.readNBT(buffer)); + NoppesUtilServer.saveTileEntity(player, ByteBufUtils.readNBT(buffer)); } else if(type == EnumPacketServer.GetTileEntity){ TileEntity tile = player.worldObj.getTileEntity(buffer.readInt(), buffer.readInt(), buffer.readInt()); @@ -667,7 +668,7 @@ public class PacketHandlerServer{ NoppesUtilServer.deleteNpc(npc,player); } else if(type == EnumPacketServer.LinkedAdd){ - LinkedNpcController.Instance.addData(Server.readString(buffer)); + LinkedNpcController.Instance.addData(ByteBufUtils.readString(buffer)); List list = new ArrayList(); for(LinkedData data : LinkedNpcController.Instance.list) @@ -675,7 +676,7 @@ public class PacketHandlerServer{ PacketUtil.sendList((EntityPlayerMP)player, list); } else if(type == EnumPacketServer.LinkedRemove){ - LinkedNpcController.Instance.removeData(Server.readString(buffer)); + LinkedNpcController.Instance.removeData(ByteBufUtils.readString(buffer)); List list = new ArrayList(); for(LinkedData data : LinkedNpcController.Instance.list) @@ -691,7 +692,7 @@ public class PacketHandlerServer{ PacketUtil.setSelectedList(player, npc.linkedName); } else if(type == EnumPacketServer.LinkedSet){ - npc.linkedName = Server.readString(buffer); + npc.linkedName = ByteBufUtils.readString(buffer); LinkedNpcController.Instance.loadNpcData(npc); } else if(type == EnumPacketServer.NpcMenuClose){ @@ -712,7 +713,7 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.BankSave){ Bank bank = new Bank(); - bank.readEntityFromNBT(Server.readNBT(buffer)); + bank.readEntityFromNBT(ByteBufUtils.readNBT(buffer)); BankController.getInstance().saveBank(bank); NoppesUtilServer.sendBankDataAll(player); NoppesUtilServer.sendBank(player,bank); @@ -793,7 +794,7 @@ public class PacketHandlerServer{ NoppesUtilServer.setRecipeGui(player,new RecipeCarpentry("")); } else if(type == EnumPacketServer.RecipeSave){ - RecipeCarpentry recipe = RecipeController.Instance.saveRecipe(Server.readNBT(buffer)); + RecipeCarpentry recipe = RecipeController.Instance.saveRecipe(ByteBufUtils.readNBT(buffer)); NoppesUtilServer.sendRecipeData(player, recipe.isGlobal?3:4); NoppesUtilServer.setRecipeGui(player,recipe); } @@ -808,7 +809,7 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.NaturalSpawnSave){ SpawnData data = new SpawnData(); - data.readNBT(Server.readNBT(buffer)); + data.readNBT(ByteBufUtils.readNBT(buffer)); SpawnController.Instance.saveSpawnData(data); PacketUtil.sendScrollData(player, SpawnController.Instance.getScroll()); @@ -819,7 +820,7 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.DialogCategorySave){ DialogCategory category = new DialogCategory(); - category.readNBT(Server.readNBT(buffer)); + category.readNBT(ByteBufUtils.readNBT(buffer)); DialogController.Instance.saveCategory(category); PacketUtil.sendScrollData(player, DialogController.Instance.getScroll()); } @@ -838,7 +839,7 @@ public class PacketHandlerServer{ else if(type == EnumPacketServer.DialogSave){ int category = buffer.readInt(); Dialog dialog = new Dialog(); - dialog.readNBT(Server.readNBT(buffer)); + dialog.readNBT(ByteBufUtils.readNBT(buffer)); boolean sendGroup = buffer.readBoolean(); DialogController.Instance.saveDialog(category,dialog); if(dialog.category != null){ @@ -853,7 +854,7 @@ public class PacketHandlerServer{ else if(type == EnumPacketServer.QuestOpenGui){ Quest quest = new Quest(); int gui = buffer.readInt(); - quest.readNBT(Server.readNBT(buffer)); + quest.readNBT(ByteBufUtils.readNBT(buffer)); NoppesUtilServer.setEditingQuest(player,quest); player.openGui(CustomNpcs.instance, gui , player.worldObj, 0, 0, 0); } @@ -897,7 +898,7 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.QuestCategorySave){ QuestCategory category = new QuestCategory(); - category.readNBT(Server.readNBT(buffer)); + category.readNBT(ByteBufUtils.readNBT(buffer)); QuestController.Instance.saveCategory(category); NoppesUtilServer.sendQuestCategoryData(player); } @@ -908,7 +909,7 @@ public class PacketHandlerServer{ else if(type == EnumPacketServer.QuestSave){ int category = buffer.readInt(); Quest quest = new Quest(); - quest.readNBT(Server.readNBT(buffer)); + quest.readNBT(ByteBufUtils.readNBT(buffer)); boolean sendGroup = buffer.readBoolean(); QuestController.Instance.saveQuest(category, quest); if(quest.category != null){ @@ -950,7 +951,7 @@ public class PacketHandlerServer{ NoppesUtilServer.sendTransportCategoryData(player); } else if(type == EnumPacketServer.TransportCategorySave){ - TransportController.getInstance().saveCategory(Server.readString(buffer), buffer.readInt()); + TransportController.getInstance().saveCategory(ByteBufUtils.readString(buffer), buffer.readInt()); } else if(type == EnumPacketServer.TransportCategoryRemove){ TransportController.getInstance().removeCategory(buffer.readInt()); @@ -967,7 +968,7 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.TransportSave){ int cat = buffer.readInt(); - TransportLocation location = TransportController.getInstance().saveLocation(cat,Server.readNBT(buffer), npc); + TransportLocation location = TransportController.getInstance().saveLocation(cat, ByteBufUtils.readNBT(buffer), npc); if(location != null){ if(npc.advanced.role != EnumRoleType.Transporter) return; @@ -989,7 +990,7 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.FactionSave){ Faction faction = new Faction(); - faction.readNBT(Server.readNBT(buffer)); + faction.readNBT(ByteBufUtils.readNBT(buffer)); FactionController.getInstance().saveFaction(faction); NoppesUtilServer.sendFactionDataAll(player); NBTTagCompound compound = new NBTTagCompound(); @@ -1008,7 +1009,7 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.TagSave){ Tag tag = new Tag(); - tag.readNBT(Server.readNBT(buffer)); + tag.readNBT(ByteBufUtils.readNBT(buffer)); TagController.getInstance().saveTag(tag); NoppesUtilServer.sendTagDataAll(player); NBTTagCompound compound = new NBTTagCompound(); @@ -1029,7 +1030,7 @@ public class PacketHandlerServer{ String name = null; EnumPlayerData datatype = EnumPlayerData.values()[id]; if(datatype != EnumPlayerData.Players) - name = Server.readString(buffer); + name = ByteBufUtils.readString(buffer); NoppesUtilServer.sendPlayerData(datatype,player,name); } else if(type == EnumPacketServer.PlayerDataRemove){ @@ -1042,21 +1043,21 @@ public class PacketHandlerServer{ PacketUtil.sendGuiData(player, npc.display.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuDisplaySave){ - npc.display.readToNBT(Server.readNBT(buffer)); + npc.display.readToNBT(ByteBufUtils.readNBT(buffer)); npc.updateClient = true; } else if(type == EnumPacketServer.MainmenuStatsGet){ PacketUtil.sendGuiData(player, npc.stats.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuStatsSave){ - npc.stats.readToNBT(Server.readNBT(buffer)); + npc.stats.readToNBT(ByteBufUtils.readNBT(buffer)); npc.updateClient = true; } else if(type == EnumPacketServer.MainmenuInvGet){ PacketUtil.sendGuiData(player, npc.inventory.writeEntityToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuInvSave){ - npc.inventory.readEntityFromNBT(Server.readNBT(buffer)); + npc.inventory.readEntityFromNBT(ByteBufUtils.readNBT(buffer)); npc.updateAI = true; npc.updateClient = true; } @@ -1064,7 +1065,7 @@ public class PacketHandlerServer{ PacketUtil.sendGuiData(player, npc.ai.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuAISave){ - npc.ai.readToNBT(Server.readNBT(buffer)); + npc.ai.readToNBT(ByteBufUtils.readNBT(buffer)); npc.setHealth(npc.getMaxHealth()); npc.updateAI = true; npc.updateClient = true; @@ -1073,18 +1074,18 @@ public class PacketHandlerServer{ PacketUtil.sendGuiData(player, npc.advanced.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuAdvancedSave){ - npc.advanced.readToNBT(Server.readNBT(buffer)); + npc.advanced.readToNBT(ByteBufUtils.readNBT(buffer)); npc.updateAI = true; npc.updateClient = true; } else if(type == EnumPacketServer.MainmenuAdvancedMarkData){ MarkData data = MarkData.get(npc); - data.setNBT(Server.readNBT(buffer)); + data.setNBT(ByteBufUtils.readNBT(buffer)); data.syncClients(); } else if(type == EnumPacketServer.JobSave){ NBTTagCompound original = npc.jobInterface.writeToNBT(new NBTTagCompound()); - NBTTagCompound compound = Server.readNBT(buffer); + NBTTagCompound compound = ByteBufUtils.readNBT(buffer); Set names = compound.func_150296_c(); for(String name : names) original.setTag(name, compound.getTag(name)); @@ -1111,12 +1112,12 @@ public class PacketHandlerServer{ return; JobSpawner job = (JobSpawner) npc.jobInterface; if(buffer.readBoolean()){ - NBTTagCompound compound = ServerCloneController.Instance.getCloneData(null, Server.readString(buffer), buffer.readInt()); + NBTTagCompound compound = ServerCloneController.Instance.getCloneData(null, ByteBufUtils.readString(buffer), buffer.readInt()); job.setJobCompound(buffer.readInt(), compound); } else{ - job.setJobCompound(buffer.readInt(), Server.readNBT(buffer)); + job.setJobCompound(buffer.readInt(), ByteBufUtils.readNBT(buffer)); } PacketUtil.sendGuiData(player, job.getTitles()); } @@ -1134,7 +1135,7 @@ public class PacketHandlerServer{ PacketUtil.sendGuiData(player, job.getTitles()); } else if(type == EnumPacketServer.RoleSave){ - npc.roleInterface.readFromNBT(Server.readNBT(buffer)); + npc.roleInterface.readFromNBT(ByteBufUtils.readNBT(buffer)); npc.updateClient = true; } else if(type == EnumPacketServer.RoleGet){ @@ -1153,17 +1154,17 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.ModelDataSave){ if(npc instanceof EntityCustomNpc) - ((EntityCustomNpc)npc).modelData.readFromNBT(Server.readNBT(buffer)); + ((EntityCustomNpc)npc).modelData.readFromNBT(ByteBufUtils.readNBT(buffer)); } else if(type == EnumPacketServer.MailOpenSetup){ PlayerMail mail = new PlayerMail(); - mail.readNBT(Server.readNBT(buffer)); + mail.readNBT(ByteBufUtils.readNBT(buffer)); ContainerMail.staticmail = mail; player.openGui(CustomNpcs.instance, EnumGuiType.PlayerMailman.ordinal(), player.worldObj, 1, 0, 0); } else if(type == EnumPacketServer.TransformSave){ boolean isValid = npc.transform.isValid(); - npc.transform.readOptions(Server.readNBT(buffer)); + npc.transform.readOptions(ByteBufUtils.readNBT(buffer)); if(isValid != npc.transform.isValid()) npc.updateAI = true; } @@ -1175,7 +1176,7 @@ public class PacketHandlerServer{ npc.transform.transform(buffer.readBoolean()); } else if(type == EnumPacketServer.TraderMarketSave){ - String market = Server.readString(buffer); + String market = ByteBufUtils.readString(buffer); if(market == null) return; boolean bo = buffer.readBoolean(); @@ -1202,7 +1203,7 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.AnimationSave){ Animation animation = new Animation(); - animation.readFromNBT(Server.readNBT(buffer)); + animation.readFromNBT(ByteBufUtils.readNBT(buffer)); AnimationController.getInstance().saveAnimation(animation); NoppesUtilServer.sendAnimationDataAll(player); PacketUtil.sendGuiData(player, animation.writeToNBT()); @@ -1213,7 +1214,7 @@ public class PacketHandlerServer{ } private void mountPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException{ if(type == EnumPacketServer.SpawnRider){ - Entity entity = EntityList.createEntityFromNBT(Server.readNBT(buffer), player.worldObj); + Entity entity = EntityList.createEntityFromNBT(ByteBufUtils.readNBT(buffer), player.worldObj); player.worldObj.spawnEntityInWorld(entity); entity.mountEntity(ServerEventsHandler.mounted); } @@ -1248,9 +1249,9 @@ public class PacketHandlerServer{ int z = buffer.readInt(); NBTTagCompound compound; if(server) - compound = ServerCloneController.Instance.getCloneData(player, Server.readString(buffer), buffer.readInt()); + compound = ServerCloneController.Instance.getCloneData(player, ByteBufUtils.readString(buffer), buffer.readInt()); else - compound = Server.readNBT(buffer); + compound = ByteBufUtils.readNBT(buffer); if(compound == null) return; Entity entity = NoppesUtilServer.spawnClone(compound, x, y, z, player.worldObj); @@ -1275,9 +1276,9 @@ public class PacketHandlerServer{ int z = buffer.readInt(); NBTTagCompound compound; if(server) - compound = ServerCloneController.Instance.getCloneData(player, Server.readString(buffer), buffer.readInt()); + compound = ServerCloneController.Instance.getCloneData(player, ByteBufUtils.readString(buffer), buffer.readInt()); else - compound = Server.readNBT(buffer); + compound = ByteBufUtils.readNBT(buffer); if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) { return; @@ -1287,7 +1288,7 @@ public class PacketHandlerServer{ NoppesUtilServer.createMobSpawner(x, y, z, compound, player); } else if(type == EnumPacketServer.ClonePreSave){ - boolean bo = ServerCloneController.Instance.getCloneData(null, Server.readString(buffer), buffer.readInt()) != null; + boolean bo = ServerCloneController.Instance.getCloneData(null, ByteBufUtils.readString(buffer), buffer.readInt()) != null; NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("NameExists", bo); PacketUtil.sendGuiData(player, compound); @@ -1296,10 +1297,10 @@ public class PacketHandlerServer{ PlayerData data = PlayerDataController.Instance.getPlayerData(player); if(data.cloned == null) return; - String name = Server.readString(buffer); + String name = ByteBufUtils.readString(buffer); int tab = buffer.readInt(); - NBTTagCompound tagExtra = Server.readNBT(buffer); - NBTTagCompound tagCompound = Server.readNBT(buffer); + NBTTagCompound tagExtra = ByteBufUtils.readNBT(buffer); + NBTTagCompound tagCompound = ByteBufUtils.readNBT(buffer); NBTTagList tagList = tagCompound.getTagList("TagUUIDs", 8); data.cloned.setTag("TagUUIDs", tagList); @@ -1307,7 +1308,7 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.CloneRemove){ int tab = buffer.readInt(); - ServerCloneController.Instance.removeClone(Server.readString(buffer), tab); + ServerCloneController.Instance.removeClone(ByteBufUtils.readString(buffer), tab); NBTTagList list = new NBTTagList(); @@ -1382,7 +1383,7 @@ public class PacketHandlerServer{ private void setTags(EntityNPCInterface npc, ByteBuf buffer) throws IOException { npc.advanced.tagUUIDs.removeIf(uuid -> TagController.getInstance().getTagFromUUID(uuid) != null); - NBTTagCompound compound = Server.readNBT(buffer); + NBTTagCompound compound = ByteBufUtils.readNBT(buffer); NBTTagList list = compound.getTagList("TagNames",8); for (int i = 0; i < list.tagCount(); i++) { String tagName = list.getStringTagAt(i); diff --git a/src/main/java/noppes/npcs/Server.java b/src/main/java/noppes/npcs/Server.java index 317448523..ff7f73b0c 100644 --- a/src/main/java/noppes/npcs/Server.java +++ b/src/main/java/noppes/npcs/Server.java @@ -1,18 +1,10 @@ package noppes.npcs; -import com.google.common.base.Charsets; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.common.network.internal.FMLProxyPacket; import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.CompressedStreamTools; -import net.minecraft.nbt.NBTSizeTracker; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.village.MerchantRecipeList; -import noppes.npcs.constants.EnumPacketClient; import java.io.IOException; import java.util.Arrays; @@ -20,47 +12,6 @@ import java.util.List; import java.util.Map; public class Server { - - public static void sendData(final EntityPlayerMP player, final EnumPacketClient enu, final Object... obs) { - sendDataChecked(player, enu, obs); - } - - public static boolean sendDataChecked(EntityPlayerMP player, EnumPacketClient type, Object... obs) { - PacketBuffer buffer = new PacketBuffer(Unpooled.buffer()); - try { - if(!fillBuffer(buffer, type, obs)) - return false; - CustomNpcs.Channel.sendTo(new FMLProxyPacket(buffer, "CustomNPCs"), player); - } catch (IOException e) { - LogWriter.error(type + " Errored", e); - } - return true; - } - - public static void sendAssociatedData(final Entity entity, final EnumPacketClient enu, final Object... obs) { - ByteBuf buffer = Unpooled.buffer(); - try { - if(!fillBuffer(buffer, enu, obs)) - return; - TargetPoint point = new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 60); - CustomNpcs.Channel.sendToAllAround(new FMLProxyPacket(buffer,"CustomNPCs"), point); - } catch (IOException e) { - e.printStackTrace(); - LogWriter.error(enu + " Errored", e); - } - } - public static void sendToAll(EnumPacketClient enu, Object... obs) { - ByteBuf buffer = Unpooled.buffer(); - try { - if(!fillBuffer(buffer, enu, obs)) - return; - CustomNpcs.Channel.sendToAll(new FMLProxyPacket(buffer,"CustomNPCs")); - } catch (IOException e) { - e.printStackTrace(); - LogWriter.error(enu + " Errored", e); - } - } - public static boolean fillBuffer(ByteBuf buffer, Enum enu, Object... obs) throws IOException{ buffer.writeInt(enu.ordinal()); for(Object ob : obs){ @@ -73,7 +24,7 @@ public class Server { for(String key : map.keySet()){ int value = map.get(key); buffer.writeInt(value); - writeString(buffer, key); + ByteBufUtils.writeString(buffer, key); } } else if(ob instanceof MerchantRecipeList) @@ -82,7 +33,7 @@ public class Server { List list = (List) ob; buffer.writeInt(list.size()); for(String s : list) - writeString(buffer, s); + ByteBufUtils.writeString(buffer, s); } else if(ob instanceof Enum) buffer.writeInt(((Enum) ob).ordinal()); @@ -91,7 +42,7 @@ public class Server { else if(ob instanceof Boolean) buffer.writeBoolean((Boolean) ob); else if(ob instanceof String) - writeString(buffer, (String) ob); + ByteBufUtils.writeString(buffer, (String) ob); else if(ob instanceof Float) buffer.writeFloat((Float) ob); else if(ob instanceof Long) @@ -105,7 +56,7 @@ public class Server { buffer.writeBytes(byteArray); } else if(ob instanceof NBTTagCompound) - writeNBT(buffer, (NBTTagCompound) ob); + ByteBufUtils.writeNBT(buffer, (NBTTagCompound) ob); } if(buffer.array().length >= 32767){ LogWriter.error("Packet " + enu + " was too big to be send"); @@ -114,33 +65,4 @@ public class Server { } return true; } - - public static void writeNBT(ByteBuf buffer, NBTTagCompound compound) throws IOException { - byte[] bytes = CompressedStreamTools.compress(compound); - buffer.writeShort((short)bytes.length); - buffer.writeBytes(bytes); - } - - public static NBTTagCompound readNBT(ByteBuf buffer) throws IOException { - byte[] bytes = new byte[buffer.readShort()]; - buffer.readBytes(bytes); - return CompressedStreamTools.func_152457_a(bytes, new NBTSizeTracker(2097152L)); - } - - public static void writeString(ByteBuf buffer, String s){ - byte[] bytes = s.getBytes(Charsets.UTF_8); - buffer.writeShort((short)bytes.length); - buffer.writeBytes(bytes); - } - - public static String readString(ByteBuf buffer){ - try{ - byte[] bytes = new byte[buffer.readShort()]; - buffer.readBytes(bytes); - return new String(bytes, Charsets.UTF_8); - } - catch(IndexOutOfBoundsException ex){ - return null; - } - } } diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index 364f5f87c..c9e933f70 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -9,6 +9,7 @@ import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumSoundOperation; import kamkeel.npcs.network.enums.EnumSyncAction; import kamkeel.npcs.network.enums.EnumSyncType; +import kamkeel.npcs.network.packets.client.MarkDataPacket; import kamkeel.npcs.network.packets.client.SoundManagementPacket; import kamkeel.npcs.network.packets.client.VillagerListPacket; import kamkeel.npcs.network.packets.client.large.LargeClonerPacket; @@ -486,6 +487,7 @@ public class ServerEventsHandler { MarkData data = MarkData.get((EntityNPCInterface) event.target); if(data.marks.isEmpty()) return; - Server.sendData((EntityPlayerMP)event.entityPlayer, EnumPacketClient.MARK_DATA, event.target.getEntityId(), data.getNBT()); + + PacketHandler.Instance.sendToPlayer(new MarkDataPacket(event.target.getEntityId(), data.getNBT()), (EntityPlayerMP)event.entityPlayer); } } diff --git a/src/main/java/noppes/npcs/client/NoppesUtil.java b/src/main/java/noppes/npcs/client/NoppesUtil.java index b0df591f8..156d8b97d 100644 --- a/src/main/java/noppes/npcs/client/NoppesUtil.java +++ b/src/main/java/noppes/npcs/client/NoppesUtil.java @@ -1,6 +1,7 @@ package noppes.npcs.client; import io.netty.buffer.ByteBuf; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; @@ -11,7 +12,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Util; import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.gui.player.GuiDialogInteract; import noppes.npcs.client.gui.player.GuiQuestCompletion; import noppes.npcs.client.gui.util.GuiContainerNPCInterface; @@ -141,7 +141,7 @@ public class NoppesUtil { try { int size = buffer.readInt(); for(int i = 0; i < size; i++){ - data.add(Server.readString(buffer)); + data.add(ByteBufUtils.readString(buffer)); } } catch (Exception e) { @@ -158,7 +158,7 @@ public class NoppesUtil { int size = buffer.readInt(); for(int i = 0; i < size; i++){ int id = buffer.readInt(); - String name = Server.readString(buffer); + String name = ByteBufUtils.readString(buffer); group.put(name, id); } } catch (Exception ignored) { @@ -173,7 +173,7 @@ public class NoppesUtil { int size = buffer.readInt(); for(int i = 0; i < size; i++){ int id = buffer.readInt(); - String name = Server.readString(buffer); + String name = ByteBufUtils.readString(buffer); group.put(name, id); } } catch (Exception ignored) { @@ -194,7 +194,7 @@ public class NoppesUtil { int size = buffer.readInt(); for(int i = 0; i < size; i++){ int id = buffer.readInt(); - String name = Server.readString(buffer); + String name = ByteBufUtils.readString(buffer); data.put(name, id); } } catch (Exception e) { @@ -209,7 +209,7 @@ public class NoppesUtil { int size = buffer.readInt(); for(int i = 0; i < size; i++){ int id = buffer.readInt(); - String name = Server.readString(buffer); + String name = ByteBufUtils.readString(buffer); data.put(name, id); } } catch (Exception e) { diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java deleted file mode 100644 index 49ea68513..000000000 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ /dev/null @@ -1,159 +0,0 @@ -package noppes.npcs.client; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.PacketBuffer; -import net.minecraft.village.MerchantRecipeList; -import noppes.npcs.*; -import noppes.npcs.client.gui.GuiNpcMobSpawnerAdd; -import noppes.npcs.client.gui.OverlayQuestTracking; -import noppes.npcs.client.gui.customoverlay.OverlayCustom; -import noppes.npcs.client.gui.player.GuiBook; -import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumGuiType; -import noppes.npcs.constants.EnumPacketClient; -import noppes.npcs.constants.EnumPacketServer; -import noppes.npcs.controllers.data.Animation; -import noppes.npcs.controllers.data.AnimationData; -import noppes.npcs.controllers.data.MarkData; -import noppes.npcs.entity.EntityNPCInterface; - -import java.io.IOException; - -public class PacketHandlerClient extends PacketHandlerServer{ - - @SubscribeEvent - public void onPacketData(ClientCustomPacketEvent event) { - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - ByteBuf buffer = event.packet.payload(); - try { - client(buffer,(EntityPlayer) player,EnumPacketClient.values()[buffer.readInt()]); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private void client(ByteBuf buffer, final EntityPlayer player, EnumPacketClient type) throws IOException{ - if(type == EnumPacketClient.MARK_DATA){ - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(buffer.readInt()); - if(!(entity instanceof EntityNPCInterface)) - return; - MarkData data = MarkData.get((EntityNPCInterface) entity); - data.setNBT(Server.readNBT(buffer)); - } - else if(type == EnumPacketClient.ISGUIOPEN){ - boolean isGUIOpen = Minecraft.getMinecraft().currentScreen != null; - - NoppesUtil.isGUIOpen(isGUIOpen); - } - else if(type == EnumPacketClient.SCRIPT_OVERLAY_DATA){ - OverlayCustom overlayCustom = new OverlayCustom(Minecraft.getMinecraft()); - overlayCustom.setOverlayData(Server.readNBT(buffer)); - - ClientCacheHandler.customOverlays.put(overlayCustom.overlay.getID(),overlayCustom); - } - else if(type == EnumPacketClient.SCRIPT_OVERLAY_CLOSE){ - int id = buffer.readInt(); - ClientCacheHandler.customOverlays.remove(id); - } - else if(type == EnumPacketClient.OVERLAY_QUEST_TRACKING){ - try { - NBTTagCompound compound = Server.readNBT(buffer); - ClientCacheHandler.questTrackingOverlay = new OverlayQuestTracking(Minecraft.getMinecraft()); - ClientCacheHandler.questTrackingOverlay.setOverlayData(compound); - } catch (IOException e) { - ClientCacheHandler.questTrackingOverlay = null; - } - } - else if(type == EnumPacketClient.SWING_PLAYER_ARM){ - Minecraft.getMinecraft().thePlayer.swingItem(); - } - else if(type == EnumPacketClient.PLAYER_UPDATE_SKIN_OVERLAYS) { - EntityPlayer sendingPlayer = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(Server.readString(buffer)); - NBTTagCompound compound = Server.readNBT(buffer); - if (sendingPlayer != null) { - NoppesUtil.updateSkinOverlayData(sendingPlayer, compound); - } - } - else if(type == EnumPacketClient.UPDATE_ANIMATIONS) { - NBTTagCompound compound = Server.readNBT(buffer); - AnimationData animationData = null; - if (compound.hasKey("EntityId")) { - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); - if (entity instanceof EntityNPCInterface) { - animationData = ((EntityNPCInterface) entity).display.animationData; - } - } else { - EntityPlayer sendingPlayer = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(Server.readString(buffer)); - if (sendingPlayer != null) { - if (!ClientCacheHandler.playerAnimations.containsKey(sendingPlayer.getUniqueID())) { - ClientCacheHandler.playerAnimations.put(sendingPlayer.getUniqueID(), new AnimationData(sendingPlayer)); - } - animationData = ClientCacheHandler.playerAnimations.get(sendingPlayer.getUniqueID()); - animationData.parent = sendingPlayer; - } - } - - if (animationData != null) { - int animationId; - if (compound.hasKey("AnimationID")) { - animationId = compound.getInteger("AnimationID"); - } else { - Animation animation = new Animation(); - animation.readFromNBT(compound.getCompoundTag("Animation")); - ClientCacheHandler.animationCache.put(animation.getID(), animation); - animationId = animation.getID(); - } - - animationData.setAnimation(ClientCacheHandler.animationCache.get(animationId)); - animationData.readFromNBT(compound); - Client.sendData(EnumPacketServer.CacheAnimation, animationId); - } - } - else if(type == EnumPacketClient.DISABLE_MOUSE_INPUT) { - long length = buffer.readLong(); - try { - String parsedButtons = Server.readString(buffer); - if (parsedButtons == null || parsedButtons.isEmpty()) { - ClientEventHandler.disabledButtonTimes.put(-1, length); - return; - } - - String[] splitIds = parsedButtons.split(";"); - for (String s : splitIds) { - ClientEventHandler.disabledButtonTimes.put(Integer.parseInt(s), length); - } - } catch (Exception ignored) {} - } - else if(type == EnumPacketClient.SYNC_WEAPON) { - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(buffer.readInt()); - if(!(entity instanceof EntityNPCInterface)) - return; - EntityNPCInterface npc = (EntityNPCInterface) entity; - int weaponSlotIndex = buffer.readInt(); - ItemStack stack = ItemStack.loadItemStackFromNBT(Server.readNBT(buffer)); - npc.inventory.weapons.put(weaponSlotIndex,stack); - } - else if(type == EnumPacketClient.PARTY_DATA){ - GuiScreen gui = Minecraft.getMinecraft().currentScreen; - if(gui == null) - return; - - if(gui instanceof GuiNPCInterface && ((GuiNPCInterface)gui).hasSubGui()){ - gui = (GuiScreen) ((GuiNPCInterface)gui).getSubGui(); - } - else if(gui instanceof GuiContainerNPCInterface && ((GuiContainerNPCInterface)gui).hasSubGui()){ - gui = (GuiScreen) ((GuiContainerNPCInterface)gui).getSubGui(); - } - if(gui instanceof IPartyData) - ((IPartyData)gui).setPartyData(Server.readNBT(buffer)); - } - } -} diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index 13f19c93d..bcbc77d5b 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -1,16 +1,4 @@ package noppes.npcs.constants; -public enum EnumPacketClient { - ISGUIOPEN, - SCRIPT_OVERLAY_DATA, - SCRIPT_OVERLAY_CLOSE, - SWING_PLAYER_ARM, - PLAYER_UPDATE_SKIN_OVERLAYS, - UPDATE_ANIMATIONS, - OVERLAY_QUEST_TRACKING, - DISABLE_MOUSE_INPUT, - SYNC_WEAPON, - MARK_DATA, - PARTY_DATA -} +public enum EnumPacketClient {} diff --git a/src/main/java/noppes/npcs/controllers/CustomGuiController.java b/src/main/java/noppes/npcs/controllers/CustomGuiController.java index ef8c2112d..c0800dce5 100644 --- a/src/main/java/noppes/npcs/controllers/CustomGuiController.java +++ b/src/main/java/noppes/npcs/controllers/CustomGuiController.java @@ -1,16 +1,17 @@ package noppes.npcs.controllers; import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.client.script.ScriptOverlayDataPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagList; import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.api.entity.IPlayer; import noppes.npcs.api.item.IItemStack; import noppes.npcs.constants.EnumGuiType; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumScriptType; import noppes.npcs.containers.ContainerCustomGui; import noppes.npcs.scripted.NpcAPI; @@ -42,11 +43,11 @@ public class CustomGuiController { } public static void openOverlay(IPlayer player, ScriptOverlay gui) { - Server.sendDataChecked((EntityPlayerMP)player.getMCEntity(), EnumPacketClient.SCRIPT_OVERLAY_DATA, new Object[]{gui.toNBT()}); + PacketHandler.Instance.sendToPlayer(new ScriptOverlayDataPacket(gui.toNBT()), (EntityPlayerMP)player.getMCEntity()); } public static boolean updateOverlay(IPlayer player, ScriptOverlay gui) { - Server.sendDataChecked((EntityPlayerMP)player.getMCEntity(), EnumPacketClient.SCRIPT_OVERLAY_DATA, new Object[]{gui.toNBT()}); + PacketHandler.Instance.sendToPlayer(new ScriptOverlayDataPacket(gui.toNBT()), (EntityPlayerMP)player.getMCEntity()); return true; } @@ -131,7 +132,7 @@ public class CustomGuiController { public static String[] readScrollSelection(ByteBuf buffer) { try { - NBTTagList list = Server.readNBT(buffer).getTagList("selection", 8); + NBTTagList list = ByteBufUtils.readNBT(buffer).getTagList("selection", 8); String[] selection = new String[list.tagCount()]; for(int i = 0; i < list.tagCount(); ++i) { diff --git a/src/main/java/noppes/npcs/controllers/PartyController.java b/src/main/java/noppes/npcs/controllers/PartyController.java index ec21e8951..caaf94fff 100644 --- a/src/main/java/noppes/npcs/controllers/PartyController.java +++ b/src/main/java/noppes/npcs/controllers/PartyController.java @@ -135,7 +135,7 @@ public class PartyController { if(playerMP != null){ PlayerData playerData = PlayerDataController.Instance.getPlayerData(playerMP); if(playerData != null){ - Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.PARTY_DATA, compound); + PacketUtil.sendPartyData((EntityPlayerMP) playerMP, compound); } } } @@ -166,7 +166,7 @@ public class PartyController { if(playerMP != null){ PlayerData playerData = PlayerDataController.Instance.getPlayerData(playerMP); if(playerData != null){ - Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.PARTY_DATA, compound); + PacketUtil.sendPartyData((EntityPlayerMP) playerMP, compound); } } } diff --git a/src/main/java/noppes/npcs/controllers/data/AnimationData.java b/src/main/java/noppes/npcs/controllers/data/AnimationData.java index 4c47c9e5e..4308875e5 100644 --- a/src/main/java/noppes/npcs/controllers/data/AnimationData.java +++ b/src/main/java/noppes/npcs/controllers/data/AnimationData.java @@ -3,6 +3,8 @@ package noppes.npcs.controllers.data; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.packets.client.UpdateAnimationsPacket; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -128,7 +130,8 @@ public class AnimationData implements IAnimationData { if (!(entity instanceof EntityPlayer)) { data.setInteger("EntityId", entity.getEntityId()); } - Server.sendData((EntityPlayerMP) ((PlayerData) parent).player, EnumPacketClient.UPDATE_ANIMATIONS, data, entity.getCommandSenderName()); + + PacketHandler.Instance.sendToPlayer(new UpdateAnimationsPacket(data, entity.getCommandSenderName()), (EntityPlayerMP) ((PlayerData) parent).player); } public NBTTagCompound writeToNBT(NBTTagCompound compound) { diff --git a/src/main/java/noppes/npcs/controllers/data/MarkData.java b/src/main/java/noppes/npcs/controllers/data/MarkData.java index 27a9923f4..290ec0c9c 100644 --- a/src/main/java/noppes/npcs/controllers/data/MarkData.java +++ b/src/main/java/noppes/npcs/controllers/data/MarkData.java @@ -1,7 +1,10 @@ package noppes.npcs.controllers.data; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.packets.client.MarkDataPacket; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; @@ -102,7 +105,7 @@ public class MarkData implements IExtendedEntityProperties { public void init(Entity entity, World world) {} public void syncClients() { - Server.sendToAll(EnumPacketClient.MARK_DATA, entity.getEntityId(), getNBT()); + PacketHandler.Instance.sendToAll(new MarkDataPacket(entity.getEntityId(), getNBT())); } public class Mark implements IMark { diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java b/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java index ac779f0d1..2f9d08ac2 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java @@ -1,6 +1,8 @@ package noppes.npcs.controllers.data; +import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.client.OverlayQuestTrackingPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; @@ -202,8 +204,8 @@ public class PlayerQuestData implements IPlayerQuestData { public void untrackQuest() { if (this.trackedQuest != null) { this.trackedQuest = null; - Server.sendData((EntityPlayerMP) this.parent.player, EnumPacketClient.OVERLAY_QUEST_TRACKING); - } + PacketHandler.Instance.sendToPlayer(new OverlayQuestTrackingPacket(new NBTTagCompound()), (EntityPlayerMP) this.parent.player); + } } public IQuest getTrackedQuest() { diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 88c43470f..5a54dc177 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -13,6 +13,8 @@ import kamkeel.npcs.network.enums.EnumSoundOperation; import kamkeel.npcs.network.packets.client.ChatBubblePacket; import kamkeel.npcs.network.packets.client.SoundManagementPacket; import kamkeel.npcs.network.packets.client.npc.UpdateNpcPacket; +import kamkeel.npcs.network.packets.client.npc.WeaponNpcPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; @@ -39,7 +41,6 @@ import net.minecraft.network.play.server.S0BPacketAnimation; import net.minecraft.pathfinding.PathNavigate; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; import net.minecraft.util.*; import net.minecraft.world.World; import net.minecraft.world.WorldServer; @@ -223,10 +224,9 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti if(itemstack1!=null){ itemstack1.writeToNBT(itemNBT); } - for(Object obj: MinecraftServer.getServer().getConfigurationManager().playerEntityList){ - Server.sendData((EntityPlayerMP) obj, EnumPacketClient.SYNC_WEAPON, getEntityId(), i, itemNBT); - } - inventory.prevWeapons.put(i,itemstack1 == null ? null : itemstack1.copy()); + + PacketHandler.Instance.sendTracking(new WeaponNpcPacket(getEntityId(), i, itemNBT), this); + inventory.prevWeapons.put(i,itemstack1 == null ? null : itemstack1.copy()); } } this.timers.update(); @@ -1624,7 +1624,7 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti @Override public void writeSpawnData(ByteBuf buffer) { try { - Server.writeNBT(buffer, writeSpawnData()); + ByteBufUtils.writeNBT(buffer, writeSpawnData()); } catch (IOException e) { e.printStackTrace(); } @@ -1663,7 +1663,7 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti @Override public void readSpawnData(ByteBuf buf) { try { - readSpawnData(Server.readNBT(buf)); + readSpawnData(ByteBufUtils.readNBT(buf)); } catch (IOException e) { } } diff --git a/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java b/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java index e9d51495c..8f9f938f6 100644 --- a/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java +++ b/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java @@ -1,5 +1,7 @@ package noppes.npcs.entity.data; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.packets.client.PlayerUpdateSkinOverlaysPacket; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.Server; @@ -54,7 +56,7 @@ public class DataSkinOverlays implements IOverlayHandler { if (parent instanceof PlayerData && ((PlayerData) parent).player != null) { NBTTagCompound compound = this.writeToNBT(new NBTTagCompound()); ((PlayerData) parent).player.getEntityData().setTag("SkinOverlayData", compound.getTagList("SkinOverlayData", 10)); - Server.sendToAll(EnumPacketClient.PLAYER_UPDATE_SKIN_OVERLAYS, ((PlayerData) parent).player.getCommandSenderName(), compound); + PacketHandler.Instance.sendToAll(new PlayerUpdateSkinOverlaysPacket(((PlayerData) parent).player.getCommandSenderName(), compound)); } else if (parent instanceof EntityNPCInterface) { ((EntityNPCInterface) parent).updateClient = true; } diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index 4dc28df83..219fa2a6f 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -1,6 +1,9 @@ package noppes.npcs.scripted.entity; +import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.client.script.ScriptOverlayClosePacket; +import kamkeel.npcs.network.packets.client.script.ScriptOverlayDataPacket; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; @@ -765,8 +768,8 @@ public class ScriptPlayer extends ScriptLivingBase } public void closeOverlay(int id) { - Server.sendData((EntityPlayerMP)this.entity, EnumPacketClient.SCRIPT_OVERLAY_CLOSE, id, new NBTTagCompound()); - } + PacketHandler.Instance.sendToPlayer(new ScriptOverlayClosePacket(id), (EntityPlayerMP)this.entity); + } public IOverlayHandler getOverlays() { return this.getData().skinOverlays; From e042b2cfacd77ad666fe301daa62eb27066cf340 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 12:45:06 -0500 Subject: [PATCH 048/157] EnumPacketClient Deleted --- src/main/java/noppes/npcs/blocks/BlockWaypoint.java | 2 -- src/main/java/noppes/npcs/constants/EnumPacketClient.java | 4 ---- src/main/java/noppes/npcs/controllers/data/AnimationData.java | 2 -- src/main/java/noppes/npcs/controllers/data/BankData.java | 2 -- .../java/noppes/npcs/controllers/data/PlayerQuestData.java | 2 -- src/main/java/noppes/npcs/controllers/data/Quest.java | 1 - 6 files changed, 13 deletions(-) delete mode 100644 src/main/java/noppes/npcs/constants/EnumPacketClient.java diff --git a/src/main/java/noppes/npcs/blocks/BlockWaypoint.java b/src/main/java/noppes/npcs/blocks/BlockWaypoint.java index 632b4b89a..caff78b41 100644 --- a/src/main/java/noppes/npcs/blocks/BlockWaypoint.java +++ b/src/main/java/noppes/npcs/blocks/BlockWaypoint.java @@ -14,10 +14,8 @@ import net.minecraft.world.World; import noppes.npcs.CustomItems; import noppes.npcs.CustomNpcs; import noppes.npcs.CustomNpcsPermissions; -import noppes.npcs.Server; import noppes.npcs.blocks.tiles.TileWaypoint; import noppes.npcs.constants.EnumGuiType; -import noppes.npcs.constants.EnumPacketClient; public class BlockWaypoint extends BlockContainer{ diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java deleted file mode 100644 index bcbc77d5b..000000000 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ /dev/null @@ -1,4 +0,0 @@ -package -noppes.npcs.constants; - -public enum EnumPacketClient {} diff --git a/src/main/java/noppes/npcs/controllers/data/AnimationData.java b/src/main/java/noppes/npcs/controllers/data/AnimationData.java index 4308875e5..82e6abcac 100644 --- a/src/main/java/noppes/npcs/controllers/data/AnimationData.java +++ b/src/main/java/noppes/npcs/controllers/data/AnimationData.java @@ -11,11 +11,9 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import noppes.npcs.DataDisplay; -import noppes.npcs.Server; import noppes.npcs.api.handler.data.IAnimation; import noppes.npcs.api.handler.data.IAnimationData; import noppes.npcs.constants.EnumAnimationPart; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/controllers/data/BankData.java b/src/main/java/noppes/npcs/controllers/data/BankData.java index cef17492d..04525077e 100644 --- a/src/main/java/noppes/npcs/controllers/data/BankData.java +++ b/src/main/java/noppes/npcs/controllers/data/BankData.java @@ -10,9 +10,7 @@ import net.minecraft.nbt.NBTTagList; import noppes.npcs.NBTTags; import noppes.npcs.NoppesUtilServer; import noppes.npcs.NpcMiscInventory; -import noppes.npcs.Server; import noppes.npcs.constants.EnumGuiType; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.containers.ContainerNPCBankInterface; import noppes.npcs.controllers.BankController; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java b/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java index 2f9d08ac2..7f984c1b6 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java @@ -9,11 +9,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.EventHooks; import noppes.npcs.NoppesUtilPlayer; -import noppes.npcs.Server; import noppes.npcs.api.handler.IPlayerQuestData; import noppes.npcs.api.handler.data.IParty; import noppes.npcs.api.handler.data.IQuest; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestCompletion; import noppes.npcs.constants.EnumQuestRepeat; import noppes.npcs.constants.EnumQuestType; diff --git a/src/main/java/noppes/npcs/controllers/data/Quest.java b/src/main/java/noppes/npcs/controllers/data/Quest.java index 73e34bbe8..8bed1a782 100644 --- a/src/main/java/noppes/npcs/controllers/data/Quest.java +++ b/src/main/java/noppes/npcs/controllers/data/Quest.java @@ -8,7 +8,6 @@ import noppes.npcs.*; import noppes.npcs.api.IContainer; import noppes.npcs.api.entity.IPlayer; import noppes.npcs.api.handler.data.*; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestCompletion; import noppes.npcs.constants.EnumQuestRepeat; import noppes.npcs.constants.EnumQuestType; From db7473fd578eb90d13a9127c49d1114663167f0f Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 12:45:10 -0500 Subject: [PATCH 049/157] Delete more --- src/main/java/foxz/command/CmdConfig.java | 2 -- src/main/java/kamkeel/npcs/command/ConfigCommand.java | 2 -- src/main/java/noppes/npcs/blocks/BlockMailbox.java | 3 --- src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java | 2 -- src/main/java/noppes/npcs/controllers/PartyController.java | 2 -- src/main/java/noppes/npcs/controllers/data/MarkData.java | 3 --- src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java | 2 -- src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java | 2 -- 8 files changed, 18 deletions(-) diff --git a/src/main/java/foxz/command/CmdConfig.java b/src/main/java/foxz/command/CmdConfig.java index e712fa4ca..52e1b6c28 100644 --- a/src/main/java/foxz/command/CmdConfig.java +++ b/src/main/java/foxz/command/CmdConfig.java @@ -14,9 +14,7 @@ import net.minecraft.block.BlockLeavesBase; import net.minecraft.block.BlockVine; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.config.ConfigMain; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.controllers.ChunkController; import java.util.Arrays; diff --git a/src/main/java/kamkeel/npcs/command/ConfigCommand.java b/src/main/java/kamkeel/npcs/command/ConfigCommand.java index 0459e469a..1f9dee87d 100644 --- a/src/main/java/kamkeel/npcs/command/ConfigCommand.java +++ b/src/main/java/kamkeel/npcs/command/ConfigCommand.java @@ -13,9 +13,7 @@ import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.config.ConfigMain; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.controllers.ChunkController; import noppes.npcs.controllers.PlayerDataController; diff --git a/src/main/java/noppes/npcs/blocks/BlockMailbox.java b/src/main/java/noppes/npcs/blocks/BlockMailbox.java index 50ba865e9..c10056be7 100644 --- a/src/main/java/noppes/npcs/blocks/BlockMailbox.java +++ b/src/main/java/noppes/npcs/blocks/BlockMailbox.java @@ -2,7 +2,6 @@ package noppes.npcs.blocks; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -18,10 +17,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -import noppes.npcs.Server; import noppes.npcs.blocks.tiles.TileMailbox; import noppes.npcs.constants.EnumGuiType; -import noppes.npcs.constants.EnumPacketClient; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java b/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java index c38ae3a64..fb595bb0b 100644 --- a/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java +++ b/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java @@ -15,10 +15,8 @@ import net.minecraft.world.World; import noppes.npcs.CustomItems; import noppes.npcs.CustomNpcs; import noppes.npcs.CustomNpcsPermissions; -import noppes.npcs.Server; import noppes.npcs.blocks.tiles.TileRedstoneBlock; import noppes.npcs.constants.EnumGuiType; -import noppes.npcs.constants.EnumPacketClient; public class BlockNpcRedstone extends BlockContainer{ public BlockNpcRedstone(){ diff --git a/src/main/java/noppes/npcs/controllers/PartyController.java b/src/main/java/noppes/npcs/controllers/PartyController.java index caaf94fff..98e152e97 100644 --- a/src/main/java/noppes/npcs/controllers/PartyController.java +++ b/src/main/java/noppes/npcs/controllers/PartyController.java @@ -9,8 +9,6 @@ import net.minecraft.nbt.NBTTagString; import noppes.npcs.EventHooks; import noppes.npcs.NoppesUtilPlayer; import noppes.npcs.NoppesUtilServer; -import noppes.npcs.Server; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestCompletion; import noppes.npcs.constants.EnumQuestType; import noppes.npcs.controllers.data.Party; diff --git a/src/main/java/noppes/npcs/controllers/data/MarkData.java b/src/main/java/noppes/npcs/controllers/data/MarkData.java index 290ec0c9c..3f50be35f 100644 --- a/src/main/java/noppes/npcs/controllers/data/MarkData.java +++ b/src/main/java/noppes/npcs/controllers/data/MarkData.java @@ -4,15 +4,12 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.packets.client.MarkDataPacket; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; -import noppes.npcs.Server; import noppes.npcs.api.entity.data.IMark; import noppes.npcs.api.handler.data.IAvailability; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.MarkType; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java b/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java index 8f9f938f6..7ae32545b 100644 --- a/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java +++ b/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java @@ -4,11 +4,9 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.packets.client.PlayerUpdateSkinOverlaysPacket; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import noppes.npcs.Server; import noppes.npcs.api.ISkinOverlay; import noppes.npcs.api.handler.IOverlayHandler; import noppes.npcs.config.ConfigMain; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.controllers.data.PlayerData; import noppes.npcs.controllers.data.SkinOverlay; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index 219fa2a6f..34297e9b4 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -3,7 +3,6 @@ package noppes.npcs.scripted.entity; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.packets.client.script.ScriptOverlayClosePacket; -import kamkeel.npcs.network.packets.client.script.ScriptOverlayDataPacket; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; @@ -31,7 +30,6 @@ import noppes.npcs.api.item.IItemStack; import noppes.npcs.api.overlay.ICustomOverlay; import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.config.ConfigScript; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestRepeat; import noppes.npcs.constants.EnumQuestType; import noppes.npcs.containers.ContainerCustomGui; From da9ed1d60f8aab2f81fc8ebd56dce977347bc4a9 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 12:51:43 -0500 Subject: [PATCH 050/157] Remove PacketHandlerClient Reference --- src/main/java/noppes/npcs/client/ClientProxy.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index ec70a949f..f3f38ec8e 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -83,7 +83,6 @@ public class ClientProxy extends CommonProxy { public void load() { Font = new FontContainer(ConfigClient.FontType, ConfigClient.FontSize); createFolders(); - CustomNpcs.Channel.register(new PacketHandlerClient()); CustomNpcs.ChannelPlayer.register(new PacketHandlerPlayer()); new MusicController(); new ScriptSoundController(); From db2144116f9082717a03290c5370042ba15b2eca Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 13:54:49 -0500 Subject: [PATCH 051/157] Reorg -- Data Packets designed to send to Client --- src/main/java/foxz/command/CmdConfig.java | 2 +- src/main/java/foxz/command/CmdQuest.java | 7 +- .../npcs/command/QuestCategoryCommand.java | 11 +- .../kamkeel/npcs/command/QuestCommand.java | 11 +- .../npcs/controllers/SyncController.java | 28 ++-- .../kamkeel/npcs/network/PacketHandler.java | 98 +++++++------- .../java/kamkeel/npcs/network/PacketUtil.java | 74 ---------- .../npcs/network/enums/EnumPacketType.java | 5 +- .../{client => data}/AchievementPacket.java | 11 +- .../{client => data}/ChatAlertPacket.java | 10 +- .../{client => data}/ChatBubblePacket.java | 5 +- .../ClonerPacket.java} | 10 +- .../{client => data}/ConfigCommandPacket.java | 4 +- .../DisableMouseInputPacket.java | 4 +- .../packets/{ => data}/LoginPacket.java | 6 +- .../{client => data}/MarkDataPacket.java | 6 +- .../OverlayQuestTrackingPacket.java | 4 +- .../{client => data}/ParticlePacket.java | 4 +- .../PlayerUpdateSkinOverlaysPacket.java | 6 +- .../QuestCompletionPacket.java | 12 +- .../ScrollSelectedPacket.java | 10 +- .../SoundManagementPacket.java | 5 +- .../SwingPlayerArmPacket.java | 5 +- .../UpdateAnimationsPacket.java | 6 +- .../{client => data}/VillagerListPacket.java | 5 +- .../{client => data}/gui/GuiClosePacket.java | 12 +- .../{client => data}/gui/GuiErrorPacket.java | 12 +- .../gui/GuiOpenBookPacket.java | 4 +- .../{client => data}/gui/GuiOpenPacket.java | 10 +- .../gui/GuiRedstonePacket.java | 6 +- .../gui/GuiTeleporterPacket.java | 4 +- .../gui/GuiWaypointPacket.java | 6 +- .../{client => data}/gui/IsGuiOpenPacket.java | 5 +- .../large/GuiDataPacket.java} | 18 ++- .../large/PartyDataPacket.java} | 18 ++- .../large/ScrollDataPacket.java} | 17 ++- .../large/ScrollGroupPacket.java} | 16 ++- .../large/ScrollListPacket.java} | 16 ++- .../large/SyncPacket.java} | 16 +-- .../{client => data}/npc/DeleteNpcPacket.java | 5 +- .../{client => data}/npc/DialogPacket.java | 4 +- .../{client => data}/npc/EditNpcPacket.java | 5 +- .../{client => data}/npc/RolePacket.java | 4 +- .../{client => data}/npc/UpdateNpcPacket.java | 6 +- .../{client => data}/npc/WeaponNpcPacket.java | 6 +- .../script/ScriptOverlayClosePacket.java | 4 +- .../script/ScriptOverlayDataPacket.java | 5 +- .../script/ScriptedParticlePacket.java | 4 +- .../java/noppes/npcs/NoppesUtilPlayer.java | 23 ++-- .../java/noppes/npcs/NoppesUtilServer.java | 44 +++--- .../java/noppes/npcs/PacketHandlerPlayer.java | 28 ++-- .../java/noppes/npcs/PacketHandlerServer.java | 128 +++++++++--------- .../java/noppes/npcs/ServerEventsHandler.java | 21 ++- .../java/noppes/npcs/blocks/BlockBook.java | 2 +- .../java/noppes/npcs/blocks/BlockMailbox.java | 4 +- .../npcs/constants/EnumPlayerPacket.java | 30 +++- .../npcs/controllers/CustomGuiController.java | 8 +- .../npcs/controllers/PartyController.java | 30 ++-- .../controllers/PlayerQuestController.java | 15 +- .../npcs/controllers/data/BankData.java | 4 +- .../npcs/controllers/data/PlayerData.java | 7 +- .../controllers/data/PlayerQuestData.java | 9 +- .../noppes/npcs/controllers/data/Quest.java | 4 +- .../npcs/entity/EntityNPCInterface.java | 12 +- .../npcs/scripted/entity/ScriptPlayer.java | 12 +- 65 files changed, 459 insertions(+), 474 deletions(-) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/AchievementPacket.java (85%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/ChatAlertPacket.java (81%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/ChatBubblePacket.java (94%) rename src/main/java/kamkeel/npcs/network/packets/{client/large/LargeClonerPacket.java => data/ClonerPacket.java} (87%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/ConfigCommandPacket.java (96%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/DisableMouseInputPacket.java (95%) rename src/main/java/kamkeel/npcs/network/packets/{ => data}/LoginPacket.java (87%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/MarkDataPacket.java (92%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/OverlayQuestTrackingPacket.java (95%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/ParticlePacket.java (96%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/PlayerUpdateSkinOverlaysPacket.java (92%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/QuestCompletionPacket.java (77%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/ScrollSelectedPacket.java (80%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/SoundManagementPacket.java (97%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/SwingPlayerArmPacket.java (89%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/UpdateAnimationsPacket.java (95%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/VillagerListPacket.java (92%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/gui/GuiClosePacket.java (82%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/gui/GuiErrorPacket.java (81%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/gui/GuiOpenBookPacket.java (95%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/gui/GuiOpenPacket.java (80%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/gui/GuiRedstonePacket.java (89%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/gui/GuiTeleporterPacket.java (92%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/gui/GuiWaypointPacket.java (89%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/gui/IsGuiOpenPacket.java (89%) rename src/main/java/kamkeel/npcs/network/packets/{client/large/LargeGuiDataPacket.java => data/large/GuiDataPacket.java} (80%) rename src/main/java/kamkeel/npcs/network/packets/{client/large/LargePartyDataPacket.java => data/large/PartyDataPacket.java} (79%) rename src/main/java/kamkeel/npcs/network/packets/{client/large/LargeScrollDataPacket.java => data/large/ScrollDataPacket.java} (72%) rename src/main/java/kamkeel/npcs/network/packets/{client/large/LargeScrollGroupPacket.java => data/large/ScrollGroupPacket.java} (71%) rename src/main/java/kamkeel/npcs/network/packets/{client/large/LargeScrollListPacket.java => data/large/ScrollListPacket.java} (71%) rename src/main/java/kamkeel/npcs/network/packets/{client/large/LargeSyncPacket.java => data/large/SyncPacket.java} (85%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/npc/DeleteNpcPacket.java (91%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/npc/DialogPacket.java (96%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/npc/EditNpcPacket.java (91%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/npc/RolePacket.java (94%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/npc/UpdateNpcPacket.java (91%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/npc/WeaponNpcPacket.java (92%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/script/ScriptOverlayClosePacket.java (92%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/script/ScriptOverlayDataPacket.java (92%) rename src/main/java/kamkeel/npcs/network/packets/{client => data}/script/ScriptedParticlePacket.java (96%) diff --git a/src/main/java/foxz/command/CmdConfig.java b/src/main/java/foxz/command/CmdConfig.java index 52e1b6c28..597db83a1 100644 --- a/src/main/java/foxz/command/CmdConfig.java +++ b/src/main/java/foxz/command/CmdConfig.java @@ -7,7 +7,7 @@ import foxz.commandhelper.permissions.OpOnly; import foxz.commandhelper.permissions.PlayerOnly; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumConfigOperation; -import kamkeel.npcs.network.packets.client.ConfigCommandPacket; +import kamkeel.npcs.network.packets.data.ConfigCommandPacket; import net.minecraft.block.Block; import net.minecraft.block.BlockIce; import net.minecraft.block.BlockLeavesBase; diff --git a/src/main/java/foxz/command/CmdQuest.java b/src/main/java/foxz/command/CmdQuest.java index efac25afe..78cce2830 100644 --- a/src/main/java/foxz/command/CmdQuest.java +++ b/src/main/java/foxz/command/CmdQuest.java @@ -6,7 +6,8 @@ import foxz.commandhelper.annotations.SubCommand; import foxz.commandhelper.permissions.OpOnly; import foxz.commandhelper.permissions.ParamCheck; import kamkeel.npcs.controllers.SyncController; -import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.data.AchievementPacket; +import kamkeel.npcs.network.packets.data.ChatAlertPacket; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.controllers.QuestController; import noppes.npcs.controllers.data.PlayerData; @@ -57,8 +58,8 @@ public class CmdQuest extends ChMcLogger{ playerdata.questData.activeQuests.put(questid, questdata); playerdata.save(); if(playerdata.player != null){ - PacketUtil.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.newquest", quest.title); - PacketUtil.sendChatAlert((EntityPlayerMP) playerdata.player, "quest.newquest", ": ", quest.title); + AchievementPacket.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.newquest", quest.title); + ChatAlertPacket.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 b47b14e78..9e3e238fd 100644 --- a/src/main/java/kamkeel/npcs/command/QuestCategoryCommand.java +++ b/src/main/java/kamkeel/npcs/command/QuestCategoryCommand.java @@ -1,6 +1,7 @@ package kamkeel.npcs.command; -import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.data.AchievementPacket; +import kamkeel.npcs.network.packets.data.ChatAlertPacket; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayerMP; @@ -92,8 +93,8 @@ public class QuestCategoryCommand extends CommandKamkeelBase { playerdata.questData.finishedQuests.put(quest.id, sender.getEntityWorld().getTotalWorldTime()); if(playerdata.player != null){ - PacketUtil.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.completed", quest.title); - PacketUtil.sendChatAlert((EntityPlayerMP) playerdata.player, "quest.completed", ": ", quest.title); + AchievementPacket.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.completed", quest.title); + ChatAlertPacket.sendChatAlert((EntityPlayerMP) playerdata.player, "quest.completed", ": ", quest.title); } count++; } @@ -184,8 +185,8 @@ public class QuestCategoryCommand extends CommandKamkeelBase { count++; if(playerdata.player != null && questData.sendAlerts){ - PacketUtil.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.newquest", quest.title); - PacketUtil.sendChatAlert((EntityPlayerMP) playerdata.player, "quest.newquest", ": ", quest.title); + AchievementPacket.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.newquest", quest.title); + ChatAlertPacket.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 644b64ddc..7ac9b1fcd 100644 --- a/src/main/java/kamkeel/npcs/command/QuestCommand.java +++ b/src/main/java/kamkeel/npcs/command/QuestCommand.java @@ -1,7 +1,8 @@ package kamkeel.npcs.command; import kamkeel.npcs.controllers.SyncController; -import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.data.AchievementPacket; +import kamkeel.npcs.network.packets.data.ChatAlertPacket; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; @@ -64,8 +65,8 @@ public class QuestCommand extends CommandKamkeelBase { playerdata.questData.activeQuests.put(questid, questdata); playerdata.save(); if(playerdata.player != null && questdata.sendAlerts){ - PacketUtil.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.newquest", quest.title); - PacketUtil.sendChatAlert((EntityPlayerMP) playerdata.player, "quest.newquest", ": ", quest.title); + AchievementPacket.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.newquest", quest.title); + ChatAlertPacket.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)); @@ -110,8 +111,8 @@ public class QuestCommand extends CommandKamkeelBase { playerdata.save(); if(playerdata.player != null){ - PacketUtil.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.completed", quest.title); - PacketUtil.sendChatAlert((EntityPlayerMP) playerdata.player, "quest.completed", ": ", quest.title); + AchievementPacket.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.completed", quest.title); + ChatAlertPacket.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/controllers/SyncController.java b/src/main/java/kamkeel/npcs/controllers/SyncController.java index 4d5397f7e..a98a10755 100644 --- a/src/main/java/kamkeel/npcs/controllers/SyncController.java +++ b/src/main/java/kamkeel/npcs/controllers/SyncController.java @@ -4,7 +4,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import kamkeel.npcs.addon.DBCAddon; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.packets.client.large.LargeSyncPacket; +import kamkeel.npcs.network.packets.data.large.SyncPacket; import kamkeel.npcs.network.enums.EnumSyncAction; import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.entity.player.EntityPlayerMP; @@ -23,7 +23,7 @@ public class SyncController { public static void syncPlayer(EntityPlayerMP player){ // 1) Factions - PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + PacketHandler.Instance.sendToPlayer(new SyncPacket( EnumSyncType.FACTION, EnumSyncAction.RELOAD, -1, @@ -31,7 +31,7 @@ public class SyncController { ), player); // 2) Dialog Categories - PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + PacketHandler.Instance.sendToPlayer(new SyncPacket( EnumSyncType.DIALOG_CATEGORY, EnumSyncAction.RELOAD, -1, @@ -39,7 +39,7 @@ public class SyncController { ), player); // 3) Quest Categories - PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + PacketHandler.Instance.sendToPlayer(new SyncPacket( EnumSyncType.QUEST_CATEGORY, EnumSyncAction.RELOAD, -1, @@ -47,7 +47,7 @@ public class SyncController { ), player); // 4) Workbench Recipes - PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + PacketHandler.Instance.sendToPlayer(new SyncPacket( EnumSyncType.WORKBENCH_RECIPES, EnumSyncAction.RELOAD, -1, @@ -55,7 +55,7 @@ public class SyncController { ), player); // 5) Carpentry Recipes - PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + PacketHandler.Instance.sendToPlayer(new SyncPacket( EnumSyncType.CARPENTRY_RECIPES, EnumSyncAction.RELOAD, -1, @@ -140,14 +140,14 @@ public class SyncController { PlayerData data = PlayerData.get(player); if(data != null){ if(update){ - PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + PacketHandler.Instance.sendToPlayer(new SyncPacket( EnumSyncType.PLAYERDATA, EnumSyncAction.UPDATE, -1, data.getSyncNBT()) , player); } else { - PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + PacketHandler.Instance.sendToPlayer(new SyncPacket( EnumSyncType.PLAYERDATA, EnumSyncAction.RELOAD, -1, @@ -157,7 +157,7 @@ public class SyncController { } public static void syncRemove(EnumSyncType enumSyncType, int id){ - PacketHandler.Instance.sendToAll(new LargeSyncPacket( + PacketHandler.Instance.sendToAll(new SyncPacket( enumSyncType, EnumSyncAction.REMOVE, id, @@ -166,7 +166,7 @@ public class SyncController { } public static void syncAllDialogs() { - PacketHandler.Instance.sendToAll(new LargeSyncPacket( + PacketHandler.Instance.sendToAll(new SyncPacket( EnumSyncType.DIALOG_CATEGORY, EnumSyncAction.RELOAD, -1, @@ -175,7 +175,7 @@ public class SyncController { } public static void syncAllQuests() { - PacketHandler.Instance.sendToAll(new LargeSyncPacket( + PacketHandler.Instance.sendToAll(new SyncPacket( EnumSyncType.QUEST_CATEGORY, EnumSyncAction.RELOAD, -1, @@ -184,7 +184,7 @@ public class SyncController { } public static void syncAllWorkbenchRecipes() { - PacketHandler.Instance.sendToAll(new LargeSyncPacket( + PacketHandler.Instance.sendToAll(new SyncPacket( EnumSyncType.WORKBENCH_RECIPES, EnumSyncAction.RELOAD, -1, @@ -193,7 +193,7 @@ public class SyncController { } public static void syncAllCarpentryRecipes() { - PacketHandler.Instance.sendToAll(new LargeSyncPacket( + PacketHandler.Instance.sendToAll(new SyncPacket( EnumSyncType.CARPENTRY_RECIPES, EnumSyncAction.RELOAD, -1, @@ -402,7 +402,7 @@ public class SyncController { } public static void syncUpdate(EnumSyncType type, int cat, NBTTagCompound compound) { - PacketHandler.Instance.sendToAll(new LargeSyncPacket( + PacketHandler.Instance.sendToAll(new SyncPacket( type, EnumSyncAction.UPDATE, cat, diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index e1f6e0407..d3fcda649 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -7,11 +7,11 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.internal.FMLProxyPacket; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.enums.EnumPacketType; -import kamkeel.npcs.network.packets.client.*; -import kamkeel.npcs.network.packets.client.gui.*; -import kamkeel.npcs.network.packets.client.large.*; -import kamkeel.npcs.network.packets.client.npc.*; -import kamkeel.npcs.network.packets.client.script.*; +import kamkeel.npcs.network.packets.data.*; +import kamkeel.npcs.network.packets.data.gui.*; +import kamkeel.npcs.network.packets.data.large.*; +import kamkeel.npcs.network.packets.data.npc.*; +import kamkeel.npcs.network.packets.data.script.*; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -27,17 +27,17 @@ public final class PacketHandler { // Channels public Map channels = new Hashtable<>(); - public static final PacketChannel INFO_PACKET = new PacketChannel("CNPC+|Info", EnumPacketType.INFO); - public static final PacketChannel DATA_PACKET = new PacketChannel("CNPC+|Data", EnumPacketType.DATA); - public static final PacketChannel CLIENT_PACKET = new PacketChannel("CNPC+|Client", EnumPacketType.CLIENT); + public static final PacketChannel PERMISSION_PACKET = new PacketChannel("CNPC+|Perm", EnumPacketType.PERMISSION); + public static final PacketChannel PLAYER_PACKET = new PacketChannel("CNPC+|Player", EnumPacketType.PLAYER); + public static final PacketChannel DATA_PACKET = new PacketChannel("CNPC+|Data", EnumPacketType.DATA); private static final List packetChannels = new ArrayList<>(); public PacketHandler() { // Register Channels - packetChannels.add(INFO_PACKET); + packetChannels.add(PERMISSION_PACKET); + packetChannels.add(PLAYER_PACKET); packetChannels.add(DATA_PACKET); - packetChannels.add(CLIENT_PACKET); this.registerChannels(); this.registerClientPackets(); @@ -45,53 +45,53 @@ public final class PacketHandler { public void registerClientPackets(){ // Client Packets - CLIENT_PACKET.registerPacket(new AchievementPacket()); - CLIENT_PACKET.registerPacket(new ChatAlertPacket()); - CLIENT_PACKET.registerPacket(new ChatBubblePacket()); - CLIENT_PACKET.registerPacket(new ConfigCommandPacket()); - CLIENT_PACKET.registerPacket(new DisableMouseInputPacket()); - CLIENT_PACKET.registerPacket(new MarkDataPacket()); - CLIENT_PACKET.registerPacket(new OverlayQuestTrackingPacket()); - CLIENT_PACKET.registerPacket(new ParticlePacket()); - CLIENT_PACKET.registerPacket(new PlayerUpdateSkinOverlaysPacket()); - CLIENT_PACKET.registerPacket(new QuestCompletionPacket()); - CLIENT_PACKET.registerPacket(new ScrollSelectedPacket()); - CLIENT_PACKET.registerPacket(new SoundManagementPacket()); - CLIENT_PACKET.registerPacket(new SwingPlayerArmPacket()); - CLIENT_PACKET.registerPacket(new UpdateAnimationsPacket()); - CLIENT_PACKET.registerPacket(new VillagerListPacket()); + DATA_PACKET.registerPacket(new AchievementPacket()); + DATA_PACKET.registerPacket(new ChatAlertPacket()); + DATA_PACKET.registerPacket(new ChatBubblePacket()); + DATA_PACKET.registerPacket(new ConfigCommandPacket()); + DATA_PACKET.registerPacket(new DisableMouseInputPacket()); + DATA_PACKET.registerPacket(new MarkDataPacket()); + DATA_PACKET.registerPacket(new OverlayQuestTrackingPacket()); + DATA_PACKET.registerPacket(new ParticlePacket()); + DATA_PACKET.registerPacket(new PlayerUpdateSkinOverlaysPacket()); + DATA_PACKET.registerPacket(new QuestCompletionPacket()); + DATA_PACKET.registerPacket(new ScrollSelectedPacket()); + DATA_PACKET.registerPacket(new SoundManagementPacket()); + DATA_PACKET.registerPacket(new SwingPlayerArmPacket()); + DATA_PACKET.registerPacket(new UpdateAnimationsPacket()); + DATA_PACKET.registerPacket(new VillagerListPacket()); // Client | GUI Packets - CLIENT_PACKET.registerPacket(new GuiClosePacket()); - CLIENT_PACKET.registerPacket(new GuiOpenPacket()); - CLIENT_PACKET.registerPacket(new GuiErrorPacket()); - CLIENT_PACKET.registerPacket(new GuiRedstonePacket()); - CLIENT_PACKET.registerPacket(new GuiTeleporterPacket()); - CLIENT_PACKET.registerPacket(new GuiWaypointPacket()); - CLIENT_PACKET.registerPacket(new IsGuiOpenPacket()); - CLIENT_PACKET.registerPacket(new GuiOpenBookPacket()); + DATA_PACKET.registerPacket(new GuiClosePacket()); + DATA_PACKET.registerPacket(new GuiOpenPacket()); + DATA_PACKET.registerPacket(new GuiErrorPacket()); + DATA_PACKET.registerPacket(new GuiRedstonePacket()); + DATA_PACKET.registerPacket(new GuiTeleporterPacket()); + DATA_PACKET.registerPacket(new GuiWaypointPacket()); + DATA_PACKET.registerPacket(new IsGuiOpenPacket()); + DATA_PACKET.registerPacket(new GuiOpenBookPacket()); // Client | NPC Packets - CLIENT_PACKET.registerPacket(new DeleteNpcPacket()); - CLIENT_PACKET.registerPacket(new EditNpcPacket()); - CLIENT_PACKET.registerPacket(new UpdateNpcPacket()); - CLIENT_PACKET.registerPacket(new DialogPacket()); - CLIENT_PACKET.registerPacket(new RolePacket()); - CLIENT_PACKET.registerPacket(new WeaponNpcPacket()); + DATA_PACKET.registerPacket(new DeleteNpcPacket()); + DATA_PACKET.registerPacket(new EditNpcPacket()); + DATA_PACKET.registerPacket(new UpdateNpcPacket()); + DATA_PACKET.registerPacket(new DialogPacket()); + DATA_PACKET.registerPacket(new RolePacket()); + DATA_PACKET.registerPacket(new WeaponNpcPacket()); // Client | Script Packets - CLIENT_PACKET.registerPacket(new ScriptedParticlePacket()); - CLIENT_PACKET.registerPacket(new ScriptOverlayClosePacket()); - CLIENT_PACKET.registerPacket(new ScriptOverlayDataPacket()); + DATA_PACKET.registerPacket(new ScriptedParticlePacket()); + DATA_PACKET.registerPacket(new ScriptOverlayClosePacket()); + DATA_PACKET.registerPacket(new ScriptOverlayDataPacket()); // Client | Large Packets - CLIENT_PACKET.registerPacket(new LargeClonerPacket()); - CLIENT_PACKET.registerPacket(new LargeScrollGroupPacket()); - CLIENT_PACKET.registerPacket(new LargeScrollDataPacket()); - CLIENT_PACKET.registerPacket(new LargeScrollListPacket()); - CLIENT_PACKET.registerPacket(new LargeSyncPacket()); - CLIENT_PACKET.registerPacket(new LargeGuiDataPacket()); - CLIENT_PACKET.registerPacket(new LargePartyDataPacket()); + DATA_PACKET.registerPacket(new ClonerPacket()); + DATA_PACKET.registerPacket(new ScrollGroupPacket()); + DATA_PACKET.registerPacket(new ScrollDataPacket()); + DATA_PACKET.registerPacket(new ScrollListPacket()); + DATA_PACKET.registerPacket(new SyncPacket()); + DATA_PACKET.registerPacket(new GuiDataPacket()); + DATA_PACKET.registerPacket(new PartyDataPacket()); } private void registerChannels() { diff --git a/src/main/java/kamkeel/npcs/network/PacketUtil.java b/src/main/java/kamkeel/npcs/network/PacketUtil.java index d108e7517..86823f7fd 100644 --- a/src/main/java/kamkeel/npcs/network/PacketUtil.java +++ b/src/main/java/kamkeel/npcs/network/PacketUtil.java @@ -1,80 +1,6 @@ package kamkeel.npcs.network; -import kamkeel.npcs.network.packets.client.ChatAlertPacket; -import kamkeel.npcs.network.packets.client.AchievementPacket; -import kamkeel.npcs.network.packets.client.QuestCompletionPacket; -import kamkeel.npcs.network.packets.client.ScrollSelectedPacket; -import kamkeel.npcs.network.packets.client.gui.GuiClosePacket; -import kamkeel.npcs.network.packets.client.large.*; -import kamkeel.npcs.network.packets.client.gui.GuiErrorPacket; -import kamkeel.npcs.network.packets.client.gui.GuiOpenPacket; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.constants.EnumGuiType; - -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); - } - - public static void openGUI(EntityPlayerMP playerMP, EnumGuiType type, int x, int y, int z){ - GuiOpenPacket packet = new GuiOpenPacket(type, x, y, z); - PacketHandler.Instance.sendToPlayer(packet, playerMP); - } - - public static void closeGUI(EntityPlayerMP playerMP, int closeCode, NBTTagCompound compound){ - GuiClosePacket packet = new GuiClosePacket(closeCode, compound); - PacketHandler.Instance.sendToPlayer(packet, playerMP); - } - - public static void errorGUI(EntityPlayerMP playerMP, int closeCode, NBTTagCompound compound){ - GuiErrorPacket packet = new GuiErrorPacket(closeCode, compound); - PacketHandler.Instance.sendToPlayer(packet, playerMP); - } - - public static void sendGuiData(EntityPlayerMP playerMP, NBTTagCompound compound){ - LargeGuiDataPacket packet = new LargeGuiDataPacket(compound); - PacketHandler.Instance.sendToPlayer(packet, playerMP); - } - - public static void sendPartyData(EntityPlayerMP playerMP, NBTTagCompound compound){ - LargePartyDataPacket packet = new LargePartyDataPacket(compound); - PacketHandler.Instance.sendToPlayer(packet, playerMP); - } - - - public static void sendQuestComplete(EntityPlayerMP playerMP, NBTTagCompound compound){ - QuestCompletionPacket packet = new QuestCompletionPacket(compound); - PacketHandler.Instance.sendToPlayer(packet, playerMP); - } - - public static void setSelectedList(EntityPlayerMP playerMP, String item){ - ScrollSelectedPacket packet = new ScrollSelectedPacket(item); - PacketHandler.Instance.sendToPlayer(packet, playerMP); - } } diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java b/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java index 83f9049f7..7c65e5df3 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java @@ -1,5 +1,8 @@ package kamkeel.npcs.network.enums; public enum EnumPacketType { - INFO, DATA, CLIENT + PERMISSION, + PLAYER, + DATA, + INFO } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/AchievementPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java similarity index 85% rename from src/main/java/kamkeel/npcs/network/packets/client/AchievementPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java index 253234780..f46cca579 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/AchievementPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.common.ObfuscationReflectionHelper; import cpw.mods.fml.relauncher.Side; @@ -12,11 +12,11 @@ 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.entity.player.EntityPlayerMP; 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; @@ -37,6 +37,11 @@ public final class AchievementPacket extends AbstractPacket { this.message = message; } + public static void sendAchievement(EntityPlayerMP playerMP, boolean isParty, String description, String message){ + AchievementPacket packet = new AchievementPacket(isParty, description, message); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + @Override public Enum getType() { return EnumClientPacket.ACHIEVEMENT; @@ -44,7 +49,7 @@ public final class AchievementPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java similarity index 81% rename from src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java index de17c3f37..38ba7adee 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -9,6 +9,7 @@ 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.entity.player.EntityPlayerMP; import net.minecraft.util.ChatComponentTranslation; import noppes.npcs.config.ConfigClient; @@ -25,6 +26,11 @@ public final class ChatAlertPacket extends AbstractPacket { this.objects = obs; } + public static void sendChatAlert(EntityPlayerMP playerMP, final Object... obs){ + ChatAlertPacket packet = new ChatAlertPacket(obs); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + @Override public Enum getType() { return EnumClientPacket.CHAT_ALERT; @@ -32,7 +38,7 @@ public final class ChatAlertPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java similarity index 94% rename from src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java index 3920bc337..206d75d23 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,7 +12,6 @@ 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.client.RenderChatMessages; import noppes.npcs.entity.EntityNPCInterface; @@ -41,7 +40,7 @@ public final class ChatBubblePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeClonerPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java similarity index 87% rename from src/main/java/kamkeel/npcs/network/packets/client/large/LargeClonerPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java index 5ad8d3857..a64d592af 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeClonerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.large; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -16,14 +16,14 @@ import noppes.npcs.client.gui.GuiNpcMobSpawnerAdd; import java.io.IOException; -public final class LargeClonerPacket extends LargeAbstractPacket { +public final class ClonerPacket extends LargeAbstractPacket { public static final String packetName = "Client|Clone"; private NBTTagCompound compound; - public LargeClonerPacket() {} + public ClonerPacket() {} - public LargeClonerPacket(NBTTagCompound comp){ + public ClonerPacket(NBTTagCompound comp){ this.compound = comp; } @@ -34,7 +34,7 @@ public final class LargeClonerPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @SideOnly(Side.CLIENT) diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java similarity index 96% rename from src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java index b88f11929..7f5eb45a7 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ConfigCommandPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -37,7 +37,7 @@ public final class ConfigCommandPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java similarity index 95% rename from src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java index 6df5e1d9b..305868eed 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -33,7 +33,7 @@ public final class DisableMouseInputPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/LoginPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java similarity index 87% rename from src/main/java/kamkeel/npcs/network/packets/LoginPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java index c27cbcad4..58a0460bc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/LoginPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets; +package kamkeel.npcs.network.packets.data; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; @@ -11,7 +11,7 @@ import net.minecraft.entity.player.EntityPlayer; import java.io.IOException; public final class LoginPacket extends AbstractPacket { - public static final String packetName = "CNPC+|LoginPacket"; + public static final String packetName = "CNPC+|Login"; public LoginPacket() {} @@ -23,7 +23,7 @@ public final class LoginPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.INFO_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java similarity index 92% rename from src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java index 193ee560f..009b1afa3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/MarkDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -11,8 +11,6 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.controllers.data.MarkData; import noppes.npcs.entity.EntityNPCInterface; @@ -38,7 +36,7 @@ public final class MarkDataPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java similarity index 95% rename from src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java index eb75f6e13..4ea6f9151 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/OverlayQuestTrackingPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -34,7 +34,7 @@ public final class OverlayQuestTrackingPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java similarity index 96% rename from src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java index 3a0475a86..4b885fb69 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -47,7 +47,7 @@ public final class ParticlePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java similarity index 92% rename from src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java index e92f9c75b..7d04f43b6 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -11,8 +11,6 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; import java.io.IOException; @@ -37,7 +35,7 @@ public final class PlayerUpdateSkinOverlaysPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java similarity index 77% rename from src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java index cf8178bd4..75bded4ad 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/QuestCompletionPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -9,9 +9,8 @@ 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.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; import java.io.IOException; @@ -27,6 +26,11 @@ public final class QuestCompletionPacket extends AbstractPacket { this.compound = compound; } + public static void sendQuestComplete(EntityPlayerMP playerMP, NBTTagCompound compound){ + QuestCompletionPacket packet = new QuestCompletionPacket(compound); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + @Override public Enum getType() { return EnumClientPacket.QUEST_COMPLETION; @@ -34,7 +38,7 @@ public final class QuestCompletionPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java similarity index 80% rename from src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java index d91d4ca76..4b2382937 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ScrollSelectedPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -11,6 +11,7 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.client.gui.util.IScrollData; import java.io.IOException; @@ -26,6 +27,11 @@ public final class ScrollSelectedPacket extends AbstractPacket { this.selected = selected; } + public static void setSelectedList(EntityPlayerMP playerMP, String item){ + ScrollSelectedPacket packet = new ScrollSelectedPacket(item); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + @Override public Enum getType() { return EnumClientPacket.SCROLL_SELECTED; @@ -33,7 +39,7 @@ public final class ScrollSelectedPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/SoundManagementPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/SoundManagementPacket.java similarity index 97% rename from src/main/java/kamkeel/npcs/network/packets/client/SoundManagementPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/SoundManagementPacket.java index 8356b7397..7f36c8545 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/SoundManagementPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/SoundManagementPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -11,7 +11,6 @@ import kamkeel.npcs.network.enums.EnumSoundOperation; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.Server; import noppes.npcs.client.controllers.MusicController; import noppes.npcs.client.controllers.ScriptClientSound; import noppes.npcs.client.controllers.ScriptSoundController; @@ -67,7 +66,7 @@ public final class SoundManagementPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java similarity index 89% rename from src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java index fa3978e34..85df80307 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/SwingPlayerArmPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -9,7 +9,6 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.CustomNpcs; import java.io.IOException; @@ -25,7 +24,7 @@ public final class SwingPlayerArmPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java similarity index 95% rename from src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java index 81977a264..bb9deb78a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,8 +12,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.ClientCacheHandler; import noppes.npcs.controllers.data.Animation; import noppes.npcs.controllers.data.AnimationData; @@ -41,7 +39,7 @@ public final class UpdateAnimationsPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java similarity index 92% rename from src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java index 2b56d4ffd..c798376c8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/VillagerListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.data; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -10,7 +10,6 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.PacketBuffer; -import noppes.npcs.CustomNpcs; import noppes.npcs.ServerEventsHandler; import net.minecraft.village.MerchantRecipeList; @@ -34,7 +33,7 @@ public final class VillagerListPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java similarity index 82% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java index cf1c75ee9..1d3780fcf 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.gui; +package kamkeel.npcs.network.packets.data.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -11,9 +11,8 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.gui.util.IGuiClose; import java.io.IOException; @@ -31,6 +30,11 @@ public final class GuiClosePacket extends AbstractPacket { this.compound = compound; } + public static void closeGUI(EntityPlayerMP playerMP, int closeCode, NBTTagCompound compound){ + GuiClosePacket packet = new GuiClosePacket(closeCode, compound); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + @Override public Enum getType() { return EnumClientPacket.GUI_CLOSE; @@ -38,7 +42,7 @@ public final class GuiClosePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java similarity index 81% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java index b1620962b..387fa36fa 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiErrorPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.gui; +package kamkeel.npcs.network.packets.data.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -11,9 +11,8 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.gui.util.IGuiError; import java.io.IOException; @@ -31,6 +30,11 @@ public final class GuiErrorPacket extends AbstractPacket { this.compound = compound; } + public static void errorGUI(EntityPlayerMP playerMP, int closeCode, NBTTagCompound compound){ + GuiErrorPacket packet = new GuiErrorPacket(closeCode, compound); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + @Override public Enum getType() { return EnumClientPacket.GUI_ERROR; @@ -38,7 +42,7 @@ public final class GuiErrorPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenBookPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java similarity index 95% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenBookPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java index 9f3ef0a92..6cfb4ac99 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenBookPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.gui; +package kamkeel.npcs.network.packets.data.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -40,7 +40,7 @@ public final class GuiOpenBookPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java similarity index 80% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java index 105bb08f8..c12235fba 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.gui; +package kamkeel.npcs.network.packets.data.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -8,6 +8,7 @@ import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.CustomNpcs; import noppes.npcs.constants.EnumGuiType; @@ -30,6 +31,11 @@ public final class GuiOpenPacket extends AbstractPacket { this.z = z; } + public static void openGUI(EntityPlayerMP playerMP, EnumGuiType type, int x, int y, int z){ + GuiOpenPacket packet = new GuiOpenPacket(type, x, y, z); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + @Override public Enum getType() { return EnumClientPacket.GUI_OPEN; @@ -37,7 +43,7 @@ public final class GuiOpenPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java similarity index 89% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java index c67ca326b..8abfbe319 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiRedstonePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.gui; +package kamkeel.npcs.network.packets.data.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -10,8 +10,6 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; import java.io.IOException; @@ -34,7 +32,7 @@ public final class GuiRedstonePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java similarity index 92% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java index 734c60002..19faca548 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiTeleporterPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.gui; +package kamkeel.npcs.network.packets.data.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -26,7 +26,7 @@ public final class GuiTeleporterPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java similarity index 89% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java index 55408fc0d..86dd15e04 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/GuiWaypointPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.gui; +package kamkeel.npcs.network.packets.data.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -10,8 +10,6 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; import java.io.IOException; @@ -34,7 +32,7 @@ public final class GuiWaypointPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java similarity index 89% rename from src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java index f8e1758f0..91bfe9bcb 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/gui/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.gui; +package kamkeel.npcs.network.packets.data.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -9,7 +9,6 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.CustomNpcs; import noppes.npcs.client.NoppesUtil; import java.io.IOException; @@ -26,7 +25,7 @@ public final class IsGuiOpenPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeGuiDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java similarity index 80% rename from src/main/java/kamkeel/npcs/network/packets/client/large/LargeGuiDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java index a370f3a2e..d4e3be4bc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeGuiDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java @@ -1,10 +1,9 @@ -package kamkeel.npcs.network.packets.client.large; +package kamkeel.npcs.network.packets.data.large; 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.AbstractPacket; import kamkeel.npcs.network.LargeAbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; @@ -13,25 +12,30 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.gui.util.GuiContainerNPCInterface; import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.client.gui.util.IGuiData; import java.io.IOException; -import java.util.Map; -public final class LargeGuiDataPacket extends LargeAbstractPacket { +public final class GuiDataPacket extends LargeAbstractPacket { public static final String packetName = "Client|GuiData"; private NBTTagCompound compound; - public LargeGuiDataPacket(){} + public GuiDataPacket(){} - public LargeGuiDataPacket(NBTTagCompound comp){ + public GuiDataPacket(NBTTagCompound comp){ this.compound = comp; } + public static void sendGuiData(EntityPlayerMP playerMP, NBTTagCompound compound){ + GuiDataPacket packet = new GuiDataPacket(compound); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + @Override public Enum getType() { return EnumClientPacket.GUI_DATA; @@ -39,7 +43,7 @@ public final class LargeGuiDataPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java similarity index 79% rename from src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java index 9d4f115e1..ab6982403 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.large; +package kamkeel.npcs.network.packets.data.large; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,26 +12,30 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.Server; import noppes.npcs.client.gui.util.GuiContainerNPCInterface; import noppes.npcs.client.gui.util.GuiNPCInterface; -import noppes.npcs.client.gui.util.IGuiData; import noppes.npcs.client.gui.util.IPartyData; import java.io.IOException; -public final class LargePartyDataPacket extends LargeAbstractPacket { +public final class PartyDataPacket extends LargeAbstractPacket { public static final String packetName = "Client|PartyData"; private NBTTagCompound compound; - public LargePartyDataPacket(){} + public PartyDataPacket(){} - public LargePartyDataPacket(NBTTagCompound comp){ + public PartyDataPacket(NBTTagCompound comp){ this.compound = comp; } + public static void sendPartyData(EntityPlayerMP playerMP, NBTTagCompound compound){ + PartyDataPacket packet = new PartyDataPacket(compound); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + @Override public Enum getType() { return EnumClientPacket.PARTY_DATA; @@ -39,7 +43,7 @@ public final class LargePartyDataPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollDataPacket.java similarity index 72% rename from src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/large/ScrollDataPacket.java index 377bbc5e9..3cfe916ed 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollDataPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.large; +package kamkeel.npcs.network.packets.data.large; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; @@ -8,23 +8,28 @@ 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.entity.player.EntityPlayerMP; import noppes.npcs.client.NoppesUtil; import java.io.IOException; -import java.util.HashMap; import java.util.Map; -public final class LargeScrollDataPacket extends LargeAbstractPacket { +public final class ScrollDataPacket extends LargeAbstractPacket { public static final String packetName = "Large|ScrollData"; private Map data; - public LargeScrollDataPacket() {} + public ScrollDataPacket() {} - public LargeScrollDataPacket(Map data) { + public ScrollDataPacket(Map data) { this.data = data; } + public static void sendScrollData(EntityPlayerMP player, Map map) { + ScrollDataPacket packet = new ScrollDataPacket(map); + PacketHandler.Instance.sendToPlayer(packet, player); + } + @Override public Enum getType() { return EnumClientPacket.SCROLL_DATA; @@ -32,7 +37,7 @@ public final class LargeScrollDataPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollGroupPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java similarity index 71% rename from src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollGroupPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java index 67cca5755..5c4e522a2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollGroupPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.large; +package kamkeel.npcs.network.packets.data.large; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; @@ -8,22 +8,28 @@ 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.entity.player.EntityPlayerMP; import noppes.npcs.client.NoppesUtil; import java.io.IOException; import java.util.Map; -public final class LargeScrollGroupPacket extends LargeAbstractPacket { +public final class ScrollGroupPacket extends LargeAbstractPacket { public static final String packetName = "Large|ScrollGroup"; private Map data; - public LargeScrollGroupPacket() {} + public ScrollGroupPacket() {} - public LargeScrollGroupPacket(Map data) { + public ScrollGroupPacket(Map data) { this.data = data; } + public static void sendScrollGroup(EntityPlayerMP player, Map map){ + ScrollGroupPacket packet = new ScrollGroupPacket(map); + PacketHandler.Instance.sendToPlayer(packet, player); + } + @Override public Enum getType() { return EnumClientPacket.SCROLL_GROUP; @@ -31,7 +37,7 @@ public final class LargeScrollGroupPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollListPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollListPacket.java similarity index 71% rename from src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollListPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/large/ScrollListPacket.java index 2649421e4..1b6db6a9a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeScrollListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollListPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.large; +package kamkeel.npcs.network.packets.data.large; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; @@ -8,22 +8,28 @@ 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.entity.player.EntityPlayerMP; import noppes.npcs.client.NoppesUtil; import java.io.IOException; import java.util.List; -public final class LargeScrollListPacket extends LargeAbstractPacket { +public final class ScrollListPacket extends LargeAbstractPacket { public static final String packetName = "Large|ScrollList"; private List data; - public LargeScrollListPacket() {} + public ScrollListPacket() {} - public LargeScrollListPacket(List data) { + public ScrollListPacket(List data) { this.data = data; } + public static void sendList(EntityPlayerMP player, List list){ + ScrollListPacket packet = new ScrollListPacket(list); + PacketHandler.Instance.sendToPlayer(packet, player); + } + @Override public Enum getType() { return EnumClientPacket.SCROLL_LIST; @@ -31,7 +37,7 @@ public final class LargeScrollListPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java similarity index 85% rename from src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java index d634794b9..c7e904ea9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/large/LargeSyncPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java @@ -1,7 +1,6 @@ -package kamkeel.npcs.network.packets.client.large; +package kamkeel.npcs.network.packets.data.large; 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.controllers.SyncController; @@ -12,14 +11,9 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import kamkeel.npcs.network.enums.EnumSyncAction; import kamkeel.npcs.network.enums.EnumSyncType; import kamkeel.npcs.util.ByteBufUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; -import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; @@ -27,19 +21,19 @@ import java.io.IOException; * A large sync packet that sends chunked data to the client for a given SyncType * along with a SyncAction (RELOAD, UPDATE, REMOVE). */ -public final class LargeSyncPacket extends LargeAbstractPacket { +public final class SyncPacket extends LargeAbstractPacket { private EnumSyncType enumSyncType; private EnumSyncAction enumSyncAction; private NBTTagCompound syncData; private int operationID; - public LargeSyncPacket() {} + public SyncPacket() {} /** * Constructs a new LargeSyncPacket. */ - public LargeSyncPacket(EnumSyncType enumSyncType, EnumSyncAction enumSyncAction, int catId, NBTTagCompound syncData) { + public SyncPacket(EnumSyncType enumSyncType, EnumSyncAction enumSyncAction, int catId, NBTTagCompound syncData) { this.enumSyncType = enumSyncType; this.enumSyncAction = enumSyncAction; this.syncData = syncData; @@ -53,7 +47,7 @@ public final class LargeSyncPacket extends LargeAbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java similarity index 91% rename from src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java index 3f841ac54..eda6cea23 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/DeleteNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.npc; +package kamkeel.npcs.network.packets.data.npc; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -10,7 +10,6 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.CustomNpcs; import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; @@ -33,7 +32,7 @@ public final class DeleteNpcPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/DialogPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java similarity index 96% rename from src/main/java/kamkeel/npcs/network/packets/client/npc/DialogPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java index 0478b08ed..f826ace77 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/DialogPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.npc; +package kamkeel.npcs.network.packets.data.npc; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -40,7 +40,7 @@ public final class DialogPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java similarity index 91% rename from src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java index 87524d037..7bcaf992a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/EditNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.npc; +package kamkeel.npcs.network.packets.data.npc; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -10,7 +10,6 @@ import kamkeel.npcs.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.CustomNpcs; import noppes.npcs.client.NoppesUtil; import noppes.npcs.entity.EntityNPCInterface; @@ -33,7 +32,7 @@ public final class EditNpcPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/RolePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java similarity index 94% rename from src/main/java/kamkeel/npcs/network/packets/client/npc/RolePacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java index 484a609aa..6375d9df2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/RolePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.npc; +package kamkeel.npcs.network.packets.data.npc; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -35,7 +35,7 @@ public final class RolePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java similarity index 91% rename from src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java index 5174ba430..5f4cab288 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/UpdateNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.npc; +package kamkeel.npcs.network.packets.data.npc; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,8 +12,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; @@ -36,7 +34,7 @@ public final class UpdateNpcPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/npc/WeaponNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java similarity index 92% rename from src/main/java/kamkeel/npcs/network/packets/client/npc/WeaponNpcPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java index c1e8f48f1..8abfc9f6e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/npc/WeaponNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.npc; +package kamkeel.npcs.network.packets.data.npc; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -13,8 +13,6 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.Server; -import noppes.npcs.client.NoppesUtil; import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; @@ -41,7 +39,7 @@ public final class WeaponNpcPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java similarity index 92% rename from src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayClosePacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java index 49032706d..77057f641 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.script; +package kamkeel.npcs.network.packets.data.script; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -30,7 +30,7 @@ public final class ScriptOverlayClosePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java similarity index 92% rename from src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java index 631e5843d..97fbfa4f4 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptOverlayDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.script; +package kamkeel.npcs.network.packets.data.script; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -11,7 +11,6 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.Server; import noppes.npcs.client.gui.customoverlay.OverlayCustom; import noppes.npcs.client.ClientCacheHandler; @@ -35,7 +34,7 @@ public final class ScriptOverlayDataPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptedParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java similarity index 96% rename from src/main/java/kamkeel/npcs/network/packets/client/script/ScriptedParticlePacket.java rename to src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java index cd5cda8cd..2295a754c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/script/ScriptedParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.client.script; +package kamkeel.npcs.network.packets.data.script; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -37,7 +37,7 @@ public final class ScriptedParticlePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.DATA_PACKET; } @Override diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index 794804db7..d73dc67df 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -4,13 +4,12 @@ import cpw.mods.fml.common.network.internal.FMLProxyPacket; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumSoundOperation; -import kamkeel.npcs.network.packets.client.DisableMouseInputPacket; -import kamkeel.npcs.network.packets.client.OverlayQuestTrackingPacket; -import kamkeel.npcs.network.packets.client.SoundManagementPacket; -import kamkeel.npcs.network.packets.client.SwingPlayerArmPacket; -import kamkeel.npcs.network.packets.client.gui.IsGuiOpenPacket; +import kamkeel.npcs.network.packets.data.*; +import kamkeel.npcs.network.packets.data.gui.GuiClosePacket; +import kamkeel.npcs.network.packets.data.gui.IsGuiOpenPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.network.packets.data.large.PartyDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -295,17 +294,17 @@ public class NoppesUtilPlayer { if(npc.roleInterface != null) npc.roleInterface.interact(player); else - PacketUtil.closeGUI(player, -1 , new NBTTagCompound()); + GuiClosePacket.closeGUI(player, -1 , new NBTTagCompound()); } else if(option.optionType == EnumOptionType.DialogOption){ NoppesUtilServer.openDialog(player, npc, option.getDialog(), optionId+1); } else if(option.optionType == EnumOptionType.CommandBlock){ - PacketUtil.closeGUI(player, -1 , new NBTTagCompound()); + GuiClosePacket.closeGUI(player, -1 , new NBTTagCompound()); NoppesUtilServer.runCommand(player, npc.getCommandSenderName(), option.command); } else - PacketUtil.closeGUI(player, -1 , new NBTTagCompound()); + GuiClosePacket.closeGUI(player, -1 , new NBTTagCompound()); } public static void updateQuestLogData(ByteBuf buffer, EntityPlayerMP player) throws IOException { @@ -426,14 +425,14 @@ public class NoppesUtilPlayer { } QuestLogData data = new QuestLogData(); data.setData(player); - PacketUtil.sendGuiData(player, data.writeNBT()); + GuiDataPacket.sendGuiData(player, data.writeNBT()); } public static void sendTrackedQuest(EntityPlayerMP player) { QuestLogData data = new QuestLogData(); data.setTrackedQuestKey(player); - PacketUtil.sendPartyData(player, data.writeTrackedQuest()); + PartyDataPacket.sendPartyData(player, data.writeTrackedQuest()); } public static boolean questCompletion(EntityPlayerMP player, int questId) { @@ -635,7 +634,7 @@ public class NoppesUtilPlayer { } playerData.save(); - PacketUtil.sendQuestComplete((EntityPlayerMP)player, data.quest.writeToNBT(new NBTTagCompound())); + QuestCompletionPacket.sendQuestComplete((EntityPlayerMP)player, data.quest.writeToNBT(new NBTTagCompound())); } if(quest.type == EnumQuestType.Item && partyOptions.objectiveRequirement == EnumPartyObjectives.Shared){ diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 101823217..4e1e4f309 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -3,14 +3,18 @@ package noppes.npcs; import io.netty.buffer.ByteBuf; import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.PacketUtil; -import kamkeel.npcs.network.packets.client.npc.DialogPacket; -import kamkeel.npcs.network.packets.client.ParticlePacket; -import kamkeel.npcs.network.packets.client.script.ScriptedParticlePacket; -import kamkeel.npcs.network.packets.client.npc.DeleteNpcPacket; -import kamkeel.npcs.network.packets.client.npc.EditNpcPacket; -import kamkeel.npcs.network.packets.client.npc.RolePacket; -import kamkeel.npcs.network.packets.client.gui.GuiTeleporterPacket; +import kamkeel.npcs.network.packets.data.gui.GuiClosePacket; +import kamkeel.npcs.network.packets.data.gui.GuiErrorPacket; +import kamkeel.npcs.network.packets.data.gui.GuiOpenPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.network.packets.data.large.ScrollListPacket; +import kamkeel.npcs.network.packets.data.npc.DialogPacket; +import kamkeel.npcs.network.packets.data.ParticlePacket; +import kamkeel.npcs.network.packets.data.script.ScriptedParticlePacket; +import kamkeel.npcs.network.packets.data.npc.DeleteNpcPacket; +import kamkeel.npcs.network.packets.data.npc.EditNpcPacket; +import kamkeel.npcs.network.packets.data.npc.RolePacket; +import kamkeel.npcs.network.packets.data.gui.GuiTeleporterPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.command.server.CommandBlockLogic; import net.minecraft.entity.Entity; @@ -55,8 +59,8 @@ import java.io.IOException; import java.text.DecimalFormat; import java.util.*; -import static kamkeel.npcs.network.PacketUtil.sendScrollData; -import static kamkeel.npcs.network.PacketUtil.sendScrollGroup; +import static kamkeel.npcs.network.packets.data.large.ScrollDataPacket.sendScrollData; +import static kamkeel.npcs.network.packets.data.large.ScrollGroupPacket.sendScrollGroup; public class NoppesUtilServer { private static HashMap editingQuests = new HashMap(); @@ -298,13 +302,13 @@ public class NoppesUtilServer { return; } else{ - PacketUtil.openGUI((EntityPlayerMP)player, gui, i, j, k); + GuiOpenPacket.openGUI((EntityPlayerMP)player, gui, i, j, k); } ArrayList list = getScrollData(player, gui, npc); if(list == null || list.isEmpty()) return; - PacketUtil.sendList((EntityPlayerMP)player, list); + ScrollListPacket.sendList((EntityPlayerMP)player, list); } public static void sendOpenGuiNoDelay(final EntityPlayer player, @@ -320,13 +324,13 @@ public class NoppesUtilServer { return; } else{ - PacketUtil.openGUI((EntityPlayerMP)player, gui, i, j, k); + GuiOpenPacket.openGUI((EntityPlayerMP)player, gui, i, j, k); } ArrayList list = getScrollData(player, gui, npc); if(list == null || list.isEmpty()) return; - PacketUtil.sendList((EntityPlayerMP)player, list); + ScrollListPacket.sendList((EntityPlayerMP)player, list); } @@ -671,7 +675,7 @@ public class NoppesUtilServer { NBTTagCompound compound = option.writeNBT(); compound.setInteger("Position", pos); - PacketUtil.sendGuiData((EntityPlayerMP)player, compound); + GuiDataPacket.sendGuiData((EntityPlayerMP)player, compound); } } @@ -707,7 +711,7 @@ public class NoppesUtilServer { public static void setClonerGui(EntityPlayerMP player, int x, int y, int z){ if(player == null) return; - PacketUtil.openGUI(player, EnumGuiType.Cloner, x, y, z); + GuiOpenPacket.openGUI(player, EnumGuiType.Cloner, x, y, z); } public static void setTeleporterGUI(EntityPlayerMP player){ @@ -724,13 +728,13 @@ public class NoppesUtilServer { ContainerManageRecipes container = (ContainerManageRecipes) player.openContainer; container.setRecipe(recipe); - PacketUtil.sendGuiData((EntityPlayerMP)player, recipe.writeNBT()); + GuiDataPacket.sendGuiData((EntityPlayerMP)player, recipe.writeNBT()); } public static void sendBank(EntityPlayerMP player,Bank bank) { NBTTagCompound compound = new NBTTagCompound(); bank.writeEntityToNBT(compound); - PacketUtil.sendGuiData((EntityPlayerMP)player, compound); + GuiDataPacket.sendGuiData((EntityPlayerMP)player, compound); if(player.openContainer instanceof ContainerManageBanks){ ((ContainerManageBanks)player.openContainer).setBank(bank); @@ -756,14 +760,14 @@ public class NoppesUtilServer { } public static void sendGuiError(EntityPlayer player, int i) { - PacketUtil.errorGUI((EntityPlayerMP)player, i, new NBTTagCompound()); + GuiErrorPacket.errorGUI((EntityPlayerMP)player, i, new NBTTagCompound()); } public static void sendGuiClose(EntityPlayerMP player, int i, NBTTagCompound comp) { if(player.openContainer != player.inventoryContainer){ player.openContainer = player.inventoryContainer; } - PacketUtil.closeGUI(player, i, comp); + GuiClosePacket.closeGUI(player, i, comp); } public static Entity spawnCloneWithProtection(NBTTagCompound compound, int x, int y, diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index 95d2d05d3..88e5c4832 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -3,9 +3,8 @@ package noppes.npcs; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent; import io.netty.buffer.ByteBuf; -import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; import kamkeel.npcs.util.ByteBufUtils; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; import net.minecraft.item.ItemEditableBook; @@ -29,7 +28,6 @@ import noppes.npcs.roles.RoleCompanion; import java.io.IOException; import java.util.Iterator; -import java.util.UUID; public class PacketHandlerPlayer{ @@ -45,17 +43,7 @@ public class PacketHandlerPlayer{ } private void player(ByteBuf buffer, EntityPlayerMP player, EnumPlayerPacket type) throws IOException { - if(type == EnumPlayerPacket.MarkData){ - String uuid = ByteBufUtils.readString(buffer); - if(uuid == null) - return; - - Entity entity = NoppesUtilServer.getEntityFromUUID(player.worldObj, UUID.fromString(uuid)); - if(!(entity instanceof EntityNPCInterface)) - return; - MarkData data = MarkData.get((EntityNPCInterface) entity); - } - else if(type == EnumPlayerPacket.CompanionTalentExp){ + if(type == EnumPlayerPacket.CompanionTalentExp){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null || npc.advanced.role != EnumRoleType.Companion || player != npc.getOwner()) return; @@ -149,20 +137,20 @@ public class PacketHandlerPlayer{ if(npc == null || npc.advanced.role != EnumRoleType.Follower) return; NoppesUtilPlayer.extendFollower(player, npc); - PacketUtil.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); } else if(type == EnumPlayerPacket.FollowerState){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null || npc.advanced.role != EnumRoleType.Follower) return; NoppesUtilPlayer.changeFollowerState(player,npc); - PacketUtil.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); } else if(type == EnumPlayerPacket.RoleGet){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null || npc.advanced.role == EnumRoleType.None) return; - PacketUtil.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); } else if(type == EnumPlayerPacket.Transport){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); @@ -214,11 +202,11 @@ public class PacketHandlerPlayer{ } else if(type == EnumPlayerPacket.FactionsGet){ PlayerFactionData data = PlayerDataController.Instance.getPlayerData(player).factionData; - PacketUtil.sendGuiData(player, data.getPlayerGuiData()); + GuiDataPacket.sendGuiData(player, data.getPlayerGuiData()); } else if(type == EnumPlayerPacket.MailGet){ PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; - PacketUtil.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); } else if(type == EnumPlayerPacket.MailDelete){ long time = buffer.readLong(); @@ -232,7 +220,7 @@ public class PacketHandlerPlayer{ it.remove(); } } - PacketUtil.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); } else if(type == EnumPlayerPacket.MailSend){ if(!(player.openContainer instanceof ContainerMail)) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 8419eb7e4..4f7e0989f 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -6,7 +6,11 @@ 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.PacketUtil; +import kamkeel.npcs.network.packets.data.ScrollSelectedPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.network.packets.data.large.PartyDataPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; +import kamkeel.npcs.network.packets.data.large.ScrollListPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; @@ -104,7 +108,7 @@ public class PacketHandlerServer{ WorldProvider provider = DimensionManager.createProviderFor(id); map.put(provider.getDimensionName(), id); } - PacketUtil.sendScrollData(player, map); + ScrollDataPacket.sendScrollData(player, map); } else if(type == EnumPacketServer.TagsGet){ NoppesUtilServer.sendTagDataAll(player); } else if (type == EnumPacketServer.NpcTagsGet) { @@ -117,7 +121,7 @@ public class PacketHandlerServer{ } } compound.setTag("TagNames",tagList); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if (type == EnumPacketServer.CacheAnimation) { PlayerDataController.Instance.getPlayerData(player).animationData.cacheAnimation(buffer.readInt()); return; @@ -138,7 +142,7 @@ public class PacketHandlerServer{ } NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("Disband", true); - PacketUtil.sendPartyData(player, compound); + PartyDataPacket.sendPartyData(player, compound); } else if (type == EnumPacketServer.KickPlayer) { String kickPlayerName = ByteBufUtils.readString(buffer); EntityPlayer kickPlayer = NoppesUtilServer.getPlayerByName(kickPlayerName); @@ -338,7 +342,7 @@ public class PacketHandlerServer{ compound.setString("QuestCompleteWith", quest.completerNpc); } } - PacketUtil.sendPartyData(player, compound); + PartyDataPacket.sendPartyData(player, compound); } else { sendInviteData(player); } @@ -358,7 +362,7 @@ public class PacketHandlerServer{ list.appendTag(partyCompound); } compound.setTag("PartyInvites", list); - PacketUtil.sendPartyData(player, compound); + PartyDataPacket.sendPartyData(player, compound); } } @@ -373,7 +377,7 @@ public class PacketHandlerServer{ compound.setBoolean("PlayerScriptsEnabled", ConfigScript.GlobalPlayerScripts); compound.setBoolean("GlobalNPCScriptsEnabled", ConfigScript.GlobalNPCScripts); compound.setBoolean("ForgeScriptsEnabled", ConfigScript.GlobalForgeScripts); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if (type == EnumPacketServer.ScriptGlobalGuiDataSave) { NBTTagCompound compound = ByteBufUtils.readNBT(buffer); @@ -396,7 +400,7 @@ public class PacketHandlerServer{ else if(type == EnumPacketServer.ScriptDataGet){ NBTTagCompound compound = npc.script.writeToNBT(new NBTTagCompound()); compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } } @@ -406,7 +410,7 @@ public class PacketHandlerServer{ compound.setString("ScriptLanguage", data.getLanguage()); compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); compound.setTag("ScriptConsole", NBTTags.NBTLongStringMap(data.getConsoleText())); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); List containers = data.getScripts(); for (int i = 0; i < containers.size(); i++) { ScriptContainer container = containers.get(i); @@ -414,7 +418,7 @@ public class PacketHandlerServer{ tabCompound.setInteger("Tab",i); tabCompound.setTag("Script",container.writeToNBT(new NBTTagCompound())); tabCompound.setInteger("TotalScripts",containers.size()); - PacketUtil.sendGuiData(player, tabCompound); + GuiDataPacket.sendGuiData(player, tabCompound); } } @@ -508,7 +512,7 @@ public class PacketHandlerServer{ iw.loadScriptData(); NBTTagCompound compound = iw.getMCNbt(); compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if (type == EnumPacketServer.ScriptItemDataSave) { if (!player.capabilities.isCreativeMode) { return; @@ -531,7 +535,7 @@ public class PacketHandlerServer{ return; NBTTagCompound compound = ((TileScripted) tile).getNBT(new NBTTagCompound()); compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if (type == EnumPacketServer.ScriptBlockDataSave) { if (!player.capabilities.isCreativeMode) { return; @@ -568,7 +572,7 @@ public class PacketHandlerServer{ private void movingPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws IOException { if(type == EnumPacketServer.MovingPathGet){ - PacketUtil.sendGuiData(player, npc.ai.writeToNBT(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, npc.ai.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MovingPathSave){ npc.ai.setMovingPath(NBTTags.getIntegerArraySet(ByteBufUtils.readNBT(buffer).getTagList("MovingPathNew",10))); @@ -583,10 +587,10 @@ public class PacketHandlerServer{ TileEntity tile = player.worldObj.getTileEntity(buffer.readInt(), buffer.readInt(), buffer.readInt()); NBTTagCompound compound = new NBTTagCompound(); tile.writeToNBT(compound); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if(type == EnumPacketServer.DialogCategoriesGet){ - PacketUtil.sendScrollData(player, DialogController.Instance.getScroll()); + ScrollDataPacket.sendScrollData(player, DialogController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogsGetFromDialog){ Dialog dialog = DialogController.Instance.dialogs.get(buffer.readInt()); @@ -633,7 +637,7 @@ public class PacketHandlerServer{ Quest quest = QuestController.Instance.quests.get(dialog.quest); if(quest != null) compound.setString("DialogQuestName", quest.title); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } } else if(type == EnumPacketServer.QuestGet){ @@ -642,20 +646,20 @@ public class PacketHandlerServer{ NBTTagCompound compound = new NBTTagCompound(); if(quest.hasNewQuest()) compound.setString("NextQuestTitle", quest.getNextQuest().title); - PacketUtil.sendGuiData(player, quest.writeToNBT(compound)); + GuiDataPacket.sendGuiData(player, quest.writeToNBT(compound)); } } else if(type == EnumPacketServer.FactionGet){ NBTTagCompound compound = new NBTTagCompound(); Faction faction = FactionController.getInstance().get(buffer.readInt()); faction.writeNBT(compound); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if(type == EnumPacketServer.TagGet){ NBTTagCompound compound = new NBTTagCompound(); Tag tag = TagController.getInstance().get(buffer.readInt()); tag.writeNBT(compound); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } } @@ -673,7 +677,7 @@ public class PacketHandlerServer{ List list = new ArrayList(); for(LinkedData data : LinkedNpcController.Instance.list) list.add(data.name); - PacketUtil.sendList((EntityPlayerMP)player, list); + ScrollListPacket.sendList((EntityPlayerMP)player, list); } else if(type == EnumPacketServer.LinkedRemove){ LinkedNpcController.Instance.removeData(ByteBufUtils.readString(buffer)); @@ -681,15 +685,15 @@ public class PacketHandlerServer{ List list = new ArrayList(); for(LinkedData data : LinkedNpcController.Instance.list) list.add(data.name); - PacketUtil.sendList((EntityPlayerMP)player, list); + ScrollListPacket.sendList((EntityPlayerMP)player, list); } else if(type == EnumPacketServer.LinkedGetAll){ List list = new ArrayList(); for(LinkedData data : LinkedNpcController.Instance.list) list.add(data.name); - PacketUtil.sendList((EntityPlayerMP)player, list); + ScrollListPacket.sendList((EntityPlayerMP)player, list); if(npc != null) - PacketUtil.setSelectedList(player, npc.linkedName); + ScrollSelectedPacket.setSelectedList(player, npc.linkedName); } else if(type == EnumPacketServer.LinkedSet){ npc.linkedName = ByteBufUtils.readString(buffer); @@ -755,10 +759,10 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.RemoteFreeze){ CustomNpcs.FreezeNPCs = !CustomNpcs.FreezeNPCs; - PacketUtil.setSelectedList(player, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); + ScrollSelectedPacket.setSelectedList(player, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); } else if(type == EnumPacketServer.RemoteFreezeGet){ - PacketUtil.setSelectedList(player, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); + ScrollSelectedPacket.setSelectedList(player, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); } else if(type == EnumPacketServer.RemoteReset){ Entity entity = player.worldObj.getEntityByID(buffer.readInt()); @@ -799,12 +803,12 @@ public class PacketHandlerServer{ NoppesUtilServer.setRecipeGui(player,recipe); } else if(type == EnumPacketServer.NaturalSpawnGetAll){ - PacketUtil.sendScrollData(player, SpawnController.Instance.getScroll()); + ScrollDataPacket.sendScrollData(player, SpawnController.Instance.getScroll()); } else if(type == EnumPacketServer.NaturalSpawnGet){ SpawnData spawn = SpawnController.Instance.getSpawnData(buffer.readInt()); if(spawn != null){ - PacketUtil.sendGuiData(player, spawn.writeNBT(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, spawn.writeNBT(new NBTTagCompound())); } } else if(type == EnumPacketServer.NaturalSpawnSave){ @@ -812,28 +816,28 @@ public class PacketHandlerServer{ data.readNBT(ByteBufUtils.readNBT(buffer)); SpawnController.Instance.saveSpawnData(data); - PacketUtil.sendScrollData(player, SpawnController.Instance.getScroll()); + ScrollDataPacket.sendScrollData(player, SpawnController.Instance.getScroll()); } else if(type == EnumPacketServer.NaturalSpawnRemove){ SpawnController.Instance.removeSpawnData(buffer.readInt()); - PacketUtil.sendScrollData(player, SpawnController.Instance.getScroll()); + ScrollDataPacket.sendScrollData(player, SpawnController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogCategorySave){ DialogCategory category = new DialogCategory(); category.readNBT(ByteBufUtils.readNBT(buffer)); DialogController.Instance.saveCategory(category); - PacketUtil.sendScrollData(player, DialogController.Instance.getScroll()); + ScrollDataPacket.sendScrollData(player, DialogController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogCategoryRemove){ DialogController.Instance.removeCategory(buffer.readInt()); - PacketUtil.sendScrollData(player, DialogController.Instance.getScroll()); + ScrollDataPacket.sendScrollData(player, DialogController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogCategoryGet){ DialogCategory category = DialogController.Instance.categories.get(buffer.readInt()); if(category != null){ NBTTagCompound comp = category.writeNBT(new NBTTagCompound()); comp.removeTag("Dialogs"); - PacketUtil.sendGuiData(player, comp); + GuiDataPacket.sendGuiData(player, comp); } } else if(type == EnumPacketServer.DialogSave){ @@ -882,7 +886,7 @@ public class PacketHandlerServer{ if(option != null && option.hasDialog()){ NBTTagCompound compound = option.writeNBT(); compound.setInteger("Position", slot); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } } else if(type == EnumPacketServer.DialogNpcRemove){ @@ -893,7 +897,7 @@ public class PacketHandlerServer{ if(category != null){ NBTTagCompound comp = category.writeNBT(new NBTTagCompound()); comp.removeTag("Dialogs"); - PacketUtil.sendGuiData(player, comp); + GuiDataPacket.sendGuiData(player, comp); } } else if(type == EnumPacketServer.QuestCategorySave){ @@ -932,7 +936,7 @@ public class PacketHandlerServer{ compound.setString("2", quest2.title); if(quest3 != null) compound.setString("3", quest3.title); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if(type == EnumPacketServer.QuestRemove){ Quest quest = QuestController.Instance.quests.get(buffer.readInt()); @@ -981,8 +985,8 @@ public class PacketHandlerServer{ return; RoleTransporter role = (RoleTransporter) npc.roleInterface; if(role.hasTransport()){ - PacketUtil.sendGuiData(player, role.getLocation().writeNBT()); - PacketUtil.setSelectedList(player, role.getLocation().category.title); + GuiDataPacket.sendGuiData(player, role.getLocation().writeNBT()); + ScrollSelectedPacket.setSelectedList(player, role.getLocation().category.title); } } else if(type == EnumPacketServer.FactionSet){ @@ -995,14 +999,14 @@ public class PacketHandlerServer{ NoppesUtilServer.sendFactionDataAll(player); NBTTagCompound compound = new NBTTagCompound(); faction.writeNBT(compound); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if(type == EnumPacketServer.FactionRemove){ FactionController.getInstance().delete(buffer.readInt()); NoppesUtilServer.sendFactionDataAll(player); NBTTagCompound compound = new NBTTagCompound(); (new Faction()).writeNBT(compound); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if(type == EnumPacketServer.TagSet){ this.setTags(npc,buffer); @@ -1014,14 +1018,14 @@ public class PacketHandlerServer{ NoppesUtilServer.sendTagDataAll(player); NBTTagCompound compound = new NBTTagCompound(); tag.writeNBT(compound); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if(type == EnumPacketServer.TagRemove){ TagController.getInstance().delete(buffer.readInt()); NoppesUtilServer.sendTagDataAll(player); NBTTagCompound compound = new NBTTagCompound(); (new Tag()).writeNBT(compound); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if(type == EnumPacketServer.PlayerDataGet){ int id = buffer.readInt(); @@ -1040,21 +1044,21 @@ public class PacketHandlerServer{ NoppesUtilServer.regenPlayerData(player); } else if(type == EnumPacketServer.MainmenuDisplayGet){ - PacketUtil.sendGuiData(player, npc.display.writeToNBT(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, npc.display.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuDisplaySave){ npc.display.readToNBT(ByteBufUtils.readNBT(buffer)); npc.updateClient = true; } else if(type == EnumPacketServer.MainmenuStatsGet){ - PacketUtil.sendGuiData(player, npc.stats.writeToNBT(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, npc.stats.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuStatsSave){ npc.stats.readToNBT(ByteBufUtils.readNBT(buffer)); npc.updateClient = true; } else if(type == EnumPacketServer.MainmenuInvGet){ - PacketUtil.sendGuiData(player, npc.inventory.writeEntityToNBT(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, npc.inventory.writeEntityToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuInvSave){ npc.inventory.readEntityFromNBT(ByteBufUtils.readNBT(buffer)); @@ -1062,7 +1066,7 @@ public class PacketHandlerServer{ npc.updateClient = true; } else if(type == EnumPacketServer.MainmenuAIGet){ - PacketUtil.sendGuiData(player, npc.ai.writeToNBT(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, npc.ai.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuAISave){ npc.ai.readToNBT(ByteBufUtils.readNBT(buffer)); @@ -1071,7 +1075,7 @@ public class PacketHandlerServer{ npc.updateClient = true; } else if(type == EnumPacketServer.MainmenuAdvancedGet){ - PacketUtil.sendGuiData(player, npc.advanced.writeToNBT(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, npc.advanced.writeToNBT(new NBTTagCompound())); } else if(type == EnumPacketServer.MainmenuAdvancedSave){ npc.advanced.readToNBT(ByteBufUtils.readNBT(buffer)); @@ -1102,10 +1106,10 @@ public class PacketHandlerServer{ if(npc.advanced.job == EnumJobType.Spawner) ((JobSpawner)npc.jobInterface).cleanCompound(compound); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); if(npc.advanced.job == EnumJobType.Spawner) - PacketUtil.sendGuiData(player, ((JobSpawner)npc.jobInterface).getTitles()); + GuiDataPacket.sendGuiData(player, ((JobSpawner)npc.jobInterface).getTitles()); } else if(type == EnumPacketServer.JobSpawnerAdd){ if(npc.advanced.job != EnumJobType.Spawner) @@ -1119,7 +1123,7 @@ public class PacketHandlerServer{ else{ job.setJobCompound(buffer.readInt(), ByteBufUtils.readNBT(buffer)); } - PacketUtil.sendGuiData(player, job.getTitles()); + GuiDataPacket.sendGuiData(player, job.getTitles()); } else if(type == EnumPacketServer.RoleCompanionUpdate){ if(npc.advanced.role != EnumRoleType.Companion) @@ -1132,7 +1136,7 @@ public class PacketHandlerServer{ return; JobSpawner job = (JobSpawner) npc.jobInterface; job.setJobCompound(buffer.readInt(), null); - PacketUtil.sendGuiData(player, job.getTitles()); + GuiDataPacket.sendGuiData(player, job.getTitles()); } else if(type == EnumPacketServer.RoleSave){ npc.roleInterface.readFromNBT(ByteBufUtils.readNBT(buffer)); @@ -1143,7 +1147,7 @@ public class PacketHandlerServer{ return; NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("RoleData", true); - PacketUtil.sendGuiData(player, npc.roleInterface.writeToNBT(compound)); + GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(compound)); } else if(type == EnumPacketServer.MerchantUpdate){ Entity entity = player.worldObj.getEntityByID(buffer.readInt()); @@ -1169,7 +1173,7 @@ public class PacketHandlerServer{ npc.updateAI = true; } else if(type == EnumPacketServer.TransformGet){ - PacketUtil.sendGuiData(player, npc.transform.writeOptions(new NBTTagCompound())); + GuiDataPacket.sendGuiData(player, npc.transform.writeOptions(new NBTTagCompound())); } else if(type == EnumPacketServer.TransformLoad){ if(npc.transform.isValid()) @@ -1193,20 +1197,20 @@ public class PacketHandlerServer{ else if(type == EnumPacketServer.AnimationGet){ Animation animation = (Animation) AnimationController.getInstance().get(buffer.readInt()); NBTTagCompound compound = animation.writeToNBT(); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if(type == EnumPacketServer.AnimationRemove){ AnimationController.getInstance().delete(buffer.readInt()); NoppesUtilServer.sendAnimationDataAll(player); NBTTagCompound compound = (new Animation()).writeToNBT(); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if(type == EnumPacketServer.AnimationSave){ Animation animation = new Animation(); animation.readFromNBT(ByteBufUtils.readNBT(buffer)); AnimationController.getInstance().saveAnimation(animation); NoppesUtilServer.sendAnimationDataAll(player); - PacketUtil.sendGuiData(player, animation.writeToNBT()); + GuiDataPacket.sendGuiData(player, animation.writeToNBT()); } else blockPackets(type, buffer, player); @@ -1235,7 +1239,7 @@ public class PacketHandlerServer{ compound.setTag("List", list); compound.setTag("ListDate", listDate); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else warn(player,"WE 1 tried todo something with the wrong tool, probably a hacker"); @@ -1291,7 +1295,7 @@ public class PacketHandlerServer{ boolean bo = ServerCloneController.Instance.getCloneData(null, ByteBufUtils.readString(buffer), buffer.readInt()) != null; NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("NameExists", bo); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if(type == EnumPacketServer.CloneSave){ PlayerData data = PlayerDataController.Instance.getPlayerData(player); @@ -1323,7 +1327,7 @@ public class PacketHandlerServer{ compound.setTag("List", list); compound.setTag("ListDate", listDate); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if(type == EnumPacketServer.CloneList){ NBTTagList list = new NBTTagList(); @@ -1339,14 +1343,14 @@ public class PacketHandlerServer{ compound.setTag("List", list); compound.setTag("ListDate", listDate); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if (type == EnumPacketServer.CloneTagList) { int tab = buffer.readInt(); TagMap tagMap = ServerTagMapController.Instance.getTagMap(tab); NBTTagCompound compound = new NBTTagCompound(); compound.setTag("CloneTags", tagMap.writeNBT()); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if (type == EnumPacketServer.CloneAllTags) { NBTTagCompound compound = new NBTTagCompound(); @@ -1358,7 +1362,7 @@ public class PacketHandlerServer{ validTagList.appendTag(tagCompound); } compound.setTag("AllTags", validTagList); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if (type == EnumPacketServer.CloneAllTagsShort) { NBTTagCompound compound = new NBTTagCompound(); @@ -1370,7 +1374,7 @@ public class PacketHandlerServer{ validTagList.appendTag(tagCompound); } compound.setTag("ShortTags", validTagList); - PacketUtil.sendGuiData(player, compound); + GuiDataPacket.sendGuiData(player, compound); } else if (type == EnumPacketServer.TagSet) { EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index c9e933f70..f4b40de2a 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -5,15 +5,15 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumSoundOperation; import kamkeel.npcs.network.enums.EnumSyncAction; import kamkeel.npcs.network.enums.EnumSyncType; -import kamkeel.npcs.network.packets.client.MarkDataPacket; -import kamkeel.npcs.network.packets.client.SoundManagementPacket; -import kamkeel.npcs.network.packets.client.VillagerListPacket; -import kamkeel.npcs.network.packets.client.large.LargeClonerPacket; -import kamkeel.npcs.network.packets.client.large.LargeSyncPacket; +import kamkeel.npcs.network.packets.data.MarkDataPacket; +import kamkeel.npcs.network.packets.data.SoundManagementPacket; +import kamkeel.npcs.network.packets.data.VillagerListPacket; +import kamkeel.npcs.network.packets.data.gui.GuiOpenPacket; +import kamkeel.npcs.network.packets.data.ClonerPacket; +import kamkeel.npcs.network.packets.data.large.SyncPacket; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; @@ -26,7 +26,6 @@ import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.MathHelper; import net.minecraft.util.StatCollector; @@ -101,7 +100,7 @@ public class ServerEventsHandler { return; PlayerData data = PlayerDataController.Instance.getPlayerData(event.entityPlayer); ServerCloneController.Instance.cleanTags(compound); - PacketHandler.Instance.sendToPlayer(new LargeClonerPacket(compound), (EntityPlayerMP)event.entityPlayer); + PacketHandler.Instance.sendToPlayer(new ClonerPacket(compound), (EntityPlayerMP)event.entityPlayer); data.cloned = compound; if (event.target instanceof EntityNPCInterface) { NoppesUtilServer.setEditingNpc(event.entityPlayer, (EntityNPCInterface) event.target); @@ -113,7 +112,7 @@ public class ServerEventsHandler { return; NoppesUtilServer.setEditingNpc(event.entityPlayer, (EntityNPCInterface)event.target); event.setCanceled(true); - PacketUtil.openGUI((EntityPlayerMP)event.entityPlayer, EnumGuiType.Script, 0, 0, 0); + GuiOpenPacket.openGUI((EntityPlayerMP)event.entityPlayer, EnumGuiType.Script, 0, 0, 0); if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ LogWriter.script(String.format("[%s] (Player) %s OPEN NPC %s (%s, %s, %s) [%s]", "SCRIPTER", event.entityPlayer.getCommandSenderName(), ((EntityNPCInterface)(event.target)).display.getName(), (int)(event.target).posX, (int)(event.target).posY, (int)(event.target).posZ, (event.target).worldObj.getWorldInfo().getWorldName())); } @@ -199,7 +198,7 @@ public class ServerEventsHandler { } if(block == Blocks.crafting_table && event.action == Action.RIGHT_CLICK_BLOCK && !player.worldObj.isRemote){ - PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + PacketHandler.Instance.sendToPlayer(new SyncPacket( EnumSyncType.WORKBENCH_RECIPES, EnumSyncAction.RELOAD, -1, @@ -207,7 +206,7 @@ public class ServerEventsHandler { ), (EntityPlayerMP) player); } if(block == CustomItems.carpentyBench && event.action == Action.RIGHT_CLICK_BLOCK && !player.worldObj.isRemote){ - PacketHandler.Instance.sendToPlayer(new LargeSyncPacket( + PacketHandler.Instance.sendToPlayer(new SyncPacket( EnumSyncType.CARPENTRY_RECIPES, EnumSyncAction.RELOAD, -1, diff --git a/src/main/java/noppes/npcs/blocks/BlockBook.java b/src/main/java/noppes/npcs/blocks/BlockBook.java index c67fa3ebe..da673fe96 100644 --- a/src/main/java/noppes/npcs/blocks/BlockBook.java +++ b/src/main/java/noppes/npcs/blocks/BlockBook.java @@ -1,7 +1,7 @@ package noppes.npcs.blocks; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.packets.client.gui.GuiOpenBookPacket; +import kamkeel.npcs.network.packets.data.gui.GuiOpenBookPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; diff --git a/src/main/java/noppes/npcs/blocks/BlockMailbox.java b/src/main/java/noppes/npcs/blocks/BlockMailbox.java index c10056be7..df28b6364 100644 --- a/src/main/java/noppes/npcs/blocks/BlockMailbox.java +++ b/src/main/java/noppes/npcs/blocks/BlockMailbox.java @@ -2,7 +2,7 @@ package noppes.npcs.blocks; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.data.gui.GuiOpenPacket; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -41,7 +41,7 @@ public class BlockMailbox extends BlockContainer{ @Override public boolean onBlockActivated(World par1World, int i, int j, int k, EntityPlayer player, int par6, float par7, float par8, float par9){ if(!par1World.isRemote){ - PacketUtil.openGUI((EntityPlayerMP)player, EnumGuiType.PlayerMailbox, i, j, k); + GuiOpenPacket.openGUI((EntityPlayerMP)player, EnumGuiType.PlayerMailbox, i, j, k); } return true; } diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index 4834c9d25..dbd05a62e 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -1,9 +1,29 @@ package noppes.npcs.constants; public enum EnumPlayerPacket { - FollowerHire,FollowerExtend,Trader, FollowerState, Transport, BankUnlock, BankUpgrade, - Dialog, QuestLog, TrackedQuest, CheckQuestCompletion, BankSlotOpen, FactionsGet, - MailGet, MailDelete, MailSend, MailRead, MailboxOpenMail, - SignSave, SaveBook, CompanionOpenInv, RoleGet, KeyPressed, - MouseClicked, CompanionTalentExp, ScreenSize, MarkData + FollowerHire, + FollowerExtend, + FollowerState, + Transport, + BankUnlock, + BankUpgrade, + Dialog, + QuestLog, + TrackedQuest, + CheckQuestCompletion, + BankSlotOpen, + FactionsGet, + MailGet, + MailDelete, + MailSend, + MailRead, + MailboxOpenMail, + SignSave, + SaveBook, + CompanionOpenInv, + RoleGet, + KeyPressed, + MouseClicked, + CompanionTalentExp, + ScreenSize } diff --git a/src/main/java/noppes/npcs/controllers/CustomGuiController.java b/src/main/java/noppes/npcs/controllers/CustomGuiController.java index c0800dce5..2e1423820 100644 --- a/src/main/java/noppes/npcs/controllers/CustomGuiController.java +++ b/src/main/java/noppes/npcs/controllers/CustomGuiController.java @@ -2,8 +2,8 @@ package noppes.npcs.controllers; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.PacketUtil; -import kamkeel.npcs.network.packets.client.script.ScriptOverlayDataPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.network.packets.data.script.ScriptOverlayDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -29,13 +29,13 @@ public class CustomGuiController { EntityPlayerMP entityPlayerMP = (EntityPlayerMP) player.getMCEntity(); entityPlayerMP.openGui(CustomNpcs.instance, EnumGuiType.CustomGui.ordinal(), player.getWorld().getMCWorld(), gui.getSlots().size(), 0, 0); ((ContainerCustomGui)((EntityPlayerMP)player.getMCEntity()).openContainer).setGui(gui, (EntityPlayer)player.getMCEntity()); - PacketUtil.sendGuiData((EntityPlayerMP)player.getMCEntity(), gui.toNBT()); + GuiDataPacket.sendGuiData((EntityPlayerMP)player.getMCEntity(), gui.toNBT()); } public static boolean updateGui(IPlayer player, ScriptGui gui) { if (((EntityPlayerMP)player.getMCEntity()).openContainer instanceof ContainerCustomGui) { ((ContainerCustomGui)((EntityPlayerMP)player.getMCEntity()).openContainer).setGui(gui, (EntityPlayer)player.getMCEntity()); - PacketUtil.sendGuiData((EntityPlayerMP)player.getMCEntity(), gui.toNBT()); + GuiDataPacket.sendGuiData((EntityPlayerMP)player.getMCEntity(), gui.toNBT()); return true; } else { return false; diff --git a/src/main/java/noppes/npcs/controllers/PartyController.java b/src/main/java/noppes/npcs/controllers/PartyController.java index 98e152e97..4dcad43f3 100644 --- a/src/main/java/noppes/npcs/controllers/PartyController.java +++ b/src/main/java/noppes/npcs/controllers/PartyController.java @@ -1,6 +1,8 @@ package noppes.npcs.controllers; -import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.data.AchievementPacket; +import kamkeel.npcs.network.packets.data.ChatAlertPacket; +import kamkeel.npcs.network.packets.data.large.PartyDataPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; @@ -67,8 +69,8 @@ public class PartyController { playerData.partyUUID = null; if(player != null){ sendInviteData((EntityPlayerMP) player); - PacketUtil.sendAchievement((EntityPlayerMP) player, true, "party.disbandAlert", ""); - PacketUtil.sendChatAlert((EntityPlayerMP) player, "\u00A7c", "party.disbandMessage", "!"); + AchievementPacket.sendAchievement((EntityPlayerMP) player, true, "party.disbandAlert", ""); + ChatAlertPacket.sendChatAlert((EntityPlayerMP) player, "\u00A7c", "party.disbandMessage", "!"); } } } @@ -83,14 +85,14 @@ public class PartyController { for(String name : party.getPlayerNames()){ EntityPlayer playerMP = NoppesUtilServer.getPlayerByName(name); if(playerMP != null){ - PacketUtil.sendAchievement((EntityPlayerMP) playerMP, true, "party.kickOtherAlert", kickPlayerName); - PacketUtil.sendChatAlert((EntityPlayerMP) playerMP, "\u00A7e", kickPlayerName, " \u00A74", "party.kickOtherChat", "!"); + AchievementPacket.sendAchievement((EntityPlayerMP) playerMP, true, "party.kickOtherAlert", kickPlayerName); + ChatAlertPacket.sendChatAlert((EntityPlayerMP) playerMP, "\u00A7e", kickPlayerName, " \u00A74", "party.kickOtherChat", "!"); } } if(kickPlayer != null){ - PacketUtil.sendAchievement((EntityPlayerMP) kickPlayer, true, "party.kickYouAlert", ""); - PacketUtil.sendChatAlert((EntityPlayerMP) kickPlayer, "\u00A74", "party.kickYouChat", "!"); + AchievementPacket.sendAchievement((EntityPlayerMP) kickPlayer, true, "party.kickYouAlert", ""); + ChatAlertPacket.sendChatAlert((EntityPlayerMP) kickPlayer, "\u00A74", "party.kickYouChat", "!"); } } @@ -101,12 +103,12 @@ public class PartyController { for(String name : party.getPlayerNames()){ EntityPlayer playerMP = NoppesUtilServer.getPlayerByName(name); if(playerMP != null){ - PacketUtil.sendAchievement((EntityPlayerMP) playerMP, true, "party.leaveOtherAlert", leavingPlayer.getCommandSenderName()); - PacketUtil.sendChatAlert((EntityPlayerMP) playerMP, "\u00A7e", leavingPlayer.getCommandSenderName(), " \u00A7c", "party.leaveOtherChat", "!"); + AchievementPacket.sendAchievement((EntityPlayerMP) playerMP, true, "party.leaveOtherAlert", leavingPlayer.getCommandSenderName()); + ChatAlertPacket.sendChatAlert((EntityPlayerMP) playerMP, "\u00A7e", leavingPlayer.getCommandSenderName(), " \u00A7c", "party.leaveOtherChat", "!"); } } - PacketUtil.sendAchievement((EntityPlayerMP) leavingPlayer, true, "party.leaveYouAlert", ""); - PacketUtil.sendChatAlert((EntityPlayerMP) leavingPlayer, "\u00A7c", "party.leaveYouChat", "!"); + AchievementPacket.sendAchievement((EntityPlayerMP) leavingPlayer, true, "party.leaveYouAlert", ""); + ChatAlertPacket.sendChatAlert((EntityPlayerMP) leavingPlayer, "\u00A7c", "party.leaveYouChat", "!"); } public void pingPartyUpdate(Party party){ @@ -133,7 +135,7 @@ public class PartyController { if(playerMP != null){ PlayerData playerData = PlayerDataController.Instance.getPlayerData(playerMP); if(playerData != null){ - PacketUtil.sendPartyData((EntityPlayerMP) playerMP, compound); + PartyDataPacket.sendPartyData((EntityPlayerMP) playerMP, compound); } } } @@ -164,7 +166,7 @@ public class PartyController { if(playerMP != null){ PlayerData playerData = PlayerDataController.Instance.getPlayerData(playerMP); if(playerData != null){ - PacketUtil.sendPartyData((EntityPlayerMP) playerMP, compound); + PartyDataPacket.sendPartyData((EntityPlayerMP) playerMP, compound); } } } @@ -182,7 +184,7 @@ public class PartyController { System.arraycopy(chatAlerts, 0, args, 1, chatAlerts.length); args[args.length - 1] = "!"; // Add "!" at the end - PacketUtil.sendChatAlert((EntityPlayerMP) playerMP, args); + ChatAlertPacket.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 df8c8b165..20d6236e3 100644 --- a/src/main/java/noppes/npcs/controllers/PlayerQuestController.java +++ b/src/main/java/noppes/npcs/controllers/PlayerQuestController.java @@ -1,6 +1,7 @@ package noppes.npcs.controllers; -import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.data.AchievementPacket; +import kamkeel.npcs.network.packets.data.ChatAlertPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.ChatComponentTranslation; @@ -44,8 +45,8 @@ public class PlayerQuestController { data.activeQuests.put(questData.quest.id,questData); if (questData.sendAlerts) { - PacketUtil.sendAchievement((EntityPlayerMP) player, false, "quest.newquest", questData.quest.title); - PacketUtil.sendChatAlert((EntityPlayerMP) player, "quest.newquest", ": ", questData.quest.title); + AchievementPacket.sendAchievement((EntityPlayerMP) player, false, "quest.newquest", questData.quest.title); + ChatAlertPacket.sendChatAlert((EntityPlayerMP) player, "quest.newquest", ": ", questData.quest.title); } playerData.updateClient = true; } else { @@ -75,8 +76,8 @@ public class PlayerQuestController { } } if (questData != null && questData.sendAlerts) { - PacketUtil.sendAchievement((EntityPlayerMP) player, false, "quest.completed", questData.quest.title); - PacketUtil.sendChatAlert((EntityPlayerMP) player, "quest.completed", ": ", questData.quest.title); + AchievementPacket.sendAchievement((EntityPlayerMP) player, false, "quest.completed", questData.quest.title); + ChatAlertPacket.sendChatAlert((EntityPlayerMP) player, "quest.completed", ": ", questData.quest.title); } playerdata.updateClient = true; } @@ -97,8 +98,8 @@ public class PlayerQuestController { } } if (questData != null && questData.sendAlerts) { - PacketUtil.sendAchievement((EntityPlayerMP) player, false, "quest.completed", questData.quest.title); - PacketUtil.sendChatAlert((EntityPlayerMP) player, "quest.completed", ": ", questData.quest.title); + AchievementPacket.sendAchievement((EntityPlayerMP) player, false, "quest.completed", questData.quest.title); + ChatAlertPacket.sendChatAlert((EntityPlayerMP) player, "quest.completed", ": ", questData.quest.title); } playerdata.updateClient = true; } diff --git a/src/main/java/noppes/npcs/controllers/data/BankData.java b/src/main/java/noppes/npcs/controllers/data/BankData.java index 04525077e..d08001f18 100644 --- a/src/main/java/noppes/npcs/controllers/data/BankData.java +++ b/src/main/java/noppes/npcs/controllers/data/BankData.java @@ -1,6 +1,6 @@ package noppes.npcs.controllers.data; -import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; @@ -108,7 +108,7 @@ public class BankData { container.setCurrency(item); } - PacketUtil.sendGuiData((EntityPlayerMP) player, compound); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); } private ContainerNPCBankInterface getContainer(EntityPlayer player){ Container con = player.openContainer; diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerData.java b/src/main/java/noppes/npcs/controllers/data/PlayerData.java index b79f3f092..19f9a8396 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerData.java @@ -1,7 +1,8 @@ package noppes.npcs.controllers.data; import kamkeel.npcs.addon.DBCAddon; -import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.data.AchievementPacket; +import kamkeel.npcs.network.packets.data.ChatAlertPacket; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -265,8 +266,8 @@ public class PlayerData implements IExtendedEntityProperties, IPlayerData { if (party != null && this.partyUUID == null && !this.partyInvites.contains(party.getPartyUUID())) { this.partyInvites.add(party.getPartyUUID()); - PacketUtil.sendAchievement((EntityPlayerMP) player, true, "party.inviteAlert", party.getPartyLeader().getCommandSenderName()); - PacketUtil.sendChatAlert((EntityPlayerMP) player, "\u00A7a", "party.inviteChat", " ", party.getPartyLeader().getCommandSenderName(), "!"); + AchievementPacket.sendAchievement((EntityPlayerMP) player, true, "party.inviteAlert", party.getPartyLeader().getCommandSenderName()); + ChatAlertPacket.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 7f984c1b6..134f80312 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java @@ -1,8 +1,9 @@ package noppes.npcs.controllers.data; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.PacketUtil; -import kamkeel.npcs.network.packets.client.OverlayQuestTrackingPacket; +import kamkeel.npcs.network.packets.data.AchievementPacket; +import kamkeel.npcs.network.packets.data.ChatAlertPacket; +import kamkeel.npcs.network.packets.data.OverlayQuestTrackingPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; @@ -219,8 +220,8 @@ public class PlayerQuestData implements IPlayerQuestData { QuestData questdata = new QuestData(quest); activeQuests.put(id, questdata); - PacketUtil.sendAchievement((EntityPlayerMP) parent.player, false, "quest.newquest", quest.title); - PacketUtil.sendChatAlert((EntityPlayerMP) parent.player, "quest.newquest", ": ", quest.title); + AchievementPacket.sendAchievement((EntityPlayerMP) parent.player, false, "quest.newquest", quest.title); + ChatAlertPacket.sendChatAlert((EntityPlayerMP) parent.player, "quest.newquest", ": ", quest.title); parent.updateClient = true; } diff --git a/src/main/java/noppes/npcs/controllers/data/Quest.java b/src/main/java/noppes/npcs/controllers/data/Quest.java index 8bed1a782..0643b20c9 100644 --- a/src/main/java/noppes/npcs/controllers/data/Quest.java +++ b/src/main/java/noppes/npcs/controllers/data/Quest.java @@ -1,6 +1,6 @@ package noppes.npcs.controllers.data; -import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.data.QuestCompletionPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; @@ -139,7 +139,7 @@ public class Quest implements ICompatibilty, IQuest { public boolean instantComplete(EntityPlayer player, QuestData data) { if(completion == EnumQuestCompletion.Instant && NoppesUtilPlayer.questCompletion((EntityPlayerMP) player, data.quest.id)){ - PacketUtil.sendQuestComplete((EntityPlayerMP)player, data.quest.writeToNBT(new NBTTagCompound())); + QuestCompletionPacket.sendQuestComplete((EntityPlayerMP)player, data.quest.writeToNBT(new NBTTagCompound())); return true; } return false; diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 5a54dc177..6d5adbd45 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -8,12 +8,12 @@ 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.PacketUtil; import kamkeel.npcs.network.enums.EnumSoundOperation; -import kamkeel.npcs.network.packets.client.ChatBubblePacket; -import kamkeel.npcs.network.packets.client.SoundManagementPacket; -import kamkeel.npcs.network.packets.client.npc.UpdateNpcPacket; -import kamkeel.npcs.network.packets.client.npc.WeaponNpcPacket; +import kamkeel.npcs.network.packets.data.ChatBubblePacket; +import kamkeel.npcs.network.packets.data.QuestCompletionPacket; +import kamkeel.npcs.network.packets.data.SoundManagementPacket; +import kamkeel.npcs.network.packets.data.npc.UpdateNpcPacket; +import kamkeel.npcs.network.packets.data.npc.WeaponNpcPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -454,7 +454,7 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti } else if (data != null){ NoppesUtilPlayer.questCompletion((EntityPlayerMP) player, data.quest.id); - PacketUtil.sendQuestComplete((EntityPlayerMP)player, data.quest.writeToNBT(new NBTTagCompound())); + QuestCompletionPacket.sendQuestComplete((EntityPlayerMP)player, data.quest.writeToNBT(new NBTTagCompound())); } else if (dialog != null){ NoppesUtilServer.openDialog(player, this, dialog, 0); diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index 34297e9b4..86485c5b6 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -1,8 +1,10 @@ package noppes.npcs.scripted.entity; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.PacketUtil; -import kamkeel.npcs.network.packets.client.script.ScriptOverlayClosePacket; +import kamkeel.npcs.network.packets.data.AchievementPacket; +import kamkeel.npcs.network.packets.data.ChatAlertPacket; +import kamkeel.npcs.network.packets.data.gui.GuiClosePacket; +import kamkeel.npcs.network.packets.data.script.ScriptOverlayClosePacket; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; @@ -265,8 +267,8 @@ public class ScriptPlayer extends ScriptLivingBase QuestData questdata = new QuestData(quest); data.questData.activeQuests.put(id, questdata); - PacketUtil.sendAchievement((EntityPlayerMP) player, false, "quest.newquest", quest.title); - PacketUtil.sendChatAlert((EntityPlayerMP) player, "quest.newquest", ": ", quest.title); + AchievementPacket.sendAchievement((EntityPlayerMP) player, false, "quest.newquest", quest.title); + ChatAlertPacket.sendChatAlert((EntityPlayerMP) player, "quest.newquest", ": ", quest.title); data.updateClient = true; } @@ -758,7 +760,7 @@ public class ScriptPlayer extends ScriptLivingBase public void closeGui() { ((EntityPlayerMP)this.entity).closeContainer(); - PacketUtil.closeGUI(player, -1 , new NBTTagCompound()); + GuiClosePacket.closeGUI(player, -1 , new NBTTagCompound()); } public void showCustomOverlay(ICustomOverlay overlay) { From 68404d353f513dede791e62f818a72653f9cfbcc Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 13:54:55 -0500 Subject: [PATCH 052/157] more Data packet --- src/main/java/kamkeel/npcs/command/ConfigCommand.java | 2 +- src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java | 2 +- src/main/java/noppes/npcs/blocks/BlockWaypoint.java | 2 +- src/main/java/noppes/npcs/controllers/data/AnimationData.java | 2 +- src/main/java/noppes/npcs/controllers/data/MarkData.java | 2 +- src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/kamkeel/npcs/command/ConfigCommand.java b/src/main/java/kamkeel/npcs/command/ConfigCommand.java index 1f9dee87d..f31a1dc18 100644 --- a/src/main/java/kamkeel/npcs/command/ConfigCommand.java +++ b/src/main/java/kamkeel/npcs/command/ConfigCommand.java @@ -3,7 +3,7 @@ package kamkeel.npcs.command; import foxz.utils.Market; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumConfigOperation; -import kamkeel.npcs.network.packets.client.ConfigCommandPacket; +import kamkeel.npcs.network.packets.data.ConfigCommandPacket; import net.minecraft.block.Block; import net.minecraft.block.BlockIce; import net.minecraft.block.BlockLeavesBase; diff --git a/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java b/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java index fb595bb0b..70c5488a3 100644 --- a/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java +++ b/src/main/java/noppes/npcs/blocks/BlockNpcRedstone.java @@ -1,7 +1,7 @@ package noppes.npcs.blocks; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.packets.client.gui.GuiRedstonePacket; +import kamkeel.npcs.network.packets.data.gui.GuiRedstonePacket; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/noppes/npcs/blocks/BlockWaypoint.java b/src/main/java/noppes/npcs/blocks/BlockWaypoint.java index caff78b41..7920b46d9 100644 --- a/src/main/java/noppes/npcs/blocks/BlockWaypoint.java +++ b/src/main/java/noppes/npcs/blocks/BlockWaypoint.java @@ -1,7 +1,7 @@ package noppes.npcs.blocks; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.packets.client.gui.GuiWaypointPacket; +import kamkeel.npcs.network.packets.data.gui.GuiWaypointPacket; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/noppes/npcs/controllers/data/AnimationData.java b/src/main/java/noppes/npcs/controllers/data/AnimationData.java index 82e6abcac..0b27f1e05 100644 --- a/src/main/java/noppes/npcs/controllers/data/AnimationData.java +++ b/src/main/java/noppes/npcs/controllers/data/AnimationData.java @@ -4,7 +4,7 @@ package noppes.npcs.controllers.data; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.packets.client.UpdateAnimationsPacket; +import kamkeel.npcs.network.packets.data.UpdateAnimationsPacket; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; diff --git a/src/main/java/noppes/npcs/controllers/data/MarkData.java b/src/main/java/noppes/npcs/controllers/data/MarkData.java index 3f50be35f..15f89ddda 100644 --- a/src/main/java/noppes/npcs/controllers/data/MarkData.java +++ b/src/main/java/noppes/npcs/controllers/data/MarkData.java @@ -1,7 +1,7 @@ package noppes.npcs.controllers.data; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.packets.client.MarkDataPacket; +import kamkeel.npcs.network.packets.data.MarkDataPacket; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java b/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java index 7ae32545b..92b408696 100644 --- a/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java +++ b/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java @@ -1,7 +1,7 @@ package noppes.npcs.entity.data; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.packets.client.PlayerUpdateSkinOverlaysPacket; +import kamkeel.npcs.network.packets.data.PlayerUpdateSkinOverlaysPacket; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.api.ISkinOverlay; From 702df25036028d94843c7319b8f54622d896a9cc Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 13:58:09 -0500 Subject: [PATCH 053/157] Reorganization again --- .../kamkeel/npcs/network/PacketChannel.java | 10 ++-- .../kamkeel/npcs/network/PacketHandler.java | 18 +++--- ...umPacketType.java => EnumChannelType.java} | 2 +- .../npcs/network/enums/EnumClientPacket.java | 58 ------------------- .../npcs/network/enums/EnumDataPacket.java | 55 ++++++++++++++++++ ...mInfoPacket.java => EnumPlayerPacket.java} | 2 +- .../packets/data/AchievementPacket.java | 4 +- .../network/packets/data/ChatAlertPacket.java | 4 +- .../packets/data/ChatBubblePacket.java | 4 +- .../network/packets/data/ClonerPacket.java | 4 +- .../packets/data/ConfigCommandPacket.java | 4 +- .../packets/data/DisableMouseInputPacket.java | 4 +- .../network/packets/data/LoginPacket.java | 4 +- .../network/packets/data/MarkDataPacket.java | 4 +- .../data/OverlayQuestTrackingPacket.java | 4 +- .../network/packets/data/ParticlePacket.java | 4 +- .../data/PlayerUpdateSkinOverlaysPacket.java | 4 +- .../packets/data/QuestCompletionPacket.java | 4 +- .../packets/data/ScrollSelectedPacket.java | 4 +- .../packets/data/SoundManagementPacket.java | 4 +- .../packets/data/SwingPlayerArmPacket.java | 4 +- .../packets/data/UpdateAnimationsPacket.java | 4 +- .../packets/data/VillagerListPacket.java | 4 +- .../packets/data/gui/GuiClosePacket.java | 4 +- .../packets/data/gui/GuiErrorPacket.java | 4 +- .../packets/data/gui/GuiOpenBookPacket.java | 4 +- .../packets/data/gui/GuiOpenPacket.java | 4 +- .../packets/data/gui/GuiRedstonePacket.java | 4 +- .../packets/data/gui/GuiTeleporterPacket.java | 4 +- .../packets/data/gui/GuiWaypointPacket.java | 4 +- .../packets/data/gui/IsGuiOpenPacket.java | 4 +- .../packets/data/large/GuiDataPacket.java | 4 +- .../packets/data/large/PartyDataPacket.java | 4 +- .../packets/data/large/ScrollDataPacket.java | 4 +- .../packets/data/large/ScrollGroupPacket.java | 4 +- .../packets/data/large/ScrollListPacket.java | 4 +- .../packets/data/large/SyncPacket.java | 4 +- .../packets/data/npc/DeleteNpcPacket.java | 4 +- .../packets/data/npc/DialogPacket.java | 4 +- .../packets/data/npc/EditNpcPacket.java | 4 +- .../network/packets/data/npc/RolePacket.java | 4 +- .../packets/data/npc/UpdateNpcPacket.java | 4 +- .../packets/data/npc/WeaponNpcPacket.java | 4 +- .../data/script/ScriptOverlayClosePacket.java | 4 +- .../data/script/ScriptOverlayDataPacket.java | 4 +- .../data/script/ScriptedParticlePacket.java | 4 +- 46 files changed, 151 insertions(+), 154 deletions(-) rename src/main/java/kamkeel/npcs/network/enums/{EnumPacketType.java => EnumChannelType.java} (74%) delete mode 100644 src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java rename src/main/java/kamkeel/npcs/network/enums/{EnumInfoPacket.java => EnumPlayerPacket.java} (61%) diff --git a/src/main/java/kamkeel/npcs/network/PacketChannel.java b/src/main/java/kamkeel/npcs/network/PacketChannel.java index aae7eca34..d080f1239 100644 --- a/src/main/java/kamkeel/npcs/network/PacketChannel.java +++ b/src/main/java/kamkeel/npcs/network/PacketChannel.java @@ -1,6 +1,6 @@ package kamkeel.npcs.network; -import kamkeel.npcs.network.enums.EnumPacketType; +import kamkeel.npcs.network.enums.EnumChannelType; import java.util.Hashtable; import java.util.Map; @@ -8,11 +8,11 @@ import java.util.Map; public class PacketChannel { private String channelName; - private EnumPacketType channelType; + private EnumChannelType channelType; public Map packets = new Hashtable<>(); - public PacketChannel(String channelName, EnumPacketType channelType) { + public PacketChannel(String channelName, EnumChannelType channelType) { this.channelName = channelName; this.channelType = channelType; } @@ -25,11 +25,11 @@ public class PacketChannel { this.channelName = channelName; } - public EnumPacketType getChannelType() { + public EnumChannelType getChannelType() { return channelType; } - public void setChannelType(EnumPacketType channelType) { + public void setChannelType(EnumChannelType channelType) { this.channelType = channelType; } diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index d3fcda649..a7774c739 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -6,7 +6,7 @@ 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 kamkeel.npcs.network.enums.EnumPacketType; +import kamkeel.npcs.network.enums.EnumChannelType; import kamkeel.npcs.network.packets.data.*; import kamkeel.npcs.network.packets.data.gui.*; import kamkeel.npcs.network.packets.data.large.*; @@ -25,11 +25,11 @@ public final class PacketHandler { public static PacketHandler Instance; // Channels - public Map channels = new Hashtable<>(); + public Map channels = new Hashtable<>(); - public static final PacketChannel PERMISSION_PACKET = new PacketChannel("CNPC+|Perm", EnumPacketType.PERMISSION); - public static final PacketChannel PLAYER_PACKET = new PacketChannel("CNPC+|Player", EnumPacketType.PLAYER); - public static final PacketChannel DATA_PACKET = new PacketChannel("CNPC+|Data", EnumPacketType.DATA); + public static final PacketChannel PERMISSION_PACKET = new PacketChannel("CNPC+|Perm", EnumChannelType.PERMISSION); + public static final PacketChannel PLAYER_PACKET = new PacketChannel("CNPC+|Player", EnumChannelType.PLAYER); + public static final PacketChannel DATA_PACKET = new PacketChannel("CNPC+|Data", EnumChannelType.DATA); private static final List packetChannels = new ArrayList<>(); @@ -40,10 +40,10 @@ public final class PacketHandler { packetChannels.add(DATA_PACKET); this.registerChannels(); - this.registerClientPackets(); + this.registerDataPackets(); } - public void registerClientPackets(){ + public void registerDataPackets(){ // Client Packets DATA_PACKET.registerPacket(new AchievementPacket()); DATA_PACKET.registerPacket(new ChatAlertPacket()); @@ -104,7 +104,7 @@ public final class PacketHandler { } } - public PacketChannel getPacketChannel(EnumPacketType type) { + public PacketChannel getPacketChannel(EnumChannelType type) { return packetChannels.stream() .filter(channel -> channel.getChannelType() == type) .findFirst() @@ -134,7 +134,7 @@ public final class PacketHandler { try { // First two ints are channelTypeOrdinal and packetTypeOrdinal int packetTypeOrdinal = buf.readInt(); - EnumPacketType packetType = EnumPacketType.values()[packetTypeOrdinal]; + EnumChannelType packetType = EnumChannelType.values()[packetTypeOrdinal]; PacketChannel packetChannel = getPacketChannel(packetType); if (packetChannel == null) { diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java b/src/main/java/kamkeel/npcs/network/enums/EnumChannelType.java similarity index 74% rename from src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java rename to src/main/java/kamkeel/npcs/network/enums/EnumChannelType.java index 7c65e5df3..b9ff6a5ac 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPacketType.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumChannelType.java @@ -1,6 +1,6 @@ package kamkeel.npcs.network.enums; -public enum EnumPacketType { +public enum EnumChannelType { PERMISSION, PLAYER, DATA, diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java deleted file mode 100644 index 934b8a8c2..000000000 --- a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java +++ /dev/null @@ -1,58 +0,0 @@ -package kamkeel.npcs.network.enums; - -// Packets to the Client -public enum EnumClientPacket { - // Synchronization - SYNC, - CONFIG_COMMAND, - - // Messages - CHAT_ALERT, - ACHIEVEMENT, - CHATBUBBLE, - SOUND, - DIALOG, - QUEST_COMPLETION, - - - // NPC - EDIT_NPC, - UPDATE_NPC, - ROLE_NPC, - DELETE_NPC, - CLONE_NPC, - WEAPON_NPC, - - // Data - SCROLL_LIST, - SCROLL_DATA, - SCROLL_GROUP, - SCROLL_SELECTED, - PARTY_DATA, - - // GUI - GUI_OPEN, - GUI_REDSTONE, - GUI_WAYPOINT, - GUI_TELEPORTER, - GUI_BOOK, - GUI_DATA, - GUI_ERROR, - GUI_CLOSE, - ISGUIOPEN, - - // Visual - SCRIPTED_PARTICLE, - PARTICLE, - PLAYER_UPDATE_SKIN_OVERLAYS, - UPDATE_ANIMATIONS, - SCRIPT_OVERLAY_DATA, - SCRIPT_OVERLAY_CLOSE, - OVERLAY_QUEST_TRACKING, - MARK_DATA, - - // Other - VILLAGER_LIST, - SWING_PLAYER_ARM, - DISABLE_MOUSE_INPUT, -} diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumDataPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumDataPacket.java index 9ca60f8f8..29e714dd8 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumDataPacket.java @@ -1,4 +1,59 @@ package kamkeel.npcs.network.enums; +// Packets to the Client public enum EnumDataPacket { + // Synchronization + SYNC, + CONFIG_COMMAND, + + // Messages + CHAT_ALERT, + ACHIEVEMENT, + CHATBUBBLE, + SOUND, + DIALOG, + QUEST_COMPLETION, + + + // NPC + EDIT_NPC, + UPDATE_NPC, + ROLE_NPC, + DELETE_NPC, + CLONE_NPC, + WEAPON_NPC, + + // Data + SCROLL_LIST, + SCROLL_DATA, + SCROLL_GROUP, + SCROLL_SELECTED, + PARTY_DATA, + + // GUI + GUI_OPEN, + GUI_REDSTONE, + GUI_WAYPOINT, + GUI_TELEPORTER, + GUI_BOOK, + GUI_DATA, + GUI_ERROR, + GUI_CLOSE, + ISGUIOPEN, + + // Visual + SCRIPTED_PARTICLE, + PARTICLE, + PLAYER_UPDATE_SKIN_OVERLAYS, + UPDATE_ANIMATIONS, + SCRIPT_OVERLAY_DATA, + SCRIPT_OVERLAY_CLOSE, + OVERLAY_QUEST_TRACKING, + MARK_DATA, + + // Other + VILLAGER_LIST, + SWING_PLAYER_ARM, + DISABLE_MOUSE_INPUT, + LOGIN, } diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumInfoPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java similarity index 61% rename from src/main/java/kamkeel/npcs/network/enums/EnumInfoPacket.java rename to src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index 86cab3ee5..58b7e72fc 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumInfoPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -1,5 +1,5 @@ package kamkeel.npcs.network.enums; -public enum EnumInfoPacket { +public enum EnumPlayerPacket { LOGIN, } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java index f46cca579..d7742450b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java @@ -7,7 +7,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.achievement.GuiAchievement; @@ -44,7 +44,7 @@ public final class AchievementPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.ACHIEVEMENT; + return EnumDataPacket.ACHIEVEMENT; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java index 38ba7adee..8c6776b5f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -33,7 +33,7 @@ public final class ChatAlertPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.CHAT_ALERT; + return EnumDataPacket.CHAT_ALERT; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java index 206d75d23..4eeb26534 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -35,7 +35,7 @@ public final class ChatBubblePacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.CHATBUBBLE; + return EnumDataPacket.CHATBUBBLE; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java index a64d592af..c841776c0 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java @@ -7,7 +7,7 @@ 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.EnumClientPacket; +import kamkeel.npcs.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -29,7 +29,7 @@ public final class ClonerPacket extends LargeAbstractPacket { @Override public Enum getType() { - return EnumClientPacket.CLONE_NPC; + return EnumDataPacket.CLONE_NPC; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java index 7f5eb45a7..8a9738a71 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.network.enums.EnumConfigOperation; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; @@ -32,7 +32,7 @@ public final class ConfigCommandPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.CONFIG_COMMAND; + return EnumDataPacket.CONFIG_COMMAND; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java index 305868eed..649680470 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.client.ClientEventHandler; @@ -28,7 +28,7 @@ public final class DisableMouseInputPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.DISABLE_MOUSE_INPUT; + return EnumDataPacket.DISABLE_MOUSE_INPUT; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java index 58a0460bc..ac1c9b049 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java @@ -4,7 +4,7 @@ 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.EnumInfoPacket; +import kamkeel.npcs.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; @@ -18,7 +18,7 @@ public final class LoginPacket extends AbstractPacket { @Override public Enum getType() { - return EnumInfoPacket.LOGIN; + return EnumDataPacket.LOGIN; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java index 009b1afa3..520c55932 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -31,7 +31,7 @@ public final class MarkDataPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.MARK_DATA; + return EnumDataPacket.MARK_DATA; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java index 4ea6f9151..8a4306ae8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; @@ -29,7 +29,7 @@ public final class OverlayQuestTrackingPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.OVERLAY_QUEST_TRACKING; + return EnumDataPacket.OVERLAY_QUEST_TRACKING; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java index 4b885fb69..c411ac6d5 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; @@ -42,7 +42,7 @@ public final class ParticlePacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.PARTICLE; + return EnumDataPacket.PARTICLE; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java index 7d04f43b6..5e0854f5d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; @@ -30,7 +30,7 @@ public final class PlayerUpdateSkinOverlaysPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.PLAYER_UPDATE_SKIN_OVERLAYS; + return EnumDataPacket.PLAYER_UPDATE_SKIN_OVERLAYS; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java index 75bded4ad..8cc9fa545 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -33,7 +33,7 @@ public final class QuestCompletionPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.QUEST_COMPLETION; + return EnumDataPacket.QUEST_COMPLETION; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java index 4b2382937..2b1116a65 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; @@ -34,7 +34,7 @@ public final class ScrollSelectedPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.SCROLL_SELECTED; + return EnumDataPacket.SCROLL_SELECTED; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/SoundManagementPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/SoundManagementPacket.java index 7f36c8545..74ce3312f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/SoundManagementPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/SoundManagementPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.network.enums.EnumSoundOperation; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; @@ -61,7 +61,7 @@ public final class SoundManagementPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.SOUND; + return EnumDataPacket.SOUND; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java index 85df80307..58902dae2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; @@ -19,7 +19,7 @@ public final class SwingPlayerArmPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.SWING_PLAYER_ARM; + return EnumDataPacket.SWING_PLAYER_ARM; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java index bb9deb78a..b6a6ea284 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -34,7 +34,7 @@ public final class UpdateAnimationsPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.UPDATE_ANIMATIONS; + return EnumDataPacket.UPDATE_ANIMATIONS; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java index c798376c8..e12221047 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.PacketBuffer; @@ -28,7 +28,7 @@ public final class VillagerListPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.VILLAGER_LIST; + return EnumDataPacket.VILLAGER_LIST; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java index 1d3780fcf..5498649dd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; @@ -37,7 +37,7 @@ public final class GuiClosePacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.GUI_CLOSE; + return EnumDataPacket.GUI_CLOSE; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java index 387fa36fa..eb77ed12c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; @@ -37,7 +37,7 @@ public final class GuiErrorPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.GUI_ERROR; + return EnumDataPacket.GUI_ERROR; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java index 6cfb4ac99..a13584f42 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -35,7 +35,7 @@ public final class GuiOpenBookPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.GUI_BOOK; + return EnumDataPacket.GUI_BOOK; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java index c12235fba..564e2634e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.CustomNpcs; @@ -38,7 +38,7 @@ public final class GuiOpenPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.GUI_OPEN; + return EnumDataPacket.GUI_OPEN; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java index 8abfbe319..9d0587615 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -27,7 +27,7 @@ public final class GuiRedstonePacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.GUI_REDSTONE; + return EnumDataPacket.GUI_REDSTONE; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java index 19faca548..390aaeedd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.CustomNpcs; import noppes.npcs.constants.EnumGuiType; @@ -21,7 +21,7 @@ public final class GuiTeleporterPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.GUI_TELEPORTER; + return EnumDataPacket.GUI_TELEPORTER; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java index 86dd15e04..5e61d9156 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -27,7 +27,7 @@ public final class GuiWaypointPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.GUI_WAYPOINT; + return EnumDataPacket.GUI_WAYPOINT; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java index 91bfe9bcb..f025a97d5 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.client.NoppesUtil; @@ -20,7 +20,7 @@ public final class IsGuiOpenPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.ISGUIOPEN; + return EnumDataPacket.ISGUIOPEN; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java index d4e3be4bc..94f43e1c7 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java @@ -7,7 +7,7 @@ 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.EnumClientPacket; +import kamkeel.npcs.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; @@ -38,7 +38,7 @@ public final class GuiDataPacket extends LargeAbstractPacket { @Override public Enum getType() { - return EnumClientPacket.GUI_DATA; + return EnumDataPacket.GUI_DATA; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java index ab6982403..4f13d7ba4 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java @@ -7,7 +7,7 @@ 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.EnumClientPacket; +import kamkeel.npcs.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; @@ -38,7 +38,7 @@ public final class PartyDataPacket extends LargeAbstractPacket { @Override public Enum getType() { - return EnumClientPacket.PARTY_DATA; + return EnumDataPacket.PARTY_DATA; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollDataPacket.java index 3cfe916ed..dbb79c3b5 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollDataPacket.java @@ -5,7 +5,7 @@ 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.EnumClientPacket; +import kamkeel.npcs.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -32,7 +32,7 @@ public final class ScrollDataPacket extends LargeAbstractPacket { @Override public Enum getType() { - return EnumClientPacket.SCROLL_DATA; + return EnumDataPacket.SCROLL_DATA; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java index 5c4e522a2..c6b8e4e89 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java @@ -5,7 +5,7 @@ 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.EnumClientPacket; +import kamkeel.npcs.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -32,7 +32,7 @@ public final class ScrollGroupPacket extends LargeAbstractPacket { @Override public Enum getType() { - return EnumClientPacket.SCROLL_GROUP; + return EnumDataPacket.SCROLL_GROUP; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollListPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollListPacket.java index 1b6db6a9a..d15d7c178 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollListPacket.java @@ -5,7 +5,7 @@ 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.EnumClientPacket; +import kamkeel.npcs.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -32,7 +32,7 @@ public final class ScrollListPacket extends LargeAbstractPacket { @Override public Enum getType() { - return EnumClientPacket.SCROLL_LIST; + return EnumDataPacket.SCROLL_LIST; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java index c7e904ea9..b9861b85c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java @@ -7,7 +7,7 @@ import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.network.LargeAbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.network.enums.EnumDataPacket; import kamkeel.npcs.network.enums.EnumSyncAction; import kamkeel.npcs.network.enums.EnumSyncType; import kamkeel.npcs.util.ByteBufUtils; @@ -42,7 +42,7 @@ public final class SyncPacket extends LargeAbstractPacket { @Override public Enum getType() { - return EnumClientPacket.SYNC; + return EnumDataPacket.SYNC; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java index eda6cea23..197796d69 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -27,7 +27,7 @@ public final class DeleteNpcPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.DELETE_NPC; + return EnumDataPacket.DELETE_NPC; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java index f826ace77..4272316ee 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -35,7 +35,7 @@ public final class DialogPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.DIALOG; + return EnumDataPacket.DIALOG; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java index 7bcaf992a..bf4add8dd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -27,7 +27,7 @@ public final class EditNpcPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.EDIT_NPC; + return EnumDataPacket.EDIT_NPC; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java index 6375d9df2..f21e2d47f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -30,7 +30,7 @@ public final class RolePacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.ROLE_NPC; + return EnumDataPacket.ROLE_NPC; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java index 5f4cab288..a03b8a449 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -29,7 +29,7 @@ public final class UpdateNpcPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.UPDATE_NPC; + return EnumDataPacket.UPDATE_NPC; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java index 8abfc9f6e..8d1a9f0c7 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -34,7 +34,7 @@ public final class WeaponNpcPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.WEAPON_NPC; + return EnumDataPacket.WEAPON_NPC; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java index 77057f641..85fef97d7 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.client.ClientCacheHandler; @@ -25,7 +25,7 @@ public final class ScriptOverlayClosePacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.SCRIPT_OVERLAY_CLOSE; + return EnumDataPacket.SCRIPT_OVERLAY_CLOSE; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java index 97fbfa4f4..670743471 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; @@ -29,7 +29,7 @@ public final class ScriptOverlayDataPacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.SCRIPT_OVERLAY_DATA; + return EnumDataPacket.SCRIPT_OVERLAY_DATA; } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java index 2295a754c..ddc8182d0 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java @@ -6,7 +6,7 @@ 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.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -32,7 +32,7 @@ public final class ScriptedParticlePacket extends AbstractPacket { @Override public Enum getType() { - return EnumClientPacket.SCRIPTED_PARTICLE; + return EnumDataPacket.SCRIPTED_PARTICLE; } @Override From c2bc9c6c116135171b58face55cd3382a5dcec4f Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 14:16:39 -0500 Subject: [PATCH 054/157] Request Packet --- .../kamkeel/npcs/network/PacketHandler.java | 16 +++++++++--- .../npcs/network/enums/EnumChannelType.java | 2 +- .../npcs/network/enums/EnumPlayerPacket.java | 1 - .../npcs/network/enums/EnumRequestPacket.java | 26 +++++++++++++++++++ 4 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index a7774c739..d40e44b19 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -7,6 +7,7 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.internal.FMLProxyPacket; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.enums.EnumChannelType; +import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.network.packets.data.*; import kamkeel.npcs.network.packets.data.gui.*; import kamkeel.npcs.network.packets.data.large.*; @@ -27,15 +28,20 @@ public final class PacketHandler { // Channels public Map channels = new Hashtable<>(); - public static final PacketChannel PERMISSION_PACKET = new PacketChannel("CNPC+|Perm", EnumChannelType.PERMISSION); + // Client to Server + public static final PacketChannel REQUEST_PACKET = new PacketChannel("CNPC+|Req", EnumChannelType.REQUEST); + + // Client to Server - Typically information public static final PacketChannel PLAYER_PACKET = new PacketChannel("CNPC+|Player", EnumChannelType.PLAYER); + + // Server to Client public static final PacketChannel DATA_PACKET = new PacketChannel("CNPC+|Data", EnumChannelType.DATA); private static final List packetChannels = new ArrayList<>(); public PacketHandler() { // Register Channels - packetChannels.add(PERMISSION_PACKET); + packetChannels.add(REQUEST_PACKET); packetChannels.add(PLAYER_PACKET); packetChannels.add(DATA_PACKET); @@ -132,7 +138,6 @@ public final class PacketHandler { private void handlePacket(FMLProxyPacket packet, EntityPlayer player) { ByteBuf buf = packet.payload(); try { - // First two ints are channelTypeOrdinal and packetTypeOrdinal int packetTypeOrdinal = buf.readInt(); EnumChannelType packetType = EnumChannelType.values()[packetTypeOrdinal]; @@ -149,6 +154,11 @@ public final class PacketHandler { return; } + if(packetType == EnumChannelType.REQUEST){ + EnumRequestPacket requestPacket = EnumRequestPacket.values()[packetId]; + if() + } + // Let the packet parse the rest abstractPacket.receiveData(buf, player); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumChannelType.java b/src/main/java/kamkeel/npcs/network/enums/EnumChannelType.java index b9ff6a5ac..87015e1c8 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumChannelType.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumChannelType.java @@ -1,7 +1,7 @@ package kamkeel.npcs.network.enums; public enum EnumChannelType { - PERMISSION, + REQUEST, PLAYER, DATA, INFO diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index 58b7e72fc..5df856525 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -1,5 +1,4 @@ package kamkeel.npcs.network.enums; public enum EnumPlayerPacket { - LOGIN, } diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java new file mode 100644 index 000000000..49d225869 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -0,0 +1,26 @@ +package kamkeel.npcs.network.enums; + +import noppes.npcs.CustomNpcsPermissions; + +public enum EnumRequestPacket { + + ok; + + public CustomNpcsPermissions.Permission permission = null; + public boolean needsNpc = false; + + EnumRequestPacket() {} + EnumRequestPacket(noppes.npcs.CustomNpcsPermissions.Permission permission, boolean npc) { + this(permission); + } + EnumRequestPacket(boolean npc) { + needsNpc = npc; + } + EnumRequestPacket(CustomNpcsPermissions.Permission permission) { + this.permission = permission; + } + public boolean hasPermission() { + return permission != null; + } + +} From e77a1032d30841cdbbb175a923b6f6101128098e Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 18:13:04 -0500 Subject: [PATCH 055/157] commit --- .../kamkeel/npcs/network/AbstractPacket.java | 17 +++++++++++++++++ .../kamkeel/npcs/network/PacketHandler.java | 18 +++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/AbstractPacket.java b/src/main/java/kamkeel/npcs/network/AbstractPacket.java index 527f50547..9965ddd4b 100644 --- a/src/main/java/kamkeel/npcs/network/AbstractPacket.java +++ b/src/main/java/kamkeel/npcs/network/AbstractPacket.java @@ -4,6 +4,8 @@ import cpw.mods.fml.common.network.internal.FMLProxyPacket; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; import java.util.Collections; @@ -11,6 +13,8 @@ import java.util.List; public abstract class AbstractPacket { + public EntityNPCInterface npc; + public FMLProxyPacket generatePacket() { PacketChannel packetChannel = getChannel(); ByteBuf buf = Unpooled.buffer(); @@ -36,6 +40,19 @@ public abstract class AbstractPacket { public abstract Enum getType(); public abstract PacketChannel getChannel(); + + public CustomNpcsPermissions.Permission getPermission(){ + return null; + } + + public boolean needsNPC(){ + return false; + } + + public void setNPC(EntityNPCInterface npc){ + this.npc = npc; + } + public abstract void sendData(ByteBuf out) throws IOException; //"player" on the server side is the client who sent this packet diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index d40e44b19..6425de62d 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -18,7 +18,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.NetHandlerPlayServer; import noppes.npcs.CustomNpcs; +import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.LogWriter; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.entity.EntityNPCInterface; import java.util.*; @@ -154,9 +157,18 @@ public final class PacketHandler { return; } - if(packetType == EnumChannelType.REQUEST){ - EnumRequestPacket requestPacket = EnumRequestPacket.values()[packetId]; - if() + // Check if permission is allowed + if(abstractPacket.getPermission() != null && !CustomNpcsPermissions.hasPermission(player, abstractPacket.getPermission())){ + return; + } + + // Check for required NPC + if(abstractPacket.needsNPC()){ + EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); + if(npc == null) + return; + + abstractPacket.setNPC(npc); } // Let the packet parse the rest From 9ea1385ac2c7641e21fed22fd6506daac3946866 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 18:44:50 -0500 Subject: [PATCH 056/157] Fix Packets not working for testing --- .../network/packets/data/ClonerPacket.java | 6 ------ .../packets/data/gui/GuiOpenPacket.java | 3 ++- .../java/noppes/npcs/client/ClientProxy.java | 1 + .../npcs/client/PacketHandlerClient.java | 19 +++++++++++++++++++ 4 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/PacketHandlerClient.java diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java index c841776c0..e7fdff003 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java @@ -37,12 +37,6 @@ public final class ClonerPacket extends LargeAbstractPacket { return PacketHandler.DATA_PACKET; } - @SideOnly(Side.CLIENT) - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NBTTagCompound nbt = ByteBufUtils.readNBT(in); - NoppesUtil.openGUI(player, new GuiNpcMobSpawnerAdd(nbt)); - } @Override protected byte[] getData() throws IOException { diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java index 564e2634e..eb865b6b2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java @@ -10,6 +10,7 @@ import kamkeel.npcs.network.enums.EnumDataPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.CustomNpcs; +import noppes.npcs.client.NoppesUtil; import noppes.npcs.constants.EnumGuiType; import java.io.IOException; @@ -61,6 +62,6 @@ public final class GuiOpenPacket extends AbstractPacket { int x = in.readInt(); int y = in.readInt(); int z = in.readInt(); - CustomNpcs.proxy.openGui(null, gui, x, y, z); + CustomNpcs.proxy.openGui(NoppesUtil.getLastNpc(), gui, x, y, z); } } diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index f3f38ec8e..c5da55146 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -83,6 +83,7 @@ public class ClientProxy extends CommonProxy { public void load() { Font = new FontContainer(ConfigClient.FontType, ConfigClient.FontSize); createFolders(); + CustomNpcs.Channel.register(new PacketHandlerClient()); CustomNpcs.ChannelPlayer.register(new PacketHandlerPlayer()); new MusicController(); new ScriptSoundController(); diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java new file mode 100644 index 000000000..d6036efa2 --- /dev/null +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -0,0 +1,19 @@ +package noppes.npcs.client; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.network.FMLNetworkEvent; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.PacketHandlerServer; + +import java.io.IOException; + +public class PacketHandlerClient extends PacketHandlerServer { + + @SubscribeEvent + public void onPacketData(FMLNetworkEvent.ClientCustomPacketEvent event) { + // Need this here for testing and registry for now until + // conversion is done + } +} From 3979d1895bb958ba6221e002c5c312bf932f3ff5 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 30 Jan 2025 22:50:10 -0500 Subject: [PATCH 057/157] Fixes --- .../npcs/network/LargeAbstractPacket.java | 108 +++++++++----- .../npcs/network/enums/EnumRequestPacket.java | 133 +++++++++++++++--- .../packets/data/AchievementPacket.java | 2 +- .../network/packets/data/ChatAlertPacket.java | 2 +- .../packets/data/ChatBubblePacket.java | 2 +- .../network/packets/data/ClonerPacket.java | 2 +- .../packets/data/ConfigCommandPacket.java | 2 +- .../packets/data/DisableMouseInputPacket.java | 2 +- .../network/packets/data/MarkDataPacket.java | 2 +- .../data/OverlayQuestTrackingPacket.java | 2 +- .../network/packets/data/ParticlePacket.java | 2 +- .../data/PlayerUpdateSkinOverlaysPacket.java | 2 +- .../packets/data/QuestCompletionPacket.java | 2 +- .../packets/data/ScrollSelectedPacket.java | 2 +- .../packets/data/SwingPlayerArmPacket.java | 2 +- .../packets/data/UpdateAnimationsPacket.java | 2 +- .../packets/data/VillagerListPacket.java | 2 +- .../packets/data/gui/GuiClosePacket.java | 2 +- .../packets/data/gui/GuiErrorPacket.java | 2 +- .../packets/data/gui/GuiOpenBookPacket.java | 2 +- .../packets/data/gui/GuiOpenPacket.java | 2 +- .../packets/data/gui/GuiRedstonePacket.java | 2 +- .../packets/data/gui/GuiTeleporterPacket.java | 2 +- .../packets/data/gui/GuiWaypointPacket.java | 2 +- .../packets/data/gui/IsGuiOpenPacket.java | 2 +- .../packets/data/large/GuiDataPacket.java | 2 +- .../packets/data/large/PartyDataPacket.java | 2 +- .../packets/data/npc/DeleteNpcPacket.java | 2 +- .../packets/data/npc/DialogPacket.java | 2 +- .../packets/data/npc/EditNpcPacket.java | 2 +- .../network/packets/data/npc/RolePacket.java | 2 +- .../packets/data/npc/UpdateNpcPacket.java | 2 +- .../packets/data/npc/WeaponNpcPacket.java | 2 +- .../data/script/ScriptOverlayClosePacket.java | 2 +- .../data/script/ScriptOverlayDataPacket.java | 2 +- .../data/script/ScriptedParticlePacket.java | 2 +- .../npcs/client/PacketHandlerClient.java | 3 - 37 files changed, 217 insertions(+), 95 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java index d83d3cde3..30941b233 100644 --- a/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java +++ b/src/main/java/kamkeel/npcs/network/LargeAbstractPacket.java @@ -4,6 +4,7 @@ import cpw.mods.fml.common.network.internal.FMLProxyPacket; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.LogWriter; import org.lwjgl.Sys; import java.io.IOException; @@ -61,48 +62,77 @@ public abstract class LargeAbstractPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - long mostSigBits = in.readLong(); - long leastSigBits = in.readLong(); - UUID packetId = new UUID(mostSigBits, leastSigBits); + UUID packetId = null; + PacketStorage storage = null; + ByteBuf chunk = null; + ByteBuf completeData = null; - int totalSize = in.readInt(); - int offset = in.readInt(); - int totalChunks = in.readInt(); // Currently unused aside from potential debugging/verification - int chunkSize = Math.min(CHUNK_SIZE, totalSize - offset); + try { + // Read UUID from the buffer + long mostSigBits = in.readLong(); + long leastSigBits = in.readLong(); + packetId = new UUID(mostSigBits, leastSigBits); - // Basic validation to ensure the chunk won't overwrite out of bounds - if (chunkSize <= 0 || offset < 0 || (offset + chunkSize) > totalSize) { - throw new IndexOutOfBoundsException("Invalid chunk size/offset: chunkSize=" - + chunkSize + ", offset=" + offset + ", totalSize=" + totalSize); + // Read packet metadata + int totalSize = in.readInt(); + int offset = in.readInt(); + int totalChunks = in.readInt(); // Debugging info + int chunkSize = Math.min(CHUNK_SIZE, totalSize - offset); + + // Basic validation to ensure the chunk won't overwrite out of bounds + if (chunkSize <= 0 || offset < 0 || (offset + chunkSize) > totalSize) { + throw new IndexOutOfBoundsException("Invalid chunk size/offset: chunkSize=" + + chunkSize + ", offset=" + offset + ", totalSize=" + totalSize); + } + + // Read the exact chunk data + chunk = in.readBytes(chunkSize); + + // Store the received chunk in a PacketStorage + storage = packetChunks.computeIfAbsent(packetId, k -> new PacketStorage(Unpooled.buffer(totalSize), 0, totalSize)); + + // Write this chunk into the buffer at the correct offset + storage.data.setBytes(offset, chunk); + storage.receivedSoFar += chunkSize; + + // If we've received all bytes, finalize + if (storage.receivedSoFar >= totalSize) { + packetChunks.remove(packetId); + completeData = storage.data.copy(0, totalSize); + + try { + handleCompleteData(completeData, player); + } finally { + completeData.release(); + } + + storage.data.release(); + } + } catch (Exception e) { + // Log the exception with contextual information + LogWriter.error("Error in receiveData for packetId " + (packetId != null ? packetId.toString() : "null") + ": " + e.getMessage()); + e.printStackTrace(); + + // If storage was created but the packet is incomplete, release storage.data + if (storage != null && storage.receivedSoFar < storage.totalSize) { + storage.data.release(); + if (packetId != null) { + packetChunks.remove(packetId); + } + } + + throw e; // Rethrow the exception after logging + } finally { + // Ensure that 'chunk' is released if it was allocated + if (chunk != null && chunk.refCnt() > 0) { + chunk.release(); + } + + // Ensure that 'completeData' is released if it was created and not yet released + if (completeData != null && completeData.refCnt() > 0) { + completeData.release(); + } } - - // Read the exact chunk data - ByteBuf chunk = in.readBytes(chunkSize); - - // Store the received chunk in a PacketStorage - PacketStorage storage = packetChunks.computeIfAbsent(packetId, - k -> new PacketStorage(Unpooled.buffer(totalSize), 0, totalSize)); - - // Write this chunk into the buffer at the correct offset - storage.data.setBytes(offset, chunk); - storage.receivedSoFar += chunkSize; - - // If we've received all bytes, finalize - if (storage.receivedSoFar >= totalSize) { - // Remove from the map to clean up - packetChunks.remove(packetId); - - // We now have the complete data in storage.data - // Copy (or slice) the exact bytes, then handle them - ByteBuf completeData = storage.data.copy(0, totalSize); - - // Clean up and handle - storage.data.release(); - handleCompleteData(completeData, player); - completeData.release(); - } - - chunk.release(); } protected abstract byte[] getData() throws IOException; diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index 49d225869..f6573f7a8 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -1,26 +1,121 @@ package kamkeel.npcs.network.enums; - -import noppes.npcs.CustomNpcsPermissions; - public enum EnumRequestPacket { + Delete, + RemoteMainMenu, + RemoteGlobalMenu, + NpcMenuClose, + RemoteDelete, + RemoteFreeze, + RemoteFreezeGet, + RemoteReset, + SpawnMob, + MobSpawner, - ok; + MainmenuAISave, + MainmenuAIGet, + MainmenuInvSave, + MainmenuInvGet, + MainmenuStatsSave, + MainmenuStatsGet, + MainmenuDisplaySave, + MainmenuDisplayGet, + ModelDataSave, + MainmenuAdvancedSave, + MainmenuAdvancedGet, + MainmenuAdvancedMarkData, - public CustomNpcsPermissions.Permission permission = null; - public boolean needsNpc = false; + DialogNpcSet, + DialogNpcRemove, + DialogNpcGet, + DialogCategorySave, + DialogCategoriesGet, + DialogsGetFromDialog, + DialogCategoryRemove, + DialogCategoryGet, + DialogSave, + DialogsGet, + DialogGet, + DialogRemove, - EnumRequestPacket() {} - EnumRequestPacket(noppes.npcs.CustomNpcsPermissions.Permission permission, boolean npc) { - this(permission); - } - EnumRequestPacket(boolean npc) { - needsNpc = npc; - } - EnumRequestPacket(CustomNpcsPermissions.Permission permission) { - this.permission = permission; - } - public boolean hasPermission() { - return permission != null; - } + TransportSave, + TransportCategoriesGet, + TransportCategorySave, + TransportCategoryRemove, + TransportRemove, + TransportGetLocation, + TransportsGet, + FactionSet, + FactionSave, + FactionsGet, + FactionGet, + FactionRemove, + + TagSet, + TagSave, + TagsGet, + TagGet, + NpcTagsGet, + TagRemove, + + QuestCategorySave, + QuestCategoriesGet, + QuestRemove, + QuestCategoryRemove, + QuestRewardSave, + QuestSave, + QuestsGetFromQuest, + QuestsGet, + QuestDialogGetTitle, + QuestOpenGui, + QuestGet, + + RecipeSave, + RecipeRemove, + RecipesGet, + RecipeGet, + + NaturalSpawnSave, + NaturalSpawnGet, + NaturalSpawnRemove, + NaturalSpawnGetAll, + + MerchantUpdate, + PlayerRider, + SpawnRider, + MovingPathSave, + MovingPathGet, + + AnimationsGet, + AnimationGet, + AnimationRemove, + AnimationSave, + + RemoteNpcsGet, + RemoteTpToNpc, + SaveTileEntity, + GetTileEntity, + Gui, + IsGuiOpen, + CacheAnimation, + + CustomGuiButton, + CustomGuiScrollClick, + CustomGuiClose, + CustomGuiUnfocused, + + SavePartyData, + CreateParty, + GetPartyData, + DisbandParty, + KickPlayer, + LeavePlayer, + PartyInvite, + GetPartyInviteList, + AcceptInvite, + IgnoreInvite, + SetPartyLeader, + SetPartyQuest, + + ServerUpdateSkinOverlays } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java index d7742450b..e089bce5d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java @@ -23,7 +23,7 @@ import noppes.npcs.config.ConfigClient; import java.io.IOException; public final class AchievementPacket extends AbstractPacket { - public static final String packetName = "Client|Achievement"; + public static final String packetName = "Data|Achievement"; private boolean isParty; private String description; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java index 8c6776b5f..7a54ab92e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java @@ -16,7 +16,7 @@ import noppes.npcs.config.ConfigClient; import java.io.IOException; public final class ChatAlertPacket extends AbstractPacket { - public static final String packetName = "Client|ChatAlert"; + public static final String packetName = "Data|ChatAlert"; private Object[] objects; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java index 4eeb26534..eaf0c0d56 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java @@ -19,7 +19,7 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class ChatBubblePacket extends AbstractPacket { - public static final String packetName = "Client|ChatBubble"; + public static final String packetName = "Data|ChatBubble"; private int entityId; private String text; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java index e7fdff003..9c9472957 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java @@ -17,7 +17,7 @@ import noppes.npcs.client.gui.GuiNpcMobSpawnerAdd; import java.io.IOException; public final class ClonerPacket extends LargeAbstractPacket { - public static final String packetName = "Client|Clone"; + public static final String packetName = "Data|Clone"; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java index 8a9738a71..057549c60 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java @@ -18,7 +18,7 @@ import net.minecraft.util.ChatComponentTranslation; import java.io.IOException; public final class ConfigCommandPacket extends AbstractPacket { - public static final String packetName = "Client|ConfigCommand"; + public static final String packetName = "Data|ConfigCommand"; private EnumConfigOperation configOperation; private Object[] objects; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java index 649680470..64141be58 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java @@ -14,7 +14,7 @@ import noppes.npcs.client.ClientEventHandler; import java.io.IOException; public final class DisableMouseInputPacket extends AbstractPacket { - public static final String packetName = "Client|DisableMouseInput"; + public static final String packetName = "Data|DisableMouseInput"; private long duration; private String keys; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java index 520c55932..ff6f029c2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java @@ -17,7 +17,7 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class MarkDataPacket extends AbstractPacket { - public static final String packetName = "Client|MarkData"; + public static final String packetName = "Data|MarkData"; private int entityID; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java index 8a4306ae8..b37886ac8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java @@ -17,7 +17,7 @@ import noppes.npcs.client.ClientCacheHandler; import java.io.IOException; public final class OverlayQuestTrackingPacket extends AbstractPacket { - public static final String packetName = "Client|OverlayQuestTracking"; + public static final String packetName = "Data|OverlayQuestTracking"; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java index c411ac6d5..dc0c5d7e2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java @@ -16,7 +16,7 @@ import java.io.IOException; import java.util.Random; public final class ParticlePacket extends AbstractPacket { - public static final String packetName = "Client|Particle"; + public static final String packetName = "Data|Particle"; private double x; private double y; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java index 5e0854f5d..e46d61b0e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java @@ -16,7 +16,7 @@ import noppes.npcs.client.NoppesUtil; import java.io.IOException; public final class PlayerUpdateSkinOverlaysPacket extends AbstractPacket { - public static final String packetName = "Client|PlayerUpdateSkinOverlays"; + public static final String packetName = "Data|PlayerUpdateSkinOverlays"; private String playerName; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java index 8cc9fa545..55b197205 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java @@ -16,7 +16,7 @@ import noppes.npcs.client.NoppesUtil; import java.io.IOException; public final class QuestCompletionPacket extends AbstractPacket { - public static final String packetName = "Client|QuestCompletion"; + public static final String packetName = "Data|QuestCompletion"; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java index 2b1116a65..dcdcb8ce1 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java @@ -17,7 +17,7 @@ import noppes.npcs.client.gui.util.IScrollData; import java.io.IOException; public final class ScrollSelectedPacket extends AbstractPacket { - public static final String packetName = "Client|ScrollSelected"; + public static final String packetName = "Data|ScrollSelected"; private String selected; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java index 58902dae2..dd7341c00 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java @@ -13,7 +13,7 @@ import net.minecraft.entity.player.EntityPlayer; import java.io.IOException; public final class SwingPlayerArmPacket extends AbstractPacket { - public static final String packetName = "Client|SwingPlayerArm"; + public static final String packetName = "Data|SwingPlayerArm"; public SwingPlayerArmPacket() {} diff --git a/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java index b6a6ea284..78a26384d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java @@ -20,7 +20,7 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class UpdateAnimationsPacket extends AbstractPacket { - public static final String packetName = "Client|UpdateAnimations"; + public static final String packetName = "Data|UpdateAnimations"; private NBTTagCompound animationCompound; private String playername; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java index e12221047..cdf014600 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java @@ -16,7 +16,7 @@ import net.minecraft.village.MerchantRecipeList; import java.io.IOException; public final class VillagerListPacket extends AbstractPacket { - public static final String packetName = "Client|VillagerList"; + public static final String packetName = "Data|VillagerList"; private MerchantRecipeList merchantrecipelist; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java index 5498649dd..f0ce1324d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java @@ -18,7 +18,7 @@ import noppes.npcs.client.gui.util.IGuiClose; import java.io.IOException; public final class GuiClosePacket extends AbstractPacket { - public static final String packetName = "Client|GuiClose"; + public static final String packetName = "Data|GuiClose"; private int code; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java index eb77ed12c..64fa3010b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java @@ -18,7 +18,7 @@ import noppes.npcs.client.gui.util.IGuiError; import java.io.IOException; public final class GuiErrorPacket extends AbstractPacket { - public static final String packetName = "Client|GuiError"; + public static final String packetName = "Data|GuiError"; private int code; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java index a13584f42..701df2b0e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java @@ -17,7 +17,7 @@ import noppes.npcs.client.NoppesUtil; import java.io.IOException; public final class GuiOpenBookPacket extends AbstractPacket { - public static final String packetName = "Client|GuiOpenBook"; + public static final String packetName = "Data|GuiOpenBook"; private int i; private int j; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java index eb865b6b2..a42b3e057 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java @@ -16,7 +16,7 @@ import noppes.npcs.constants.EnumGuiType; import java.io.IOException; public final class GuiOpenPacket extends AbstractPacket { - public static final String packetName = "Client|OpenGui"; + public static final String packetName = "Data|OpenGui"; private EnumGuiType type; private int x; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java index 9d0587615..b5b674873 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java @@ -15,7 +15,7 @@ import noppes.npcs.client.NoppesUtil; import java.io.IOException; public final class GuiRedstonePacket extends AbstractPacket { - public static final String packetName = "Client|GuiRedstone"; + public static final String packetName = "Data|GuiRedstone"; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java index 390aaeedd..2d9f0ea8d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java @@ -15,7 +15,7 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class GuiTeleporterPacket extends AbstractPacket { - public static final String packetName = "Client|Teleporter"; + public static final String packetName = "Data|Teleporter"; public GuiTeleporterPacket(){} diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java index 5e61d9156..041d8d8c1 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java @@ -15,7 +15,7 @@ import noppes.npcs.client.NoppesUtil; import java.io.IOException; public final class GuiWaypointPacket extends AbstractPacket { - public static final String packetName = "Client|GuiWaypoint"; + public static final String packetName = "Data|GuiWaypoint"; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java index f025a97d5..e6557efe2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java @@ -14,7 +14,7 @@ import noppes.npcs.client.NoppesUtil; import java.io.IOException; public final class IsGuiOpenPacket extends AbstractPacket { - public static final String packetName = "Client|IsGuiOpen"; + public static final String packetName = "Data|IsGuiOpen"; public IsGuiOpenPacket() {} diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java index 94f43e1c7..a8f996025 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java @@ -21,7 +21,7 @@ import noppes.npcs.client.gui.util.IGuiData; import java.io.IOException; public final class GuiDataPacket extends LargeAbstractPacket { - public static final String packetName = "Client|GuiData"; + public static final String packetName = "Data|GuiData"; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java index 4f13d7ba4..7cc9654ae 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java @@ -21,7 +21,7 @@ import noppes.npcs.client.gui.util.IPartyData; import java.io.IOException; public final class PartyDataPacket extends LargeAbstractPacket { - public static final String packetName = "Client|PartyData"; + public static final String packetName = "Data|PartyData"; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java index 197796d69..dca895776 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java @@ -15,7 +15,7 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class DeleteNpcPacket extends AbstractPacket { - public static final String packetName = "Client|DeleteNpc"; + public static final String packetName = "Data|DeleteNpc"; private int entityId; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java index 4272316ee..4807a852e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java @@ -19,7 +19,7 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class DialogPacket extends AbstractPacket { - public static final String packetName = "Client|Dialog"; + public static final String packetName = "Data|Dialog"; private String dummyName; private int entityID; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java index bf4add8dd..5e4914c0e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java @@ -16,7 +16,7 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class EditNpcPacket extends AbstractPacket { - public static final String packetName = "Client|EditNpc"; + public static final String packetName = "Data|EditNpc"; int entityId; public EditNpcPacket() {} diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java index f21e2d47f..6a8f21e3e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java @@ -18,7 +18,7 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class RolePacket extends AbstractPacket { - public static final String packetName = "Client|Role"; + public static final String packetName = "Data|Role"; private NBTTagCompound compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java index a03b8a449..496e65be8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java @@ -17,7 +17,7 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class UpdateNpcPacket extends AbstractPacket { - public static final String packetName = "Client|UpdateNpc"; + public static final String packetName = "Data|UpdateNpc"; private NBTTagCompound npcCompound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java index 8d1a9f0c7..b04309c1b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java @@ -18,7 +18,7 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class WeaponNpcPacket extends AbstractPacket { - public static final String packetName = "Client|WeaponNpc"; + public static final String packetName = "Data|WeaponNpc"; private int entityId; private int weaponIndex; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java index 85fef97d7..44be40d80 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java @@ -13,7 +13,7 @@ import noppes.npcs.client.ClientCacheHandler; import java.io.IOException; public final class ScriptOverlayClosePacket extends AbstractPacket { - public static final String packetName = "Client|ScriptOverlayClose"; + public static final String packetName = "Data|ScriptOverlayClose"; private int particleId; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java index 670743471..3430130d8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java @@ -17,7 +17,7 @@ import noppes.npcs.client.ClientCacheHandler; import java.io.IOException; public final class ScriptOverlayDataPacket extends AbstractPacket { - public static final String packetName = "Client|ScriptOverlayData"; + public static final String packetName = "Data|ScriptOverlayData"; private NBTTagCompound overlayCompound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java index ddc8182d0..80c93fcdc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java @@ -20,7 +20,7 @@ import noppes.npcs.scripted.ScriptParticle; import java.io.IOException; public final class ScriptedParticlePacket extends AbstractPacket { - public static final String packetName = "Client|ScriptedParticle"; + public static final String packetName = "Data|ScriptedParticle"; private NBTTagCompound compound; diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index d6036efa2..a9d48ce09 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -2,9 +2,6 @@ package noppes.npcs.client; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.network.FMLNetworkEvent; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; import noppes.npcs.PacketHandlerServer; import java.io.IOException; From 1e5cc66f2fdac714ea2cf5288b12f5e7be7e3dff Mon Sep 17 00:00:00 2001 From: Kam Date: Fri, 31 Jan 2025 01:58:54 -0500 Subject: [PATCH 058/157] packet progress --- .../npcs/network/enums/EnumRequestPacket.java | 5 + .../packets/request/AnimationCachePacket.java | 41 ++++++++ .../request/CustomGuiButtonPacket.java | 62 ++++++++++++ .../packets/request/CustomGuiClosePacket.java | 57 +++++++++++ .../request/CustomGuiUnfocusedPacket.java | 62 ++++++++++++ .../request/CustomScrollClickPacket.java | 75 ++++++++++++++ .../packets/request/DimensionsGetPacket.java | 50 ++++++++++ .../packets/request/IsGuiOpenPacket.java | 52 ++++++++++ .../request/PartyLogToServerPacket.java | 51 ++++++++++ .../request/QuestLogToServerPacket.java | 55 +++++++++++ .../packets/request/QuestUntrackPacket.java | 43 ++++++++ .../packets/request/REQUESTPacket.java | 60 +++++++++++ .../packets/request/TagsGetPacket.java | 45 +++++++++ .../packets/request/TagsNpcGetPacket.java | 60 +++++++++++ .../java/noppes/npcs/PacketHandlerServer.java | 99 +++++-------------- 15 files changed, 744 insertions(+), 73 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/CustomGuiButtonPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/CustomGuiClosePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/CustomGuiUnfocusedPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/CustomScrollClickPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/DimensionsGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/PartyLogToServerPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/QuestLogToServerPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/QuestUntrackPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/TagsGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/TagsNpcGetPacket.java diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index f6573f7a8..087e35190 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -11,6 +11,8 @@ public enum EnumRequestPacket { SpawnMob, MobSpawner, + DimensionsGet, + MainmenuAISave, MainmenuAIGet, MainmenuInvSave, @@ -58,6 +60,8 @@ public enum EnumRequestPacket { NpcTagsGet, TagRemove, + QuestUntrack, + QuestLogToServer, QuestCategorySave, QuestCategoriesGet, QuestRemove, @@ -104,6 +108,7 @@ public enum EnumRequestPacket { CustomGuiClose, CustomGuiUnfocused, + PartyLogToServer, SavePartyData, CreateParty, GetPartyData, diff --git a/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java new file mode 100644 index 000000000..7496f08df --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java @@ -0,0 +1,41 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; + +import java.io.IOException; + +public final class AnimationCachePacket extends AbstractPacket { + public static final String packetName = "Request|AnimationCache"; + + public AnimationCachePacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.CacheAnimation; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException {} + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + NoppesUtilServer.sendTagDataAll((EntityPlayerMP) player); + } + + +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiButtonPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiButtonPacket.java new file mode 100644 index 000000000..b8a18cd2c --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiButtonPacket.java @@ -0,0 +1,62 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.EventHooks; +import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.containers.ContainerCustomGui; +import noppes.npcs.scripted.NpcAPI; + +import java.io.IOException; + +public final class CustomGuiButtonPacket extends AbstractPacket { + public static final String packetName = "Request|CustomGuiButton"; + + private NBTTagCompound compound; + private int id; + + public CustomGuiButtonPacket() {} + + public CustomGuiButtonPacket(int id, NBTTagCompound comp){ + this.compound = comp; + this.id = id; + } + + @Override + public Enum getType() { + return EnumRequestPacket.CustomGuiButton; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(id); + ByteBufUtils.writeNBT(out, compound); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(!(player.openContainer instanceof ContainerCustomGui)) + return; + + int id = in.readInt(); + NBTTagCompound comp = ByteBufUtils.readNBT(in); + + ((ContainerCustomGui) player.openContainer).customGui.fromNBT(comp); + EventHooks.onCustomGuiButton((IPlayer) NpcAPI.Instance().getIEntity(player), ((ContainerCustomGui) player.openContainer).customGui, id); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiClosePacket.java new file mode 100644 index 000000000..787481f7d --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiClosePacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.EventHooks; +import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.containers.ContainerCustomGui; +import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.gui.ScriptGui; + +import java.io.IOException; + +public final class CustomGuiClosePacket extends AbstractPacket { + public static final String packetName = "Request|CustomGuiClose"; + + private NBTTagCompound compound; + + public CustomGuiClosePacket() {} + + public CustomGuiClosePacket(int id, NBTTagCompound comp){ + this.compound = comp; + } + + @Override + public Enum getType() { + return EnumRequestPacket.CustomGuiClose; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, compound); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(!(player.openContainer instanceof ContainerCustomGui)) + return; + + NBTTagCompound comp = ByteBufUtils.readNBT(in); + EventHooks.onCustomGuiClose((IPlayer) NpcAPI.Instance().getIEntity(player), (new ScriptGui()).fromNBT(comp)); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiUnfocusedPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiUnfocusedPacket.java new file mode 100644 index 000000000..0f81ce863 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiUnfocusedPacket.java @@ -0,0 +1,62 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.EventHooks; +import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.containers.ContainerCustomGui; +import noppes.npcs.scripted.NpcAPI; + +import java.io.IOException; + +public final class CustomGuiUnfocusedPacket extends AbstractPacket { + public static final String packetName = "Request|CustomGuiUnfocused"; + + private NBTTagCompound compound; + private int id; + + public CustomGuiUnfocusedPacket() {} + + public CustomGuiUnfocusedPacket(int id, NBTTagCompound comp){ + this.compound = comp; + this.id = id; + } + + @Override + public Enum getType() { + return EnumRequestPacket.CustomGuiUnfocused; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(id); + ByteBufUtils.writeNBT(out, compound); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(!(player.openContainer instanceof ContainerCustomGui)) + return; + + int id = in.readInt(); + NBTTagCompound comp = ByteBufUtils.readNBT(in); + + ((ContainerCustomGui) player.openContainer).customGui.fromNBT(comp); + EventHooks.onCustomGuiUnfocused((IPlayer) NpcAPI.Instance().getIEntity(player), ((ContainerCustomGui) player.openContainer).customGui, id); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/CustomScrollClickPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/CustomScrollClickPacket.java new file mode 100644 index 000000000..27b2a6e0a --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/CustomScrollClickPacket.java @@ -0,0 +1,75 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.EventHooks; +import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.containers.ContainerCustomGui; +import noppes.npcs.controllers.CustomGuiController; +import noppes.npcs.scripted.NpcAPI; + +import java.io.IOException; + +public final class CustomScrollClickPacket extends AbstractPacket { + public static final String packetName = "Request|CustomGuiScrollClick"; + + private int scrollId; + private int scrollIndex; + private NBTTagCompound selection; + private boolean doubleClick; + private NBTTagCompound compound; + + public CustomScrollClickPacket() {} + + public CustomScrollClickPacket(NBTTagCompound compound, int scrollId, int scrollIndex, NBTTagCompound selection, boolean doubleClick) { + this.compound = compound; + this.scrollId = scrollId; + this.scrollIndex = scrollIndex; + this.selection = selection; + this.doubleClick = doubleClick; + } + + @Override + public Enum getType() { + return EnumRequestPacket.CustomGuiScrollClick; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, compound); + out.writeInt(this.scrollId); + out.writeInt(this.scrollIndex); + ByteBufUtils.writeNBT(out, selection); + out.writeBoolean(this.doubleClick); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(!(player.openContainer instanceof ContainerCustomGui)) + return; + + NBTTagCompound comp = ByteBufUtils.readNBT(in); + int scrollId = in.readInt(); + int scrollIndex = in.readInt(); + String[] list = CustomGuiController.readScrollSelection(in); + boolean doubleClick = in.readBoolean(); + + ((ContainerCustomGui) player.openContainer).customGui.fromNBT(comp); + EventHooks.onCustomGuiScrollClick((IPlayer) NpcAPI.Instance().getIEntity(player), ((ContainerCustomGui) player.openContainer).customGui, scrollId, scrollIndex, list, doubleClick); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/DimensionsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/DimensionsGetPacket.java new file mode 100644 index 000000000..5e678765c --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/DimensionsGetPacket.java @@ -0,0 +1,50 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.world.WorldProvider; +import net.minecraftforge.common.DimensionManager; +import noppes.npcs.NoppesUtilPlayer; + +import java.io.IOException; +import java.util.HashMap; + +public final class DimensionsGetPacket extends AbstractPacket { + public static final String packetName = "Request|DimensionsGet"; + + public DimensionsGetPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.DimensionsGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException {} + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + HashMap map = new HashMap(); + for(int id : DimensionManager.getStaticDimensionIDs()){ + WorldProvider provider = DimensionManager.createProviderFor(id); + map.put(provider.getDimensionName(), id); + } + ScrollDataPacket.sendScrollData((EntityPlayerMP) player, map); + } + + +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenPacket.java new file mode 100644 index 000000000..ce2a8298c --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenPacket.java @@ -0,0 +1,52 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.PlayerData; + +import java.io.IOException; + +public final class IsGuiOpenPacket extends AbstractPacket { + public static final String packetName = "Request|IsGuiOpen"; + + private boolean isOpen; + + public IsGuiOpenPacket() {} + + public IsGuiOpenPacket(boolean isOpen){ + this.isOpen = isOpen; + } + + @Override + public Enum getType() { + return EnumRequestPacket.IsGuiOpen; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeBoolean(this.isOpen); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + PlayerData playerdata = PlayerDataController.Instance.getPlayerData(player); + boolean isGUIOpen = in.readBoolean(); + playerdata.setGUIOpen(isGUIOpen); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/PartyLogToServerPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/PartyLogToServerPacket.java new file mode 100644 index 000000000..0c3db732e --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/PartyLogToServerPacket.java @@ -0,0 +1,51 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.NoppesUtilPlayer; + +import java.io.IOException; + +public final class PartyLogToServerPacket extends AbstractPacket { + public static final String packetName = "Request|PartyLogToServer"; + + private String key; + + public PartyLogToServerPacket() {} + + public PartyLogToServerPacket(String key) { + this.key = key; + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartyLogToServer; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, this.key); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + NoppesUtilPlayer.updatePartyQuestLogData(in, (EntityPlayerMP) player); + } + + +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/QuestLogToServerPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/QuestLogToServerPacket.java new file mode 100644 index 000000000..56e3da3b6 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/QuestLogToServerPacket.java @@ -0,0 +1,55 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilPlayer; + +import java.io.IOException; + +public final class QuestLogToServerPacket extends AbstractPacket { + public static final String packetName = "Request|QuestLogToServer"; + + private NBTTagCompound compound; + private String key; + + public QuestLogToServerPacket() {} + + public QuestLogToServerPacket(NBTTagCompound compound, String key) { + this.compound = compound; + this.key = key; + } + + @Override + public Enum getType() { + return EnumRequestPacket.QuestLogToServer; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); + ByteBufUtils.writeString(out, this.key); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + NoppesUtilPlayer.updateQuestLogData(in, (EntityPlayerMP) player); + } + + +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/QuestUntrackPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/QuestUntrackPacket.java new file mode 100644 index 000000000..7f4667cea --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/QuestUntrackPacket.java @@ -0,0 +1,43 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.NoppesUtilPlayer; + +import java.io.IOException; + +public final class QuestUntrackPacket extends AbstractPacket { + public static final String packetName = "Request|QuestUntrack"; + + public QuestUntrackPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.QuestUntrack; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException {} + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + NoppesUtilPlayer.clearTrackQuest((EntityPlayerMP) player); + } + + +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java new file mode 100644 index 000000000..a6432b7cd --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java @@ -0,0 +1,60 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumDataPacket; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.data.MarkData; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class REQUESTPacket extends AbstractPacket { + public static final String packetName = "Request|Name"; + + public REQUESTPacket() {} + + + @Override + public Enum getType() { + return EnumRequestPacket.Delete; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return null; + } + + @Override + public boolean needsNPC(){ + return false; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + + + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + + } + + +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/TagsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/TagsGetPacket.java new file mode 100644 index 000000000..b07d54b96 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/TagsGetPacket.java @@ -0,0 +1,45 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.world.WorldProvider; +import net.minecraftforge.common.DimensionManager; +import noppes.npcs.NoppesUtilServer; + +import java.io.IOException; +import java.util.HashMap; + +public final class TagsGetPacket extends AbstractPacket { + public static final String packetName = "Request|TagsGet"; + + public TagsGetPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.TagsGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException {} + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + NoppesUtilServer.sendTagDataAll((EntityPlayerMP) player); + } + + +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/TagsNpcGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/TagsNpcGetPacket.java new file mode 100644 index 000000000..ef9257985 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/TagsNpcGetPacket.java @@ -0,0 +1,60 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.TagController; +import noppes.npcs.controllers.data.Tag; + +import java.io.IOException; +import java.util.UUID; + +public final class TagsNpcGetPacket extends AbstractPacket { + public static final String packetName = "Request|NpcTagsGet"; + + public TagsNpcGetPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.NpcTagsGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public boolean needsNPC(){ + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException {} + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + NBTTagCompound compound = new NBTTagCompound(); + NBTTagList tagList = new NBTTagList(); + for (UUID uuid : npc.advanced.tagUUIDs) { + Tag tag = TagController.getInstance().getTagFromUUID(uuid); + if (tag != null) { + tagList.appendTag(new NBTTagString(tag.name)); + } + } + compound.setTag("TagNames",tagList); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 4f7e0989f..2ead5179a 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -66,64 +66,17 @@ public class PacketHandlerServer{ warn(player, "tried to use custom npcs without being an op"); return; } - ByteBuf buffer = event.packet.payload(); + ByteBuf in = event.packet.payload(); EnumPacketServer type = null; try { - type = EnumPacketServer.values()[buffer.readInt()]; + type = EnumPacketServer.values()[in.readInt()]; ItemStack item = player.inventory.getCurrentItem(); EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if (type == EnumPacketServer.IsGuiOpen) { - isGuiOpenPacket(buffer, player); - return; - } else if (type == EnumPacketServer.CustomGuiButton && player.openContainer instanceof ContainerCustomGui) { - ((ContainerCustomGui) player.openContainer).customGui.fromNBT(ByteBufUtils.readNBT(buffer)); - EventHooks.onCustomGuiButton((IPlayer) NpcAPI.Instance().getIEntity(player), ((ContainerCustomGui) player.openContainer).customGui, buffer.readInt()); - return; - } else if (type == EnumPacketServer.CustomGuiUnfocused && player.openContainer instanceof ContainerCustomGui) { - ((ContainerCustomGui) player.openContainer).customGui.fromNBT(ByteBufUtils.readNBT(buffer)); - EventHooks.onCustomGuiUnfocused((IPlayer) NpcAPI.Instance().getIEntity(player), ((ContainerCustomGui) player.openContainer).customGui, buffer.readInt()); - return; - } else if (type == EnumPacketServer.CustomGuiScrollClick && player.openContainer instanceof ContainerCustomGui) { - ((ContainerCustomGui) player.openContainer).customGui.fromNBT(ByteBufUtils.readNBT(buffer)); - EventHooks.onCustomGuiScrollClick((IPlayer) NpcAPI.Instance().getIEntity(player), ((ContainerCustomGui) player.openContainer).customGui, buffer.readInt(), buffer.readInt(), CustomGuiController.readScrollSelection(buffer), buffer.readBoolean()); - return; - } else if (type == EnumPacketServer.CustomGuiClose) { - EventHooks.onCustomGuiClose((IPlayer) NpcAPI.Instance().getIEntity(player), (new ScriptGui()).fromNBT(ByteBufUtils.readNBT(buffer))); - return; - } else if (type == EnumPacketServer.QuestLogToServer) { - NoppesUtilPlayer.updateQuestLogData(buffer, player); - return; - } else if (type == EnumPacketServer.PartyLogToServer) { - NoppesUtilPlayer.updatePartyQuestLogData(buffer, player); - return; - } else if (type == EnumPacketServer.UntrackQuest) { - NoppesUtilPlayer.clearTrackQuest(player); - return; - } else if(type == EnumPacketServer.DimensionsGet){ - HashMap map = new HashMap(); - for(int id : DimensionManager.getStaticDimensionIDs()){ - WorldProvider provider = DimensionManager.createProviderFor(id); - map.put(provider.getDimensionName(), id); - } - ScrollDataPacket.sendScrollData(player, map); - } else if(type == EnumPacketServer.TagsGet){ - NoppesUtilServer.sendTagDataAll(player); - } else if (type == EnumPacketServer.NpcTagsGet) { - NBTTagCompound compound = new NBTTagCompound(); - NBTTagList tagList = new NBTTagList(); - for (UUID uuid : npc.advanced.tagUUIDs) { - Tag tag = TagController.getInstance().getTagFromUUID(uuid); - if (tag != null) { - tagList.appendTag(new NBTTagString(tag.name)); - } - } - compound.setTag("TagNames",tagList); - GuiDataPacket.sendGuiData(player, compound); - } else if (type == EnumPacketServer.CacheAnimation) { - PlayerDataController.Instance.getPlayerData(player).animationData.cacheAnimation(buffer.readInt()); + if (type == EnumPacketServer.CacheAnimation) { + PlayerDataController.Instance.getPlayerData(player).animationData.cacheAnimation(in.readInt()); return; } else if (type == EnumPacketServer.GetPartyData || type == EnumPacketServer.CreateParty) { if(!ConfigMain.PartiesEnabled) @@ -144,7 +97,7 @@ public class PacketHandlerServer{ compound.setBoolean("Disband", true); PartyDataPacket.sendPartyData(player, compound); } else if (type == EnumPacketServer.KickPlayer) { - String kickPlayerName = ByteBufUtils.readString(buffer); + String kickPlayerName = ByteBufUtils.readString(in); EntityPlayer kickPlayer = NoppesUtilServer.getPlayerByName(kickPlayerName); PlayerData playerData = null; UUID playerUUID = null; @@ -181,7 +134,7 @@ public class PacketHandlerServer{ } } } else if (type == EnumPacketServer.LeavePlayer) { - EntityPlayer leavingPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(buffer)); + EntityPlayer leavingPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in)); if (leavingPlayer != null) { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); if (playerData.partyUUID != null) { @@ -200,19 +153,19 @@ public class PacketHandlerServer{ PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); if (playerData.partyUUID != null) { Party party = PartyController.Instance().getParty(playerData.partyUUID); - party.readClientNBT(ByteBufUtils.readNBT(buffer)); + party.readClientNBT(ByteBufUtils.readNBT(in)); } } else if (type == EnumPacketServer.SetPartyLeader) { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); if (playerData.partyUUID != null) { Party party = PartyController.Instance().getParty(playerData.partyUUID); if (!party.getIsLocked()) { - party.setLeader(NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(buffer))); + party.setLeader(NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in))); PartyController.Instance().pingPartyUpdate(party); } } } else if (type == EnumPacketServer.PartyInvite) { - EntityPlayer invitedPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(buffer)); + EntityPlayer invitedPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in)); if (invitedPlayer != null) { PlayerData senderData = PlayerDataController.Instance.getPlayerData(player); PlayerData invitedData = PlayerDataController.Instance.getPlayerData(invitedPlayer); @@ -232,14 +185,14 @@ public class PacketHandlerServer{ sendInviteData(player); } else if (type == EnumPacketServer.AcceptInvite) { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - String uuidString = ByteBufUtils.readString(buffer); + String uuidString = ByteBufUtils.readString(in); if (uuidString != null) { UUID uuid = UUID.fromString(uuidString); playerData.acceptInvite(uuid); } } else if (type == EnumPacketServer.IgnoreInvite) { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - String uuidString = ByteBufUtils.readString(buffer); + String uuidString = ByteBufUtils.readString(in); if (uuidString != null) { UUID uuid = UUID.fromString(uuidString); playerData.ignoreInvite(uuid); @@ -250,7 +203,7 @@ public class PacketHandlerServer{ Party party = PartyController.Instance().getParty(playerData.partyUUID); if (party != null) { if (party.getLeaderUUID().equals(player.getUniqueID())) { - int questID = buffer.readInt(); + int questID = in.readInt(); party.setQuest(null); if(questID != -1){ Quest foundQuest = QuestController.Instance.quests.get(questID); @@ -288,34 +241,34 @@ public class PacketHandlerServer{ else { if (item != null) { if (item.getItem() == CustomItems.wand) - wandPackets(type, buffer, player, npc); + wandPackets(type, in, player, npc); else if (item.getItem() == CustomItems.moving) - movingPackets(type, buffer, player, npc); + movingPackets(type, in, player, npc); else if (item.getItem() == CustomItems.mount) - mountPackets(type, buffer, player); + mountPackets(type, in, player); else if (item.getItem() == CustomItems.cloner) - clonePackets(type, buffer, player); + clonePackets(type, in, player); else if (item.getItem() == CustomItems.teleporter) - featherPackets(type, buffer, player); + featherPackets(type, in, player); else if (item.getItem() == Item.getItemFromBlock(CustomItems.waypoint) || item.getItem() == Item.getItemFromBlock(CustomItems.border) || item.getItem() == Item.getItemFromBlock(CustomItems.redstoneBlock)) - blockPackets(type, buffer, player); + blockPackets(type, in, player); else if (ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) { if (type == EnumPacketServer.EventScriptDataGet || type == EnumPacketServer.EventScriptDataSave) - npcEventScriptPackets(type, buffer, player, npc); + npcEventScriptPackets(type, in, player, npc); else if (type == EnumPacketServer.ScriptPlayerGet || type == EnumPacketServer.ScriptPlayerSave) - playerScriptPackets(type, buffer, player); + playerScriptPackets(type, in, player); else if (type == EnumPacketServer.ScriptGlobalNPCGet || type == EnumPacketServer.ScriptGlobalNPCSave) - npcGlobalScriptPackets(type, buffer, player); + npcGlobalScriptPackets(type, in, player); else if (type == EnumPacketServer.ScriptForgeGet || type == EnumPacketServer.ScriptForgeSave) - forgeScriptPackets(type, buffer, player); + forgeScriptPackets(type, in, player); else if (type == EnumPacketServer.ScriptItemDataGet || type == EnumPacketServer.ScriptItemDataSave) - itemScriptPackets(type, buffer, player); + itemScriptPackets(type, in, player); else if (type == EnumPacketServer.ScriptBlockDataGet || type == EnumPacketServer.ScriptBlockDataSave) - blockScriptPackets(type, buffer, player); + blockScriptPackets(type, in, player); else if (type == EnumPacketServer.ScriptGlobalGuiDataGet || type == EnumPacketServer.ScriptGlobalGuiDataSave) - getScriptsEnabled(type, buffer, player); + getScriptsEnabled(type, in, player); else if (item.getItem() == CustomItems.scripter) - scriptPackets(type, buffer, player, npc); + scriptPackets(type, in, player, npc); } } } From 35da0f92f6a4816c1a5e5992a7317c54d3c05993 Mon Sep 17 00:00:00 2001 From: Kam Date: Sat, 1 Feb 2025 21:23:49 -0500 Subject: [PATCH 059/157] =?UTF-8?q?MAKE=20A=20trillion=20+=201=20packets?= =?UTF-8?q?=20now=20=F0=9F=90=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kamkeel/npcs/network/PacketHandler.java | 26 +-- .../java/kamkeel/npcs/network/PacketUtil.java | 63 ++++++ .../network/enums/EnumItemPacketType.java | 11 + .../npcs/network/enums/EnumRequestPacket.java | 27 ++- .../packets/data/AchievementPacket.java | 7 +- .../network/packets/data/ChatAlertPacket.java | 7 +- .../packets/data/ChatBubblePacket.java | 9 +- .../network/packets/data/ClonerPacket.java | 5 +- .../packets/data/ConfigCommandPacket.java | 11 +- .../packets/data/DisableMouseInputPacket.java | 3 +- .../network/packets/data/LoginPacket.java | 3 +- .../network/packets/data/MarkDataPacket.java | 3 +- .../data/OverlayQuestTrackingPacket.java | 5 +- .../network/packets/data/ParticlePacket.java | 14 +- .../data/PlayerUpdateSkinOverlaysPacket.java | 3 +- .../packets/data/QuestCompletionPacket.java | 5 +- .../packets/data/ScrollSelectedPacket.java | 5 +- .../packets/data/SoundManagementPacket.java | 3 +- .../packets/data/SwingPlayerArmPacket.java | 6 +- .../packets/data/UpdateAnimationsPacket.java | 3 +- .../packets/data/VillagerListPacket.java | 5 +- .../packets/data/gui/GuiClosePacket.java | 5 +- .../packets/data/gui/GuiErrorPacket.java | 5 +- .../packets/data/gui/GuiOpenBookPacket.java | 5 +- .../packets/data/gui/GuiOpenPacket.java | 5 +- .../packets/data/gui/GuiRedstonePacket.java | 3 +- .../packets/data/gui/GuiTeleporterPacket.java | 8 +- .../packets/data/gui/GuiWaypointPacket.java | 3 +- .../packets/data/gui/IsGuiOpenPacket.java | 6 +- .../packets/data/large/GuiDataPacket.java | 11 +- .../packets/data/large/PartyDataPacket.java | 11 +- .../packets/data/large/ScrollDataPacket.java | 3 +- .../packets/data/large/ScrollGroupPacket.java | 5 +- .../packets/data/large/ScrollListPacket.java | 5 +- .../packets/data/large/SyncPacket.java | 5 +- .../packets/data/npc/DeleteNpcPacket.java | 5 +- .../packets/data/npc/DialogPacket.java | 8 +- .../packets/data/npc/EditNpcPacket.java | 4 +- .../network/packets/data/npc/RolePacket.java | 3 +- .../packets/data/npc/UpdateNpcPacket.java | 3 +- .../packets/data/npc/WeaponNpcPacket.java | 7 +- .../data/script/ScriptOverlayClosePacket.java | 3 +- .../data/script/ScriptOverlayDataPacket.java | 5 +- .../data/script/ScriptedParticlePacket.java | 11 +- .../packets/request/AnimationCachePacket.java | 17 +- .../packets/request/DimensionsGetPacket.java | 11 +- .../network/packets/request/GuiPacket.java | 73 +++++++ .../packets/request/IsGuiOpenPacket.java | 7 +- .../packets/request/MailOpenSetupPacket.java | 50 +++++ .../packets/request/MerchantUpdatePacket.java | 62 ++++++ .../request/QuestLogToServerPacket.java | 4 +- .../packets/request/QuestUntrackPacket.java | 8 +- .../packets/request/REQUESTPacket.java | 15 +- .../packets/request/TagsGetPacket.java | 10 +- .../packets/request/TagsNpcGetPacket.java | 11 +- .../request/TraderMarketSavePacket.java | 64 ++++++ .../request/animation/AnimationGetPacket.java | 50 +++++ .../animation/AnimationRemovePacket.java | 59 ++++++ .../animation/AnimationSavePacket.java | 66 ++++++ .../animation/AnimationsGetPacket.java | 43 ++++ .../packets/request/bank/BankGetPacket.java | 59 ++++++ .../request/bank/BankRemovePacket.java | 67 +++++++ .../packets/request/bank/BankSavePacket.java | 70 +++++++ .../packets/request/bank/BanksGetPacket.java | 49 +++++ .../CustomGuiButtonPacket.java | 9 +- .../{ => customgui}/CustomGuiClosePacket.java | 9 +- .../CustomGuiUnfocusedPacket.java | 9 +- .../CustomScrollClickPacket.java | 7 +- .../dialog/DialogCategoryGetPacket.java | 55 +++++ .../dialog/DialogCategoryRemovePacket.java | 61 ++++++ .../dialog/DialogCategorySavePacket.java | 66 ++++++ .../request/dialog/DialogNpcGetPacket.java | 47 +++++ .../request/dialog/DialogNpcRemovePacket.java | 63 ++++++ .../request/dialog/DialogNpcSetPacket.java | 76 +++++++ .../request/dialog/DialogRemovePacket.java | 73 +++++++ .../request/dialog/DialogSavePacket.java | 85 ++++++++ .../request/faction/FactionRemovePacket.java | 73 +++++++ .../request/faction/FactionSavePacket.java | 75 +++++++ .../request/faction/FactionSetPacket.java | 63 ++++++ .../packets/request/jobs/JobGetPacket.java | 65 ++++++ .../packets/request/jobs/JobSavePacket.java | 63 ++++++ .../request/jobs/JobSpawnerAddPacket.java | 68 +++++++ .../request/jobs/JobSpawnerRemovePacket.java | 59 ++++++ .../request/linked/LinkedAddPacket.java | 72 +++++++ .../request/linked/LinkedGetAllPacket.java | 58 ++++++ .../request/linked/LinkedRemovePacket.java | 71 +++++++ .../request/linked/LinkedSetPacket.java | 67 +++++++ .../request/mainmenu/MainmenuAIGetPacket.java | 44 ++++ .../mainmenu/MainmenuAISavePacket.java | 57 ++++++ .../mainmenu/MainmenuAdvancedGetPacket.java | 55 +++++ .../MainmenuAdvancedMarkDataPacket.java | 57 ++++++ .../mainmenu/MainmenuAdvancedSavePacket.java | 56 ++++++ .../mainmenu/MainmenuDisplayGetPacket.java | 57 ++++++ .../mainmenu/MainmenuDisplaySavePacket.java | 57 ++++++ .../mainmenu/MainmenuInvGetPacket.java | 57 ++++++ .../mainmenu/MainmenuInvSavePacket.java | 56 ++++++ .../mainmenu/MainmenuStatsGetPacket.java | 57 ++++++ .../mainmenu/MainmenuStatsSavePacket.java | 57 ++++++ .../NaturalSpawnGetAllPacket.java | 48 +++++ .../naturalspawns/NaturalSpawnGetPacket.java | 62 ++++++ .../NaturalSpawnRemovePacket.java | 63 ++++++ .../naturalspawns/NaturalSpawnSavePacket.java | 68 +++++++ .../request/npc/ModelDataSavePacket.java | 58 ++++++ .../packets/request/npc/NpcClosePacket.java | 67 +++++++ .../packets/request/npc/NpcDeletePacket.java | 67 +++++++ .../request/npc/RemoteDeletePacket.java | 81 ++++++++ .../request/npc/RemoteFreezeGetPacket.java | 48 +++++ .../request/npc/RemoteFreezePacket.java | 55 +++++ .../request/npc/RemoteGlobalMenuPacket.java | 61 ++++++ .../request/npc/RemoteMainMenuPacket.java | 69 +++++++ .../request/npc/RemoteNpcsGetPacket.java | 53 +++++ .../request/npc/RemoteResetPacket.java | 57 ++++++ .../request/npc/RemoteTpToNpcPacket.java | 57 ++++++ .../party/PartyAcceptInvitePacket.java | 56 ++++++ .../request/party/PartyDisbandPacket.java | 53 +++++ .../party/PartyIgnoreInvitePacket.java | 56 ++++++ .../request/party/PartyInfoPacket.java | 63 ++++++ .../request/party/PartyInviteListPacket.java | 44 ++++ .../request/party/PartyInvitePacket.java | 75 +++++++ .../request/party/PartyKickPacket.java | 96 +++++++++ .../request/party/PartyLeavePacket.java | 74 +++++++ .../{ => party}/PartyLogToServerPacket.java | 6 +- .../request/party/PartySavePacket.java | 57 ++++++ .../request/party/PartySetLeaderPacket.java | 60 ++++++ .../request/party/PartySetQuestPacket.java | 85 ++++++++ .../playerdata/PlayerDataGetPacket.java | 54 +++++ .../playerdata/PlayerDataMapRegenPacket.java | 51 +++++ .../playerdata/PlayerDataRemovePacket.java | 52 +++++ .../request/quest/QuestCategoryGetPacket.java | 54 +++++ .../quest/QuestCategoryRemovePacket.java | 61 ++++++ .../quest/QuestCategorySavePacket.java | 66 ++++++ .../quest/QuestDialogGetTitlePacket.java | 64 ++++++ .../request/quest/QuestOpenGuiPacket.java | 67 +++++++ .../request/quest/QuestSavePacket.java | 80 ++++++++ .../request/recipe/RecipeGetPacket.java | 59 ++++++ .../request/recipe/RecipeRemovePacket.java | 65 ++++++ .../request/recipe/RecipeSavePacket.java | 67 +++++++ .../request/recipe/RecipesGetPacket.java | 53 +++++ .../role/RoleCompanionUpdatePacket.java | 56 ++++++ .../packets/request/role/RoleGetPacket.java | 58 ++++++ .../packets/request/role/RoleSavePacket.java | 55 +++++ .../packets/request/tags/TagRemovePacket.java | 73 +++++++ .../packets/request/tags/TagSavePacket.java | 74 +++++++ .../packets/request/tags/TagSetPacket.java | 72 +++++++ .../request/transform/TransformGetPacket.java | 55 +++++ .../transform/TransformLoadPacket.java | 54 +++++ .../transform/TransformSavePacket.java | 57 ++++++ .../TransportCategoriesGetPacket.java | 45 +++++ .../TransportCategoryRemovePacket.java | 61 ++++++ .../TransportCategorySavePacket.java | 64 ++++++ .../transport/TransportGetLocationPacket.java | 58 ++++++ .../transport/TransportRemovePacket.java | 63 ++++++ .../transport/TransportSavePacket.java | 89 +++++++++ .../transport/TransportsGetPacket.java | 46 +++++ .../java/noppes/npcs/PacketHandlerServer.java | 189 +----------------- .../npcs/client/gui/util/GuiNpcMenu.java | 2 +- .../npcs/constants/EnumPacketServer.java | 2 +- 157 files changed, 6290 insertions(+), 367 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/enums/EnumItemPacketType.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/GuiPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/MailOpenSetupPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/MerchantUpdatePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/TraderMarketSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationsGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/bank/BankGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/bank/BankRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/bank/BankSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/bank/BanksGetPacket.java rename src/main/java/kamkeel/npcs/network/packets/request/{ => customgui}/CustomGuiButtonPacket.java (87%) rename src/main/java/kamkeel/npcs/network/packets/request/{ => customgui}/CustomGuiClosePacket.java (86%) rename src/main/java/kamkeel/npcs/network/packets/request/{ => customgui}/CustomGuiUnfocusedPacket.java (91%) rename src/main/java/kamkeel/npcs/network/packets/request/{ => customgui}/CustomScrollClickPacket.java (93%) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategorySavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcSetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/faction/FactionRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/jobs/JobGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerAddPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedAddPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedGetAllPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAIGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAISavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedMarkDataPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplayGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplaySavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetAllPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/npc/ModelDataSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/npc/NpcClosePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/npc/NpcDeletePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteFreezeGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteFreezePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteGlobalMenuPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteNpcsGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartyAcceptInvitePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartyDisbandPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartyIgnoreInvitePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartyInviteListPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java rename src/main/java/kamkeel/npcs/network/packets/request/{ => party}/PartyLogToServerPacket.java (91%) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartySavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartySetLeaderPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartySetQuestPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataMapRegenPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategorySavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/quest/QuestDialogGetTitlePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/quest/QuestOpenGuiPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/quest/QuestSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipesGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/role/RoleCompanionUpdatePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/role/RoleGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/role/RoleSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/tags/TagSetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/transform/TransformGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/transform/TransformSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoriesGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoryRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategorySavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/transport/TransportGetLocationPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/transport/TransportRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/transport/TransportSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/transport/TransportsGetPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 6425de62d..7c62a1747 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -5,6 +5,7 @@ import cpw.mods.fml.common.network.FMLEventChannel; import cpw.mods.fml.common.network.FMLNetworkEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.internal.FMLProxyPacket; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.enums.EnumChannelType; import kamkeel.npcs.network.enums.EnumRequestPacket; @@ -130,15 +131,15 @@ public final class PacketHandler { @SubscribeEvent public void onServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) { - handlePacket(event.packet, ((NetHandlerPlayServer) event.handler).playerEntity); + handlePacket(event.packet, ((NetHandlerPlayServer) event.handler).playerEntity, Side.SERVER); } @SubscribeEvent public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) { - handlePacket(event.packet, CustomNpcs.proxy.getPlayer()); + handlePacket(event.packet, CustomNpcs.proxy.getPlayer(), Side.CLIENT); } - private void handlePacket(FMLProxyPacket packet, EntityPlayer player) { + private void handlePacket(FMLProxyPacket packet, EntityPlayer player, Side side) { ByteBuf buf = packet.payload(); try { int packetTypeOrdinal = buf.readInt(); @@ -157,16 +158,17 @@ public final class PacketHandler { return; } - // Check if permission is allowed - if(abstractPacket.getPermission() != null && !CustomNpcsPermissions.hasPermission(player, abstractPacket.getPermission())){ - return; - } - - // Check for required NPC - if(abstractPacket.needsNPC()){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null) + if(side == Side.SERVER){ + // Check if permission is allowed + if(abstractPacket.getPermission() != null && !CustomNpcsPermissions.hasPermission(player, abstractPacket.getPermission())){ return; + } + + // Check for required NPC + EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); + if(abstractPacket.needsNPC() && npc == null){ + return; + } abstractPacket.setNPC(npc); } diff --git a/src/main/java/kamkeel/npcs/network/PacketUtil.java b/src/main/java/kamkeel/npcs/network/PacketUtil.java index 86823f7fd..ae4d6f026 100644 --- a/src/main/java/kamkeel/npcs/network/PacketUtil.java +++ b/src/main/java/kamkeel/npcs/network/PacketUtil.java @@ -1,6 +1,69 @@ package kamkeel.npcs.network; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import noppes.npcs.CustomItems; +import noppes.npcs.LogWriter; + public class PacketUtil { + public static boolean verifyItemPacket(EnumItemPacketType type, EntityPlayer player){ + if(player == null) + return false; + ItemStack item = player.inventory.getCurrentItem(); + if(item == null){ + LogWriter.error(String.format("%s attempted to utilize a %s Packet without an item, they could be a hacker", player.getCommandSenderName(), type.toString())); + return false; + } + + switch (type){ + case WAND: + if(item.getItem() != CustomItems.wand){ + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Wand, they could be a hacker", player.getCommandSenderName(), type.toString())); + return false; + } + break; + case MOUNTER: + if(item.getItem() != CustomItems.mount){ + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Mounter, they could be a hacker", player.getCommandSenderName(), type.toString())); + return false; + } + break; + case CLONER: + if(item.getItem() != CustomItems.cloner){ + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Cloner, they could be a hacker", player.getCommandSenderName(), type.toString())); + return false; + } + break; + case TELEPORTER: + if(item.getItem() != CustomItems.teleporter){ + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Teleporter, they could be a hacker", player.getCommandSenderName(), type.toString())); + return false; + } + break; + case SCRIPTER: + if(item.getItem() != CustomItems.scripter){ + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Scripter, they could be a hacker", player.getCommandSenderName(), type.toString())); + return false; + } + break; + case PATHER: + if(item.getItem() != CustomItems.moving){ + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Pather, they could be a hacker", player.getCommandSenderName(), type.toString())); + return false; + } + break; + case BLOCK: + if(item.getItem() == Item.getItemFromBlock(CustomItems.waypoint) || item.getItem() == Item.getItemFromBlock(CustomItems.border) || item.getItem() == Item.getItemFromBlock(CustomItems.redstoneBlock)){ + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a valid Block, they could be a hacker", player.getCommandSenderName(), type.toString())); + return false; + } + break; + } + + return true; + } } diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumItemPacketType.java b/src/main/java/kamkeel/npcs/network/enums/EnumItemPacketType.java new file mode 100644 index 000000000..8c1513966 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/enums/EnumItemPacketType.java @@ -0,0 +1,11 @@ +package kamkeel.npcs.network.enums; + +public enum EnumItemPacketType { + WAND, + MOUNTER, + CLONER, + TELEPORTER, + SCRIPTER, + PATHER, + BLOCK +} diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index 087e35190..bb40e8d83 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -1,9 +1,9 @@ package kamkeel.npcs.network.enums; public enum EnumRequestPacket { - Delete, + NPCDelete, RemoteMainMenu, RemoteGlobalMenu, - NpcMenuClose, + NpcClose, RemoteDelete, RemoteFreeze, RemoteFreezeGet, @@ -109,18 +109,17 @@ public enum EnumRequestPacket { CustomGuiUnfocused, PartyLogToServer, - SavePartyData, - CreateParty, - GetPartyData, - DisbandParty, - KickPlayer, - LeavePlayer, + PartySave, + PartyInfo, + PartyDisband, + PartyKick, + PartyLeave, PartyInvite, - GetPartyInviteList, - AcceptInvite, - IgnoreInvite, - SetPartyLeader, - SetPartyQuest, + PartyInviteList, + PartyAcceptInvite, + PartyIgnoreInvite, + PartySetLeader, + PartySetQuest, - ServerUpdateSkinOverlays + LinkedRemove, LinkedAdd, LinkedGetAll, LinkedSet, BankGet, BanksGet, BankSave, BankRemove, QuestCategoryGet, PlayerDataGet, PlayerDataRemove, PlayerDataMapRegen, JobSave, JobGet, JobSpawnerAdd, RoleCompanionUpdate, JobSpawnerRemove, RoleSave, RoleGet, MailOpenSetup, TransformSave, TransformGet, TransformLoad, TraderMarketSave, ServerUpdateSkinOverlays } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java index e089bce5d..88f1b0b7e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/AchievementPacket.java @@ -29,7 +29,8 @@ public final class AchievementPacket extends AbstractPacket { private String description; private String message; - public AchievementPacket() {} + public AchievementPacket() { + } public AchievementPacket(boolean isParty, String description, String message) { this.isParty = isParty; @@ -37,7 +38,7 @@ public final class AchievementPacket extends AbstractPacket { this.message = message; } - public static void sendAchievement(EntityPlayerMP playerMP, boolean isParty, String description, String message){ + public static void sendAchievement(EntityPlayerMP playerMP, boolean isParty, String description, String message) { AchievementPacket packet = new AchievementPacket(isParty, description, message); PacketHandler.Instance.sendToPlayer(packet, playerMP); } @@ -62,7 +63,7 @@ public final class AchievementPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(!ConfigClient.BannerAlerts) + if (!ConfigClient.BannerAlerts) return; boolean isNotParty = !in.readBoolean(); diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java index 7a54ab92e..b57661e90 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ChatAlertPacket.java @@ -20,13 +20,14 @@ public final class ChatAlertPacket extends AbstractPacket { private Object[] objects; - public ChatAlertPacket() {} + public ChatAlertPacket() { + } public ChatAlertPacket(final Object... obs) { this.objects = obs; } - public static void sendChatAlert(EntityPlayerMP playerMP, final Object... obs){ + public static void sendChatAlert(EntityPlayerMP playerMP, final Object... obs) { ChatAlertPacket packet = new ChatAlertPacket(obs); PacketHandler.Instance.sendToPlayer(packet, playerMP); } @@ -49,7 +50,7 @@ public final class ChatAlertPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(!ConfigClient.ChatAlerts) + if (!ConfigClient.ChatAlerts) return; StringBuilder message = new StringBuilder(); diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java index eaf0c0d56..1d9892252 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ChatBubblePacket.java @@ -25,7 +25,8 @@ public final class ChatBubblePacket extends AbstractPacket { private String text; private boolean hideText; - public ChatBubblePacket() {} + public ChatBubblePacket() { + } public ChatBubblePacket(int entityId, String text, boolean hideText) { this.entityId = entityId; @@ -54,16 +55,16 @@ public final class ChatBubblePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); - if(!(entity instanceof EntityNPCInterface)) + if (!(entity instanceof EntityNPCInterface)) return; EntityNPCInterface npc = (EntityNPCInterface) entity; - if(npc.messages == null) + if (npc.messages == null) npc.messages = new RenderChatMessages(); String text = NoppesStringUtils.formatText(ByteBufUtils.readString(in), player, npc); npc.messages.addMessage(text, npc); - if(in.readBoolean()) + if (in.readBoolean()) player.addChatMessage(new ChatComponentTranslation(npc.getCommandSenderName() + ": " + text)); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java index 9c9472957..594ea2bcb 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ClonerPacket.java @@ -21,9 +21,10 @@ public final class ClonerPacket extends LargeAbstractPacket { private NBTTagCompound compound; - public ClonerPacket() {} + public ClonerPacket() { + } - public ClonerPacket(NBTTagCompound comp){ + public ClonerPacket(NBTTagCompound comp) { this.compound = comp; } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java index 057549c60..c4e5b1e2a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java @@ -6,14 +6,14 @@ 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.EnumDataPacket; import kamkeel.npcs.network.enums.EnumConfigOperation; +import kamkeel.npcs.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.client.ClientProxy; -import noppes.npcs.config.ConfigClient; -import noppes.npcs.client.ClientProxy.FontContainer; import net.minecraft.util.ChatComponentTranslation; +import noppes.npcs.client.ClientProxy; +import noppes.npcs.client.ClientProxy.FontContainer; +import noppes.npcs.config.ConfigClient; import java.io.IOException; @@ -23,7 +23,8 @@ public final class ConfigCommandPacket extends AbstractPacket { private EnumConfigOperation configOperation; private Object[] objects; - public ConfigCommandPacket() {} + public ConfigCommandPacket() { + } public ConfigCommandPacket(EnumConfigOperation operation, Object... obs) { this.configOperation = operation; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java index 64141be58..290cdf609 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/DisableMouseInputPacket.java @@ -19,7 +19,8 @@ public final class DisableMouseInputPacket extends AbstractPacket { private long duration; private String keys; - public DisableMouseInputPacket() {} + public DisableMouseInputPacket() { + } public DisableMouseInputPacket(long duration, String keys) { this.duration = duration; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java index ac1c9b049..385b8fda4 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java @@ -13,7 +13,8 @@ import java.io.IOException; public final class LoginPacket extends AbstractPacket { public static final String packetName = "CNPC+|Login"; - public LoginPacket() {} + public LoginPacket() { + } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java index ff6f029c2..8fa4265bc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/MarkDataPacket.java @@ -22,7 +22,8 @@ public final class MarkDataPacket extends AbstractPacket { private int entityID; private NBTTagCompound compound; - public MarkDataPacket() {} + public MarkDataPacket() { + } public MarkDataPacket(int entityID, NBTTagCompound compound) { this.entityID = entityID; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java index b37886ac8..f31baf305 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/OverlayQuestTrackingPacket.java @@ -11,8 +11,8 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.gui.OverlayQuestTracking; import noppes.npcs.client.ClientCacheHandler; +import noppes.npcs.client.gui.OverlayQuestTracking; import java.io.IOException; @@ -21,7 +21,8 @@ public final class OverlayQuestTrackingPacket extends AbstractPacket { private NBTTagCompound compound; - public OverlayQuestTrackingPacket() {} + public OverlayQuestTrackingPacket() { + } public OverlayQuestTrackingPacket(NBTTagCompound compound) { this.compound = compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java index dc0c5d7e2..f2b018dc7 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java @@ -28,7 +28,8 @@ public final class ParticlePacket extends AbstractPacket { private String particle; - public ParticlePacket() {} + public ParticlePacket() { + } public ParticlePacket(double x, double y, double z, float height, float width, float yOffset, String particle) { this.x = x; @@ -70,7 +71,7 @@ public final class ParticlePacket extends AbstractPacket { } @SideOnly(Side.CLIENT) - public static void spawnParticle(ByteBuf buffer) throws IOException{ + public static void spawnParticle(ByteBuf buffer) throws IOException { double posX = buffer.readDouble(); double posY = buffer.readDouble(); double posZ = buffer.readDouble(); @@ -82,11 +83,10 @@ public final class ParticlePacket extends AbstractPacket { World worldObj = Minecraft.getMinecraft().theWorld; Random rand = worldObj.rand; - if(particle.equals("heal")){ - for (int k = 0; k < 6; k++) - { - worldObj.spawnParticle("instantSpell", posX + (rand.nextDouble() - 0.5D) * (double)width, (posY + rand.nextDouble() * (double)height) - (double)yOffset, posZ + (rand.nextDouble() - 0.5D) * (double)width, 0, 0, 0); - worldObj.spawnParticle("spell", posX + (rand.nextDouble() - 0.5D) * (double)width, (posY + rand.nextDouble() * (double)height) - (double)yOffset, posZ + (rand.nextDouble() - 0.5D) * (double)width, 0, 0, 0); + if (particle.equals("heal")) { + for (int k = 0; k < 6; k++) { + worldObj.spawnParticle("instantSpell", posX + (rand.nextDouble() - 0.5D) * (double) width, (posY + rand.nextDouble() * (double) height) - (double) yOffset, posZ + (rand.nextDouble() - 0.5D) * (double) width, 0, 0, 0); + worldObj.spawnParticle("spell", posX + (rand.nextDouble() - 0.5D) * (double) width, (posY + rand.nextDouble() * (double) height) - (double) yOffset, posZ + (rand.nextDouble() - 0.5D) * (double) width, 0, 0, 0); } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java index e46d61b0e..e16d7c06b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/PlayerUpdateSkinOverlaysPacket.java @@ -21,7 +21,8 @@ public final class PlayerUpdateSkinOverlaysPacket extends AbstractPacket { private String playerName; private NBTTagCompound compound; - public PlayerUpdateSkinOverlaysPacket() {} + public PlayerUpdateSkinOverlaysPacket() { + } public PlayerUpdateSkinOverlaysPacket(String playerName, NBTTagCompound compound) { this.playerName = playerName; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java index 55b197205..d4eda9be3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/QuestCompletionPacket.java @@ -20,13 +20,14 @@ public final class QuestCompletionPacket extends AbstractPacket { private NBTTagCompound compound; - public QuestCompletionPacket() {} + public QuestCompletionPacket() { + } public QuestCompletionPacket(NBTTagCompound compound) { this.compound = compound; } - public static void sendQuestComplete(EntityPlayerMP playerMP, NBTTagCompound compound){ + public static void sendQuestComplete(EntityPlayerMP playerMP, NBTTagCompound compound) { QuestCompletionPacket packet = new QuestCompletionPacket(compound); PacketHandler.Instance.sendToPlayer(packet, playerMP); } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java index dcdcb8ce1..ff10fe045 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ScrollSelectedPacket.java @@ -21,13 +21,14 @@ public final class ScrollSelectedPacket extends AbstractPacket { private String selected; - public ScrollSelectedPacket() {} + public ScrollSelectedPacket() { + } public ScrollSelectedPacket(String selected) { this.selected = selected; } - public static void setSelectedList(EntityPlayerMP playerMP, String item){ + public static void setSelectedList(EntityPlayerMP playerMP, String item) { ScrollSelectedPacket packet = new ScrollSelectedPacket(item); PacketHandler.Instance.sendToPlayer(packet, playerMP); } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/SoundManagementPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/SoundManagementPacket.java index 74ce3312f..8971cd8bc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/SoundManagementPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/SoundManagementPacket.java @@ -24,7 +24,8 @@ public final class SoundManagementPacket extends AbstractPacket { private NBTTagCompound nbt; private int soundId; - public SoundManagementPacket() {} + public SoundManagementPacket() { + } public SoundManagementPacket(EnumSoundOperation operation) { this.operation = operation; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java index dd7341c00..04095517f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/SwingPlayerArmPacket.java @@ -15,7 +15,8 @@ import java.io.IOException; public final class SwingPlayerArmPacket extends AbstractPacket { public static final String packetName = "Data|SwingPlayerArm"; - public SwingPlayerArmPacket() {} + public SwingPlayerArmPacket() { + } @Override public Enum getType() { @@ -28,7 +29,8 @@ public final class SwingPlayerArmPacket extends AbstractPacket { } @Override - public void sendData(ByteBuf out) throws IOException {} + public void sendData(ByteBuf out) throws IOException { + } @SideOnly(Side.CLIENT) @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java index 78a26384d..19582dd4f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java @@ -25,7 +25,8 @@ public final class UpdateAnimationsPacket extends AbstractPacket { private NBTTagCompound animationCompound; private String playername; - public UpdateAnimationsPacket() {} + public UpdateAnimationsPacket() { + } public UpdateAnimationsPacket(NBTTagCompound animationCompound, String playername) { this.animationCompound = animationCompound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java index cdf014600..af1535e27 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/VillagerListPacket.java @@ -10,8 +10,8 @@ import kamkeel.npcs.network.enums.EnumDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.PacketBuffer; -import noppes.npcs.ServerEventsHandler; import net.minecraft.village.MerchantRecipeList; +import noppes.npcs.ServerEventsHandler; import java.io.IOException; @@ -20,7 +20,8 @@ public final class VillagerListPacket extends AbstractPacket { private MerchantRecipeList merchantrecipelist; - public VillagerListPacket() {} + public VillagerListPacket() { + } public VillagerListPacket(MerchantRecipeList merchantrecipelist) { this.merchantrecipelist = merchantrecipelist; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java index f0ce1324d..29dd90ddd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiClosePacket.java @@ -23,14 +23,15 @@ public final class GuiClosePacket extends AbstractPacket { private int code; private NBTTagCompound compound; - public GuiClosePacket() {} + public GuiClosePacket() { + } public GuiClosePacket(int code, NBTTagCompound compound) { this.code = code; this.compound = compound; } - public static void closeGUI(EntityPlayerMP playerMP, int closeCode, NBTTagCompound compound){ + public static void closeGUI(EntityPlayerMP playerMP, int closeCode, NBTTagCompound compound) { GuiClosePacket packet = new GuiClosePacket(closeCode, compound); PacketHandler.Instance.sendToPlayer(packet, playerMP); } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java index 64fa3010b..8342375da 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiErrorPacket.java @@ -23,14 +23,15 @@ public final class GuiErrorPacket extends AbstractPacket { private int code; private NBTTagCompound compound; - public GuiErrorPacket() {} + public GuiErrorPacket() { + } public GuiErrorPacket(int code, NBTTagCompound compound) { this.code = code; this.compound = compound; } - public static void errorGUI(EntityPlayerMP playerMP, int closeCode, NBTTagCompound compound){ + public static void errorGUI(EntityPlayerMP playerMP, int closeCode, NBTTagCompound compound) { GuiErrorPacket packet = new GuiErrorPacket(closeCode, compound); PacketHandler.Instance.sendToPlayer(packet, playerMP); } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java index 701df2b0e..2df1e0aa4 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java @@ -11,8 +11,8 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.gui.player.GuiBook; import noppes.npcs.client.NoppesUtil; +import noppes.npcs.client.gui.player.GuiBook; import java.io.IOException; @@ -24,7 +24,8 @@ public final class GuiOpenBookPacket extends AbstractPacket { private int k; private NBTTagCompound nbtTagCompound; - public GuiOpenBookPacket() {} + public GuiOpenBookPacket() { + } public GuiOpenBookPacket(int i, int j, int k, NBTTagCompound nbtTagCompound) { this.i = i; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java index a42b3e057..1a8324c66 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenPacket.java @@ -23,7 +23,8 @@ public final class GuiOpenPacket extends AbstractPacket { private int y; private int z; - public GuiOpenPacket() {} + public GuiOpenPacket() { + } public GuiOpenPacket(EnumGuiType type, int x, int y, int z) { this.type = type; @@ -32,7 +33,7 @@ public final class GuiOpenPacket extends AbstractPacket { this.z = z; } - public static void openGUI(EntityPlayerMP playerMP, EnumGuiType type, int x, int y, int z){ + public static void openGUI(EntityPlayerMP playerMP, EnumGuiType type, int x, int y, int z) { GuiOpenPacket packet = new GuiOpenPacket(type, x, y, z); PacketHandler.Instance.sendToPlayer(packet, playerMP); } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java index b5b674873..e1d5e5ba7 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiRedstonePacket.java @@ -19,7 +19,8 @@ public final class GuiRedstonePacket extends AbstractPacket { private NBTTagCompound compound; - public GuiRedstonePacket() {} + public GuiRedstonePacket() { + } public GuiRedstonePacket(NBTTagCompound compound) { this.compound = compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java index 2d9f0ea8d..ccda3e54c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiTeleporterPacket.java @@ -17,7 +17,8 @@ import java.io.IOException; public final class GuiTeleporterPacket extends AbstractPacket { public static final String packetName = "Data|Teleporter"; - public GuiTeleporterPacket(){} + public GuiTeleporterPacket() { + } @Override public Enum getType() { @@ -30,11 +31,12 @@ public final class GuiTeleporterPacket extends AbstractPacket { } @Override - public void sendData(ByteBuf out) throws IOException {} + public void sendData(ByteBuf out) throws IOException { + } @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - CustomNpcs.proxy.openGui((EntityNPCInterface)null, EnumGuiType.NpcDimensions); + CustomNpcs.proxy.openGui((EntityNPCInterface) null, EnumGuiType.NpcDimensions); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java index 041d8d8c1..94e059508 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiWaypointPacket.java @@ -19,7 +19,8 @@ public final class GuiWaypointPacket extends AbstractPacket { private NBTTagCompound compound; - public GuiWaypointPacket() {} + public GuiWaypointPacket() { + } public GuiWaypointPacket(NBTTagCompound compound) { this.compound = compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java index e6557efe2..25281bf3d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/IsGuiOpenPacket.java @@ -16,7 +16,8 @@ import java.io.IOException; public final class IsGuiOpenPacket extends AbstractPacket { public static final String packetName = "Data|IsGuiOpen"; - public IsGuiOpenPacket() {} + public IsGuiOpenPacket() { + } @Override public Enum getType() { @@ -29,7 +30,8 @@ public final class IsGuiOpenPacket extends AbstractPacket { } @Override - public void sendData(ByteBuf out) throws IOException {} + public void sendData(ByteBuf out) throws IOException { + } @SideOnly(Side.CLIENT) @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java index a8f996025..631e32bf2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/GuiDataPacket.java @@ -25,13 +25,14 @@ public final class GuiDataPacket extends LargeAbstractPacket { private NBTTagCompound compound; - public GuiDataPacket(){} + public GuiDataPacket() { + } - public GuiDataPacket(NBTTagCompound comp){ + public GuiDataPacket(NBTTagCompound comp) { this.compound = comp; } - public static void sendGuiData(EntityPlayerMP playerMP, NBTTagCompound compound){ + public static void sendGuiData(EntityPlayerMP playerMP, NBTTagCompound compound) { GuiDataPacket packet = new GuiDataPacket(compound); PacketHandler.Instance.sendToPlayer(packet, playerMP); } @@ -60,9 +61,9 @@ public final class GuiDataPacket extends LargeAbstractPacket { protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof GuiNPCInterface && ((GuiNPCInterface) gui).hasSubGui()) { - gui = (GuiScreen) ((GuiNPCInterface) gui).getSubGui(); + gui = ((GuiNPCInterface) gui).getSubGui(); } else if (gui instanceof GuiContainerNPCInterface && ((GuiContainerNPCInterface) gui).hasSubGui()) { - gui = (GuiScreen) ((GuiContainerNPCInterface) gui).getSubGui(); + gui = ((GuiContainerNPCInterface) gui).getSubGui(); } if (gui instanceof IGuiData) { NBTTagCompound nbt = ByteBufUtils.readBigNBT(data); diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java index 7cc9654ae..1579a50ca 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/PartyDataPacket.java @@ -25,13 +25,14 @@ public final class PartyDataPacket extends LargeAbstractPacket { private NBTTagCompound compound; - public PartyDataPacket(){} + public PartyDataPacket() { + } - public PartyDataPacket(NBTTagCompound comp){ + public PartyDataPacket(NBTTagCompound comp) { this.compound = comp; } - public static void sendPartyData(EntityPlayerMP playerMP, NBTTagCompound compound){ + public static void sendPartyData(EntityPlayerMP playerMP, NBTTagCompound compound) { PartyDataPacket packet = new PartyDataPacket(compound); PacketHandler.Instance.sendToPlayer(packet, playerMP); } @@ -60,9 +61,9 @@ public final class PartyDataPacket extends LargeAbstractPacket { protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof GuiNPCInterface && ((GuiNPCInterface) gui).hasSubGui()) { - gui = (GuiScreen) ((GuiNPCInterface) gui).getSubGui(); + gui = ((GuiNPCInterface) gui).getSubGui(); } else if (gui instanceof GuiContainerNPCInterface && ((GuiContainerNPCInterface) gui).hasSubGui()) { - gui = (GuiScreen) ((GuiContainerNPCInterface) gui).getSubGui(); + gui = ((GuiContainerNPCInterface) gui).getSubGui(); } if (gui instanceof IPartyData) { NBTTagCompound nbt = ByteBufUtils.readBigNBT(data); diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollDataPacket.java index dbb79c3b5..53fe29e7c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollDataPacket.java @@ -19,7 +19,8 @@ public final class ScrollDataPacket extends LargeAbstractPacket { private Map data; - public ScrollDataPacket() {} + public ScrollDataPacket() { + } public ScrollDataPacket(Map data) { this.data = data; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java index c6b8e4e89..129035824 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java @@ -19,13 +19,14 @@ public final class ScrollGroupPacket extends LargeAbstractPacket { private Map data; - public ScrollGroupPacket() {} + public ScrollGroupPacket() { + } public ScrollGroupPacket(Map data) { this.data = data; } - public static void sendScrollGroup(EntityPlayerMP player, Map map){ + public static void sendScrollGroup(EntityPlayerMP player, Map map) { ScrollGroupPacket packet = new ScrollGroupPacket(map); PacketHandler.Instance.sendToPlayer(packet, player); } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollListPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollListPacket.java index d15d7c178..a78d71b3f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollListPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollListPacket.java @@ -19,13 +19,14 @@ public final class ScrollListPacket extends LargeAbstractPacket { private List data; - public ScrollListPacket() {} + public ScrollListPacket() { + } public ScrollListPacket(List data) { this.data = data; } - public static void sendList(EntityPlayerMP player, List list){ + public static void sendList(EntityPlayerMP player, List list) { ScrollListPacket packet = new ScrollListPacket(list); PacketHandler.Instance.sendToPlayer(packet, player); } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java index b9861b85c..048d5be17 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java @@ -28,7 +28,8 @@ public final class SyncPacket extends LargeAbstractPacket { private NBTTagCompound syncData; private int operationID; - public SyncPacket() {} + public SyncPacket() { + } /** * Constructs a new LargeSyncPacket. @@ -70,7 +71,7 @@ public final class SyncPacket extends LargeAbstractPacket { @Override protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) + if (CustomNpcs.side() != Side.CLIENT) return; // Reconstruct everything from the ByteBuf diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java index dca895776..ee0dc7599 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/DeleteNpcPacket.java @@ -19,9 +19,10 @@ public final class DeleteNpcPacket extends AbstractPacket { private int entityId; - public DeleteNpcPacket() {} + public DeleteNpcPacket() { + } - public DeleteNpcPacket(int id){ + public DeleteNpcPacket(int id) { this.entityId = id; } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java index 4807a852e..83be63878 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/DialogPacket.java @@ -25,7 +25,8 @@ public final class DialogPacket extends AbstractPacket { private int entityID; private NBTTagCompound compound; - public DialogPacket() {} + public DialogPacket() { + } public DialogPacket(String dummyName, int entityID, NBTTagCompound compound) { this.dummyName = dummyName; @@ -58,12 +59,11 @@ public final class DialogPacket extends AbstractPacket { NBTTagCompound tagCompound = ByteBufUtils.readNBT(in); // Dummy NPC - if(entityID == -1){ + if (entityID == -1) { EntityDialogNpc npc = new EntityDialogNpc(player.worldObj); npc.display.name = name; NoppesUtil.openDialog(tagCompound, npc, player); - } - else { + } else { Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(entityID); if (!(entity instanceof EntityNPCInterface)) { return; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java index 5e4914c0e..199cf319f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/EditNpcPacket.java @@ -19,7 +19,9 @@ public final class EditNpcPacket extends AbstractPacket { public static final String packetName = "Data|EditNpc"; int entityId; - public EditNpcPacket() {} + + public EditNpcPacket() { + } public EditNpcPacket(int entityId) { this.entityId = entityId; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java index 6a8f21e3e..a6f5869e9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/RolePacket.java @@ -22,7 +22,8 @@ public final class RolePacket extends AbstractPacket { private NBTTagCompound compound; - public RolePacket() {} + public RolePacket() { + } public RolePacket(NBTTagCompound compound) { this.compound = compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java index 496e65be8..10472ef5e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/UpdateNpcPacket.java @@ -21,7 +21,8 @@ public final class UpdateNpcPacket extends AbstractPacket { private NBTTagCompound npcCompound; - public UpdateNpcPacket() {} + public UpdateNpcPacket() { + } public UpdateNpcPacket(NBTTagCompound npcCompound) { this.npcCompound = npcCompound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java index b04309c1b..255583f7c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/npc/WeaponNpcPacket.java @@ -24,7 +24,8 @@ public final class WeaponNpcPacket extends AbstractPacket { private int weaponIndex; private NBTTagCompound compound; - public WeaponNpcPacket() {} + public WeaponNpcPacket() { + } public WeaponNpcPacket(int entityId, int weaponIndex, NBTTagCompound compound) { this.entityId = entityId; @@ -54,11 +55,11 @@ public final class WeaponNpcPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); - if(!(entity instanceof EntityNPCInterface)) + if (!(entity instanceof EntityNPCInterface)) return; EntityNPCInterface npc = (EntityNPCInterface) entity; int weaponSlotIndex = in.readInt(); ItemStack stack = ItemStack.loadItemStackFromNBT(ByteBufUtils.readNBT(in)); - npc.inventory.weapons.put(weaponSlotIndex,stack); + npc.inventory.weapons.put(weaponSlotIndex, stack); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java index 44be40d80..88c197207 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayClosePacket.java @@ -17,7 +17,8 @@ public final class ScriptOverlayClosePacket extends AbstractPacket { private int particleId; - public ScriptOverlayClosePacket() {} + public ScriptOverlayClosePacket() { + } public ScriptOverlayClosePacket(int particleId) { this.particleId = particleId; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java index 3430130d8..fb800a1cd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptOverlayDataPacket.java @@ -11,8 +11,8 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.gui.customoverlay.OverlayCustom; import noppes.npcs.client.ClientCacheHandler; +import noppes.npcs.client.gui.customoverlay.OverlayCustom; import java.io.IOException; @@ -21,7 +21,8 @@ public final class ScriptOverlayDataPacket extends AbstractPacket { private NBTTagCompound overlayCompound; - public ScriptOverlayDataPacket() {} + public ScriptOverlayDataPacket() { + } public ScriptOverlayDataPacket(NBTTagCompound overlayCompound) { this.overlayCompound = overlayCompound; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java index 80c93fcdc..db489b234 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/script/ScriptedParticlePacket.java @@ -24,7 +24,8 @@ public final class ScriptedParticlePacket extends AbstractPacket { private NBTTagCompound compound; - public ScriptedParticlePacket() {} + public ScriptedParticlePacket() { + } public ScriptedParticlePacket(NBTTagCompound compound) { this.compound = compound; @@ -48,15 +49,15 @@ public final class ScriptedParticlePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) + if (CustomNpcs.side() != Side.CLIENT) return; spawnScriptedParticle(player, in); } @SideOnly(Side.CLIENT) - public static void spawnScriptedParticle(EntityPlayer player, ByteBuf buffer){ - Minecraft minecraft = Minecraft.getMinecraft(); + public static void spawnScriptedParticle(EntityPlayer player, ByteBuf buffer) { + Minecraft minecraft = Minecraft.getMinecraft(); NBTTagCompound compound; ScriptParticle particle; @@ -82,7 +83,7 @@ public final class ScriptedParticlePacket extends AbstractPacket { CustomFX fx = CustomFX.fromScriptedParticle(particle, worldObj, entity); - for(int i = 0; i < particle.amount; i++){ + for (int i = 0; i < particle.amount; i++) { minecraft.effectRenderer.addEffect(fx); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java index 7496f08df..0ba14f9d3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java @@ -8,15 +8,20 @@ import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumRequestPacket; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.PlayerDataController; import java.io.IOException; public final class AnimationCachePacket extends AbstractPacket { public static final String packetName = "Request|AnimationCache"; + private int id; - public AnimationCachePacket() {} + public AnimationCachePacket() { + } + + public AnimationCachePacket(int id) { + this.id = id; + } @Override public Enum getType() { @@ -30,11 +35,13 @@ public final class AnimationCachePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException {} + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.id); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NoppesUtilServer.sendTagDataAll((EntityPlayerMP) player); + PlayerDataController.Instance.getPlayerData(player).animationData.cacheAnimation(in.readInt()); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/DimensionsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/DimensionsGetPacket.java index 5e678765c..2d64a8f63 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/DimensionsGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/DimensionsGetPacket.java @@ -12,7 +12,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.world.WorldProvider; import net.minecraftforge.common.DimensionManager; -import noppes.npcs.NoppesUtilPlayer; import java.io.IOException; import java.util.HashMap; @@ -20,7 +19,8 @@ import java.util.HashMap; public final class DimensionsGetPacket extends AbstractPacket { public static final String packetName = "Request|DimensionsGet"; - public DimensionsGetPacket() {} + public DimensionsGetPacket() { + } @Override public Enum getType() { @@ -34,12 +34,13 @@ public final class DimensionsGetPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException {} + public void sendData(ByteBuf out) throws IOException { + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - HashMap map = new HashMap(); - for(int id : DimensionManager.getStaticDimensionIDs()){ + HashMap map = new HashMap(); + for (int id : DimensionManager.getStaticDimensionIDs()) { WorldProvider provider = DimensionManager.createProviderFor(id); map.put(provider.getDimensionName(), id); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/GuiPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/GuiPacket.java new file mode 100644 index 000000000..a1e7369f0 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/GuiPacket.java @@ -0,0 +1,73 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.constants.EnumGuiType; + +import java.io.IOException; + +public final class GuiPacket extends AbstractPacket { + public static String packetName = "Request|Gui"; + + private int guiIndex, posX, posY, posZ; + + public GuiPacket(int guiIndex, int posX, int posY, int posZ) { + this.guiIndex = guiIndex; + this.posX = posX; + this.posY = posY; + this.posZ = posZ; + } + + public GuiPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.Gui; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public boolean needsNPC() { + return true; + } + + // No permission override + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(guiIndex); + out.writeInt(posX); + out.writeInt(posY); + out.writeInt(posZ); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int index = in.readInt(); + int x = in.readInt(); + int y = in.readInt(); + int z = in.readInt(); + EnumGuiType gui = EnumGuiType.values()[index]; + NoppesUtilServer.sendOpenGui(player, gui, npc, x, y, z); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenPacket.java index ce2a8298c..4fe16d795 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenPacket.java @@ -8,8 +8,6 @@ import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumRequestPacket; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.CustomNpcsPermissions; -import noppes.npcs.NoppesUtilServer; import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.controllers.data.PlayerData; @@ -20,9 +18,10 @@ public final class IsGuiOpenPacket extends AbstractPacket { private boolean isOpen; - public IsGuiOpenPacket() {} + public IsGuiOpenPacket() { + } - public IsGuiOpenPacket(boolean isOpen){ + public IsGuiOpenPacket(boolean isOpen) { this.isOpen = isOpen; } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/MailOpenSetupPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/MailOpenSetupPacket.java new file mode 100644 index 000000000..7f1a909cf --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/MailOpenSetupPacket.java @@ -0,0 +1,50 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcs; +import noppes.npcs.constants.EnumGuiType; +import noppes.npcs.containers.ContainerMail; +import noppes.npcs.controllers.data.PlayerMail; + +import java.io.IOException; + +public final class MailOpenSetupPacket extends AbstractPacket { + public static String packetName = "Request|MailOpenSetup"; + + public MailOpenSetupPacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.MailOpenSetup; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + PlayerMail mail = new PlayerMail(); + mail.readNBT(ByteBufUtils.readNBT(in)); + ContainerMail.staticmail = mail; + player.openGui(CustomNpcs.instance, EnumGuiType.PlayerMailman.ordinal(), player.worldObj, 1, 0, 0); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/MerchantUpdatePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/MerchantUpdatePacket.java new file mode 100644 index 000000000..1c830b376 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/MerchantUpdatePacket.java @@ -0,0 +1,62 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.Entity; +import net.minecraft.entity.passive.EntityVillager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.network.PacketBuffer; +import net.minecraft.village.MerchantRecipeList; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class MerchantUpdatePacket extends AbstractPacket { + public static String packetName = "Request|MerchantUpdate"; + + public MerchantUpdatePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.MerchantUpdate; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.EDIT_VILLAGER; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + int entityId = in.readInt(); + Entity entity = player.worldObj.getEntityByID(entityId); + if (!(entity instanceof EntityVillager)) + return; + + MerchantRecipeList list = MerchantRecipeList.func_151390_b(new PacketBuffer(in)); + ((EntityVillager)entity).setRecipes(list); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/QuestLogToServerPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/QuestLogToServerPacket.java index 56e3da3b6..c62646706 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/QuestLogToServerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/QuestLogToServerPacket.java @@ -11,7 +11,6 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.NoppesUtilPlayer; import java.io.IOException; @@ -22,7 +21,8 @@ public final class QuestLogToServerPacket extends AbstractPacket { private NBTTagCompound compound; private String key; - public QuestLogToServerPacket() {} + public QuestLogToServerPacket() { + } public QuestLogToServerPacket(NBTTagCompound compound, String key) { this.compound = compound; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/QuestUntrackPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/QuestUntrackPacket.java index 7f4667cea..f136f71cc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/QuestUntrackPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/QuestUntrackPacket.java @@ -7,10 +7,8 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumRequestPacket; -import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NoppesUtilPlayer; import java.io.IOException; @@ -18,7 +16,8 @@ import java.io.IOException; public final class QuestUntrackPacket extends AbstractPacket { public static final String packetName = "Request|QuestUntrack"; - public QuestUntrackPacket() {} + public QuestUntrackPacket() { + } @Override public Enum getType() { @@ -32,7 +31,8 @@ public final class QuestUntrackPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException {} + public void sendData(ByteBuf out) throws IOException { + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java index a6432b7cd..1dd50ade0 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java @@ -6,27 +6,22 @@ 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.EnumDataPacket; import kamkeel.npcs.network.enums.EnumRequestPacket; -import kamkeel.npcs.util.ByteBufUtils; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; -import noppes.npcs.controllers.data.MarkData; -import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class REQUESTPacket extends AbstractPacket { public static final String packetName = "Request|Name"; - public REQUESTPacket() {} + public REQUESTPacket() { + } @Override public Enum getType() { - return EnumRequestPacket.Delete; + return EnumRequestPacket.NPCDelete; } @Override @@ -35,12 +30,12 @@ public final class REQUESTPacket extends AbstractPacket { } @Override - public CustomNpcsPermissions.Permission getPermission(){ + public CustomNpcsPermissions.Permission getPermission() { return null; } @Override - public boolean needsNPC(){ + public boolean needsNPC() { return false; } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/TagsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/TagsGetPacket.java index b07d54b96..450d9c62d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/TagsGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/TagsGetPacket.java @@ -7,20 +7,17 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumRequestPacket; -import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.world.WorldProvider; -import net.minecraftforge.common.DimensionManager; import noppes.npcs.NoppesUtilServer; import java.io.IOException; -import java.util.HashMap; public final class TagsGetPacket extends AbstractPacket { public static final String packetName = "Request|TagsGet"; - public TagsGetPacket() {} + public TagsGetPacket() { + } @Override public Enum getType() { @@ -34,7 +31,8 @@ public final class TagsGetPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException {} + public void sendData(ByteBuf out) throws IOException { + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/TagsNpcGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/TagsNpcGetPacket.java index ef9257985..62b77e0b9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/TagsNpcGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/TagsNpcGetPacket.java @@ -13,7 +13,6 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; -import noppes.npcs.NoppesUtilServer; import noppes.npcs.controllers.TagController; import noppes.npcs.controllers.data.Tag; @@ -23,7 +22,8 @@ import java.util.UUID; public final class TagsNpcGetPacket extends AbstractPacket { public static final String packetName = "Request|NpcTagsGet"; - public TagsNpcGetPacket() {} + public TagsNpcGetPacket() { + } @Override public Enum getType() { @@ -36,13 +36,14 @@ public final class TagsNpcGetPacket extends AbstractPacket { } @Override - public boolean needsNPC(){ + public boolean needsNPC() { return true; } @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException {} + public void sendData(ByteBuf out) throws IOException { + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { @@ -54,7 +55,7 @@ public final class TagsNpcGetPacket extends AbstractPacket { tagList.appendTag(new NBTTagString(tag.name)); } } - compound.setTag("TagNames",tagList); + compound.setTag("TagNames", tagList); GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/TraderMarketSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/TraderMarketSavePacket.java new file mode 100644 index 000000000..4e597f43e --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/TraderMarketSavePacket.java @@ -0,0 +1,64 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import foxz.utils.Market; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.roles.RoleTrader; + +import java.io.IOException; + +public final class TraderMarketSavePacket extends AbstractPacket { + public static String packetName = "Request|TraderMarketSave"; + + public TraderMarketSavePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.TraderMarketSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + String market = ByteBufUtils.readString(in); + if (market == null) return; + boolean bo = in.readBoolean(); + if(npc.roleInterface instanceof RoleTrader){ + if(bo) + Market.setMarket(npc, market); + else + Market.save((RoleTrader)npc.roleInterface, market); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationGetPacket.java new file mode 100644 index 000000000..8c295002a --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationGetPacket.java @@ -0,0 +1,50 @@ +package kamkeel.npcs.network.packets.request.animation; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.AnimationController; +import noppes.npcs.controllers.data.Animation; + +import java.io.IOException; + +public final class AnimationGetPacket extends AbstractPacket { + public static String packetName = "Request|AnimationGet"; + + public AnimationGetPacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.AnimationGet; + } + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(0); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + Animation animation = (Animation) AnimationController.getInstance().get(id); + NBTTagCompound compound = animation.writeToNBT(); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationRemovePacket.java new file mode 100644 index 000000000..e77bbdf36 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationRemovePacket.java @@ -0,0 +1,59 @@ +package kamkeel.npcs.network.packets.request.animation; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.AnimationController; +import noppes.npcs.controllers.data.Animation; + +import java.io.IOException; + +public final class AnimationRemovePacket extends AbstractPacket { + public static String packetName = "Request|AnimationRemove"; + + public AnimationRemovePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.AnimationRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_ANIMATION; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(0); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + AnimationController.getInstance().delete(id); + NoppesUtilServer.sendAnimationDataAll((EntityPlayerMP) player); + NBTTagCompound compound = new Animation().writeToNBT(); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationSavePacket.java new file mode 100644 index 000000000..0ad3fe4f4 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationSavePacket.java @@ -0,0 +1,66 @@ +package kamkeel.npcs.network.packets.request.animation; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.AnimationController; +import noppes.npcs.controllers.data.Animation; + +import java.io.IOException; + +public final class AnimationSavePacket extends AbstractPacket { + public static String packetName = "Request|AnimationSave"; + + private NBTTagCompound animationNBT; + + public AnimationSavePacket(NBTTagCompound animationNBT) { + this.animationNBT = animationNBT; + } + public AnimationSavePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.AnimationSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_ANIMATION; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, animationNBT); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + NBTTagCompound compound = ByteBufUtils.readNBT(in); + Animation animation = new Animation(); + animation.readFromNBT(compound); + AnimationController.getInstance().saveAnimation(animation); + NoppesUtilServer.sendAnimationDataAll((EntityPlayerMP) player); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, animation.writeToNBT()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationsGetPacket.java new file mode 100644 index 000000000..ba6f8de24 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationsGetPacket.java @@ -0,0 +1,43 @@ +package kamkeel.npcs.network.packets.request.animation; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; + +import java.io.IOException; + +public final class AnimationsGetPacket extends AbstractPacket { + public static String packetName = "Request|AnimationsGet"; + + public AnimationsGetPacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.AnimationsGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + NoppesUtilServer.sendAnimationDataAll((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/bank/BankGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/bank/BankGetPacket.java new file mode 100644 index 000000000..e49a50e39 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/bank/BankGetPacket.java @@ -0,0 +1,59 @@ +package kamkeel.npcs.network.packets.request.bank; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.BankController; +import noppes.npcs.controllers.data.Bank; + +import java.io.IOException; + +public final class BankGetPacket extends AbstractPacket { + public static String packetName = "Request|BankGet"; + + private int bankId; + + public BankGetPacket(int bankId) { + this.bankId = bankId; + } + + public BankGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.BankGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(bankId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); + + Bank bank = BankController.getInstance().getBank(id); + NoppesUtilServer.sendBank((EntityPlayerMP) player, bank); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/bank/BankRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/bank/BankRemovePacket.java new file mode 100644 index 000000000..fb21141de --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/bank/BankRemovePacket.java @@ -0,0 +1,67 @@ +package kamkeel.npcs.network.packets.request.bank; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.BankController; +import noppes.npcs.controllers.data.Bank; + +import java.io.IOException; + +public final class BankRemovePacket extends AbstractPacket { + public static String packetName = "Request|BankRemove"; + + private int bankId; + + public BankRemovePacket(int bankId) { + this.bankId = bankId; + } + + public BankRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.BankRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_BANK; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(bankId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + int id = in.readInt(); + BankController.getInstance().removeBank(id); + NoppesUtilServer.sendBankDataAll((EntityPlayerMP) player); + NoppesUtilServer.sendBank((EntityPlayerMP) player, new Bank()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/bank/BankSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/bank/BankSavePacket.java new file mode 100644 index 000000000..42c29b719 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/bank/BankSavePacket.java @@ -0,0 +1,70 @@ +package kamkeel.npcs.network.packets.request.bank; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.BankController; +import noppes.npcs.controllers.data.Bank; + +import java.io.IOException; + +public final class BankSavePacket extends AbstractPacket { + public static String packetName = "Request|BankSave"; + + private NBTTagCompound bankNBT; + + public BankSavePacket(NBTTagCompound bankNBT) { + this.bankNBT = bankNBT; + } + + public BankSavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.BankSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_BANK; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, bankNBT); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + NBTTagCompound compound = ByteBufUtils.readNBT(in); + Bank bank = new Bank(); + bank.readEntityFromNBT(compound); + BankController.getInstance().saveBank(bank); + NoppesUtilServer.sendBankDataAll((EntityPlayerMP) player); + NoppesUtilServer.sendBank((EntityPlayerMP) player, bank); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/bank/BanksGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/bank/BanksGetPacket.java new file mode 100644 index 000000000..9c14168b1 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/bank/BanksGetPacket.java @@ -0,0 +1,49 @@ +package kamkeel.npcs.network.packets.request.bank; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; + +import java.io.IOException; + +public final class BanksGetPacket extends AbstractPacket { + public static String packetName = "Request|BanksGet"; + + public BanksGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.BanksGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + // No permission override since BanksGet is null in the enum + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NoppesUtilServer.sendBankDataAll((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiButtonPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiButtonPacket.java similarity index 87% rename from src/main/java/kamkeel/npcs/network/packets/request/CustomGuiButtonPacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiButtonPacket.java index b8a18cd2c..4dbec3676 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiButtonPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiButtonPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.request; +package kamkeel.npcs.network.packets.request.customgui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -23,9 +23,10 @@ public final class CustomGuiButtonPacket extends AbstractPacket { private NBTTagCompound compound; private int id; - public CustomGuiButtonPacket() {} + public CustomGuiButtonPacket() { + } - public CustomGuiButtonPacket(int id, NBTTagCompound comp){ + public CustomGuiButtonPacket(int id, NBTTagCompound comp) { this.compound = comp; this.id = id; } @@ -50,7 +51,7 @@ public final class CustomGuiButtonPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(!(player.openContainer instanceof ContainerCustomGui)) + if (!(player.openContainer instanceof ContainerCustomGui)) return; int id = in.readInt(); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiClosePacket.java similarity index 86% rename from src/main/java/kamkeel/npcs/network/packets/request/CustomGuiClosePacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiClosePacket.java index 787481f7d..f258e2473 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiClosePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.request; +package kamkeel.npcs.network.packets.request.customgui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -23,9 +23,10 @@ public final class CustomGuiClosePacket extends AbstractPacket { private NBTTagCompound compound; - public CustomGuiClosePacket() {} + public CustomGuiClosePacket() { + } - public CustomGuiClosePacket(int id, NBTTagCompound comp){ + public CustomGuiClosePacket(int id, NBTTagCompound comp) { this.compound = comp; } @@ -48,7 +49,7 @@ public final class CustomGuiClosePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(!(player.openContainer instanceof ContainerCustomGui)) + if (!(player.openContainer instanceof ContainerCustomGui)) return; NBTTagCompound comp = ByteBufUtils.readNBT(in); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiUnfocusedPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiUnfocusedPacket.java similarity index 91% rename from src/main/java/kamkeel/npcs/network/packets/request/CustomGuiUnfocusedPacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiUnfocusedPacket.java index 0f81ce863..4f7982207 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/CustomGuiUnfocusedPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiUnfocusedPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.request; +package kamkeel.npcs.network.packets.request.customgui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -23,9 +23,10 @@ public final class CustomGuiUnfocusedPacket extends AbstractPacket { private NBTTagCompound compound; private int id; - public CustomGuiUnfocusedPacket() {} + public CustomGuiUnfocusedPacket() { + } - public CustomGuiUnfocusedPacket(int id, NBTTagCompound comp){ + public CustomGuiUnfocusedPacket(int id, NBTTagCompound comp) { this.compound = comp; this.id = id; } @@ -50,7 +51,7 @@ public final class CustomGuiUnfocusedPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(!(player.openContainer instanceof ContainerCustomGui)) + if (!(player.openContainer instanceof ContainerCustomGui)) return; int id = in.readInt(); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/CustomScrollClickPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomScrollClickPacket.java similarity index 93% rename from src/main/java/kamkeel/npcs/network/packets/request/CustomScrollClickPacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomScrollClickPacket.java index 27b2a6e0a..980913ad7 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/CustomScrollClickPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomScrollClickPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.request; +package kamkeel.npcs.network.packets.request.customgui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -27,7 +27,8 @@ public final class CustomScrollClickPacket extends AbstractPacket { private boolean doubleClick; private NBTTagCompound compound; - public CustomScrollClickPacket() {} + public CustomScrollClickPacket() { + } public CustomScrollClickPacket(NBTTagCompound compound, int scrollId, int scrollIndex, NBTTagCompound selection, boolean doubleClick) { this.compound = compound; @@ -60,7 +61,7 @@ public final class CustomScrollClickPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(!(player.openContainer instanceof ContainerCustomGui)) + if (!(player.openContainer instanceof ContainerCustomGui)) return; NBTTagCompound comp = ByteBufUtils.readNBT(in); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryGetPacket.java new file mode 100644 index 000000000..edfa2b989 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryGetPacket.java @@ -0,0 +1,55 @@ +package kamkeel.npcs.network.packets.request.dialog; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.data.DialogCategory; + +import java.io.IOException; + +public final class DialogCategoryGetPacket extends AbstractPacket { + public static String packetName = "Request|DialogCategoryGet"; + + public DialogCategoryGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.DialogCategoryGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + // No permission override + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + DialogCategory category = DialogController.Instance.categories.get(id); + if (category != null) { + NBTTagCompound comp = category.writeNBT(new NBTTagCompound()); + comp.removeTag("Dialogs"); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, comp); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryRemovePacket.java new file mode 100644 index 000000000..1861411c8 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryRemovePacket.java @@ -0,0 +1,61 @@ +package kamkeel.npcs.network.packets.request.dialog; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.DialogController; + +import java.io.IOException; + +public final class DialogCategoryRemovePacket extends AbstractPacket { + public static String packetName = "Request|DialogCategoryRemove"; + + private int categoryId; + + public DialogCategoryRemovePacket(int categoryId) { + this.categoryId = categoryId; + } + + public DialogCategoryRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.DialogCategoryRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_DIALOG; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(categoryId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + DialogController.Instance.removeCategory(id); + ScrollDataPacket.sendScrollData((EntityPlayerMP) player, DialogController.Instance.getScroll()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategorySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategorySavePacket.java new file mode 100644 index 000000000..fb58afcef --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategorySavePacket.java @@ -0,0 +1,66 @@ +package kamkeel.npcs.network.packets.request.dialog; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.data.DialogCategory; + +import java.io.IOException; + +public final class DialogCategorySavePacket extends AbstractPacket { + public static String packetName = "Request|DialogCategorySave"; + + private NBTTagCompound categoryNBT; + + public DialogCategorySavePacket(NBTTagCompound categoryNBT) { + this.categoryNBT = categoryNBT; + } + + public DialogCategorySavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.DialogCategorySave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_DIALOG; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, categoryNBT); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + NBTTagCompound compound = ByteBufUtils.readNBT(in); + DialogCategory category = new DialogCategory(); + category.readNBT(compound); + DialogController.Instance.saveCategory(category); + ScrollDataPacket.sendScrollData((EntityPlayerMP) player, DialogController.Instance.getScroll()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcGetPacket.java new file mode 100644 index 000000000..35eebf0c7 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcGetPacket.java @@ -0,0 +1,47 @@ +package kamkeel.npcs.network.packets.request.dialog; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; + +import java.io.IOException; + +public final class DialogNpcGetPacket extends AbstractPacket { + public static String packetName = "Request|DialogNpcGet"; + + public DialogNpcGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.DialogNpcGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + // No permission override + @SideOnly(Side.CLIENT) + + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + NoppesUtilServer.sendNpcDialogs(player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcRemovePacket.java new file mode 100644 index 000000000..71698ffae --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcRemovePacket.java @@ -0,0 +1,63 @@ +package kamkeel.npcs.network.packets.request.dialog; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class DialogNpcRemovePacket extends AbstractPacket { + public static String packetName = "Request|DialogNpcRemove"; + + private int index; + + public DialogNpcRemovePacket(int index) { + this.index = index; + } + + public DialogNpcRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.DialogNpcRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(index); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int idx = in.readInt(); + npc.dialogs.remove(idx); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcSetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcSetPacket.java new file mode 100644 index 000000000..a7db1b184 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcSetPacket.java @@ -0,0 +1,76 @@ +package kamkeel.npcs.network.packets.request.dialog; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.data.DialogOption; + +import java.io.IOException; + +public final class DialogNpcSetPacket extends AbstractPacket { + public static String packetName = "Request|DialogNpcSet"; + + private int slot; + private int dialog; + + public DialogNpcSetPacket(int slot, int dialog) { + this.slot = slot; + this.dialog = dialog; + } + + public DialogNpcSetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.DialogNpcSet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(slot); + out.writeInt(dialog); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int s = in.readInt(); + int d = in.readInt(); + DialogOption option = NoppesUtilServer.setNpcDialog(s, d, player); + if (option != null && option.hasDialog()) { + NBTTagCompound compound = option.writeNBT(); + compound.setInteger("Position", s); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogRemovePacket.java new file mode 100644 index 000000000..1f62d8304 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogRemovePacket.java @@ -0,0 +1,73 @@ +package kamkeel.npcs.network.packets.request.dialog; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.data.Dialog; + +import java.io.IOException; + +public final class DialogRemovePacket extends AbstractPacket { + public static String packetName = "Request|DialogRemove"; + + private int diagId; + private boolean sendGroup; + + public DialogRemovePacket(int diagId, boolean sendGroup) { + this.diagId = diagId; + this.sendGroup = sendGroup; + } + + public DialogRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.DialogRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_DIALOG; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(diagId); + out.writeBoolean(sendGroup); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + boolean sendGroup = in.readBoolean(); + Dialog dialog = DialogController.Instance.dialogs.get(id); + if (dialog != null && dialog.category != null) { + DialogController.Instance.removeDialog(dialog); + if (sendGroup) { + NoppesUtilServer.sendDialogGroup((EntityPlayerMP) player, dialog.category); + } else { + NoppesUtilServer.sendDialogData((EntityPlayerMP) player, dialog.category); + } + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogSavePacket.java new file mode 100644 index 000000000..c221e043e --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogSavePacket.java @@ -0,0 +1,85 @@ +package kamkeel.npcs.network.packets.request.dialog; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.data.Dialog; + +import java.io.IOException; + +public final class DialogSavePacket extends AbstractPacket { + public static String packetName = "Request|DialogSave"; + + private int categoryId; + private NBTTagCompound dialogNBT; + private boolean sendGroup; + + public DialogSavePacket(int categoryId, NBTTagCompound dialogNBT, boolean sendGroup) { + this.categoryId = categoryId; + this.dialogNBT = dialogNBT; + this.sendGroup = sendGroup; + } + + public DialogSavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.DialogSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_DIALOG; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(categoryId); + ByteBufUtils.writeNBT(out, dialogNBT); + out.writeBoolean(sendGroup); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + int cat = in.readInt(); + NBTTagCompound compound = ByteBufUtils.readNBT(in); + boolean sendGroup = in.readBoolean(); + Dialog dialog = new Dialog(); + dialog.readNBT(compound); + DialogController.Instance.saveDialog(cat, dialog); + + if (dialog.category != null) { + if (sendGroup) { + NoppesUtilServer.sendDialogGroup((EntityPlayerMP) player, dialog.category); + } else { + NoppesUtilServer.sendDialogData((EntityPlayerMP) player, dialog.category); + } + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionRemovePacket.java new file mode 100644 index 000000000..2a2859398 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionRemovePacket.java @@ -0,0 +1,73 @@ +package kamkeel.npcs.network.packets.request.faction; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.FactionController; +import noppes.npcs.controllers.data.Faction; + +import java.io.IOException; + +public final class FactionRemovePacket extends AbstractPacket { + public static String packetName = "Request|FactionRemove"; + + private int factionId; + + public FactionRemovePacket(int factionId) { + this.factionId = factionId; + } + + public FactionRemovePacket() { + + } + + @Override + public Enum getType() { + return EnumRequestPacket.FactionRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_FACTION; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(factionId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + FactionController.getInstance().delete(id); + NoppesUtilServer.sendFactionDataAll((EntityPlayerMP) player); + NBTTagCompound comp = new NBTTagCompound(); + new Faction().writeNBT(comp); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, comp); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSavePacket.java new file mode 100644 index 000000000..0446834fb --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSavePacket.java @@ -0,0 +1,75 @@ +package kamkeel.npcs.network.packets.request.faction; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.FactionController; +import noppes.npcs.controllers.data.Faction; + +import java.io.IOException; + +public final class FactionSavePacket extends AbstractPacket { + public static String packetName = "Request|FactionSave"; + + private NBTTagCompound factionNBT; + + public FactionSavePacket(NBTTagCompound factionNBT) { + this.factionNBT = factionNBT; + } + + public FactionSavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.FactionSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_FACTION; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, factionNBT); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + NBTTagCompound compound = ByteBufUtils.readNBT(in); + Faction faction = new Faction(); + faction.readNBT(compound); + FactionController.getInstance().saveFaction(faction); + NoppesUtilServer.sendFactionDataAll((EntityPlayerMP) player); + NBTTagCompound comp = new NBTTagCompound(); + faction.writeNBT(comp); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, comp); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSetPacket.java new file mode 100644 index 000000000..3c9a550f1 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSetPacket.java @@ -0,0 +1,63 @@ +package kamkeel.npcs.network.packets.request.faction; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class FactionSetPacket extends AbstractPacket { + public static String packetName = "Request|FactionSet"; + + private int facID; + + public FactionSetPacket() { + } + + public FactionSetPacket(int id) { + this.facID = id; + } + + @Override + public Enum getType() { + return EnumRequestPacket.FactionSet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.facID); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int factionId = in.readInt(); + npc.setFaction(factionId); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobGetPacket.java new file mode 100644 index 000000000..d2c1fd772 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobGetPacket.java @@ -0,0 +1,65 @@ +package kamkeel.npcs.network.packets.request.jobs; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.constants.EnumJobType; +import noppes.npcs.roles.JobSpawner; + +import java.io.IOException; + +public final class JobGetPacket extends AbstractPacket { + public static String packetName = "Request|JobGet"; + + public JobGetPacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.JobGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if(npc.jobInterface == null) return; + NBTTagCompound compound = new NBTTagCompound(); + compound.setBoolean("JobData", true); + npc.jobInterface.writeToNBT(compound); + if(npc.advanced.job == EnumJobType.Spawner) + ((JobSpawner)npc.jobInterface).cleanCompound(compound); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + if(npc.advanced.job == EnumJobType.Spawner) + GuiDataPacket.sendGuiData((EntityPlayerMP) player, ((JobSpawner)npc.jobInterface).getTitles()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSavePacket.java new file mode 100644 index 000000000..9349bae65 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSavePacket.java @@ -0,0 +1,63 @@ +package kamkeel.npcs.network.packets.request.jobs; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; +import java.util.Set; + +public final class JobSavePacket extends AbstractPacket { + public static String packetName = "Request|JobSave"; + + public JobSavePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.JobSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + NBTTagCompound original = npc.jobInterface.writeToNBT(new NBTTagCompound()); + NBTTagCompound compound = ByteBufUtils.readNBT(in); + Set names = compound.func_150296_c(); + for(String name : names) + original.setTag(name, compound.getTag(name)); + + npc.jobInterface.readFromNBT(original); + npc.updateClient = true; + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerAddPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerAddPacket.java new file mode 100644 index 000000000..5af9844b7 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerAddPacket.java @@ -0,0 +1,68 @@ +package kamkeel.npcs.network.packets.request.jobs; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.constants.EnumJobType; +import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.roles.JobSpawner; + +import java.io.IOException; + +public final class JobSpawnerAddPacket extends AbstractPacket { + public static String packetName = "Request|JobSpawnerAdd"; + + public JobSpawnerAddPacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.JobSpawnerAdd; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if(npc.advanced.job != EnumJobType.Spawner) return; + JobSpawner job = (JobSpawner) npc.jobInterface; + boolean useServerClone = in.readBoolean(); + if(useServerClone){ + NBTTagCompound compound = ServerCloneController.Instance.getCloneData(null, ByteBufUtils.readString(in), in.readInt()); + job.setJobCompound(in.readInt(), compound); + } else { + job.setJobCompound(in.readInt(), ByteBufUtils.readNBT(in)); + } + GuiDataPacket.sendGuiData((EntityPlayerMP) player, job.getTitles()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerRemovePacket.java new file mode 100644 index 000000000..0fa6cd82b --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerRemovePacket.java @@ -0,0 +1,59 @@ +package kamkeel.npcs.network.packets.request.jobs; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.constants.EnumJobType; +import noppes.npcs.roles.JobSpawner; + +import java.io.IOException; + +public final class JobSpawnerRemovePacket extends AbstractPacket { + public static String packetName = "Request|JobSpawnerRemove"; + + public JobSpawnerRemovePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.JobSpawnerRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if(npc.advanced.job != EnumJobType.Spawner) return; + JobSpawner job = (JobSpawner) npc.jobInterface; + job.setJobCompound(in.readInt(), null); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, job.getTitles()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedAddPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedAddPacket.java new file mode 100644 index 000000000..c7bc20b48 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedAddPacket.java @@ -0,0 +1,72 @@ +package kamkeel.npcs.network.packets.request.linked; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.ScrollListPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.LinkedNpcController; +import noppes.npcs.controllers.LinkedNpcController.LinkedData; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public final class LinkedAddPacket extends AbstractPacket { + public static String packetName = "Request|LinkedAdd"; + + private String data; + + public LinkedAddPacket(String data) { + this.data = data; + } + + public LinkedAddPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.LinkedAdd; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_LINKED; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, data); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + String received = ByteBufUtils.readString(in); + LinkedNpcController.Instance.addData(received); + List list = new ArrayList<>(); + for (LinkedData d : LinkedNpcController.Instance.list) { + list.add(d.name); + } + ScrollListPacket.sendList((EntityPlayerMP) player, list); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedGetAllPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedGetAllPacket.java new file mode 100644 index 000000000..279f572cf --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedGetAllPacket.java @@ -0,0 +1,58 @@ +package kamkeel.npcs.network.packets.request.linked; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.ScrollSelectedPacket; +import kamkeel.npcs.network.packets.data.large.ScrollListPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.controllers.LinkedNpcController; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public final class LinkedGetAllPacket extends AbstractPacket { + public static String packetName = "Request|LinkedGetAll"; + + public LinkedGetAllPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.LinkedGetAll; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + List list = new ArrayList<>(); + for (LinkedNpcController.LinkedData d : LinkedNpcController.Instance.list) { + list.add(d.name); + } + ScrollListPacket.sendList((EntityPlayerMP) player, list); + if (npc != null) { + ScrollSelectedPacket.setSelectedList((EntityPlayerMP) player, npc.linkedName); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedRemovePacket.java new file mode 100644 index 000000000..b60bd3249 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedRemovePacket.java @@ -0,0 +1,71 @@ +package kamkeel.npcs.network.packets.request.linked; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.ScrollListPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.LinkedNpcController; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public final class LinkedRemovePacket extends AbstractPacket { + public static String packetName = "Request|LinkedRemove"; + + private String data; + + public LinkedRemovePacket(String data) { + this.data = data; + } + + public LinkedRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.LinkedRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_LINKED; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, data); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + String received = ByteBufUtils.readString(in); + LinkedNpcController.Instance.removeData(received); + List list = new ArrayList<>(); + for (LinkedNpcController.LinkedData d : LinkedNpcController.Instance.list) { + list.add(d.name); + } + ScrollListPacket.sendList((EntityPlayerMP) player, list); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java new file mode 100644 index 000000000..e2c664f56 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java @@ -0,0 +1,67 @@ +package kamkeel.npcs.network.packets.request.linked; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.LinkedNpcController; + +import java.io.IOException; + +public final class LinkedSetPacket extends AbstractPacket { + public static String packetName = "Request|LinkedSet"; + + private String linkedName; + + public LinkedSetPacket(String linkedName) { + this.linkedName = linkedName; + } + + public LinkedSetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.LinkedSet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, linkedName); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + npc.linkedName = ByteBufUtils.readString(in); + LinkedNpcController.Instance.loadNpcData(npc); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAIGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAIGetPacket.java new file mode 100644 index 000000000..9787971da --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAIGetPacket.java @@ -0,0 +1,44 @@ +package kamkeel.npcs.network.packets.request.mainmenu; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; + +import java.io.IOException; + +public final class MainmenuAIGetPacket extends AbstractPacket { + public static String packetName = "Request|MainmenuAIGet"; + + public MainmenuAIGetPacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.MainmenuAIGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.ai.writeToNBT(new NBTTagCompound())); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAISavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAISavePacket.java new file mode 100644 index 000000000..2be4a82e8 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAISavePacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request.mainmenu; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class MainmenuAISavePacket extends AbstractPacket { + public static String packetName = "Request|MainmenuAISave"; + + public MainmenuAISavePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.MainmenuAISave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_AI; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + npc.ai.readToNBT(ByteBufUtils.readNBT(in)); + npc.setHealth(npc.getMaxHealth()); + npc.updateAI = true; + npc.updateClient = true; + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedGetPacket.java new file mode 100644 index 000000000..922dc380a --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedGetPacket.java @@ -0,0 +1,55 @@ +package kamkeel.npcs.network.packets.request.mainmenu; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class MainmenuAdvancedGetPacket extends AbstractPacket { + public static String packetName = "Request|MainmenuAdvancedGet"; + + public MainmenuAdvancedGetPacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.MainmenuAdvancedGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.advanced.writeToNBT(new NBTTagCompound())); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedMarkDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedMarkDataPacket.java new file mode 100644 index 000000000..8e687fa7a --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedMarkDataPacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request.mainmenu; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.data.MarkData; + +import java.io.IOException; + +public final class MainmenuAdvancedMarkDataPacket extends AbstractPacket { + public static String packetName = "Request|MainmenuAdvancedMarkData"; + + public MainmenuAdvancedMarkDataPacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.MainmenuAdvancedMarkData; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + MarkData data = MarkData.get(npc); + data.setNBT(ByteBufUtils.readNBT(in)); + data.syncClients(); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedSavePacket.java new file mode 100644 index 000000000..e1bc7264e --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedSavePacket.java @@ -0,0 +1,56 @@ +package kamkeel.npcs.network.packets.request.mainmenu; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class MainmenuAdvancedSavePacket extends AbstractPacket { + public static String packetName = "Request|MainmenuAdvancedSave"; + + public MainmenuAdvancedSavePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.MainmenuAdvancedSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + npc.advanced.readToNBT(ByteBufUtils.readNBT(in)); + npc.updateAI = true; + npc.updateClient = true; + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplayGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplayGetPacket.java new file mode 100644 index 000000000..d22b39680 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplayGetPacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request.mainmenu; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class MainmenuDisplayGetPacket extends AbstractPacket { + public static String packetName = "Request|MainmenuDisplayGet"; + + public MainmenuDisplayGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.MainmenuDisplayGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_DISPLAY; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.display.writeToNBT(new NBTTagCompound())); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplaySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplaySavePacket.java new file mode 100644 index 000000000..9d82076a8 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplaySavePacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request.mainmenu; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class MainmenuDisplaySavePacket extends AbstractPacket { + public static String packetName = "Request|MainmenuDisplaySave"; + + public MainmenuDisplaySavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.MainmenuDisplaySave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_DISPLAY; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + npc.display.readToNBT(ByteBufUtils.readNBT(in)); + npc.updateClient = true; + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvGetPacket.java new file mode 100644 index 000000000..765d0f382 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvGetPacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request.mainmenu; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class MainmenuInvGetPacket extends AbstractPacket { + public static String packetName = "Request|MainmenuInvGet"; + + public MainmenuInvGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.MainmenuInvGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_INVENTORY; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.inventory.writeEntityToNBT(new NBTTagCompound())); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvSavePacket.java new file mode 100644 index 000000000..86fc4ad78 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvSavePacket.java @@ -0,0 +1,56 @@ +package kamkeel.npcs.network.packets.request.mainmenu; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class MainmenuInvSavePacket extends AbstractPacket { + public static String packetName = "Request|MainmenuInvSave"; + + public MainmenuInvSavePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.MainmenuInvSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_INVENTORY; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + npc.inventory.readEntityFromNBT(ByteBufUtils.readNBT(in)); + npc.updateAI = true; + npc.updateClient = true; + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsGetPacket.java new file mode 100644 index 000000000..4598e8f4d --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsGetPacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request.mainmenu; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class MainmenuStatsGetPacket extends AbstractPacket { + public static String packetName = "Request|MainmenuStatsGet"; + + public MainmenuStatsGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.MainmenuStatsGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_STATS; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.stats.writeToNBT(new NBTTagCompound())); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsSavePacket.java new file mode 100644 index 000000000..b840a8e3a --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsSavePacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request.mainmenu; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class MainmenuStatsSavePacket extends AbstractPacket { + public static String packetName = "Request|MainmenuStatsSave"; + + public MainmenuStatsSavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.MainmenuStatsSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_STATS; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + npc.stats.readToNBT(ByteBufUtils.readNBT(in)); + npc.updateClient = true; + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetAllPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetAllPacket.java new file mode 100644 index 000000000..5058f5e00 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetAllPacket.java @@ -0,0 +1,48 @@ +package kamkeel.npcs.network.packets.request.naturalspawns; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.controllers.SpawnController; + +import java.io.IOException; + +public final class NaturalSpawnGetAllPacket extends AbstractPacket { + public static String packetName = "Request|NaturalSpawnGetAll"; + + public NaturalSpawnGetAllPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.NaturalSpawnGetAll; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + ScrollDataPacket.sendScrollData((EntityPlayerMP) player, SpawnController.Instance.getScroll()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetPacket.java new file mode 100644 index 000000000..7294874f6 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetPacket.java @@ -0,0 +1,62 @@ +package kamkeel.npcs.network.packets.request.naturalspawns; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.SpawnController; +import noppes.npcs.controllers.data.SpawnData; + +import java.io.IOException; + +public final class NaturalSpawnGetPacket extends AbstractPacket { + public static String packetName = "Request|NaturalSpawnGet"; + + private int spawnId; + + public NaturalSpawnGetPacket(int spawnId) { + this.spawnId = spawnId; + } + + public NaturalSpawnGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.NaturalSpawnGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(spawnId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); + SpawnData spawn = SpawnController.Instance.getSpawnData(id); + if (spawn != null) { + GuiDataPacket.sendGuiData((EntityPlayerMP) player, spawn.writeNBT(new NBTTagCompound())); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnRemovePacket.java new file mode 100644 index 000000000..03e71a7a5 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnRemovePacket.java @@ -0,0 +1,63 @@ +package kamkeel.npcs.network.packets.request.naturalspawns; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.SpawnController; + +import java.io.IOException; + +public final class NaturalSpawnRemovePacket extends AbstractPacket { + public static String packetName = "Request|NaturalSpawnRemove"; + + private int spawnId; + + public NaturalSpawnRemovePacket(int spawnId) { + this.spawnId = spawnId; + } + + public NaturalSpawnRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.NaturalSpawnRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_NATURALSPAWN; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(spawnId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); + SpawnController.Instance.removeSpawnData(id); + ScrollDataPacket.sendScrollData((EntityPlayerMP) player, SpawnController.Instance.getScroll()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnSavePacket.java new file mode 100644 index 000000000..c9ab359a5 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnSavePacket.java @@ -0,0 +1,68 @@ +package kamkeel.npcs.network.packets.request.naturalspawns; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.SpawnController; +import noppes.npcs.controllers.data.SpawnData; + +import java.io.IOException; + +public final class NaturalSpawnSavePacket extends AbstractPacket { + public static String packetName = "Request|NaturalSpawnSave"; + + private NBTTagCompound spawnNBT; + + public NaturalSpawnSavePacket(NBTTagCompound spawnNBT) { + this.spawnNBT = spawnNBT; + } + + public NaturalSpawnSavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.NaturalSpawnSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_NATURALSPAWN; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, spawnNBT); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NBTTagCompound compound = ByteBufUtils.readNBT(in); + SpawnData data = new SpawnData(); + data.readNBT(compound); + SpawnController.Instance.saveSpawnData(data); + ScrollDataPacket.sendScrollData((EntityPlayerMP) player, SpawnController.Instance.getScroll()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/ModelDataSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/ModelDataSavePacket.java new file mode 100644 index 000000000..06e6412de --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/ModelDataSavePacket.java @@ -0,0 +1,58 @@ +package kamkeel.npcs.network.packets.request.npc; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.entity.EntityCustomNpc; + +import java.io.IOException; + +public final class ModelDataSavePacket extends AbstractPacket { + public static String packetName = "Request|ModelDataSave"; + + public ModelDataSavePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.ModelDataSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_DISPLAY; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if(npc instanceof EntityCustomNpc) + ((EntityCustomNpc)npc).modelData.readFromNBT(ByteBufUtils.readNBT(in)); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/NpcClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/NpcClosePacket.java new file mode 100644 index 000000000..53cbb4e2c --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/NpcClosePacket.java @@ -0,0 +1,67 @@ +package kamkeel.npcs.network.packets.request.npc; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.LogWriter; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.controllers.LinkedNpcController; + +import java.io.IOException; + +public final class NpcClosePacket extends AbstractPacket { + public static final String packetName = "Request|NPCClose"; + + public NpcClosePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.NpcClose; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_GUI; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + npc.reset(); + if (npc.linkedData != null) + LinkedNpcController.Instance.saveNpcData(npc); + + if (ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { + LogWriter.script(String.format("[%s] (Player) %s CLOSE NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), npc.display.getName(), (int) npc.posX, (int) npc.posY, (int) npc.posZ, npc.worldObj.getWorldInfo().getWorldName())); + } + NoppesUtilServer.setEditingNpc(player, null); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/NpcDeletePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/NpcDeletePacket.java new file mode 100644 index 000000000..373b75823 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/NpcDeletePacket.java @@ -0,0 +1,67 @@ +package kamkeel.npcs.network.packets.request.npc; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.LogWriter; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.config.ConfigDebug; + +import java.io.IOException; + +public final class NpcDeletePacket extends AbstractPacket { + public static final String packetName = "Request|NPCDelete"; + + public NpcDeletePacket() { + } + + + @Override + public Enum getType() { + return EnumRequestPacket.NPCDelete; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_DELETE; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + if (ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { + LogWriter.script(String.format("[%s] (Player) %s DELETE NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), npc.display.getName(), (int) npc.posX, (int) npc.posY, (int) npc.posZ, npc.worldObj.getWorldInfo().getWorldName())); + } + + npc.delete(); + NoppesUtilServer.deleteNpc(npc, player); + } + + +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java new file mode 100644 index 000000000..da20d663f --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java @@ -0,0 +1,81 @@ +package kamkeel.npcs.network.packets.request.npc; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.LogWriter; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class RemoteDeletePacket extends AbstractPacket { + public static String packetName = "Request|RemoteDelete"; + + private int entityId; + + public RemoteDeletePacket(int entityId) { + this.entityId = entityId; + } + + public RemoteDeletePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RemoteDelete; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_DELETE; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(entityId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof net.minecraft.entity.player.EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); + Entity entity = player.worldObj.getEntityByID(id); + if (!(entity instanceof EntityNPCInterface)) + return; + + npc = (EntityNPCInterface) entity; + if (ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { + LogWriter.script(String.format("[%s] (Player) %s DELETE NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), npc.display.getName(), (int) npc.posX, (int) npc.posY, (int) npc.posZ, npc.worldObj.getWorldInfo().getWorldName())); + } + npc.delete(); + NoppesUtilServer.deleteNpc(npc, player); + NoppesUtilServer.sendNearbyNpcs((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteFreezeGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteFreezeGetPacket.java new file mode 100644 index 000000000..7eeede76c --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteFreezeGetPacket.java @@ -0,0 +1,48 @@ +package kamkeel.npcs.network.packets.request.npc; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.ScrollSelectedPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcs; + +import java.io.IOException; + +public final class RemoteFreezeGetPacket extends AbstractPacket { + public static String packetName = "Request|RemoteFreezeGet"; + + public RemoteFreezeGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RemoteFreezeGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + ScrollSelectedPacket.setSelectedList((EntityPlayerMP) player, CustomNpcs.FreezeNPCs ? "Unfreeze NPCs" : "Freeze NPCs"); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteFreezePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteFreezePacket.java new file mode 100644 index 000000000..0604bedae --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteFreezePacket.java @@ -0,0 +1,55 @@ +package kamkeel.npcs.network.packets.request.npc; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.ScrollSelectedPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcs; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class RemoteFreezePacket extends AbstractPacket { + public static String packetName = "Request|RemoteFreeze"; + + public RemoteFreezePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RemoteFreeze; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_FREEZE; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + CustomNpcs.FreezeNPCs = !CustomNpcs.FreezeNPCs; + ScrollSelectedPacket.setSelectedList((EntityPlayerMP) player, CustomNpcs.FreezeNPCs ? "Unfreeze NPCs" : "Freeze NPCs"); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteGlobalMenuPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteGlobalMenuPacket.java new file mode 100644 index 000000000..e2f4a2af2 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteGlobalMenuPacket.java @@ -0,0 +1,61 @@ +package kamkeel.npcs.network.packets.request.npc; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.LogWriter; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.constants.EnumGuiType; + +import java.io.IOException; + +public final class RemoteGlobalMenuPacket extends AbstractPacket { + public static String packetName = "Request|RemoteGlobalMenu"; + + public RemoteGlobalMenuPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RemoteGlobalMenu; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_REMOTE; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NoppesUtilServer.sendOpenGui(player, EnumGuiType.GlobalRemote, null); + if (ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { + LogWriter.script(String.format("[%s] (Player) %s OPEN GLOBAL MENU", + "WAND", player.getCommandSenderName())); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java new file mode 100644 index 000000000..cedf13d76 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java @@ -0,0 +1,69 @@ +package kamkeel.npcs.network.packets.request.npc; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.LogWriter; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.constants.EnumGuiType; + +import java.io.IOException; + +public final class RemoteMainMenuPacket extends AbstractPacket { + public static String packetName = "Request|RemoteMainMenu"; + + public RemoteMainMenuPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RemoteMainMenu; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_GUI; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + // No extra data since npc is provided externally. + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NoppesUtilServer.sendOpenGui(player, EnumGuiType.MainMenuDisplay, npc); + if (ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { + LogWriter.script(String.format("[%s] (Player) %s OPEN NPC %s (%s, %s, %s) [%s]", + "WAND", player.getCommandSenderName(), npc.display.getName(), + (int) npc.posX, (int) npc.posY, (int) npc.posZ, + npc.worldObj.getWorldInfo().getWorldName())); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteNpcsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteNpcsGetPacket.java new file mode 100644 index 000000000..6d4e84647 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteNpcsGetPacket.java @@ -0,0 +1,53 @@ +package kamkeel.npcs.network.packets.request.npc; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; + +import java.io.IOException; + +public final class RemoteNpcsGetPacket extends AbstractPacket { + public static String packetName = "Request|RemoteNpcsGet"; + + public RemoteNpcsGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RemoteNpcsGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_GUI; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NoppesUtilServer.sendNearbyNpcs((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java new file mode 100644 index 000000000..3667f1526 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request.npc; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class RemoteResetPacket extends AbstractPacket { + public static String packetName = "Request|RemoteReset"; + + public RemoteResetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RemoteReset; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_RESET; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + npc.reset(); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java new file mode 100644 index 000000000..af8577e98 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request.npc; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class RemoteTpToNpcPacket extends AbstractPacket { + public static String packetName = "Request|RemoteTpToNpc"; + + public RemoteTpToNpcPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RemoteTpToNpc; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_TELEPORT; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + ((EntityPlayerMP) player).playerNetServerHandler.setPlayerLocation(npc.posX, npc.posY, npc.posZ, 0, 0); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyAcceptInvitePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyAcceptInvitePacket.java new file mode 100644 index 000000000..be9bf04ba --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyAcceptInvitePacket.java @@ -0,0 +1,56 @@ +package kamkeel.npcs.network.packets.request.party; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.PlayerData; + +import java.io.IOException; +import java.util.UUID; + +public final class PartyAcceptInvitePacket extends AbstractPacket { + public static final String packetName = "Request|PartyAcceptInvite"; + + private String uuid; + + public PartyAcceptInvitePacket() { + } + + public PartyAcceptInvitePacket(String playerUUID) { + this.uuid = playerUUID; + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartyAcceptInvite; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, this.uuid); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + String uuidString = ByteBufUtils.readString(in); + if (uuidString != null) { + UUID uuid = UUID.fromString(uuidString); + playerData.acceptInvite(uuid); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyDisbandPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyDisbandPacket.java new file mode 100644 index 000000000..e22f8f349 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyDisbandPacket.java @@ -0,0 +1,53 @@ +package kamkeel.npcs.network.packets.request.party; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.PartyDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.PartyController; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.PlayerData; + +import java.io.IOException; + +public final class PartyDisbandPacket extends AbstractPacket { + public static final String packetName = "Request|PartyDisband"; + + + public PartyDisbandPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartyDisband; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + if (playerData.partyUUID != null) { + PartyController.Instance().disbandParty(playerData.partyUUID); + } + NBTTagCompound compound = new NBTTagCompound(); + compound.setBoolean("Disband", true); + PartyDataPacket.sendPartyData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyIgnoreInvitePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyIgnoreInvitePacket.java new file mode 100644 index 000000000..bc8c5733b --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyIgnoreInvitePacket.java @@ -0,0 +1,56 @@ +package kamkeel.npcs.network.packets.request.party; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.PlayerData; + +import java.io.IOException; +import java.util.UUID; + +public final class PartyIgnoreInvitePacket extends AbstractPacket { + public static final String packetName = "Request|PartyIgnoreInvite"; + + private String uuid; + + public PartyIgnoreInvitePacket() { + } + + public PartyIgnoreInvitePacket(String partyUUID) { + this.uuid = partyUUID; + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartyIgnoreInvite; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, this.uuid); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + String uuidString = ByteBufUtils.readString(in); + if (uuidString != null) { + UUID uuid = UUID.fromString(uuidString); + playerData.ignoreInvite(uuid); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java new file mode 100644 index 000000000..3883b0a09 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java @@ -0,0 +1,63 @@ +package kamkeel.npcs.network.packets.request.party; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.config.ConfigMain; +import noppes.npcs.controllers.PartyController; +import noppes.npcs.controllers.data.Party; + +import java.io.IOException; + +import static noppes.npcs.PacketHandlerServer.sendPartyData; + +public final class PartyInfoPacket extends AbstractPacket { + public static final String packetName = "Request|PartyInfo"; + + + boolean newParty; + + public PartyInfoPacket() { + } + + public PartyInfoPacket(boolean party) { + this.newParty = party; + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartyInfo; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeBoolean(this.newParty); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + boolean isNew = in.readBoolean(); + if (!ConfigMain.PartiesEnabled) + return; + + if (isNew) { + Party party = PartyController.Instance().createParty(); + party.addPlayer(player); + party.setLeader(player); + } + sendPartyData((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInviteListPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInviteListPacket.java new file mode 100644 index 000000000..006025a15 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInviteListPacket.java @@ -0,0 +1,44 @@ +package kamkeel.npcs.network.packets.request.party; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; + +import java.io.IOException; + +import static noppes.npcs.PacketHandlerServer.sendInviteData; + +public final class PartyInviteListPacket extends AbstractPacket { + public static final String packetName = "Request|PartyInviteList"; + + + public PartyInviteListPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartyInviteList; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + sendInviteData((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java new file mode 100644 index 000000000..518d77e07 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java @@ -0,0 +1,75 @@ +package kamkeel.npcs.network.packets.request.party; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.EventHooks; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.controllers.PartyController; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.Party; +import noppes.npcs.controllers.data.PlayerData; +import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.event.PartyEvent; + +import java.io.IOException; + +import static noppes.npcs.PacketHandlerServer.sendInviteData; + +public final class PartyInvitePacket extends AbstractPacket { + public static final String packetName = "Request|PartyInvite"; + + private String name; + + public PartyInvitePacket() { + } + + public PartyInvitePacket(String playername) { + this.name = playername; + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartyInvite; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, this.name); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + EntityPlayer invitedPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in)); + if (invitedPlayer != null) { + PlayerData senderData = PlayerDataController.Instance.getPlayerData(player); + PlayerData invitedData = PlayerDataController.Instance.getPlayerData(invitedPlayer); + if (senderData.partyUUID != null && invitedData.partyUUID == null) { + Party party = PartyController.Instance().getParty(senderData.partyUUID); + if (!party.getIsLocked()) { + PartyEvent.PartyInviteEvent partyEvent = new PartyEvent.PartyInviteEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(invitedPlayer)); + EventHooks.onPartyInvite(partyEvent); + if (!partyEvent.isCancelled()) { + invitedData.inviteToParty(party); + sendInviteData((EntityPlayerMP) invitedPlayer); + } + } + } + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java new file mode 100644 index 000000000..b4ca36fcc --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java @@ -0,0 +1,96 @@ +package kamkeel.npcs.network.packets.request.party; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.EventHooks; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.controllers.PartyController; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.Party; +import noppes.npcs.controllers.data.PlayerData; +import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.event.PartyEvent; + +import java.io.IOException; +import java.util.UUID; + +import static noppes.npcs.PacketHandlerServer.sendInviteData; + +public final class PartyKickPacket extends AbstractPacket { + public static final String packetName = "Request|PartyKick"; + + private String name; + + public PartyKickPacket() { + } + + public PartyKickPacket(String playername) { + this.name = playername; + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartyKick; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, this.name); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + String kickPlayerName = ByteBufUtils.readString(in); + EntityPlayer kickPlayer = NoppesUtilServer.getPlayerByName(kickPlayerName); + PlayerData playerData = null; + UUID playerUUID = null; + if (kickPlayer != null) { + playerData = PlayerDataController.Instance.getPlayerData(player); + } else { + String uuid = PlayerDataController.Instance.getPlayerUUIDFromName(kickPlayerName); + if (!uuid.isEmpty()) { + playerData = PlayerDataController.Instance.getPlayerDataCache(uuid); + playerUUID = UUID.fromString(uuid); + } + } + + if (playerData != null) { + if (playerData.partyUUID != null) { + Party party = PartyController.Instance().getParty(playerData.partyUUID); + if (!party.getIsLocked()) { + PartyEvent.PartyKickEvent partyEvent = new PartyEvent.PartyKickEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(kickPlayer)); + EventHooks.onPartyKick(partyEvent); + if (!partyEvent.isCancelled()) { + boolean successful = party.removePlayer(kickPlayer); + if (!successful) + successful = party.removePlayer(playerUUID); + + if (successful) { + if (kickPlayer != null) { + sendInviteData((EntityPlayerMP) kickPlayer); + } + PartyController.Instance().pingPartyUpdate(party); + PartyController.Instance().sendKickMessages(party, kickPlayer, kickPlayerName); + } + } + } + } + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java new file mode 100644 index 000000000..d2439e218 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java @@ -0,0 +1,74 @@ +package kamkeel.npcs.network.packets.request.party; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.EventHooks; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.controllers.PartyController; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.Party; +import noppes.npcs.controllers.data.PlayerData; +import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.event.PartyEvent; + +import java.io.IOException; + +import static noppes.npcs.PacketHandlerServer.sendInviteData; + +public final class PartyLeavePacket extends AbstractPacket { + public static final String packetName = "Request|PartyLeave"; + + private String name; + + public PartyLeavePacket() { + } + + public PartyLeavePacket(String playername) { + this.name = playername; + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartyLeave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, this.name); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + EntityPlayer leavingPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in)); + if (leavingPlayer != null) { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + if (playerData.partyUUID != null) { + Party party = PartyController.Instance().getParty(playerData.partyUUID); + boolean successful = party.removePlayer(leavingPlayer); + if (successful) { + PartyEvent.PartyLeaveEvent partyEvent = new PartyEvent.PartyLeaveEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(leavingPlayer)); + EventHooks.onPartyLeave(partyEvent); + sendInviteData((EntityPlayerMP) leavingPlayer); + PartyController.Instance().pingPartyUpdate(party); + PartyController.Instance().sendLeavingMessages(party, leavingPlayer); + } + } + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/PartyLogToServerPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLogToServerPacket.java similarity index 91% rename from src/main/java/kamkeel/npcs/network/packets/request/PartyLogToServerPacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/party/PartyLogToServerPacket.java index 0c3db732e..bcf2c0bc3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/PartyLogToServerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLogToServerPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.request; +package kamkeel.npcs.network.packets.request.party; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -10,7 +10,6 @@ import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NoppesUtilPlayer; import java.io.IOException; @@ -20,7 +19,8 @@ public final class PartyLogToServerPacket extends AbstractPacket { private String key; - public PartyLogToServerPacket() {} + public PartyLogToServerPacket() { + } public PartyLogToServerPacket(String key) { this.key = key; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySavePacket.java new file mode 100644 index 000000000..7248b6f27 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySavePacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request.party; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.PartyController; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.Party; +import noppes.npcs.controllers.data.PlayerData; + +import java.io.IOException; + +public final class PartySavePacket extends AbstractPacket { + public static final String packetName = "Request|PartySave"; + + private NBTTagCompound compound; + + public PartySavePacket() { + } + + public PartySavePacket(NBTTagCompound partyCompound) { + this.compound = partyCompound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartySave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + if (playerData.partyUUID != null) { + Party party = PartyController.Instance().getParty(playerData.partyUUID); + party.readClientNBT(ByteBufUtils.readNBT(in)); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetLeaderPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetLeaderPacket.java new file mode 100644 index 000000000..2d90068c8 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetLeaderPacket.java @@ -0,0 +1,60 @@ +package kamkeel.npcs.network.packets.request.party; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.PartyController; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.Party; +import noppes.npcs.controllers.data.PlayerData; + +import java.io.IOException; + +public final class PartySetLeaderPacket extends AbstractPacket { + public static final String packetName = "Request|PartySetLeader"; + + private String name; + + public PartySetLeaderPacket() { + } + + public PartySetLeaderPacket(String playername) { + this.name = playername; + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartySetLeader; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, this.name); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + if (playerData.partyUUID != null) { + Party party = PartyController.Instance().getParty(playerData.partyUUID); + if (!party.getIsLocked()) { + party.setLeader(NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in))); + PartyController.Instance().pingPartyUpdate(party); + } + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetQuestPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetQuestPacket.java new file mode 100644 index 000000000..932b852c2 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetQuestPacket.java @@ -0,0 +1,85 @@ +package kamkeel.npcs.network.packets.request.party; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.EventHooks; +import noppes.npcs.controllers.PartyController; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.data.Party; +import noppes.npcs.controllers.data.PlayerData; +import noppes.npcs.controllers.data.Quest; +import noppes.npcs.controllers.data.QuestData; +import noppes.npcs.scripted.event.PartyEvent; + +import java.io.IOException; + +public final class PartySetQuestPacket extends AbstractPacket { + public static final String packetName = "Request|PartySetQuest"; + + private int questID; + + public PartySetQuestPacket() { + } + + public PartySetQuestPacket(int questID) { + this.questID = questID; + } + + @Override + public Enum getType() { + return EnumRequestPacket.PartySetQuest; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.questID); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + if (playerData.partyUUID != null) { + Party party = PartyController.Instance().getParty(playerData.partyUUID); + if (party != null) { + if (party.getLeaderUUID().equals(player.getUniqueID())) { + int questID = in.readInt(); + party.setQuest(null); + if (questID != -1) { + Quest foundQuest = QuestController.Instance.quests.get(questID); + if (foundQuest != null) { + if (foundQuest.partyOptions.allowParty) { + if (party.validateQuest(questID, true)) { + PartyEvent.PartyQuestSetEvent partyEvent = new PartyEvent.PartyQuestSetEvent(party, foundQuest); + EventHooks.onPartyQuestSet(partyEvent); + if (!partyEvent.isCancelled()) { + if (playerData.questData.hasActiveQuest(questID)) { + QuestData questdata = new QuestData(foundQuest); + playerData.questData.activeQuests.put(questID, questdata); + } + party.setQuest(foundQuest); + PartyController.Instance().sendQuestChat(party, "party.setChat", " ", foundQuest.title); + } + } + } + } + } + PartyController.Instance().pingPartyUpdate(party); + } + } + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataGetPacket.java new file mode 100644 index 000000000..978e0c4f1 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataGetPacket.java @@ -0,0 +1,54 @@ +package kamkeel.npcs.network.packets.request.playerdata; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.constants.EnumPlayerData; + +import java.io.IOException; + +public final class PlayerDataGetPacket extends AbstractPacket { + public static String packetName = "Request|PlayerDataGet"; + + public PlayerDataGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.PlayerDataGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + // TODO: Fix PlayerData + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + if (EnumPlayerData.values().length <= id) return; + String name = null; + EnumPlayerData datatype = EnumPlayerData.values()[id]; + if (datatype != EnumPlayerData.Players) + name = ByteBufUtils.readString(in); + NoppesUtilServer.sendPlayerData(datatype, (EntityPlayerMP) player, name); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataMapRegenPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataMapRegenPacket.java new file mode 100644 index 000000000..ac0f488f3 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataMapRegenPacket.java @@ -0,0 +1,51 @@ +package kamkeel.npcs.network.packets.request.playerdata; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; + +import java.io.IOException; + +public final class PlayerDataMapRegenPacket extends AbstractPacket { + public static String packetName = "Request|PlayerDataMapRegen"; + + public PlayerDataMapRegenPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.PlayerDataMapRegen; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_PLAYERDATA; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + NoppesUtilServer.regenPlayerData((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemovePacket.java new file mode 100644 index 000000000..806bcb19d --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemovePacket.java @@ -0,0 +1,52 @@ +package kamkeel.npcs.network.packets.request.playerdata; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; + +import java.io.IOException; + +public final class PlayerDataRemovePacket extends AbstractPacket { + public static String packetName = "Request|PlayerDataRemove"; + + public PlayerDataRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.PlayerDataRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_PLAYERDATA; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + // TODO: Fix Send + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + NoppesUtilServer.removePlayerData(in, (EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryGetPacket.java new file mode 100644 index 000000000..ff63a5fe0 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryGetPacket.java @@ -0,0 +1,54 @@ +package kamkeel.npcs.network.packets.request.quest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.data.QuestCategory; + +import java.io.IOException; + +public final class QuestCategoryGetPacket extends AbstractPacket { + public static String packetName = "Request|QuestCategoryGet"; + + public QuestCategoryGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.QuestCategoryGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + QuestCategory category = QuestController.Instance.categories.get(id); + if (category != null) { + NBTTagCompound comp = category.writeNBT(new NBTTagCompound()); + comp.removeTag("Dialogs"); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, comp); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryRemovePacket.java new file mode 100644 index 000000000..4961b3788 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryRemovePacket.java @@ -0,0 +1,61 @@ +package kamkeel.npcs.network.packets.request.quest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.QuestController; + +import java.io.IOException; + +public final class QuestCategoryRemovePacket extends AbstractPacket { + public static String packetName = "Request|QuestCategoryRemove"; + + private int categoryId; + + public QuestCategoryRemovePacket(int categoryId) { + this.categoryId = categoryId; + } + + public QuestCategoryRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.QuestCategoryRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_QUEST; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(categoryId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + QuestController.Instance.removeCategory(id); + NoppesUtilServer.sendQuestCategoryData((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategorySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategorySavePacket.java new file mode 100644 index 000000000..b1a94cef1 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategorySavePacket.java @@ -0,0 +1,66 @@ +package kamkeel.npcs.network.packets.request.quest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.data.QuestCategory; + +import java.io.IOException; + +public final class QuestCategorySavePacket extends AbstractPacket { + public static String packetName = "Request|QuestCategorySave"; + + private NBTTagCompound categoryNBT; + + public QuestCategorySavePacket(NBTTagCompound categoryNBT) { + this.categoryNBT = categoryNBT; + } + + public QuestCategorySavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.QuestCategorySave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_QUEST; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, categoryNBT); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + NBTTagCompound compound = ByteBufUtils.readNBT(in); + QuestCategory category = new QuestCategory(); + category.readNBT(compound); + QuestController.Instance.saveCategory(category); + NoppesUtilServer.sendQuestCategoryData((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestDialogGetTitlePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestDialogGetTitlePacket.java new file mode 100644 index 000000000..36b71825d --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestDialogGetTitlePacket.java @@ -0,0 +1,64 @@ +package kamkeel.npcs.network.packets.request.quest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.data.Dialog; + +import java.io.IOException; + +public final class QuestDialogGetTitlePacket extends AbstractPacket { + public static String packetName = "Request|QuestDialogGetTitle"; + + public QuestDialogGetTitlePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.QuestDialogGetTitle; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_QUEST; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + Dialog quest = DialogController.Instance.dialogs.get(in.readInt()); + Dialog quest2 = DialogController.Instance.dialogs.get(in.readInt()); + Dialog quest3 = DialogController.Instance.dialogs.get(in.readInt()); + NBTTagCompound compound = new NBTTagCompound(); + if (quest != null) + compound.setString("1", quest.title); + if (quest2 != null) + compound.setString("2", quest2.title); + if (quest3 != null) + compound.setString("3", quest3.title); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestOpenGuiPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestOpenGuiPacket.java new file mode 100644 index 000000000..2935fca57 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestOpenGuiPacket.java @@ -0,0 +1,67 @@ +package kamkeel.npcs.network.packets.request.quest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.data.Quest; + +import java.io.IOException; + +public final class QuestOpenGuiPacket extends AbstractPacket { + public static String packetName = "Request|QuestOpenGui"; + + private int guiId; + private NBTTagCompound questNBT; + + public QuestOpenGuiPacket(int guiId, NBTTagCompound questNBT) { + this.guiId = guiId; + this.questNBT = questNBT; + } + + public QuestOpenGuiPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.QuestOpenGui; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(guiId); + ByteBufUtils.writeNBT(out, questNBT); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + int gui = in.readInt(); + NBTTagCompound compound = ByteBufUtils.readNBT(in); + Quest quest = new Quest(); + quest.readNBT(compound); + NoppesUtilServer.setEditingQuest(player, quest); + player.openGui(CustomNpcs.instance, gui, player.worldObj, 0, 0, 0); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestSavePacket.java new file mode 100644 index 000000000..aa699e873 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestSavePacket.java @@ -0,0 +1,80 @@ +package kamkeel.npcs.network.packets.request.quest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.data.Quest; + +import java.io.IOException; + +public final class QuestSavePacket extends AbstractPacket { + public static String packetName = "Request|QuestSave"; + + private int categoryId; + private NBTTagCompound questNBT; + private boolean sendGroup; + + public QuestSavePacket(int categoryId, NBTTagCompound questNBT, boolean sendGroup) { + this.categoryId = categoryId; + this.questNBT = questNBT; + this.sendGroup = sendGroup; + } + + public QuestSavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.QuestSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_QUEST; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(categoryId); + ByteBufUtils.writeNBT(out, questNBT); + out.writeBoolean(sendGroup); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int cat = in.readInt(); + NBTTagCompound compound = ByteBufUtils.readNBT(in); + boolean sendGroup = in.readBoolean(); + Quest quest = new Quest(); + quest.readNBT(compound); + QuestController.Instance.saveQuest(cat, quest); + if (quest.category != null) { + if (sendGroup) { + NoppesUtilServer.sendQuestGroup((EntityPlayerMP) player, quest.category); + } else { + NoppesUtilServer.sendQuestData((EntityPlayerMP) player, quest.category); + } + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java new file mode 100644 index 000000000..643399c76 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java @@ -0,0 +1,59 @@ +package kamkeel.npcs.network.packets.request.recipe; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.RecipeController; +import noppes.npcs.controllers.data.RecipeCarpentry; + +import java.io.IOException; + +public final class RecipeGetPacket extends AbstractPacket { + public static String packetName = "Request|RecipeGet"; + + private int recipeId; + + public RecipeGetPacket(int recipeId) { + this.recipeId = recipeId; + } + + public RecipeGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RecipeGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(recipeId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); + RecipeCarpentry recipe = RecipeController.Instance.getRecipe(id); + NoppesUtilServer.setRecipeGui((EntityPlayerMP) player, recipe); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeRemovePacket.java new file mode 100644 index 000000000..cd8ab6136 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeRemovePacket.java @@ -0,0 +1,65 @@ +package kamkeel.npcs.network.packets.request.recipe; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.RecipeController; +import noppes.npcs.controllers.data.RecipeCarpentry; + +import java.io.IOException; + +public final class RecipeRemovePacket extends AbstractPacket { + public static String packetName = "Request|RecipeRemove"; + + private int recipeId; + + public RecipeRemovePacket(int recipeId) { + this.recipeId = recipeId; + } + + public RecipeRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RecipeRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_RECIPE; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(recipeId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); + RecipeCarpentry recipe = RecipeController.Instance.delete(id); + NoppesUtilServer.sendRecipeData((EntityPlayerMP) player, recipe.isGlobal ? 3 : 4); + NoppesUtilServer.setRecipeGui((EntityPlayerMP) player, new RecipeCarpentry("")); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java new file mode 100644 index 000000000..e4e5e4fa8 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java @@ -0,0 +1,67 @@ +package kamkeel.npcs.network.packets.request.recipe; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.RecipeController; +import noppes.npcs.controllers.data.RecipeCarpentry; + +import java.io.IOException; + +public final class RecipeSavePacket extends AbstractPacket { + public static String packetName = "Request|RecipeSave"; + + private NBTTagCompound recipeNBT; + + public RecipeSavePacket(NBTTagCompound recipeNBT) { + this.recipeNBT = recipeNBT; + } + + public RecipeSavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RecipeSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_RECIPE; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, recipeNBT); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NBTTagCompound compound = ByteBufUtils.readNBT(in); + RecipeCarpentry recipe = RecipeController.Instance.saveRecipe(compound); + NoppesUtilServer.sendRecipeData((EntityPlayerMP) player, recipe.isGlobal ? 3 : 4); + NoppesUtilServer.setRecipeGui((EntityPlayerMP) player, recipe); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipesGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipesGetPacket.java new file mode 100644 index 000000000..cf148693d --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipesGetPacket.java @@ -0,0 +1,53 @@ +package kamkeel.npcs.network.packets.request.recipe; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; + +import java.io.IOException; + +public final class RecipesGetPacket extends AbstractPacket { + public static String packetName = "Request|RecipesGet"; + + private int categoryId; + + public RecipesGetPacket(int categoryId) { + this.categoryId = categoryId; + } + + public RecipesGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.RecipesGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(categoryId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + NoppesUtilServer.sendRecipeData((EntityPlayerMP) player, id); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/role/RoleCompanionUpdatePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleCompanionUpdatePacket.java new file mode 100644 index 000000000..5465cc029 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleCompanionUpdatePacket.java @@ -0,0 +1,56 @@ +package kamkeel.npcs.network.packets.request.role; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.constants.EnumCompanionStage; +import noppes.npcs.roles.RoleCompanion; + +import java.io.IOException; + +public final class RoleCompanionUpdatePacket extends AbstractPacket { + public static String packetName = "Request|RoleCompanionUpdate"; + + public RoleCompanionUpdatePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.RoleCompanionUpdate; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + ((RoleCompanion)npc.roleInterface).matureTo(EnumCompanionStage.values()[in.readInt()]); + npc.updateClient = true; + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/role/RoleGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleGetPacket.java new file mode 100644 index 000000000..057f8d08c --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleGetPacket.java @@ -0,0 +1,58 @@ +package kamkeel.npcs.network.packets.request.role; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class RoleGetPacket extends AbstractPacket { + public static String packetName = "Request|RoleGet"; + + public RoleGetPacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.RoleGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if(npc.roleInterface == null) return; + NBTTagCompound compound = new NBTTagCompound(); + compound.setBoolean("RoleData", true); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.roleInterface.writeToNBT(compound)); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/role/RoleSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleSavePacket.java new file mode 100644 index 000000000..564798031 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleSavePacket.java @@ -0,0 +1,55 @@ +package kamkeel.npcs.network.packets.request.role; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class RoleSavePacket extends AbstractPacket { + public static String packetName = "Request|RoleSave"; + + public RoleSavePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.RoleSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + npc.roleInterface.readFromNBT(ByteBufUtils.readNBT(in)); + npc.updateClient = true; + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java new file mode 100644 index 000000000..6b27b738c --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java @@ -0,0 +1,73 @@ +package kamkeel.npcs.network.packets.request.tags; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.TagController; +import noppes.npcs.controllers.data.Tag; + +import java.io.IOException; + +public final class TagRemovePacket extends AbstractPacket { + public static String packetName = "Request|TagRemove"; + + private int tagId; + + public TagRemovePacket(int tagId) { + this.tagId = tagId; + } + + public TagRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.TagRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_TAG; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(tagId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + + int id = in.readInt(); + TagController.getInstance().delete(id); + NoppesUtilServer.sendTagDataAll((EntityPlayerMP) player); + NBTTagCompound comp = new NBTTagCompound(); + new Tag().writeNBT(comp); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, comp); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java new file mode 100644 index 000000000..04b8482e1 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java @@ -0,0 +1,74 @@ +package kamkeel.npcs.network.packets.request.tags; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.TagController; +import noppes.npcs.controllers.data.Tag; + +import java.io.IOException; + +public final class TagSavePacket extends AbstractPacket { + public static String packetName = "Request|TagSave"; + + private NBTTagCompound tagNBT; + + public TagSavePacket(NBTTagCompound tagNBT) { + this.tagNBT = tagNBT; + } + + public TagSavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.TagSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_TAG; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, tagNBT); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + Tag tag = new Tag(); + tag.readNBT(ByteBufUtils.readNBT(in)); + TagController.getInstance().saveTag(tag); + NoppesUtilServer.sendTagDataAll((EntityPlayerMP) player); + NBTTagCompound comp = new NBTTagCompound(); + tag.writeNBT(comp); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, comp); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSetPacket.java new file mode 100644 index 000000000..764b6ad85 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSetPacket.java @@ -0,0 +1,72 @@ +package kamkeel.npcs.network.packets.request.tags; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.TagController; +import noppes.npcs.controllers.data.Tag; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class TagSetPacket extends AbstractPacket { + public static String packetName = "Request|TagSet"; + + public TagSetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.TagSet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + // TODO: Fix Tag Set + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + this.setTags(npc, in); + } + + private void setTags(EntityNPCInterface npc, ByteBuf buffer) throws IOException { + npc.advanced.tagUUIDs.removeIf(uuid -> TagController.getInstance().getTagFromUUID(uuid) != null); + NBTTagCompound compound = ByteBufUtils.readNBT(buffer); + NBTTagList list = compound.getTagList("TagNames", 8); + for (int i = 0; i < list.tagCount(); i++) { + String tagName = list.getStringTagAt(i); + npc.advanced.tagUUIDs.add(TagController.getInstance().getTagFromName(tagName).uuid); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformGetPacket.java new file mode 100644 index 000000000..5825b695e --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformGetPacket.java @@ -0,0 +1,55 @@ +package kamkeel.npcs.network.packets.request.transform; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class TransformGetPacket extends AbstractPacket { + public static String packetName = "Request|TransformGet"; + + public TransformGetPacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.TransformGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.transform.writeOptions(new NBTTagCompound())); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java new file mode 100644 index 000000000..61cc24001 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java @@ -0,0 +1,54 @@ +package kamkeel.npcs.network.packets.request.transform; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class TransformLoadPacket extends AbstractPacket { + public static String packetName = "Request|TransformLoad"; + + public TransformLoadPacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.TransformLoad; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if(npc.transform.isValid()) + npc.transform.transform(in.readBoolean()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformSavePacket.java new file mode 100644 index 000000000..f5583b17d --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformSavePacket.java @@ -0,0 +1,57 @@ +package kamkeel.npcs.network.packets.request.transform; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; + +import java.io.IOException; + +public final class TransformSavePacket extends AbstractPacket { + public static String packetName = "Request|TransformSave"; + + public TransformSavePacket() { } + + @Override + public Enum getType() { + return EnumRequestPacket.TransformSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + boolean isValid = npc.transform.isValid(); + npc.transform.readOptions(ByteBufUtils.readNBT(in)); + if (isValid != npc.transform.isValid()) + npc.updateAI = true; + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoriesGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoriesGetPacket.java new file mode 100644 index 000000000..fac055385 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoriesGetPacket.java @@ -0,0 +1,45 @@ +package kamkeel.npcs.network.packets.request.transport; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; + +import java.io.IOException; + +public final class TransportCategoriesGetPacket extends AbstractPacket { + public static String packetName = "Request|TransportCategoriesGet"; + + public TransportCategoriesGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.TransportCategoriesGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + NoppesUtilServer.sendTransportCategoryData((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoryRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoryRemovePacket.java new file mode 100644 index 000000000..34cc8bad8 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoryRemovePacket.java @@ -0,0 +1,61 @@ +package kamkeel.npcs.network.packets.request.transport; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.TransportController; + +import java.io.IOException; + +public final class TransportCategoryRemovePacket extends AbstractPacket { + public static String packetName = "Request|TransportCategoryRemove"; + + private int categoryId; + + public TransportCategoryRemovePacket(int categoryId) { + this.categoryId = categoryId; + } + + public TransportCategoryRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.TransportCategoryRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_TRANSPORT; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(categoryId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + TransportController.getInstance().removeCategory(id); + NoppesUtilServer.sendTransportCategoryData((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategorySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategorySavePacket.java new file mode 100644 index 000000000..0bc413d09 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategorySavePacket.java @@ -0,0 +1,64 @@ +package kamkeel.npcs.network.packets.request.transport; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.TransportController; + +import java.io.IOException; + +public final class TransportCategorySavePacket extends AbstractPacket { + public static String packetName = "Request|TransportCategorySave"; + + private String categoryName; + private int id; + + public TransportCategorySavePacket(String categoryName, int id) { + this.categoryName = categoryName; + this.id = id; + } + + public TransportCategorySavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.TransportCategorySave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_TRANSPORT; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, categoryName); + out.writeInt(id); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + String name = ByteBufUtils.readString(in); + int id = in.readInt(); + TransportController.getInstance().saveCategory(name, id); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportGetLocationPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportGetLocationPacket.java new file mode 100644 index 000000000..ec3dd8b15 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportGetLocationPacket.java @@ -0,0 +1,58 @@ +package kamkeel.npcs.network.packets.request.transport; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.ScrollSelectedPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.constants.EnumRoleType; +import noppes.npcs.roles.RoleTransporter; + +import java.io.IOException; + +public final class TransportGetLocationPacket extends AbstractPacket { + public static String packetName = "Request|TransportGetLocation"; + + public TransportGetLocationPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.TransportGetLocation; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (npc.advanced.role != EnumRoleType.Transporter) return; + RoleTransporter role = (RoleTransporter) npc.roleInterface; + if (role.hasTransport()) { + GuiDataPacket.sendGuiData((EntityPlayerMP) player, role.getLocation().writeNBT()); + ScrollSelectedPacket.setSelectedList((EntityPlayerMP) player, role.getLocation().category.title); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportRemovePacket.java new file mode 100644 index 000000000..c85a45226 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportRemovePacket.java @@ -0,0 +1,63 @@ +package kamkeel.npcs.network.packets.request.transport; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.TransportController; +import noppes.npcs.controllers.data.TransportLocation; + +import java.io.IOException; + +public final class TransportRemovePacket extends AbstractPacket { + public static String packetName = "Request|TransportRemove"; + + private int locationId; + + public TransportRemovePacket(int locationId) { + this.locationId = locationId; + } + + public TransportRemovePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.TransportRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_TRANSPORT; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(locationId); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + TransportLocation loc = TransportController.getInstance().removeLocation(id); + if (loc != null) + NoppesUtilServer.sendTransportData((EntityPlayerMP) player, loc.category.id); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportSavePacket.java new file mode 100644 index 000000000..bb87d304f --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportSavePacket.java @@ -0,0 +1,89 @@ +package kamkeel.npcs.network.packets.request.transport; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.constants.EnumJobType; +import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.controllers.TransportController; +import noppes.npcs.controllers.data.TransportLocation; +import noppes.npcs.roles.JobSpawner; + +import java.io.IOException; + +public final class TransportSavePacket extends AbstractPacket { + public static String packetName = "Request|TransportSave"; + + private int categoryId; + private NBTTagCompound compound; + + public TransportSavePacket(int categoryId, NBTTagCompound compound) { + this.categoryId = categoryId; + this.compound = compound; + } + + public TransportSavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.TransportSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.NPC_ADVANCED; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(categoryId); + ByteBufUtils.writeNBT(out, compound); + + // TODO: FIX TRANSPORT SAVE + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int cat = in.readInt(); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); + TransportLocation location = TransportController.getInstance().saveLocation(cat, nbt, npc); + if (location != null) { + if (npc.advanced.job != EnumJobType.Spawner) return; + JobSpawner job = (JobSpawner) npc.jobInterface; + boolean useServerClone = in.readBoolean(); + if (useServerClone) { + NBTTagCompound compound = ServerCloneController.Instance.getCloneData(null, ByteBufUtils.readString(in), in.readInt()); + job.setJobCompound(in.readInt(), compound); + } else { + job.setJobCompound(in.readInt(), ByteBufUtils.readNBT(in)); + } + GuiDataPacket.sendGuiData((EntityPlayerMP) player, job.getTitles()); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportsGetPacket.java new file mode 100644 index 000000000..01d3ec21f --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportsGetPacket.java @@ -0,0 +1,46 @@ +package kamkeel.npcs.network.packets.request.transport; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; + +import java.io.IOException; + +public final class TransportsGetPacket extends AbstractPacket { + public static String packetName = "Request|TransportsGet"; + + public TransportsGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.TransportsGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + int id = in.readInt(); + NoppesUtilServer.sendTransportData((EntityPlayerMP) player, id); + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 2ead5179a..883e08735 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -29,16 +29,12 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChunkCoordinates; import net.minecraft.village.MerchantRecipeList; -import net.minecraft.world.WorldProvider; import net.minecraft.world.WorldServer; -import net.minecraftforge.common.DimensionManager; -import noppes.npcs.api.entity.IPlayer; import noppes.npcs.blocks.tiles.TileScripted; import noppes.npcs.config.ConfigDebug; import noppes.npcs.config.ConfigMain; import noppes.npcs.config.ConfigScript; import noppes.npcs.constants.*; -import noppes.npcs.containers.ContainerCustomGui; import noppes.npcs.containers.ContainerMail; import noppes.npcs.controllers.*; import noppes.npcs.controllers.LinkedNpcController.LinkedData; @@ -50,8 +46,6 @@ import noppes.npcs.roles.RoleCompanion; import noppes.npcs.roles.RoleTrader; import noppes.npcs.roles.RoleTransporter; import noppes.npcs.scripted.NpcAPI; -import noppes.npcs.scripted.event.PartyEvent; -import noppes.npcs.scripted.gui.ScriptGui; import noppes.npcs.scripted.item.ScriptCustomItem; import java.io.IOException; @@ -74,162 +68,6 @@ public class PacketHandlerServer{ ItemStack item = player.inventory.getCurrentItem(); EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - - if (type == EnumPacketServer.CacheAnimation) { - PlayerDataController.Instance.getPlayerData(player).animationData.cacheAnimation(in.readInt()); - return; - } else if (type == EnumPacketServer.GetPartyData || type == EnumPacketServer.CreateParty) { - if(!ConfigMain.PartiesEnabled) - return; - - if (type == EnumPacketServer.CreateParty) { - Party party = PartyController.Instance().createParty(); - party.addPlayer(player); - party.setLeader(player); - } - sendPartyData(player); - } else if (type == EnumPacketServer.DisbandParty) { - PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - if (playerData.partyUUID != null) { - PartyController.Instance().disbandParty(playerData.partyUUID); - } - NBTTagCompound compound = new NBTTagCompound(); - compound.setBoolean("Disband", true); - PartyDataPacket.sendPartyData(player, compound); - } else if (type == EnumPacketServer.KickPlayer) { - String kickPlayerName = ByteBufUtils.readString(in); - EntityPlayer kickPlayer = NoppesUtilServer.getPlayerByName(kickPlayerName); - PlayerData playerData = null; - UUID playerUUID = null; - if (kickPlayer != null) { - playerData = PlayerDataController.Instance.getPlayerData(player); - } else { - String uuid = PlayerDataController.Instance.getPlayerUUIDFromName(kickPlayerName); - if(!uuid.isEmpty()){ - playerData = PlayerDataController.Instance.getPlayerDataCache(uuid); - playerUUID = UUID.fromString(uuid); - } - } - - if(playerData != null){ - if (playerData.partyUUID != null) { - Party party = PartyController.Instance().getParty(playerData.partyUUID); - if (!party.getIsLocked()) { - PartyEvent.PartyKickEvent partyEvent = new PartyEvent.PartyKickEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(kickPlayer)); - EventHooks.onPartyKick(partyEvent); - if (!partyEvent.isCancelled()){ - boolean successful = party.removePlayer(kickPlayer); - if(!successful) - successful = party.removePlayer(playerUUID); - - if(successful){ - if(kickPlayer != null){ - sendInviteData((EntityPlayerMP) kickPlayer); - } - PartyController.Instance().pingPartyUpdate(party); - PartyController.Instance().sendKickMessages(party, kickPlayer, kickPlayerName); - } - } - } - } - } - } else if (type == EnumPacketServer.LeavePlayer) { - EntityPlayer leavingPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in)); - if (leavingPlayer != null) { - PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - if (playerData.partyUUID != null) { - Party party = PartyController.Instance().getParty(playerData.partyUUID); - boolean successful = party.removePlayer(leavingPlayer); - if(successful){ - PartyEvent.PartyLeaveEvent partyEvent = new PartyEvent.PartyLeaveEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(leavingPlayer)); - EventHooks.onPartyLeave(partyEvent); - sendInviteData((EntityPlayerMP) leavingPlayer); - PartyController.Instance().pingPartyUpdate(party); - PartyController.Instance().sendLeavingMessages(party, leavingPlayer); - } - } - } - } else if (type == EnumPacketServer.SavePartyData) { - PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - if (playerData.partyUUID != null) { - Party party = PartyController.Instance().getParty(playerData.partyUUID); - party.readClientNBT(ByteBufUtils.readNBT(in)); - } - } else if (type == EnumPacketServer.SetPartyLeader) { - PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - if (playerData.partyUUID != null) { - Party party = PartyController.Instance().getParty(playerData.partyUUID); - if (!party.getIsLocked()) { - party.setLeader(NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in))); - PartyController.Instance().pingPartyUpdate(party); - } - } - } else if (type == EnumPacketServer.PartyInvite) { - EntityPlayer invitedPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in)); - if (invitedPlayer != null) { - PlayerData senderData = PlayerDataController.Instance.getPlayerData(player); - PlayerData invitedData = PlayerDataController.Instance.getPlayerData(invitedPlayer); - if (senderData.partyUUID != null && invitedData.partyUUID == null) {//only send invite if player is not in a party - Party party = PartyController.Instance().getParty(senderData.partyUUID); - if (!party.getIsLocked()) { - PartyEvent.PartyInviteEvent partyEvent = new PartyEvent.PartyInviteEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(invitedPlayer)); - EventHooks.onPartyInvite(partyEvent); - if (!partyEvent.isCancelled()){ - invitedData.inviteToParty(party); - sendInviteData((EntityPlayerMP) invitedPlayer); - } - } - } - } - } else if (type == EnumPacketServer.GetPartyInviteList) { - sendInviteData(player); - } else if (type == EnumPacketServer.AcceptInvite) { - PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - String uuidString = ByteBufUtils.readString(in); - if (uuidString != null) { - UUID uuid = UUID.fromString(uuidString); - playerData.acceptInvite(uuid); - } - } else if (type == EnumPacketServer.IgnoreInvite) { - PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - String uuidString = ByteBufUtils.readString(in); - if (uuidString != null) { - UUID uuid = UUID.fromString(uuidString); - playerData.ignoreInvite(uuid); - } - } else if (type == EnumPacketServer.SetPartyQuest) { - PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - if(playerData.partyUUID != null){ - Party party = PartyController.Instance().getParty(playerData.partyUUID); - if (party != null) { - if (party.getLeaderUUID().equals(player.getUniqueID())) { - int questID = in.readInt(); - party.setQuest(null); - if(questID != -1){ - Quest foundQuest = QuestController.Instance.quests.get(questID); - if(foundQuest != null){ - if (foundQuest.partyOptions.allowParty) { - if(party.validateQuest(questID, true)){ - PartyEvent.PartyQuestSetEvent partyEvent = new PartyEvent.PartyQuestSetEvent(party, foundQuest); - EventHooks.onPartyQuestSet(partyEvent); - if (!partyEvent.isCancelled()){ - if(playerData.questData.hasActiveQuest(questID)){ - QuestData questdata = new QuestData(foundQuest); - playerData.questData.activeQuests.put(questID, questdata); - } - party.setQuest(foundQuest); - PartyController.Instance().sendQuestChat(party, "party.setChat", " ", foundQuest.title); - } - } - } - } - } - PartyController.Instance().pingPartyUpdate(party); - } - } - } - } - if(type.needsNpc && npc == null){ } @@ -617,22 +455,7 @@ public class PacketHandlerServer{ } private void wandPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws IOException{ - if(type == EnumPacketServer.Delete){ - if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ - LogWriter.script(String.format("[%s] (Player) %s DELETE NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), npc.display.getName(), (int)npc.posX, (int)npc.posY, (int)npc.posZ, npc.worldObj.getWorldInfo().getWorldName())); - } - npc.delete(); - NoppesUtilServer.deleteNpc(npc,player); - } - else if(type == EnumPacketServer.LinkedAdd){ - LinkedNpcController.Instance.addData(ByteBufUtils.readString(buffer)); - - List list = new ArrayList(); - for(LinkedData data : LinkedNpcController.Instance.list) - list.add(data.name); - ScrollListPacket.sendList((EntityPlayerMP)player, list); - } - else if(type == EnumPacketServer.LinkedRemove){ + if(type == EnumPacketServer.LinkedRemove){ LinkedNpcController.Instance.removeData(ByteBufUtils.readString(buffer)); List list = new ArrayList(); @@ -652,15 +475,6 @@ public class PacketHandlerServer{ npc.linkedName = ByteBufUtils.readString(buffer); LinkedNpcController.Instance.loadNpcData(npc); } - else if(type == EnumPacketServer.NpcMenuClose){ - npc.reset(); - if(npc.linkedData != null) - LinkedNpcController.Instance.saveNpcData(npc); - if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ - LogWriter.script(String.format("[%s] (Player) %s CLOSE NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), npc.display.getName(), (int)npc.posX, (int)npc.posY, (int)npc.posZ, npc.worldObj.getWorldInfo().getWorldName())); - } - NoppesUtilServer.setEditingNpc(player, null); - } else if(type == EnumPacketServer.BanksGet){ NoppesUtilServer.sendBankDataAll(player); } @@ -1167,7 +981,6 @@ public class PacketHandlerServer{ } else blockPackets(type, buffer, player); - } private void mountPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException{ if(type == EnumPacketServer.SpawnRider){ diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java index 01bbb8d20..0e9941d25 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java @@ -132,7 +132,7 @@ public class GuiNpcMenu implements GuiYesNoCallback { public void confirmClicked(boolean flag, int i) { Minecraft mc = Minecraft.getMinecraft(); if (flag) { - Client.sendData(EnumPacketServer.Delete); + Client.sendData(EnumPacketServer.NPCDelete); mc.displayGuiScreen(null); mc.setIngameFocus(); } else { diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 1b9136686..1b0b44a7f 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -3,7 +3,7 @@ package noppes.npcs.constants; import noppes.npcs.CustomNpcsPermissions; public enum EnumPacketServer { - Delete(CustomNpcsPermissions.NPC_DELETE, true), + NPCDelete(CustomNpcsPermissions.NPC_DELETE, true), RemoteMainMenu(CustomNpcsPermissions.NPC_GUI), RemoteGlobalMenu(CustomNpcsPermissions.GLOBAL_REMOTE), NpcMenuClose(CustomNpcsPermissions.NPC_GUI, true), From b15d64bd098102540cb2fe07a56d054224cc0e59 Mon Sep 17 00:00:00 2001 From: Kam Date: Sat, 1 Feb 2025 21:44:22 -0500 Subject: [PATCH 060/157] Linked Packets --- .../kamkeel/npcs/network/PacketClient.java | 8 +++++ .../kamkeel/npcs/network/PacketHandler.java | 20 ++++++++++++- .../request/linked/LinkedGetAllPacket.java | 3 +- .../request/linked/LinkedRemovePacket.java | 3 +- .../request/linked/LinkedSetPacket.java | 3 +- .../java/noppes/npcs/PacketHandlerServer.java | 30 ++----------------- .../gui/advanced/GuiNPCAdvancedLinkedNpc.java | 21 +++++++------ .../gui/global/GuiNPCManageLinkedNpc.java | 10 +++++-- .../npcs/constants/EnumPacketServer.java | 6 ++-- 9 files changed, 53 insertions(+), 51 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/PacketClient.java diff --git a/src/main/java/kamkeel/npcs/network/PacketClient.java b/src/main/java/kamkeel/npcs/network/PacketClient.java new file mode 100644 index 000000000..45aa91e2b --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/PacketClient.java @@ -0,0 +1,8 @@ +package kamkeel.npcs.network; + +public class PacketClient extends PacketHandler { + + public static void sendClient(AbstractPacket packet){ + PacketHandler.Instance.sendToServer(packet); + } +} diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 7c62a1747..db8c9e776 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -14,6 +14,10 @@ import kamkeel.npcs.network.packets.data.gui.*; import kamkeel.npcs.network.packets.data.large.*; import kamkeel.npcs.network.packets.data.npc.*; import kamkeel.npcs.network.packets.data.script.*; +import kamkeel.npcs.network.packets.request.linked.LinkedAddPacket; +import kamkeel.npcs.network.packets.request.linked.LinkedGetAllPacket; +import kamkeel.npcs.network.packets.request.linked.LinkedRemovePacket; +import kamkeel.npcs.network.packets.request.linked.LinkedSetPacket; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -22,11 +26,12 @@ import noppes.npcs.CustomNpcs; import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.LogWriter; import noppes.npcs.NoppesUtilServer; +import noppes.npcs.config.ConfigMain; import noppes.npcs.entity.EntityNPCInterface; import java.util.*; -public final class PacketHandler { +public class PacketHandler { public static PacketHandler Instance; // Channels @@ -53,6 +58,14 @@ public final class PacketHandler { this.registerDataPackets(); } + public void registerRequestPackets(){ + // Linked Packets + REQUEST_PACKET.registerPacket(new LinkedGetAllPacket()); + REQUEST_PACKET.registerPacket(new LinkedRemovePacket()); + REQUEST_PACKET.registerPacket(new LinkedSetPacket()); + REQUEST_PACKET.registerPacket(new LinkedAddPacket()); + } + public void registerDataPackets(){ // Client Packets DATA_PACKET.registerPacket(new AchievementPacket()); @@ -159,6 +172,11 @@ public final class PacketHandler { } if(side == Side.SERVER){ + if(abstractPacket.getChannel() == REQUEST_PACKET && ConfigMain.OpsOnly && !NoppesUtilServer.isOp(player)){ + LogWriter.error(String.format("%s tried to use CNPC+ without being an op", player.getCommandSenderName())); + return; + } + // Check if permission is allowed if(abstractPacket.getPermission() != null && !CustomNpcsPermissions.hasPermission(player, abstractPacket.getPermission())){ return; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedGetAllPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedGetAllPacket.java index 279f572cf..9690f15de 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedGetAllPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedGetAllPacket.java @@ -22,8 +22,7 @@ import java.util.List; public final class LinkedGetAllPacket extends AbstractPacket { public static String packetName = "Request|LinkedGetAll"; - public LinkedGetAllPacket() { - } + public LinkedGetAllPacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedRemovePacket.java index b60bd3249..a30366cd8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedRemovePacket.java @@ -29,8 +29,7 @@ public final class LinkedRemovePacket extends AbstractPacket { this.data = data; } - public LinkedRemovePacket() { - } + public LinkedRemovePacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java index e2c664f56..6051e5a66 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java @@ -26,8 +26,7 @@ public final class LinkedSetPacket extends AbstractPacket { this.linkedName = linkedName; } - public LinkedSetPacket() { - } + public LinkedSetPacket() {} @Override public Enum getType() { diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 883e08735..ae6c70d31 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -68,13 +68,7 @@ public class PacketHandlerServer{ ItemStack item = player.inventory.getCurrentItem(); EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(type.needsNpc && npc == null){ - - } - else if(type.hasPermission() && !CustomNpcsPermissions.hasPermission(player, type.permission)){ - //player doesnt have permission to do this - } - else if(item == null && (type == EnumPacketServer.ScriptPlayerGet || type == EnumPacketServer.ScriptPlayerSave || type == EnumPacketServer.ScriptGlobalNPCGet || type == EnumPacketServer.ScriptGlobalNPCSave || type == EnumPacketServer.ScriptForgeGet || type == EnumPacketServer.ScriptForgeSave)) + if(item == null && (type == EnumPacketServer.ScriptPlayerGet || type == EnumPacketServer.ScriptPlayerSave || type == EnumPacketServer.ScriptGlobalNPCGet || type == EnumPacketServer.ScriptGlobalNPCSave || type == EnumPacketServer.ScriptForgeGet || type == EnumPacketServer.ScriptForgeSave)) warn(player, "tried to use custom npcs without a tool in hand, probably a hacker"); else { if (item != null) { @@ -455,27 +449,7 @@ public class PacketHandlerServer{ } private void wandPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws IOException{ - if(type == EnumPacketServer.LinkedRemove){ - LinkedNpcController.Instance.removeData(ByteBufUtils.readString(buffer)); - - List list = new ArrayList(); - for(LinkedData data : LinkedNpcController.Instance.list) - list.add(data.name); - ScrollListPacket.sendList((EntityPlayerMP)player, list); - } - else if(type == EnumPacketServer.LinkedGetAll){ - List list = new ArrayList(); - for(LinkedData data : LinkedNpcController.Instance.list) - list.add(data.name); - ScrollListPacket.sendList((EntityPlayerMP)player, list); - if(npc != null) - ScrollSelectedPacket.setSelectedList(player, npc.linkedName); - } - else if(type == EnumPacketServer.LinkedSet){ - npc.linkedName = ByteBufUtils.readString(buffer); - LinkedNpcController.Instance.loadNpcData(npc); - } - else if(type == EnumPacketServer.BanksGet){ + if(type == EnumPacketServer.BanksGet){ NoppesUtilServer.sendBankDataAll(player); } else if(type == EnumPacketServer.BankGet){ diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAdvancedLinkedNpc.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAdvancedLinkedNpc.java index e5faca9e9..f739440f1 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAdvancedLinkedNpc.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAdvancedLinkedNpc.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.advanced; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.linked.LinkedGetAllPacket; +import kamkeel.npcs.network.packets.request.linked.LinkedSetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import noppes.npcs.client.Client; @@ -15,21 +18,21 @@ import java.util.Vector; public class GuiNPCAdvancedLinkedNpc extends GuiNPCInterface2 implements IScrollData, ICustomScrollListener{ private GuiCustomScroll scroll; private List data = new ArrayList(); - + public static GuiScreen Instance; - + public GuiNPCAdvancedLinkedNpc(EntityNPCInterface npc){ super(npc); Instance = this; - Client.sendData(EnumPacketServer.LinkedGetAll); + PacketClient.sendClient(new LinkedGetAllPacket()); } @Override public void initGui(){ super.initGui(); - + this.addButton(new GuiNpcButton(1,guiLeft + 358, guiTop + 38, 58, 20, "gui.clear")); - + if(scroll == null){ scroll = new GuiCustomScroll(this,0); scroll.setSize(143, 208); @@ -44,9 +47,9 @@ public class GuiNPCAdvancedLinkedNpc extends GuiNPCInterface2 implements IScroll @Override public void buttonEvent(GuiButton button){ if(button.id == 1){ - Client.sendData(EnumPacketServer.LinkedSet, ""); + PacketClient.sendClient(new LinkedSetPacket("")); } - + } @Override @@ -62,13 +65,13 @@ public class GuiNPCAdvancedLinkedNpc extends GuiNPCInterface2 implements IScroll @Override public void save() { - + } @Override public void customScrollClicked(int i, int j, int k, GuiCustomScroll guiCustomScroll) { - Client.sendData(EnumPacketServer.LinkedSet, guiCustomScroll.getSelected()); + PacketClient.sendClient(new LinkedSetPacket(guiCustomScroll.getSelected())); } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinkedNpc.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinkedNpc.java index 165207e6e..90e5a4495 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinkedNpc.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinkedNpc.java @@ -1,5 +1,9 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.linked.LinkedAddPacket; +import kamkeel.npcs.network.packets.request.linked.LinkedGetAllPacket; +import kamkeel.npcs.network.packets.request.linked.LinkedRemovePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import noppes.npcs.client.Client; @@ -23,7 +27,7 @@ public class GuiNPCManageLinkedNpc extends GuiNPCInterface2 implements IScrollDa public GuiNPCManageLinkedNpc(EntityNPCInterface npc){ super(npc); Instance = this; - Client.sendData(EnumPacketServer.LinkedGetAll); + PacketClient.sendClient(new LinkedGetAllPacket()); } @Override @@ -79,7 +83,7 @@ public class GuiNPCManageLinkedNpc extends GuiNPCInterface2 implements IScrollDa } if(button.id == 2){ if(scroll.hasSelected()) - Client.sendData(EnumPacketServer.LinkedRemove, scroll.getSelected()); + PacketClient.sendClient(new LinkedRemovePacket(scroll.getSelected())); } } @@ -87,7 +91,7 @@ public class GuiNPCManageLinkedNpc extends GuiNPCInterface2 implements IScrollDa @Override public void subGuiClosed(SubGuiInterface subgui) { if(!((SubGuiEditText)subgui).cancelled){ - Client.sendData(EnumPacketServer.LinkedAdd, ((SubGuiEditText)subgui).text); + PacketClient.sendClient(new LinkedAddPacket(((SubGuiEditText)subgui).text)); } } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 1b0b44a7f..1f26dcfa1 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -1,6 +1,8 @@ package noppes.npcs.constants; +import net.minecraft.client.gui.Gui; import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.client.gui.custom.components.CustomGuiButton; public enum EnumPacketServer { NPCDelete(CustomNpcsPermissions.NPC_DELETE, true), @@ -33,7 +35,6 @@ public enum EnumPacketServer { RoleSave(CustomNpcsPermissions.NPC_ADVANCED, true), RoleGet(true), JobSpawnerAdd(CustomNpcsPermissions.NPC_ADVANCED, true), JobSpawnerRemove(CustomNpcsPermissions.NPC_ADVANCED, true), RoleCompanionUpdate(CustomNpcsPermissions.NPC_ADVANCED, true), - LinkedSet(CustomNpcsPermissions.NPC_ADVANCED, true), ClonePreSave(CustomNpcsPermissions.NPC_CLONE), CloneSave(CustomNpcsPermissions.NPC_CLONE), CloneRemove(CustomNpcsPermissions.NPC_CLONE), CloneList, CloneTagList, CloneAllTags, CloneAllTagsShort, @@ -55,9 +56,6 @@ public enum EnumPacketServer { ScriptBlockDataSave(CustomNpcsPermissions.SCRIPT_BLOCK, false), ScriptBlockDataGet(false), - LinkedGetAll, - LinkedRemove(CustomNpcsPermissions.GLOBAL_LINKED), LinkedAdd(CustomNpcsPermissions.GLOBAL_LINKED), - ScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), ScriptDataGet(true), EventScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), EventScriptDataGet(true), From f2c34699b1474a6814cecd7bc44927d0c2f8d675 Mon Sep 17 00:00:00 2001 From: Kam Date: Sat, 1 Feb 2025 23:43:06 -0500 Subject: [PATCH 061/157] Large Packet Commit --- .../kamkeel/npcs/network/PacketHandler.java | 76 +++++- .../{GuiPacket.java => GuiRequestPacket.java} | 7 +- .../request/bank/BankRemovePacket.java | 3 +- .../dialog/DialogCategoryGetPacket.java | 9 +- .../dialog/DialogCategoryRemovePacket.java | 7 +- .../request/dialog/DialogNpcGetPacket.java | 16 +- .../request/dialog/DialogNpcRemovePacket.java | 11 +- .../request/dialog/DialogRemovePacket.java | 21 +- .../request/linked/LinkedSetPacket.java | 1 + .../naturalspawns/NaturalSpawnGetPacket.java | 3 +- .../NaturalSpawnRemovePacket.java | 3 +- .../naturalspawns/NaturalSpawnSavePacket.java | 3 +- .../request/npc/RemoteDeletePacket.java | 3 +- .../request/npc/RemoteMainMenuPacket.java | 25 +- .../request/npc/RemoteResetPacket.java | 15 +- .../request/npc/RemoteTpToNpcPacket.java | 13 +- .../request/quest/QuestCategoryGetPacket.java | 16 +- .../quest/QuestCategoryRemovePacket.java | 11 +- .../quest/QuestCategorySavePacket.java | 8 +- .../quest/QuestDialogGetTitlePacket.java | 23 +- .../request/quest/QuestRemovePacket.java | 77 ++++++ .../request/quest/QuestSavePacket.java | 8 +- .../request/recipe/RecipeGetPacket.java | 3 +- .../request/recipe/RecipeSavePacket.java | 3 +- .../request/recipe/RecipesGetPacket.java | 3 +- .../java/noppes/npcs/PacketHandlerServer.java | 238 +----------------- .../java/noppes/npcs/client/NoppesUtil.java | 4 +- .../npcs/client/gui/GuiNpcDimension.java | 18 +- .../npcs/client/gui/GuiNpcRemoteEditor.java | 23 +- .../npcs/client/gui/SubGuiNpcDialog.java | 6 +- .../client/gui/SubGuiNpcDialogVisual.java | 4 +- .../npcs/client/gui/SubGuiNpcQuest.java | 6 +- .../gui/advanced/GuiNPCDialogNpcOptions.java | 10 +- .../client/gui/global/GuiNPCManageBanks.java | 69 ++--- .../gui/global/GuiNPCManageDialogs.java | 18 +- .../client/gui/global/GuiNPCManageQuest.java | 22 +- .../gui/global/GuiNpcManageRecipes.java | 15 +- .../gui/global/GuiNpcNaturalSpawns.java | 15 +- .../gui/questtypes/GuiNpcQuestTypeDialog.java | 12 +- .../client/gui/roles/GuiNpcBankSetup.java | 19 +- .../npcs/constants/EnumPacketServer.java | 31 +-- 41 files changed, 446 insertions(+), 432 deletions(-) rename src/main/java/kamkeel/npcs/network/packets/request/{GuiPacket.java => GuiRequestPacket.java} (91%) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/quest/QuestRemovePacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index db8c9e776..7ca73b7a6 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -8,16 +8,31 @@ import cpw.mods.fml.common.network.internal.FMLProxyPacket; import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.enums.EnumChannelType; -import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.network.packets.data.*; import kamkeel.npcs.network.packets.data.gui.*; import kamkeel.npcs.network.packets.data.large.*; import kamkeel.npcs.network.packets.data.npc.*; import kamkeel.npcs.network.packets.data.script.*; +import kamkeel.npcs.network.packets.request.GuiRequestPacket; +import kamkeel.npcs.network.packets.request.bank.BankGetPacket; +import kamkeel.npcs.network.packets.request.bank.BankRemovePacket; +import kamkeel.npcs.network.packets.request.bank.BankSavePacket; +import kamkeel.npcs.network.packets.request.bank.BanksGetPacket; +import kamkeel.npcs.network.packets.request.dialog.*; import kamkeel.npcs.network.packets.request.linked.LinkedAddPacket; import kamkeel.npcs.network.packets.request.linked.LinkedGetAllPacket; import kamkeel.npcs.network.packets.request.linked.LinkedRemovePacket; import kamkeel.npcs.network.packets.request.linked.LinkedSetPacket; +import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnGetAllPacket; +import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnGetPacket; +import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnRemovePacket; +import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnSavePacket; +import kamkeel.npcs.network.packets.request.npc.*; +import kamkeel.npcs.network.packets.request.quest.*; +import kamkeel.npcs.network.packets.request.recipe.RecipeGetPacket; +import kamkeel.npcs.network.packets.request.recipe.RecipeRemovePacket; +import kamkeel.npcs.network.packets.request.recipe.RecipeSavePacket; +import kamkeel.npcs.network.packets.request.recipe.RecipesGetPacket; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -56,6 +71,7 @@ public class PacketHandler { this.registerChannels(); this.registerDataPackets(); + this.registerRequestPackets(); } public void registerRequestPackets(){ @@ -64,6 +80,64 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new LinkedRemovePacket()); REQUEST_PACKET.registerPacket(new LinkedSetPacket()); REQUEST_PACKET.registerPacket(new LinkedAddPacket()); + + // Bank Packets + REQUEST_PACKET.registerPacket(new BanksGetPacket()); + REQUEST_PACKET.registerPacket(new BankGetPacket()); + REQUEST_PACKET.registerPacket(new BankRemovePacket()); + REQUEST_PACKET.registerPacket(new BankSavePacket()); + + // Recipe Packets + REQUEST_PACKET.registerPacket(new RecipesGetPacket()); + REQUEST_PACKET.registerPacket(new RecipeGetPacket()); + REQUEST_PACKET.registerPacket(new RecipeRemovePacket()); + REQUEST_PACKET.registerPacket(new RecipeSavePacket()); + + // Natural Spawn Packets + REQUEST_PACKET.registerPacket(new NaturalSpawnGetAllPacket()); + REQUEST_PACKET.registerPacket(new NaturalSpawnGetPacket()); + REQUEST_PACKET.registerPacket(new NaturalSpawnSavePacket()); + REQUEST_PACKET.registerPacket(new NaturalSpawnRemovePacket()); + + // Dialog Category Packets + REQUEST_PACKET.registerPacket(new DialogCategorySavePacket()); + REQUEST_PACKET.registerPacket(new DialogCategoryRemovePacket()); + REQUEST_PACKET.registerPacket(new DialogCategoryGetPacket()); + + // Dialog Packets + REQUEST_PACKET.registerPacket(new DialogSavePacket()); + REQUEST_PACKET.registerPacket(new DialogRemovePacket()); + + REQUEST_PACKET.registerPacket(new DialogNpcGetPacket()); + REQUEST_PACKET.registerPacket(new DialogNpcSetPacket()); + REQUEST_PACKET.registerPacket(new DialogNpcRemovePacket()); + + // Quest Category Packets + REQUEST_PACKET.registerPacket(new QuestCategorySavePacket()); + REQUEST_PACKET.registerPacket(new QuestCategoryRemovePacket()); + REQUEST_PACKET.registerPacket(new QuestCategoryGetPacket()); + + // Quest Packets + REQUEST_PACKET.registerPacket(new QuestSavePacket()); + REQUEST_PACKET.registerPacket(new QuestRemovePacket()); + REQUEST_PACKET.registerPacket(new QuestDialogGetTitlePacket()); + + // Remote Packets + REQUEST_PACKET.registerPacket(new RemoteMainMenuPacket()); + REQUEST_PACKET.registerPacket(new RemoteGlobalMenuPacket()); + REQUEST_PACKET.registerPacket(new RemoteDeletePacket()); + REQUEST_PACKET.registerPacket(new RemoteNpcsGetPacket()); + REQUEST_PACKET.registerPacket(new RemoteFreezeGetPacket()); + REQUEST_PACKET.registerPacket(new RemoteFreezePacket()); + REQUEST_PACKET.registerPacket(new RemoteResetPacket()); + REQUEST_PACKET.registerPacket(new RemoteTpToNpcPacket()); + + + + // + + // Other + REQUEST_PACKET.registerPacket(new GuiRequestPacket()); } public void registerDataPackets(){ diff --git a/src/main/java/kamkeel/npcs/network/packets/request/GuiPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java similarity index 91% rename from src/main/java/kamkeel/npcs/network/packets/request/GuiPacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java index a1e7369f0..27081330f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/GuiPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java @@ -16,20 +16,19 @@ import noppes.npcs.constants.EnumGuiType; import java.io.IOException; -public final class GuiPacket extends AbstractPacket { +public final class GuiRequestPacket extends AbstractPacket { public static String packetName = "Request|Gui"; private int guiIndex, posX, posY, posZ; - public GuiPacket(int guiIndex, int posX, int posY, int posZ) { + public GuiRequestPacket(int guiIndex, int posX, int posY, int posZ) { this.guiIndex = guiIndex; this.posX = posX; this.posY = posY; this.posZ = posZ; } - public GuiPacket() { - } + public GuiRequestPacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/bank/BankRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/bank/BankRemovePacket.java index fb21141de..ae34978f2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/bank/BankRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/bank/BankRemovePacket.java @@ -27,8 +27,7 @@ public final class BankRemovePacket extends AbstractPacket { this.bankId = bankId; } - public BankRemovePacket() { - } + public BankRemovePacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryGetPacket.java index edfa2b989..0cf33b8dd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryGetPacket.java @@ -21,7 +21,12 @@ import java.io.IOException; public final class DialogCategoryGetPacket extends AbstractPacket { public static String packetName = "Request|DialogCategoryGet"; - public DialogCategoryGetPacket() { + private int categoryID; + + public DialogCategoryGetPacket() {} + + public DialogCategoryGetPacket(int categoryID) { + this.categoryID = categoryID; } @Override @@ -34,10 +39,10 @@ public final class DialogCategoryGetPacket extends AbstractPacket { return PacketHandler.REQUEST_PACKET; } - // No permission override @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.categoryID); } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryRemovePacket.java index 1861411c8..47986f566 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoryRemovePacket.java @@ -52,8 +52,11 @@ public final class DialogCategoryRemovePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; int id = in.readInt(); DialogController.Instance.removeCategory(id); ScrollDataPacket.sendScrollData((EntityPlayerMP) player, DialogController.Instance.getScroll()); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcGetPacket.java index 35eebf0c7..ef2dcbf8b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcGetPacket.java @@ -18,8 +18,7 @@ import java.io.IOException; public final class DialogNpcGetPacket extends AbstractPacket { public static String packetName = "Request|DialogNpcGet"; - public DialogNpcGetPacket() { - } + public DialogNpcGetPacket() {} @Override public Enum getType() { @@ -31,17 +30,18 @@ public final class DialogNpcGetPacket extends AbstractPacket { return PacketHandler.REQUEST_PACKET; } - // No permission override @SideOnly(Side.CLIENT) - @Override - public void sendData(ByteBuf out) throws IOException { - } + public void sendData(ByteBuf out) throws IOException {} @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NoppesUtilServer.sendNpcDialogs(player); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcRemovePacket.java index 71698ffae..cf482b5fc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogNpcRemovePacket.java @@ -24,8 +24,7 @@ public final class DialogNpcRemovePacket extends AbstractPacket { this.index = index; } - public DialogNpcRemovePacket() { - } + public DialogNpcRemovePacket() {} @Override public Enum getType() { @@ -55,8 +54,12 @@ public final class DialogNpcRemovePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int idx = in.readInt(); npc.dialogs.remove(idx); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogRemovePacket.java index 1f62d8304..b0de2dc0a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogRemovePacket.java @@ -56,17 +56,20 @@ public final class DialogRemovePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; - int id = in.readInt(); + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int diagId = in.readInt(); boolean sendGroup = in.readBoolean(); - Dialog dialog = DialogController.Instance.dialogs.get(id); - if (dialog != null && dialog.category != null) { + Dialog dialog = DialogController.Instance.dialogs.get(diagId); + if(dialog != null && dialog.category != null){ DialogController.Instance.removeDialog(dialog); - if (sendGroup) { - NoppesUtilServer.sendDialogGroup((EntityPlayerMP) player, dialog.category); - } else { - NoppesUtilServer.sendDialogData((EntityPlayerMP) player, dialog.category); + if(sendGroup){ + NoppesUtilServer.sendDialogGroup((EntityPlayerMP) player,dialog.category); + } + else { + NoppesUtilServer.sendDialogData((EntityPlayerMP) player,dialog.category); } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java index 6051e5a66..ffdb49dc9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/linked/LinkedSetPacket.java @@ -60,6 +60,7 @@ public final class LinkedSetPacket extends AbstractPacket { return; if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + npc.linkedName = ByteBufUtils.readString(in); LinkedNpcController.Instance.loadNpcData(npc); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetPacket.java index 7294874f6..d49f6448e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnGetPacket.java @@ -27,8 +27,7 @@ public final class NaturalSpawnGetPacket extends AbstractPacket { this.spawnId = spawnId; } - public NaturalSpawnGetPacket() { - } + public NaturalSpawnGetPacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnRemovePacket.java index 03e71a7a5..56116b24d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnRemovePacket.java @@ -26,8 +26,7 @@ public final class NaturalSpawnRemovePacket extends AbstractPacket { this.spawnId = spawnId; } - public NaturalSpawnRemovePacket() { - } + public NaturalSpawnRemovePacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnSavePacket.java index c9ab359a5..92521afef 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/naturalspawns/NaturalSpawnSavePacket.java @@ -29,8 +29,7 @@ public final class NaturalSpawnSavePacket extends AbstractPacket { this.spawnNBT = spawnNBT; } - public NaturalSpawnSavePacket() { - } + public NaturalSpawnSavePacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java index da20d663f..b07295013 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java @@ -30,8 +30,7 @@ public final class RemoteDeletePacket extends AbstractPacket { this.entityId = entityId; } - public RemoteDeletePacket() { - } + public RemoteDeletePacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java index cedf13d76..973f1dfb9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java @@ -10,6 +10,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.CustomNpcsPermissions; @@ -17,13 +18,19 @@ import noppes.npcs.LogWriter; import noppes.npcs.NoppesUtilServer; import noppes.npcs.config.ConfigDebug; import noppes.npcs.constants.EnumGuiType; +import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class RemoteMainMenuPacket extends AbstractPacket { public static String packetName = "Request|RemoteMainMenu"; - public RemoteMainMenuPacket() { + private int entityID; + + public RemoteMainMenuPacket() {} + + public RemoteMainMenuPacket(int entityID) { + this.entityID = entityID; } @Override @@ -49,7 +56,7 @@ public final class RemoteMainMenuPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { - // No extra data since npc is provided externally. + out.writeInt(this.entityID); } @Override @@ -58,12 +65,14 @@ public final class RemoteMainMenuPacket extends AbstractPacket { return; if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; - NoppesUtilServer.sendOpenGui(player, EnumGuiType.MainMenuDisplay, npc); - if (ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { - LogWriter.script(String.format("[%s] (Player) %s OPEN NPC %s (%s, %s, %s) [%s]", - "WAND", player.getCommandSenderName(), npc.display.getName(), - (int) npc.posX, (int) npc.posY, (int) npc.posZ, - npc.worldObj.getWorldInfo().getWorldName())); + + Entity entity = player.worldObj.getEntityByID(in.readInt()); + if(!(entity instanceof EntityNPCInterface)) + return; + + NoppesUtilServer.sendOpenGui(player, EnumGuiType.MainMenuDisplay, (EntityNPCInterface) entity); + if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ + LogWriter.script(String.format("[%s] (Player) %s OPEN NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), ((EntityNPCInterface)entity).display.getName(), entity.posX, entity.posY, entity.posZ, entity.worldObj.getWorldInfo().getWorldName())); } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java index 3667f1526..b42dd51d2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java @@ -9,16 +9,23 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class RemoteResetPacket extends AbstractPacket { public static String packetName = "Request|RemoteReset"; - public RemoteResetPacket() { + private int entityID; + + public RemoteResetPacket() {} + + public RemoteResetPacket(int entityID) { + this.entityID = entityID; } @Override @@ -44,6 +51,7 @@ public final class RemoteResetPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.entityID); } @Override @@ -52,6 +60,11 @@ public final class RemoteResetPacket extends AbstractPacket { return; if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + + Entity entity = player.worldObj.getEntityByID(in.readInt()); + if(!(entity instanceof EntityNPCInterface)) + return; + npc = (EntityNPCInterface) entity; npc.reset(); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java index af8577e98..45e0d1a30 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java @@ -9,16 +9,22 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public final class RemoteTpToNpcPacket extends AbstractPacket { public static String packetName = "Request|RemoteTpToNpc"; - public RemoteTpToNpcPacket() { + private int entityID; + public RemoteTpToNpcPacket() {} + + public RemoteTpToNpcPacket(int entityID) { + this.entityID = entityID; } @Override @@ -44,6 +50,7 @@ public final class RemoteTpToNpcPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.entityID); } @Override @@ -52,6 +59,10 @@ public final class RemoteTpToNpcPacket extends AbstractPacket { return; if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + Entity entity = player.worldObj.getEntityByID(in.readInt()); + if(!(entity instanceof EntityNPCInterface)) + return; + npc = (EntityNPCInterface) entity; ((EntityPlayerMP) player).playerNetServerHandler.setPlayerLocation(npc.posX, npc.posY, npc.posZ, 0, 0); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryGetPacket.java index ff63a5fe0..946fd8554 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryGetPacket.java @@ -21,7 +21,12 @@ import java.io.IOException; public final class QuestCategoryGetPacket extends AbstractPacket { public static String packetName = "Request|QuestCategoryGet"; - public QuestCategoryGetPacket() { + private int categoryID; + + public QuestCategoryGetPacket() {} + + public QuestCategoryGetPacket(int categoryID) { + this.categoryID = categoryID; } @Override @@ -37,12 +42,17 @@ public final class QuestCategoryGetPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.categoryID); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); QuestCategory category = QuestController.Instance.categories.get(id); if (category != null) { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryRemovePacket.java index 4961b3788..2e41d8bfe 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoryRemovePacket.java @@ -26,8 +26,7 @@ public final class QuestCategoryRemovePacket extends AbstractPacket { this.categoryId = categoryId; } - public QuestCategoryRemovePacket() { - } + public QuestCategoryRemovePacket() {} @Override public Enum getType() { @@ -52,8 +51,12 @@ public final class QuestCategoryRemovePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); QuestController.Instance.removeCategory(id); NoppesUtilServer.sendQuestCategoryData((EntityPlayerMP) player); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategorySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategorySavePacket.java index b1a94cef1..76695d132 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategorySavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategorySavePacket.java @@ -55,8 +55,12 @@ public final class QuestCategorySavePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NBTTagCompound compound = ByteBufUtils.readNBT(in); QuestCategory category = new QuestCategory(); category.readNBT(compound); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestDialogGetTitlePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestDialogGetTitlePacket.java index 36b71825d..251db49dd 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestDialogGetTitlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestDialogGetTitlePacket.java @@ -22,7 +22,16 @@ import java.io.IOException; public final class QuestDialogGetTitlePacket extends AbstractPacket { public static String packetName = "Request|QuestDialogGetTitle"; - public QuestDialogGetTitlePacket() { + private int dialogOne; + private int dialogTwo; + private int dialogThree; + + public QuestDialogGetTitlePacket() {} + + public QuestDialogGetTitlePacket(int dialogOne, int dialogTwo, int dialogThree) { + this.dialogOne = dialogOne; + this.dialogTwo = dialogTwo; + this.dialogThree = dialogThree; } @Override @@ -43,12 +52,19 @@ public final class QuestDialogGetTitlePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { + out.writeInt(dialogOne); + out.writeInt(dialogTwo); + out.writeInt(dialogThree); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + Dialog quest = DialogController.Instance.dialogs.get(in.readInt()); Dialog quest2 = DialogController.Instance.dialogs.get(in.readInt()); Dialog quest3 = DialogController.Instance.dialogs.get(in.readInt()); @@ -59,6 +75,7 @@ public final class QuestDialogGetTitlePacket extends AbstractPacket { compound.setString("2", quest2.title); if (quest3 != null) compound.setString("3", quest3.title); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestRemovePacket.java new file mode 100644 index 000000000..55ca84f39 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestRemovePacket.java @@ -0,0 +1,77 @@ +package kamkeel.npcs.network.packets.request.quest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.data.Dialog; +import noppes.npcs.controllers.data.Quest; + +import java.io.IOException; + +public final class QuestRemovePacket extends AbstractPacket { + public static String packetName = "Request|DialogRemove"; + + private int questID; + private boolean sendGroup; + + public QuestRemovePacket(int questID, boolean sendGroup) { + this.questID = questID; + this.sendGroup = sendGroup; + } + + public QuestRemovePacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.QuestRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.GLOBAL_DIALOG; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(questID); + out.writeBoolean(sendGroup); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + Quest quest = QuestController.Instance.quests.get(in.readInt()); + boolean sendGroup = in.readBoolean(); + if(quest != null){ + QuestController.Instance.removeQuest(quest); + if(sendGroup){ + NoppesUtilServer.sendQuestGroup((EntityPlayerMP) player,quest.category); + } + else { + NoppesUtilServer.sendQuestData((EntityPlayerMP) player,quest.category); + } + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestSavePacket.java index aa699e873..7a5f6f65e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestSavePacket.java @@ -61,8 +61,12 @@ public final class QuestSavePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int cat = in.readInt(); NBTTagCompound compound = ByteBufUtils.readNBT(in); boolean sendGroup = in.readBoolean(); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java index 643399c76..16f52b62b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java @@ -26,8 +26,7 @@ public final class RecipeGetPacket extends AbstractPacket { this.recipeId = recipeId; } - public RecipeGetPacket() { - } + public RecipeGetPacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java index e4e5e4fa8..5e5719810 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java @@ -29,8 +29,7 @@ public final class RecipeSavePacket extends AbstractPacket { this.recipeNBT = recipeNBT; } - public RecipeSavePacket() { - } + public RecipeSavePacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipesGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipesGetPacket.java index cf148693d..c63ed66c2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipesGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipesGetPacket.java @@ -24,8 +24,7 @@ public final class RecipesGetPacket extends AbstractPacket { this.categoryId = categoryId; } - public RecipesGetPacket() { - } + public RecipesGetPacket() {} @Override public Enum getType() { diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index ae6c70d31..a6f9f18f4 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -449,249 +449,13 @@ public class PacketHandlerServer{ } private void wandPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws IOException{ - if(type == EnumPacketServer.BanksGet){ - NoppesUtilServer.sendBankDataAll(player); - } - else if(type == EnumPacketServer.BankGet){ - Bank bank = BankController.getInstance().getBank(buffer.readInt()); - NoppesUtilServer.sendBank(player,bank); - } - else if(type == EnumPacketServer.BankSave){ - Bank bank = new Bank(); - bank.readEntityFromNBT(ByteBufUtils.readNBT(buffer)); - BankController.getInstance().saveBank(bank); - NoppesUtilServer.sendBankDataAll(player); - NoppesUtilServer.sendBank(player,bank); - } - else if(type == EnumPacketServer.BankRemove){ - BankController.getInstance().removeBank(buffer.readInt()); - NoppesUtilServer.sendBankDataAll(player); - NoppesUtilServer.sendBank(player,new Bank()); - } - else if(type == EnumPacketServer.RemoteMainMenu){ - Entity entity = player.worldObj.getEntityByID(buffer.readInt()); - if(entity == null || !(entity instanceof EntityNPCInterface)) - return; - NoppesUtilServer.sendOpenGui(player, EnumGuiType.MainMenuDisplay, (EntityNPCInterface) entity); - if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ - LogWriter.script(String.format("[%s] (Player) %s OPEN NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), ((EntityNPCInterface)entity).display.getName(), entity.posX, entity.posY, entity.posZ, entity.worldObj.getWorldInfo().getWorldName())); - } - } - else if(type == EnumPacketServer.RemoteGlobalMenu){ - NoppesUtilServer.sendOpenGui(player, EnumGuiType.GlobalRemote, null); - if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ - LogWriter.script(String.format("[%s] (Player) %s OPEN GLOBAL MENU", "WAND", player.getCommandSenderName())); - } - } - else if(type == EnumPacketServer.RemoteDelete){ - Entity entity = player.worldObj.getEntityByID(buffer.readInt()); - if(entity == null || !(entity instanceof EntityNPCInterface)) - return; - npc = (EntityNPCInterface) entity; - if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ - LogWriter.script(String.format("[%s] (Player) %s DELETE NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), npc.display.getName(), (int)npc.posX, (int)npc.posY, (int)npc.posZ, npc.worldObj.getWorldInfo().getWorldName())); - } - npc.delete(); - NoppesUtilServer.deleteNpc(npc,player); - NoppesUtilServer.sendNearbyNpcs(player); - } - else if(type == EnumPacketServer.RemoteNpcsGet){ - NoppesUtilServer.sendNearbyNpcs(player); - } - else if(type == EnumPacketServer.RemoteFreeze){ - CustomNpcs.FreezeNPCs = !CustomNpcs.FreezeNPCs; - ScrollSelectedPacket.setSelectedList(player, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); - } - else if(type == EnumPacketServer.RemoteFreezeGet){ - ScrollSelectedPacket.setSelectedList(player, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); - } - else if(type == EnumPacketServer.RemoteReset){ - Entity entity = player.worldObj.getEntityByID(buffer.readInt()); - if(entity == null || !(entity instanceof EntityNPCInterface)) - return; - npc = (EntityNPCInterface) entity; - npc.reset(); - } - else if(type == EnumPacketServer.RemoteTpToNpc){ - Entity entity = player.worldObj.getEntityByID(buffer.readInt()); - if(entity == null || !(entity instanceof EntityNPCInterface)) - return; - npc = (EntityNPCInterface) entity; - player.playerNetServerHandler.setPlayerLocation(npc.posX, npc.posY, npc.posZ, 0, 0); - } - else if(type == EnumPacketServer.Gui){ - EnumGuiType gui = EnumGuiType.values()[buffer.readInt()]; - int i = buffer.readInt(); - int j = buffer.readInt(); - int k = buffer.readInt(); - NoppesUtilServer.sendOpenGui(player, gui, npc, i, j, k); - } - else if(type == EnumPacketServer.RecipesGet){ - NoppesUtilServer.sendRecipeData(player,buffer.readInt()); - } - else if(type == EnumPacketServer.RecipeGet){ - RecipeCarpentry recipe = RecipeController.Instance.getRecipe(buffer.readInt()); - NoppesUtilServer.setRecipeGui(player,recipe); - } - else if(type == EnumPacketServer.RecipeRemove){ - RecipeCarpentry recipe = RecipeController.Instance.delete(buffer.readInt()); - NoppesUtilServer.sendRecipeData(player, recipe.isGlobal?3:4); - NoppesUtilServer.setRecipeGui(player,new RecipeCarpentry("")); - } - else if(type == EnumPacketServer.RecipeSave){ - RecipeCarpentry recipe = RecipeController.Instance.saveRecipe(ByteBufUtils.readNBT(buffer)); - NoppesUtilServer.sendRecipeData(player, recipe.isGlobal?3:4); - NoppesUtilServer.setRecipeGui(player,recipe); - } - else if(type == EnumPacketServer.NaturalSpawnGetAll){ - ScrollDataPacket.sendScrollData(player, SpawnController.Instance.getScroll()); - } - else if(type == EnumPacketServer.NaturalSpawnGet){ - SpawnData spawn = SpawnController.Instance.getSpawnData(buffer.readInt()); - if(spawn != null){ - GuiDataPacket.sendGuiData(player, spawn.writeNBT(new NBTTagCompound())); - } - } - else if(type == EnumPacketServer.NaturalSpawnSave){ - SpawnData data = new SpawnData(); - data.readNBT(ByteBufUtils.readNBT(buffer)); - SpawnController.Instance.saveSpawnData(data); - - ScrollDataPacket.sendScrollData(player, SpawnController.Instance.getScroll()); - } - else if(type == EnumPacketServer.NaturalSpawnRemove){ - SpawnController.Instance.removeSpawnData(buffer.readInt()); - ScrollDataPacket.sendScrollData(player, SpawnController.Instance.getScroll()); - } - else if(type == EnumPacketServer.DialogCategorySave){ - DialogCategory category = new DialogCategory(); - category.readNBT(ByteBufUtils.readNBT(buffer)); - DialogController.Instance.saveCategory(category); - ScrollDataPacket.sendScrollData(player, DialogController.Instance.getScroll()); - } - else if(type == EnumPacketServer.DialogCategoryRemove){ - DialogController.Instance.removeCategory(buffer.readInt()); - ScrollDataPacket.sendScrollData(player, DialogController.Instance.getScroll()); - } - else if(type == EnumPacketServer.DialogCategoryGet){ - DialogCategory category = DialogController.Instance.categories.get(buffer.readInt()); - if(category != null){ - NBTTagCompound comp = category.writeNBT(new NBTTagCompound()); - comp.removeTag("Dialogs"); - GuiDataPacket.sendGuiData(player, comp); - } - } - else if(type == EnumPacketServer.DialogSave){ - int category = buffer.readInt(); - Dialog dialog = new Dialog(); - dialog.readNBT(ByteBufUtils.readNBT(buffer)); - boolean sendGroup = buffer.readBoolean(); - DialogController.Instance.saveDialog(category,dialog); - if(dialog.category != null){ - if(sendGroup){ - NoppesUtilServer.sendDialogGroup(player,dialog.category); - } - else { - NoppesUtilServer.sendDialogData(player,dialog.category); - } - } - } - else if(type == EnumPacketServer.QuestOpenGui){ + if(type == EnumPacketServer.QuestOpenGui){ Quest quest = new Quest(); int gui = buffer.readInt(); quest.readNBT(ByteBufUtils.readNBT(buffer)); NoppesUtilServer.setEditingQuest(player,quest); player.openGui(CustomNpcs.instance, gui , player.worldObj, 0, 0, 0); } - else if(type == EnumPacketServer.DialogRemove){ - int diagId = buffer.readInt(); - boolean sendGroup = buffer.readBoolean(); - Dialog dialog = DialogController.Instance.dialogs.get(diagId); - if(dialog != null && dialog.category != null){ - DialogController.Instance.removeDialog(dialog); - if(sendGroup){ - NoppesUtilServer.sendDialogGroup(player,dialog.category); - } - else { - NoppesUtilServer.sendDialogData(player,dialog.category); - } - } - } - else if(type == EnumPacketServer.DialogNpcGet){ - NoppesUtilServer.sendNpcDialogs(player); - } - else if(type == EnumPacketServer.DialogNpcSet){ - int slot = buffer.readInt(); - int dialog = buffer.readInt(); - DialogOption option = NoppesUtilServer.setNpcDialog(slot,dialog,player); - if(option != null && option.hasDialog()){ - NBTTagCompound compound = option.writeNBT(); - compound.setInteger("Position", slot); - GuiDataPacket.sendGuiData(player, compound); - } - } - else if(type == EnumPacketServer.DialogNpcRemove){ - npc.dialogs.remove(buffer.readInt()); - } - else if(type == EnumPacketServer.QuestCategoryGet){ - QuestCategory category = QuestController.Instance.categories.get(buffer.readInt()); - if(category != null){ - NBTTagCompound comp = category.writeNBT(new NBTTagCompound()); - comp.removeTag("Dialogs"); - GuiDataPacket.sendGuiData(player, comp); - } - } - else if(type == EnumPacketServer.QuestCategorySave){ - QuestCategory category = new QuestCategory(); - category.readNBT(ByteBufUtils.readNBT(buffer)); - QuestController.Instance.saveCategory(category); - NoppesUtilServer.sendQuestCategoryData(player); - } - else if(type == EnumPacketServer.QuestCategoryRemove){ - QuestController.Instance.removeCategory(buffer.readInt()); - NoppesUtilServer.sendQuestCategoryData(player); - } - else if(type == EnumPacketServer.QuestSave){ - int category = buffer.readInt(); - Quest quest = new Quest(); - quest.readNBT(ByteBufUtils.readNBT(buffer)); - boolean sendGroup = buffer.readBoolean(); - QuestController.Instance.saveQuest(category, quest); - if(quest.category != null){ - if(sendGroup){ - NoppesUtilServer.sendQuestGroup(player, quest.category); - } - else { - NoppesUtilServer.sendQuestData(player, quest.category); - } - } - } - else if(type == EnumPacketServer.QuestDialogGetTitle){ - Dialog quest = DialogController.Instance.dialogs.get(buffer.readInt()); - Dialog quest2 = DialogController.Instance.dialogs.get(buffer.readInt()); - Dialog quest3 = DialogController.Instance.dialogs.get(buffer.readInt()); - NBTTagCompound compound = new NBTTagCompound(); - if(quest != null) - compound.setString("1", quest.title); - if(quest2 != null) - compound.setString("2", quest2.title); - if(quest3 != null) - compound.setString("3", quest3.title); - GuiDataPacket.sendGuiData(player, compound); - } - else if(type == EnumPacketServer.QuestRemove){ - Quest quest = QuestController.Instance.quests.get(buffer.readInt()); - boolean sendGroup = buffer.readBoolean(); - if(quest != null){ - QuestController.Instance.removeQuest(quest); - if(sendGroup){ - NoppesUtilServer.sendQuestGroup(player,quest.category); - } - else { - NoppesUtilServer.sendQuestData(player,quest.category); - } - } - } else if(type == EnumPacketServer.TransportCategoriesGet){ NoppesUtilServer.sendTransportCategoryData(player); } diff --git a/src/main/java/noppes/npcs/client/NoppesUtil.java b/src/main/java/noppes/npcs/client/NoppesUtil.java index 156d8b97d..50a23f2e8 100644 --- a/src/main/java/noppes/npcs/client/NoppesUtil.java +++ b/src/main/java/noppes/npcs/client/NoppesUtil.java @@ -1,6 +1,8 @@ package noppes.npcs.client; import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.GuiRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -39,7 +41,7 @@ public class NoppesUtil { } public static void requestOpenGUI(EnumGuiType gui, int i, int j, int k) { - Client.sendData(EnumPacketServer.Gui, gui.ordinal(), i, j, k); + PacketClient.sendClient(new GuiRequestPacket(gui.ordinal(), i, j, k)); } public static void updateSkinOverlayData(EntityPlayer player, NBTTagCompound compound) { diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java b/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java index 8f8c463b7..738939893 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.npc.RemoteDeletePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.StatCollector; import noppes.npcs.client.Client; @@ -11,7 +13,7 @@ import java.util.HashMap; import java.util.Vector; public class GuiNpcDimension extends GuiNPCInterface implements IScrollData{ - + private GuiCustomScroll scroll; private HashMap data = new HashMap(); public GuiNpcDimension() { @@ -30,10 +32,10 @@ public class GuiNpcDimension extends GuiNPCInterface implements IScrollData{ scroll.guiLeft = guiLeft + 4; scroll.guiTop = guiTop + 4; addScroll(scroll); - + String title = StatCollector.translateToLocal("Dimensions"); int x = (xSize - this.fontRendererObj.getStringWidth(title)) / 2; - + this.addLabel(new GuiNpcLabel(0, title, guiLeft + x, guiTop - 8)); this.addButton(new GuiNpcButton(4, guiLeft + 170, guiTop + 72,82,20, "remote.tp")); @@ -43,23 +45,23 @@ public class GuiNpcDimension extends GuiNPCInterface implements IScrollData{ public void confirmClicked(boolean flag, int i) { if(flag){ - Client.sendData(EnumPacketServer.RemoteDelete,data.get(scroll.getSelected())); + PacketClient.sendClient(new RemoteDeletePacket(data.get(scroll.getSelected()))); } NoppesUtil.openGUI(player, this); } protected void actionPerformed(GuiButton guibutton) { int id = guibutton.id; - + if(!data.containsKey(scroll.getSelected())) return; - + if(id == 4){ Client.sendData(EnumPacketServer.DimensionTeleport, data.get(scroll.getSelected())); close(); } } - + @Override public void mouseClicked(int i, int j, int k) { @@ -77,7 +79,7 @@ public class GuiNpcDimension extends GuiNPCInterface implements IScrollData{ @Override public void save() { // TODO Auto-generated method stub - + } @Override public void setData(Vector list, HashMap data) { diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java b/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java index e466b0ea4..d4d745d01 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.npc.*; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; @@ -22,8 +24,8 @@ public class GuiNpcRemoteEditor extends GuiNPCInterface implements IScrollData, super(); xSize = 256; setBackground("menubg.png"); - Client.sendData(EnumPacketServer.RemoteNpcsGet); - Client.sendData(EnumPacketServer.RemoteFreezeGet); + PacketClient.sendClient(new RemoteNpcsGetPacket()); + PacketClient.sendClient(new RemoteFreezeGetPacket()); } public void initGui() { @@ -53,7 +55,7 @@ public class GuiNpcRemoteEditor extends GuiNPCInterface implements IScrollData, @Override public void confirmClicked(boolean flag, int i){ if(flag){ - Client.sendData(EnumPacketServer.RemoteDelete,data.get(scroll.getSelected())); + PacketClient.sendClient(new RemoteDeletePacket(data.get(scroll.getSelected()))); } NoppesUtil.openGUI(player, this); } @@ -61,11 +63,11 @@ public class GuiNpcRemoteEditor extends GuiNPCInterface implements IScrollData, { int id = guibutton.id; if(id == 3){ - Client.sendData(EnumPacketServer.RemoteFreeze); + PacketClient.sendClient(new RemoteFreezePacket()); } if(id == 5){ for(int ids : data.values()){ - Client.sendData(EnumPacketServer.RemoteReset, ids); + PacketClient.sendClient(new RemoteResetPacket(ids)); Entity entity = player.worldObj.getEntityByID(ids); if(entity != null && entity instanceof EntityNPCInterface) ((EntityNPCInterface)entity).reset(); @@ -73,27 +75,28 @@ public class GuiNpcRemoteEditor extends GuiNPCInterface implements IScrollData, } if(id == 6){ NoppesUtil.setLastNpc(null); - Client.sendData(EnumPacketServer.RemoteGlobalMenu); + PacketClient.sendClient(new RemoteGlobalMenuPacket()); } if(!data.containsKey(scroll.getSelected())) return; if(id == 0){ - Client.sendData(EnumPacketServer.RemoteMainMenu,data.get(scroll.getSelected())); + PacketClient.sendClient(new RemoteMainMenuPacket(data.get(scroll.getSelected()))); } if(id == 1){ GuiYesNo guiyesno = new GuiYesNo(this, "Confirm", StatCollector.translateToLocal("gui.delete"), 0); displayGuiScreen(guiyesno); } if(id == 2){ - Client.sendData(EnumPacketServer.RemoteReset,data.get(scroll.getSelected())); - Entity entity = player.worldObj.getEntityByID(data.get(scroll.getSelected())); + int selected = data.get(scroll.getSelected()); + PacketClient.sendClient(new RemoteResetPacket(selected)); + Entity entity = player.worldObj.getEntityByID(selected); if(entity != null && entity instanceof EntityNPCInterface) ((EntityNPCInterface)entity).reset(); } if(id == 4){ - Client.sendData(EnumPacketServer.RemoteTpToNpc,data.get(scroll.getSelected())); + PacketClient.sendClient(new RemoteTpToNpcPacket(data.get(scroll.getSelected()))); close(); } } diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialog.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialog.java index e98aaf32a..f82206cd4 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialog.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialog.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.dialog.DialogSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -196,10 +198,10 @@ public class SubGuiNpcDialog extends SubGuiInterface implements ISubGuiListener, dialog.quest = ob; parent.dialogQuestName = name; initGui(); - Client.sendData(EnumPacketServer.DialogSave, this.dialogCategoryID, dialog.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new DialogSavePacket(this.dialogCategoryID, dialog.writeToNBT(new NBTTagCompound()), false)); } public void save(){ - Client.sendData(EnumPacketServer.DialogSave, this.dialogCategoryID, dialog.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new DialogSavePacket(this.dialogCategoryID, dialog.writeToNBT(new NBTTagCompound()), false)); } } diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java index e1d3efb15..e81d28309 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.dialog.DialogSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -419,7 +421,7 @@ public class SubGuiNpcDialogVisual extends SubGuiInterface implements ISubGuiLis public void save() { GuiNpcTextField.unfocus(); if(dialog.id >= 0) - Client.sendData(EnumPacketServer.DialogSave, ((SubGuiNpcDialog)parent).dialogCategoryID, dialog.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new DialogSavePacket(((SubGuiNpcDialog)parent).dialogCategoryID, dialog.writeToNBT(new NBTTagCompound()), false)); } private DialogImage getSelectedImage() { diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java index e1c32be0f..33c3e0b09 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.quest.QuestSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -218,10 +220,10 @@ public class SubGuiNpcQuest extends SubGuiInterface implements ISubGuiListener, quest.nextQuestTitle = name; parent.nextQuestName = name; initGui(); - Client.sendData(EnumPacketServer.QuestSave, this.questCategoryID, quest.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new QuestSavePacket(this.questCategoryID, quest.writeToNBT(new NBTTagCompound()), false)); } public void save(){ - Client.sendData(EnumPacketServer.QuestSave, this.questCategoryID, quest.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new QuestSavePacket(this.questCategoryID, quest.writeToNBT(new NBTTagCompound()), false)); } } diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCDialogNpcOptions.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCDialogNpcOptions.java index 02a4f83e9..2818edbe1 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCDialogNpcOptions.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCDialogNpcOptions.java @@ -1,5 +1,9 @@ package noppes.npcs.client.gui.advanced; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.dialog.DialogNpcGetPacket; +import kamkeel.npcs.network.packets.request.dialog.DialogNpcRemovePacket; +import kamkeel.npcs.network.packets.request.dialog.DialogNpcSetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.nbt.NBTTagCompound; @@ -21,7 +25,7 @@ public class GuiNPCDialogNpcOptions extends GuiNPCInterface2 implements GuiSelec super(npc); this.parent = parent; this.drawDefaultBackground = true; - Client.sendData(EnumPacketServer.DialogNpcGet); + PacketClient.sendClient(new DialogNpcGetPacket()); } public void initGui() { @@ -55,7 +59,7 @@ public class GuiNPCDialogNpcOptions extends GuiNPCInterface2 implements GuiSelec if (id >= 20 && id < 40) { int slot = id - 20; data.remove(slot); - Client.sendData(EnumPacketServer.DialogNpcRemove,slot); + PacketClient.sendClient(new DialogNpcRemovePacket(slot)); initGui(); } } @@ -66,7 +70,7 @@ public class GuiNPCDialogNpcOptions extends GuiNPCInterface2 implements GuiSelec @Override public void selected(int id, String name) { - Client.sendData(EnumPacketServer.DialogNpcSet, selectedSlot, id); + PacketClient.sendClient(new DialogNpcSetPacket(selectedSlot, id)); } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageBanks.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageBanks.java index d2a0949aa..d81be0183 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageBanks.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageBanks.java @@ -1,5 +1,10 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.bank.BankGetPacket; +import kamkeel.npcs.network.packets.request.bank.BankRemovePacket; +import kamkeel.npcs.network.packets.request.bank.BankSavePacket; +import kamkeel.npcs.network.packets.request.bank.BanksGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -23,13 +28,13 @@ public class GuiNPCManageBanks extends GuiContainerNPCInterface2 implements IScr private Bank bank = new Bank(); private String selected = null; private String search = ""; - + public GuiNPCManageBanks(EntityNPCInterface npc,ContainerManageBanks container) { super(npc,container); this.container = container; drawDefaultBackground = false; - Client.sendData(EnumPacketServer.BanksGet); + PacketClient.sendClient(new BanksGetPacket()); setBackground("npcbanksetup.png"); ySize = 200; } @@ -37,7 +42,7 @@ public class GuiNPCManageBanks extends GuiContainerNPCInterface2 implements IScr public void initGui() { super.initGui(); - + this.addButton(new GuiNpcButton(6,guiLeft + 340, guiTop + 10, 45, 20, "gui.add")); this.addButton(new GuiNpcButton(7,guiLeft + 340, guiTop + 32, 45, 20, "gui.remove")); if(scroll == null) @@ -46,21 +51,21 @@ public class GuiNPCManageBanks extends GuiContainerNPCInterface2 implements IScr scroll.guiLeft = guiLeft + 174; scroll.guiTop = guiTop + 8; addScroll(scroll); - + for(int i = 0; i < 6; i++){ int x = guiLeft + 6; int y = (guiTop + 36) + (i * 22); addButton(new GuiNpcButton(i, x + 50, y,80, 20, new String[]{"Can Upgrade","Can't Upgrade","Upgraded"},0)); getButton(i).setEnabled(false); } - + addTextField(new GuiNpcTextField(0,this, this.fontRendererObj, guiLeft+8, guiTop + 8, 160, 16, "")); getTextField(0).setMaxStringLength(20); - + addTextField(new GuiNpcTextField(1,this, this.fontRendererObj, guiLeft+10, guiTop + 80, 16, 16, "")); getTextField(1).integersOnly = true; getTextField(1).setMaxStringLength(1); - + addTextField(new GuiNpcTextField(2,this, this.fontRendererObj, guiLeft+10, guiTop + 110, 16, 16, "")); getTextField(2).integersOnly = true; getTextField(2).setMaxStringLength(1); @@ -85,15 +90,15 @@ public class GuiNPCManageBanks extends GuiContainerNPCInterface2 implements IScr name += "_"; Bank bank = new Bank(); bank.name = name; - + NBTTagCompound compound = new NBTTagCompound(); bank.writeEntityToNBT(compound); - Client.sendData(EnumPacketServer.BankSave, compound); + PacketClient.sendClient(new BankSavePacket(compound)); } else if(button.id == 7) { if(data.containsKey(scroll.getSelected())) - Client.sendData(EnumPacketServer.BankRemove, data.get(selected)); + PacketClient.sendClient(new BankRemovePacket(data.get(selected))); } else if(button.id >= 0 && button.id < 6) { @@ -103,7 +108,7 @@ public class GuiNPCManageBanks extends GuiContainerNPCInterface2 implements IScr @Override protected void drawGuiContainerForegroundLayer(int par1, int par2) - { + { fontRendererObj.drawString("Tab Cost", 23, 28, CustomNpcResourceListener.DefaultTextColor); fontRendererObj.drawString("Upg. Cost", 123, 28, CustomNpcResourceListener.DefaultTextColor); fontRendererObj.drawString("Start", 6, 70, CustomNpcResourceListener.DefaultTextColor); @@ -115,28 +120,28 @@ public class GuiNPCManageBanks extends GuiContainerNPCInterface2 implements IScr Bank bank = new Bank(); bank.readEntityFromNBT(compound); this.bank = bank; - + if (bank.id == -1) { getTextField(0).setText(""); getTextField(1).setText(""); - getTextField(2).setText(""); - + getTextField(2).setText(""); + for(int i = 0; i < 6; i++) { - getButton(i).setDisplay(0); + getButton(i).setDisplay(0); getButton(i).setEnabled(false); } - } else { + } else { getTextField(0).setText(bank.name); getTextField(1).setText(Integer.toString(bank.startSlots)); - getTextField(2).setText(Integer.toString(bank.maxSlots)); - + getTextField(2).setText(Integer.toString(bank.maxSlots)); + for(int i = 0; i < 6; i++) { int type = 0; if(bank.slotTypes.containsKey(i)) type = bank.slotTypes.get(i); - getButton(i).setDisplay(type); + getButton(i).setDisplay(type); getButton(i).setEnabled(true); } } @@ -173,27 +178,27 @@ public class GuiNPCManageBanks extends GuiContainerNPCInterface2 implements IScr String name = scroll.getSelected(); this.data = data; scroll.setList(getSearchList()); - + if(name != null) scroll.setSelected(name); } - + @Override public void setSelected(String selected) { this.selected = selected; scroll.setSelected(selected); } - + @Override public void customScrollClicked(int i, int j, int k, GuiCustomScroll guiCustomScroll) { if(guiCustomScroll.id == 0) { save(); selected = scroll.getSelected(); - Client.sendData(EnumPacketServer.BankGet, data.get(selected)); + PacketClient.sendClient(new BankGetPacket(data.get(selected))); } } - + @Override public void save() { if(selected != null && data.containsKey(selected) && bank != null){ @@ -201,7 +206,7 @@ public class GuiNPCManageBanks extends GuiContainerNPCInterface2 implements IScr bank.currencyInventory = container.bank.currencyInventory; bank.upgradeInventory = container.bank.upgradeInventory; bank.writeEntityToNBT(compound); - Client.sendData(EnumPacketServer.BankSave, compound); + PacketClient.sendClient(new BankSavePacket(compound)); } } @@ -220,27 +225,27 @@ public class GuiNPCManageBanks extends GuiContainerNPCInterface2 implements IScr } } else if(guiNpcTextField.id == 1 || guiNpcTextField.id == 2) { int num = 1; - + if(!guiNpcTextField.isEmpty()) num = guiNpcTextField.getInteger(); - + if(num > 6) num = 6; - + if(num < 0) num = 0; - + if(guiNpcTextField.id == 1) { bank.startSlots = num; } else if(guiNpcTextField.id == 2) { bank.maxSlots = num; } - + if(bank.startSlots > bank.maxSlots) bank.maxSlots = bank.startSlots; - + guiNpcTextField.setText(Integer.toString(num)); - } + } } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java index c6d41387d..ddb273fd2 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.dialog.*; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; @@ -181,7 +183,7 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou } DialogCategory category = new DialogCategory(); category.title = name; - Client.sendData(EnumPacketServer.DialogCategorySave, category.writeNBT(new NBTTagCompound())); + PacketClient.sendClient(new DialogCategorySavePacket(category.writeNBT(new NBTTagCompound()))); } // Remove Cat if(id == 5){ @@ -202,7 +204,7 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou } Dialog dialog = new Dialog(); dialog.title = name; - Client.sendData(EnumPacketServer.DialogSave, category.id, dialog.writeToNBT(new NBTTagCompound()), true); + PacketClient.sendClient(new DialogSavePacket(category.id, dialog.writeToNBT(new NBTTagCompound()), true)); } // Remove Dialog if(id == 2) { @@ -231,7 +233,7 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou Dialog dialog = new Dialog(); dialog.readNBTPartial(this.dialog.writeToNBT(new NBTTagCompound())); dialog.title = name; - Client.sendData(EnumPacketServer.DialogSave, category.id, dialog.writeToNBT(new NBTTagCompound()), true); + PacketClient.sendClient(new DialogSavePacket(category.id, dialog.writeToNBT(new NBTTagCompound()), true)); } } } @@ -341,7 +343,7 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou dialog = null; getTextField(66).setText(""); - Client.sendData(EnumPacketServer.DialogCategoryGet, catData.get(selected)); + PacketClient.sendClient(new DialogCategoryGetPacket(catData.get(selected))); setPrevCatName(selected); } } @@ -371,13 +373,13 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou if(saveDiag){ if(dialogScroll.selected != -1 && dialog.id >= 0){ if(catScroll.selected != -1 && category.id >= 0){ - Client.sendData(EnumPacketServer.DialogSave, category.id, dialog.writeToNBT(new NBTTagCompound()), true); + PacketClient.sendClient(new DialogSavePacket(category.id, dialog.writeToNBT(new NBTTagCompound()), true)); } } } else{ if(catScroll.selected != -1 && category.id >= 0) - Client.sendData(EnumPacketServer.DialogCategorySave, category.writeNBT(new NBTTagCompound())); + PacketClient.sendClient(new DialogCategorySavePacket(category.writeNBT(new NBTTagCompound()))); } } @@ -426,13 +428,13 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou return; if(id == 5) { if(catData.containsKey(catScroll.getSelected())) { - Client.sendData(EnumPacketServer.DialogCategoryRemove, category.id); + PacketClient.sendClient(new DialogCategoryRemovePacket(category.id)); clearCategory(); } } if(id == 2) { if (dialogData.containsKey(dialogScroll.getSelected())) { - Client.sendData(EnumPacketServer.DialogRemove, dialog.id, true); + PacketClient.sendClient(new DialogRemovePacket(dialog.id, true)); dialog = new Dialog(); dialogData.clear(); } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java index 2b4f29078..ea58e00b9 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.quest.*; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiYesNo; @@ -186,7 +188,7 @@ public class GuiNPCManageQuest extends GuiNPCInterface2 implements IScrollGroup, } QuestCategory category = new QuestCategory(); category.title = name; - Client.sendData(EnumPacketServer.QuestCategorySave, category.writeNBT(new NBTTagCompound())); + PacketClient.sendClient(new QuestCategorySavePacket(category.writeNBT(new NBTTagCompound()))); } // Remove Cat if(id == 5){ @@ -207,8 +209,8 @@ public class GuiNPCManageQuest extends GuiNPCInterface2 implements IScrollGroup, } Quest quest = new Quest(); quest.title = name; - Client.sendData(EnumPacketServer.QuestSave, category.id, quest.writeToNBT(new NBTTagCompound()), true); - } + PacketClient.sendClient(new QuestSavePacket(category.id, quest.writeToNBT(new NBTTagCompound()), true)); + } // Remove Quest if(id == 2) { if (questData.containsKey(questScroll.getSelected())) { @@ -236,8 +238,8 @@ public class GuiNPCManageQuest extends GuiNPCInterface2 implements IScrollGroup, Quest quest = new Quest(); quest.readNBTPartial(this.quest.writeToNBT(new NBTTagCompound())); quest.title = name; - Client.sendData(EnumPacketServer.QuestSave, category.id, quest.writeToNBT(new NBTTagCompound()), true); - } + PacketClient.sendClient(new QuestSavePacket(category.id, quest.writeToNBT(new NBTTagCompound()), true)); + } } } updateButtons(); @@ -346,7 +348,7 @@ public class GuiNPCManageQuest extends GuiNPCInterface2 implements IScrollGroup, quest = null; getTextField(66).setText(""); - Client.sendData(EnumPacketServer.QuestCategoryGet, catData.get(selected)); + PacketClient.sendClient(new QuestCategoryGetPacket(catData.get(selected))); setPrevCatName(selected); } } @@ -376,13 +378,13 @@ public class GuiNPCManageQuest extends GuiNPCInterface2 implements IScrollGroup, if(saveQuest){ if(questScroll.selected != -1 && quest.id >= 0){ if(catScroll.selected != -1 && category.id >= 0){ - Client.sendData(EnumPacketServer.QuestSave, category.id, quest.writeToNBT(new NBTTagCompound()), true); + PacketClient.sendClient(new QuestSavePacket(category.id, quest.writeToNBT(new NBTTagCompound()), true)); } } } else{ if(catScroll.selected != -1 && category.id >= 0) - Client.sendData(EnumPacketServer.QuestCategorySave, category.writeNBT(new NBTTagCompound())); + PacketClient.sendClient(new QuestCategorySavePacket(category.writeNBT(new NBTTagCompound()))); } } @@ -431,12 +433,12 @@ public class GuiNPCManageQuest extends GuiNPCInterface2 implements IScrollGroup, return; if(id == 5) { if(catData.containsKey(catScroll.getSelected())) { - Client.sendData(EnumPacketServer.QuestCategoryRemove, category.id); + PacketClient.sendClient(new QuestCategoryRemovePacket(category.id)); clearCategory(); } } if(id == 2) { - Client.sendData(EnumPacketServer.QuestRemove, quest.id, true); + PacketClient.sendClient(new QuestRemovePacket(quest.id, true)); quest = new Quest(); questData.clear(); } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java index 14bb9ad52..d11d825b4 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java @@ -1,5 +1,10 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.recipe.RecipeGetPacket; +import kamkeel.npcs.network.packets.request.recipe.RecipeRemovePacket; +import kamkeel.npcs.network.packets.request.recipe.RecipeSavePacket; +import kamkeel.npcs.network.packets.request.recipe.RecipesGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; @@ -30,7 +35,7 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS super(npc,container); this.container = container; drawDefaultBackground = false; - Client.sendData(EnumPacketServer.RecipesGet,container.width); + PacketClient.sendClient(new RecipesGetPacket(container.width)); setBackground("inventorymenu.png"); slot = getResource("slot.png"); ySize = 200; @@ -94,11 +99,11 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS name += "_"; RecipeCarpentry recipe = new RecipeCarpentry(name); recipe.isGlobal = container.width == 3; - Client.sendData(EnumPacketServer.RecipeSave,recipe.writeNBT()); + PacketClient.sendClient(new RecipeSavePacket(recipe.writeNBT())); } if(button.id == 4){ if(data.containsKey(scroll.getSelected())){ - Client.sendData(EnumPacketServer.RecipeRemove, data.get(scroll.getSelected())); + PacketClient.sendClient(new RecipeRemovePacket(data.get(scroll.getSelected()))); scroll.clear(); } } @@ -186,7 +191,7 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS public void customScrollClicked(int i, int j, int k, GuiCustomScroll guiCustomScroll) { save(); selected = scroll.getSelected(); - Client.sendData(EnumPacketServer.RecipeGet, data.get(selected)); + PacketClient.sendClient(new RecipeGetPacket(data.get(selected))); } @Override @@ -194,7 +199,7 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS GuiNpcTextField.unfocus(); if(selected != null && data.containsKey(selected)){ container.saveRecipe(); - Client.sendData(EnumPacketServer.RecipeSave, container.recipe.writeNBT()); + PacketClient.sendClient(new RecipeSavePacket(container.recipe.writeNBT())); } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNpcNaturalSpawns.java b/src/main/java/noppes/npcs/client/gui/global/GuiNpcNaturalSpawns.java index fef642732..579f6ce40 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNpcNaturalSpawns.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNpcNaturalSpawns.java @@ -1,5 +1,10 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnGetAllPacket; +import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnGetPacket; +import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnRemovePacket; +import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; @@ -25,7 +30,7 @@ public class GuiNpcNaturalSpawns extends GuiNPCInterface2 implements IGuiData, I public GuiNpcNaturalSpawns(EntityNPCInterface npc) { super(npc); - Client.sendData(EnumPacketServer.NaturalSpawnGetAll); + PacketClient.sendClient(new NaturalSpawnGetAllPacket()); } @Override @@ -129,12 +134,12 @@ public class GuiNpcNaturalSpawns extends GuiNPCInterface2 implements IGuiData, I SpawnData spawn = new SpawnData(); spawn.name = name; - Client.sendData(EnumPacketServer.NaturalSpawnSave, spawn.writeNBT(new NBTTagCompound())); + PacketClient.sendClient(new NaturalSpawnSavePacket(spawn.writeNBT(new NBTTagCompound()))); this.spawnEntryScroll.selected = -1; } if(id == 2){ if(data.containsKey(scrollNaturalSpawns.getSelected())) { - Client.sendData(EnumPacketServer.NaturalSpawnRemove, spawn.id); + PacketClient.sendClient(new NaturalSpawnRemovePacket(spawn.id)); spawn = new SpawnData(); scrollNaturalSpawns.clear(); this.spawnEntryScroll.selected = -1; @@ -224,7 +229,7 @@ public class GuiNpcNaturalSpawns extends GuiNPCInterface2 implements IGuiData, I save(); String selected = scrollNaturalSpawns.getSelected(); spawn = new SpawnData(); - Client.sendData(EnumPacketServer.NaturalSpawnGet, data.get(selected)); + PacketClient.sendClient(new NaturalSpawnGetPacket(data.get(selected))); } if (guiCustomScroll.id == 20) { initGui(); @@ -235,7 +240,7 @@ public class GuiNpcNaturalSpawns extends GuiNPCInterface2 implements IGuiData, I public void save() { GuiNpcTextField.unfocus(); if(spawn.id >= 0) - Client.sendData(EnumPacketServer.NaturalSpawnSave, spawn.writeNBT(new NBTTagCompound())); + PacketClient.sendClient(new NaturalSpawnSavePacket(spawn.writeNBT(new NBTTagCompound()))); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/questtypes/GuiNpcQuestTypeDialog.java b/src/main/java/noppes/npcs/client/gui/questtypes/GuiNpcQuestTypeDialog.java index bfdaf32fc..d4613bb26 100644 --- a/src/main/java/noppes/npcs/client/gui/questtypes/GuiNpcQuestTypeDialog.java +++ b/src/main/java/noppes/npcs/client/gui/questtypes/GuiNpcQuestTypeDialog.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.questtypes; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.quest.QuestDialogGetTitlePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.nbt.NBTTagCompound; @@ -34,10 +36,12 @@ public class GuiNpcQuestTypeDialog extends SubGuiInterface implements GuiSelecti xSize = 256; ySize = 216; closeOnEsc = true; - Client.sendData(EnumPacketServer.QuestDialogGetTitle, - quest.dialogs.containsKey(0)?quest.dialogs.get(0):-1, - quest.dialogs.containsKey(1)?quest.dialogs.get(1):-1, - quest.dialogs.containsKey(2)?quest.dialogs.get(2):-1); + + PacketClient.sendClient(new QuestDialogGetTitlePacket( + quest.dialogs.getOrDefault(0, -1), + quest.dialogs.getOrDefault(1, -1), + quest.dialogs.getOrDefault(2, -1)) + ); } public void initGui() { diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java index 38f12c120..fe3fc75e7 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.bank.BankGetPacket; +import kamkeel.npcs.network.packets.request.bank.BanksGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -25,7 +28,7 @@ public class GuiNpcBankSetup extends GuiNPCInterface2 implements IScrollData,ICu public GuiNpcBankSetup(EntityNPCInterface npc) { super(npc); - Client.sendData(EnumPacketServer.BanksGet); + PacketClient.sendClient(new BanksGetPacket()); role = (RoleBank) npc.roleInterface; } @@ -43,9 +46,9 @@ public class GuiNpcBankSetup extends GuiNPCInterface2 implements IScrollData,ICu protected void actionPerformed(GuiButton guibutton) { } - + @Override - public void setData(Vector list, HashMap data) + public void setData(Vector list, HashMap data) { String name = null; Bank bank = role.getBank(); @@ -53,23 +56,23 @@ public class GuiNpcBankSetup extends GuiNPCInterface2 implements IScrollData,ICu name = bank.name; this.data = data; scroll.setList(list); - + if(name != null) setSelected(name); } - + public void mouseClicked(int i, int j, int k) { super.mouseClicked(i, j, k); if(k == 0 && scroll != null) scroll.mouseClicked(i, j, k); } - + @Override public void setSelected(String selected) { scroll.setSelected(selected); } - + @Override public void customScrollClicked(int i, int j, int k, GuiCustomScroll guiCustomScroll) { if(guiCustomScroll.id == 0) @@ -78,7 +81,7 @@ public class GuiNpcBankSetup extends GuiNPCInterface2 implements IScrollData,ICu save(); } } - + public void save() { Client.sendData(EnumPacketServer.RoleSave, role.writeToNBT(new NBTTagCompound())); } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 1f26dcfa1..2569faa0c 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -1,16 +1,10 @@ package noppes.npcs.constants; -import net.minecraft.client.gui.Gui; import noppes.npcs.CustomNpcsPermissions; -import noppes.npcs.client.gui.custom.components.CustomGuiButton; public enum EnumPacketServer { NPCDelete(CustomNpcsPermissions.NPC_DELETE, true), - RemoteMainMenu(CustomNpcsPermissions.NPC_GUI), - RemoteGlobalMenu(CustomNpcsPermissions.GLOBAL_REMOTE), NpcMenuClose(CustomNpcsPermissions.NPC_GUI, true), - RemoteDelete(CustomNpcsPermissions.NPC_DELETE, true), - RemoteFreeze(CustomNpcsPermissions.NPC_FREEZE), RemoteFreezeGet, RemoteReset(CustomNpcsPermissions.NPC_RESET), SpawnMob(CustomNpcsPermissions.SPAWNER_MOB), MobSpawner(CustomNpcsPermissions.SPAWNER_CREATE), @@ -23,8 +17,6 @@ public enum EnumPacketServer { ModelDataSave(CustomNpcsPermissions.NPC_DISPLAY, true), MainmenuAdvancedSave(CustomNpcsPermissions.NPC_ADVANCED,true), MainmenuAdvancedGet(true), MainmenuAdvancedMarkData(CustomNpcsPermissions.NPC_ADVANCED,true), - DialogNpcSet(CustomNpcsPermissions.NPC_ADVANCED), - DialogNpcRemove(CustomNpcsPermissions.NPC_ADVANCED, true), FactionSet(CustomNpcsPermissions.NPC_ADVANCED, true), TagSet(CustomNpcsPermissions.NPC_ADVANCED, true), TransportSave(CustomNpcsPermissions.NPC_ADVANCED, true), @@ -62,12 +54,8 @@ public enum EnumPacketServer { PlayerDataRemove(CustomNpcsPermissions.GLOBAL_PLAYERDATA), PlayerDataMapRegen(CustomNpcsPermissions.GLOBAL_PLAYERDATA), - BankSave(CustomNpcsPermissions.GLOBAL_BANK), BanksGet, BankGet, - BankRemove(CustomNpcsPermissions.GLOBAL_BANK), - - DialogCategorySave(CustomNpcsPermissions.GLOBAL_DIALOG), DialogCategoriesGet, DialogsGetFromDialog, - DialogCategoryRemove(CustomNpcsPermissions.GLOBAL_DIALOG), DialogCategoryGet, - DialogSave(CustomNpcsPermissions.GLOBAL_DIALOG), DialogsGet, DialogGet, + DialogCategoriesGet, DialogsGetFromDialog, + DialogsGet, DialogGet, DialogRemove(CustomNpcsPermissions.GLOBAL_DIALOG), TransportCategoryRemove(CustomNpcsPermissions.GLOBAL_TRANSPORT), TransportGetLocation(true), @@ -77,32 +65,23 @@ public enum EnumPacketServer { FactionSave(CustomNpcsPermissions.GLOBAL_FACTION), FactionsGet, FactionGet, TagRemove(CustomNpcsPermissions.GLOBAL_TAG), TagSave(CustomNpcsPermissions.GLOBAL_TAG), TagsGet, TagGet, NpcTagsGet, - QuestCategorySave(CustomNpcsPermissions.GLOBAL_QUEST), QuestCategoriesGet, + QuestCategoriesGet, QuestRemove(CustomNpcsPermissions.GLOBAL_QUEST), - QuestCategoryRemove(CustomNpcsPermissions.GLOBAL_QUEST), QuestRewardSave(CustomNpcsPermissions.GLOBAL_QUEST), QuestSave(CustomNpcsPermissions.GLOBAL_QUEST), QuestsGetFromQuest, QuestsGet, - QuestDialogGetTitle(CustomNpcsPermissions.GLOBAL_QUEST), - RecipeSave(CustomNpcsPermissions.GLOBAL_RECIPE), - RecipeRemove(CustomNpcsPermissions.GLOBAL_RECIPE), - NaturalSpawnSave(CustomNpcsPermissions.GLOBAL_NATURALSPAWN), NaturalSpawnGet, - NaturalSpawnRemove(CustomNpcsPermissions.GLOBAL_NATURALSPAWN), MerchantUpdate(CustomNpcsPermissions.EDIT_VILLAGER), PlayerRider(CustomNpcsPermissions.TOOL_MOUNTER), SpawnRider(CustomNpcsPermissions.TOOL_MOUNTER), MovingPathSave(CustomNpcsPermissions.TOOL_PATHER,true), MovingPathGet(true), - DialogNpcGet, AnimationsGet, AnimationGet, AnimationRemove(CustomNpcsPermissions.GLOBAL_ANIMATION), AnimationSave(CustomNpcsPermissions.GLOBAL_ANIMATION), - RecipesGet, RecipeGet, QuestOpenGui, PlayerDataGet, QuestLogToServer, PartyLogToServer, UntrackQuest, + QuestOpenGui, PlayerDataGet, QuestLogToServer, PartyLogToServer, UntrackQuest, - RemoteNpcsGet(CustomNpcsPermissions.NPC_GUI), RemoteTpToNpc(CustomNpcsPermissions.NPC_TELEPORT), QuestGet, QuestCategoryGet, - SaveTileEntity, - NaturalSpawnGetAll, MailOpenSetup, + SaveTileEntity, MailOpenSetup, DimensionsGet, DimensionTeleport, GetTileEntity, Gui, IsGuiOpen, CacheAnimation, CustomGuiButton,CustomGuiScrollClick,CustomGuiClose,CustomGuiUnfocused, From b22105341f3b1c57e93aff7142d35d016423d5a8 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 02:25:21 -0500 Subject: [PATCH 062/157] BUNCH OF NEW PACKETS --- .../kamkeel/npcs/network/PacketHandler.java | 53 +++++++ .../java/kamkeel/npcs/network/PacketUtil.java | 141 +++++++++++++++--- .../request/faction/FactionRemovePacket.java | 7 +- .../request/faction/FactionSavePacket.java | 8 +- .../request/faction/FactionSetPacket.java | 8 +- .../request/mainmenu/MainmenuAIGetPacket.java | 17 ++- .../mainmenu/MainmenuAISavePacket.java | 23 ++- .../mainmenu/MainmenuAdvancedGetPacket.java | 18 +-- .../MainmenuAdvancedMarkDataPacket.java | 21 ++- .../mainmenu/MainmenuAdvancedSavePacket.java | 23 ++- .../mainmenu/MainmenuDisplayGetPacket.java | 13 +- .../mainmenu/MainmenuDisplaySavePacket.java | 17 ++- .../mainmenu/MainmenuInvGetPacket.java | 20 +-- .../mainmenu/MainmenuInvSavePacket.java | 21 ++- .../mainmenu/MainmenuStatsGetPacket.java | 19 +-- .../mainmenu/MainmenuStatsSavePacket.java | 17 ++- .../playerdata/PlayerDataGetPacket.java | 26 +++- .../playerdata/PlayerDataMapRegenPacket.java | 8 +- .../playerdata/PlayerDataRemovePacket.java | 37 ++++- .../packets/request/tags/TagRemovePacket.java | 12 +- .../packets/request/tags/TagSavePacket.java | 8 +- .../packets/request/tags/TagSetPacket.java | 16 +- .../TransportCategoriesGetPacket.java | 11 +- .../TransportCategoryRemovePacket.java | 11 +- .../TransportCategorySavePacket.java | 8 +- .../transport/TransportGetLocationPacket.java | 12 +- .../transport/TransportRemovePacket.java | 8 +- .../transport/TransportSavePacket.java | 34 ++--- .../transport/TransportsGetPacket.java | 16 +- .../java/noppes/npcs/NoppesUtilServer.java | 1 - .../java/noppes/npcs/PacketHandlerServer.java | 140 ----------------- .../npcs/client/gui/GuiNPCLinesEdit.java | 9 +- .../gui/GuiNPCTransportCategoryEdit.java | 18 +-- .../npcs/client/gui/SubGuiClonerNPCTags.java | 4 +- .../gui/advanced/GuiNPCFactionSetup.java | 29 ++-- .../client/gui/advanced/GuiNPCLinesMenu.java | 8 +- .../npcs/client/gui/advanced/GuiNPCMarks.java | 5 +- .../client/gui/advanced/GuiNPCSoundsMenu.java | 4 +- .../client/gui/advanced/GuiNPCTagSetup.java | 4 +- .../gui/global/GuiNPCManageFactions.java | 9 +- .../client/gui/global/GuiNPCManageTags.java | 9 +- .../gui/global/GuiNPCManageTransporters.java | 25 ++-- .../gui/global/GuiNpcManagePlayerData.java | 17 ++- .../npcs/client/gui/mainmenu/GuiNPCInv.java | 9 +- .../npcs/client/gui/mainmenu/GuiNpcAI.java | 4 +- .../client/gui/mainmenu/GuiNpcAdvanced.java | 8 +- .../client/gui/mainmenu/GuiNpcDisplay.java | 9 +- .../npcs/client/gui/mainmenu/GuiNpcStats.java | 8 +- .../client/gui/roles/GuiNpcTransporter.java | 26 ++-- .../npcs/constants/EnumPacketServer.java | 33 ++-- 50 files changed, 620 insertions(+), 392 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 7ca73b7a6..4aea38ced 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -19,20 +19,31 @@ import kamkeel.npcs.network.packets.request.bank.BankRemovePacket; import kamkeel.npcs.network.packets.request.bank.BankSavePacket; import kamkeel.npcs.network.packets.request.bank.BanksGetPacket; import kamkeel.npcs.network.packets.request.dialog.*; +import kamkeel.npcs.network.packets.request.faction.FactionRemovePacket; +import kamkeel.npcs.network.packets.request.faction.FactionSavePacket; +import kamkeel.npcs.network.packets.request.faction.FactionSetPacket; import kamkeel.npcs.network.packets.request.linked.LinkedAddPacket; import kamkeel.npcs.network.packets.request.linked.LinkedGetAllPacket; import kamkeel.npcs.network.packets.request.linked.LinkedRemovePacket; import kamkeel.npcs.network.packets.request.linked.LinkedSetPacket; +import kamkeel.npcs.network.packets.request.mainmenu.*; import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnGetAllPacket; import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnGetPacket; import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnRemovePacket; import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnSavePacket; import kamkeel.npcs.network.packets.request.npc.*; +import kamkeel.npcs.network.packets.request.playerdata.PlayerDataGetPacket; +import kamkeel.npcs.network.packets.request.playerdata.PlayerDataMapRegenPacket; +import kamkeel.npcs.network.packets.request.playerdata.PlayerDataRemovePacket; import kamkeel.npcs.network.packets.request.quest.*; import kamkeel.npcs.network.packets.request.recipe.RecipeGetPacket; import kamkeel.npcs.network.packets.request.recipe.RecipeRemovePacket; import kamkeel.npcs.network.packets.request.recipe.RecipeSavePacket; import kamkeel.npcs.network.packets.request.recipe.RecipesGetPacket; +import kamkeel.npcs.network.packets.request.tags.TagRemovePacket; +import kamkeel.npcs.network.packets.request.tags.TagSavePacket; +import kamkeel.npcs.network.packets.request.tags.TagSetPacket; +import kamkeel.npcs.network.packets.request.transport.*; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -122,6 +133,48 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new QuestRemovePacket()); REQUEST_PACKET.registerPacket(new QuestDialogGetTitlePacket()); + // Faction Packets + REQUEST_PACKET.registerPacket(new FactionSavePacket()); + REQUEST_PACKET.registerPacket(new FactionRemovePacket()); + REQUEST_PACKET.registerPacket(new FactionSetPacket()); + + // Tag Packets + REQUEST_PACKET.registerPacket(new TagSetPacket()); + REQUEST_PACKET.registerPacket(new TagSavePacket()); + REQUEST_PACKET.registerPacket(new TagRemovePacket()); + + // PlayerData Packets + REQUEST_PACKET.registerPacket(new PlayerDataGetPacket()); + REQUEST_PACKET.registerPacket(new PlayerDataRemovePacket()); + REQUEST_PACKET.registerPacket(new PlayerDataMapRegenPacket()); + + // Main Menu Packets + REQUEST_PACKET.registerPacket(new MainmenuDisplayGetPacket()); + REQUEST_PACKET.registerPacket(new MainmenuDisplaySavePacket()); + + REQUEST_PACKET.registerPacket(new MainmenuStatsGetPacket()); + REQUEST_PACKET.registerPacket(new MainmenuStatsSavePacket()); + + REQUEST_PACKET.registerPacket(new MainmenuAIGetPacket()); + REQUEST_PACKET.registerPacket(new MainmenuAISavePacket()); + + REQUEST_PACKET.registerPacket(new MainmenuAdvancedGetPacket()); + REQUEST_PACKET.registerPacket(new MainmenuAdvancedSavePacket()); + REQUEST_PACKET.registerPacket(new MainmenuAdvancedMarkDataPacket()); + + REQUEST_PACKET.registerPacket(new MainmenuInvGetPacket()); + REQUEST_PACKET.registerPacket(new MainmenuInvSavePacket()); + + // Transport Packets + REQUEST_PACKET.registerPacket(new TransportCategoriesGetPacket()); + REQUEST_PACKET.registerPacket(new TransportCategorySavePacket()); + REQUEST_PACKET.registerPacket(new TransportCategoryRemovePacket()); + + REQUEST_PACKET.registerPacket(new TransportRemovePacket()); + REQUEST_PACKET.registerPacket(new TransportsGetPacket()); + REQUEST_PACKET.registerPacket(new TransportSavePacket()); + REQUEST_PACKET.registerPacket(new TransportGetLocationPacket()); + // Remote Packets REQUEST_PACKET.registerPacket(new RemoteMainMenuPacket()); REQUEST_PACKET.registerPacket(new RemoteGlobalMenuPacket()); diff --git a/src/main/java/kamkeel/npcs/network/PacketUtil.java b/src/main/java/kamkeel/npcs/network/PacketUtil.java index ae4d6f026..0f097e1f0 100644 --- a/src/main/java/kamkeel/npcs/network/PacketUtil.java +++ b/src/main/java/kamkeel/npcs/network/PacketUtil.java @@ -7,63 +7,164 @@ import net.minecraft.item.ItemStack; import noppes.npcs.CustomItems; import noppes.npcs.LogWriter; +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + public class PacketUtil { - public static boolean verifyItemPacket(EnumItemPacketType type, EntityPlayer player){ - if(player == null) + public static boolean verifyItemPacket(EnumItemPacketType type, EntityPlayer player) { + if (player == null) return false; ItemStack item = player.inventory.getCurrentItem(); - if(item == null){ - LogWriter.error(String.format("%s attempted to utilize a %s Packet without an item, they could be a hacker", player.getCommandSenderName(), type.toString())); + if (item == null) { + LogWriter.error(String.format("%s attempted to utilize a %s Packet without an item, they could be a hacker", + player.getCommandSenderName(), type)); return false; } - switch (type){ + switch (type) { case WAND: - if(item.getItem() != CustomItems.wand){ - LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Wand, they could be a hacker", player.getCommandSenderName(), type.toString())); + if (item.getItem() != CustomItems.wand) { + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Wand, they could be a hacker", + player.getCommandSenderName(), type)); return false; } break; case MOUNTER: - if(item.getItem() != CustomItems.mount){ - LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Mounter, they could be a hacker", player.getCommandSenderName(), type.toString())); + if (item.getItem() != CustomItems.mount) { + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Mounter, they could be a hacker", + player.getCommandSenderName(), type)); return false; } break; case CLONER: - if(item.getItem() != CustomItems.cloner){ - LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Cloner, they could be a hacker", player.getCommandSenderName(), type.toString())); + if (item.getItem() != CustomItems.cloner) { + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Cloner, they could be a hacker", + player.getCommandSenderName(), type)); return false; } break; case TELEPORTER: - if(item.getItem() != CustomItems.teleporter){ - LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Teleporter, they could be a hacker", player.getCommandSenderName(), type.toString())); + if (item.getItem() != CustomItems.teleporter) { + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Teleporter, they could be a hacker", + player.getCommandSenderName(), type)); return false; } break; case SCRIPTER: - if(item.getItem() != CustomItems.scripter){ - LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Scripter, they could be a hacker", player.getCommandSenderName(), type.toString())); + if (item.getItem() != CustomItems.scripter) { + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Scripter, they could be a hacker", + player.getCommandSenderName(), type)); return false; } break; case PATHER: - if(item.getItem() != CustomItems.moving){ - LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Pather, they could be a hacker", player.getCommandSenderName(), type.toString())); + if (item.getItem() != CustomItems.moving) { + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a Pather, they could be a hacker", + player.getCommandSenderName(), type)); return false; } break; case BLOCK: - if(item.getItem() == Item.getItemFromBlock(CustomItems.waypoint) || item.getItem() == Item.getItemFromBlock(CustomItems.border) || item.getItem() == Item.getItemFromBlock(CustomItems.redstoneBlock)){ - LogWriter.error(String.format("%s attempted to utilize a %s Packet without a valid Block, they could be a hacker", player.getCommandSenderName(), type.toString())); + if (item.getItem() == Item.getItemFromBlock(CustomItems.waypoint) + || item.getItem() == Item.getItemFromBlock(CustomItems.border) + || item.getItem() == Item.getItemFromBlock(CustomItems.redstoneBlock)) { + LogWriter.error(String.format("%s attempted to utilize a %s Packet without a valid Block, they could be a hacker", + player.getCommandSenderName(), type)); return false; } break; } - return true; } + + /** + * New method that accepts multiple EnumItemPacketTypes. + * It returns true if any one of the provided types is valid. + * If none are valid, a merged error message is logged. + */ + public static boolean verifyItemPacket(EntityPlayer player, EnumItemPacketType... types) { + if (player == null) + return false; + + ItemStack item = player.inventory.getCurrentItem(); + if (item == null) { + LogWriter.error(String.format("%s attempted to utilize a Packet without an item. Expected one of: %s, they could be a hacker", + player.getCommandSenderName(), getExpectedItemNames(types))); + return false; + } + + for (EnumItemPacketType type : types) { + if (isValidItemForType(item, type)) { + return true; + } + } + + // None passed; log one merged error message listing all expected items. + LogWriter.error(String.format("%s attempted to utilize a Packet without a valid item. Expected one of: %s, they could be a hacker", + player.getCommandSenderName(), getExpectedItemNames(types))); + return false; + } + + private static boolean isValidItemForType(ItemStack item, EnumItemPacketType type) { + switch (type) { + case WAND: + return item.getItem() == CustomItems.wand; + case MOUNTER: + return item.getItem() == CustomItems.mount; + case CLONER: + return item.getItem() == CustomItems.cloner; + case TELEPORTER: + return item.getItem() == CustomItems.teleporter; + case SCRIPTER: + return item.getItem() == CustomItems.scripter; + case PATHER: + return item.getItem() == CustomItems.moving; + case BLOCK: + // For BLOCK, the item is valid as long as it is NOT one of these blocks. + return !(item.getItem() == Item.getItemFromBlock(CustomItems.waypoint) + || item.getItem() == Item.getItemFromBlock(CustomItems.border) + || item.getItem() == Item.getItemFromBlock(CustomItems.redstoneBlock)); + default: + return false; + } + } + + /** + * Builds a comma‐separated list of expected item names for the given types. + */ + private static String getExpectedItemNames(EnumItemPacketType... types) { + Set expectedNames = new LinkedHashSet<>(); + for (EnumItemPacketType type : types) { + expectedNames.add(getExpectedItemName(type)); + } + return String.join(", ", expectedNames); + } + + /** + * Returns the expected item name for the given EnumItemPacketType. + */ + private static String getExpectedItemName(EnumItemPacketType type) { + switch (type) { + case WAND: + return "Wand"; + case MOUNTER: + return "Mounter"; + case CLONER: + return "Cloner"; + case TELEPORTER: + return "Teleporter"; + case SCRIPTER: + return "Scripter"; + case PATHER: + return "Pather"; + case BLOCK: + return "valid Block"; + default: + return type.toString(); + } + } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionRemovePacket.java index 2a2859398..cc0a0aa0d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionRemovePacket.java @@ -61,8 +61,11 @@ public final class FactionRemovePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); FactionController.getInstance().delete(id); NoppesUtilServer.sendFactionDataAll((EntityPlayerMP) player); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSavePacket.java index 0446834fb..892c31c6e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSavePacket.java @@ -61,8 +61,12 @@ public final class FactionSavePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NBTTagCompound compound = ByteBufUtils.readNBT(in); Faction faction = new Faction(); faction.readNBT(compound); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSetPacket.java index 3c9a550f1..8dc667712 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionSetPacket.java @@ -55,8 +55,12 @@ public final class FactionSetPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int factionId = in.readInt(); npc.setFaction(factionId); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAIGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAIGetPacket.java index 9787971da..363d194fc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAIGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAIGetPacket.java @@ -19,7 +19,7 @@ import java.io.IOException; public final class MainmenuAIGetPacket extends AbstractPacket { public static String packetName = "Request|MainmenuAIGet"; - public MainmenuAIGetPacket() { } + public MainmenuAIGetPacket() {} @Override public Enum getType() { @@ -31,14 +31,23 @@ public final class MainmenuAIGetPacket extends AbstractPacket { return PacketHandler.REQUEST_PACKET; } + @Override + public boolean needsNPC() { + return true; + } + @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException {} @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.ai.writeToNBT(new NBTTagCompound())); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAISavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAISavePacket.java index 2be4a82e8..b17f93d35 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAISavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAISavePacket.java @@ -12,14 +12,21 @@ import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import java.io.IOException; public final class MainmenuAISavePacket extends AbstractPacket { - public static String packetName = "Request|MainmenuAISave"; + public static String packetName = "Request|MainmenuInvSave"; - public MainmenuAISavePacket() { } + private NBTTagCompound compound; + + public MainmenuAISavePacket() {} + + public MainmenuAISavePacket(NBTTagCompound compound) { + this.compound = compound; + } @Override public Enum getType() { @@ -43,12 +50,18 @@ public final class MainmenuAISavePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + npc.ai.readToNBT(ByteBufUtils.readNBT(in)); npc.setHealth(npc.getMaxHealth()); npc.updateAI = true; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedGetPacket.java index 922dc380a..9665c07fe 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedGetPacket.java @@ -13,14 +13,13 @@ import kamkeel.npcs.network.packets.data.large.GuiDataPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcsPermissions; import java.io.IOException; public final class MainmenuAdvancedGetPacket extends AbstractPacket { public static String packetName = "Request|MainmenuAdvancedGet"; - public MainmenuAdvancedGetPacket() { } + public MainmenuAdvancedGetPacket() {} @Override public Enum getType() { @@ -32,11 +31,6 @@ public final class MainmenuAdvancedGetPacket extends AbstractPacket { return PacketHandler.REQUEST_PACKET; } - @Override - public CustomNpcsPermissions.Permission getPermission() { - return CustomNpcsPermissions.NPC_ADVANCED; - } - @Override public boolean needsNPC() { return true; @@ -44,12 +38,16 @@ public final class MainmenuAdvancedGetPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException {} @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.advanced.writeToNBT(new NBTTagCompound())); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedMarkDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedMarkDataPacket.java index 8e687fa7a..dc8048632 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedMarkDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedMarkDataPacket.java @@ -12,6 +12,7 @@ import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.controllers.data.MarkData; @@ -20,7 +21,13 @@ import java.io.IOException; public final class MainmenuAdvancedMarkDataPacket extends AbstractPacket { public static String packetName = "Request|MainmenuAdvancedMarkData"; - public MainmenuAdvancedMarkDataPacket() { } + private NBTTagCompound compound; + + public MainmenuAdvancedMarkDataPacket() {} + + public MainmenuAdvancedMarkDataPacket(NBTTagCompound compound) { + this.compound = compound; + } @Override public Enum getType() { @@ -44,12 +51,18 @@ public final class MainmenuAdvancedMarkDataPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + MarkData data = MarkData.get(npc); data.setNBT(ByteBufUtils.readNBT(in)); data.syncClients(); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedSavePacket.java index e1bc7264e..d979ceb03 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuAdvancedSavePacket.java @@ -12,14 +12,21 @@ import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import java.io.IOException; public final class MainmenuAdvancedSavePacket extends AbstractPacket { - public static String packetName = "Request|MainmenuAdvancedSave"; + public static String packetName = "Request|MainmenuInvSave"; - public MainmenuAdvancedSavePacket() { } + private NBTTagCompound compound; + + public MainmenuAdvancedSavePacket() {} + + public MainmenuAdvancedSavePacket(NBTTagCompound compound) { + this.compound = compound; + } @Override public Enum getType() { @@ -43,12 +50,18 @@ public final class MainmenuAdvancedSavePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + npc.advanced.readToNBT(ByteBufUtils.readNBT(in)); npc.updateAI = true; npc.updateClient = true; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplayGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplayGetPacket.java index d22b39680..c286b37e2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplayGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplayGetPacket.java @@ -33,11 +33,6 @@ public final class MainmenuDisplayGetPacket extends AbstractPacket { return PacketHandler.REQUEST_PACKET; } - @Override - public CustomNpcsPermissions.Permission getPermission() { - return CustomNpcsPermissions.NPC_DISPLAY; - } - @Override public boolean needsNPC() { return true; @@ -50,8 +45,12 @@ public final class MainmenuDisplayGetPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.display.writeToNBT(new NBTTagCompound())); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplaySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplaySavePacket.java index 9d82076a8..83c1af9b2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplaySavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuDisplaySavePacket.java @@ -12,6 +12,7 @@ import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import java.io.IOException; @@ -19,7 +20,12 @@ import java.io.IOException; public final class MainmenuDisplaySavePacket extends AbstractPacket { public static String packetName = "Request|MainmenuDisplaySave"; - public MainmenuDisplaySavePacket() { + private NBTTagCompound compound; + + public MainmenuDisplaySavePacket() {} + + public MainmenuDisplaySavePacket(NBTTagCompound compound) { + this.compound = compound; } @Override @@ -45,12 +51,17 @@ public final class MainmenuDisplaySavePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + npc.display.readToNBT(ByteBufUtils.readNBT(in)); npc.updateClient = true; } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvGetPacket.java index 765d0f382..b4fbd2a3b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvGetPacket.java @@ -13,15 +13,13 @@ import kamkeel.npcs.network.packets.data.large.GuiDataPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcsPermissions; import java.io.IOException; public final class MainmenuInvGetPacket extends AbstractPacket { public static String packetName = "Request|MainmenuInvGet"; - public MainmenuInvGetPacket() { - } + public MainmenuInvGetPacket() {} @Override public Enum getType() { @@ -33,11 +31,6 @@ public final class MainmenuInvGetPacket extends AbstractPacket { return PacketHandler.REQUEST_PACKET; } - @Override - public CustomNpcsPermissions.Permission getPermission() { - return CustomNpcsPermissions.NPC_INVENTORY; - } - @Override public boolean needsNPC() { return true; @@ -45,13 +38,16 @@ public final class MainmenuInvGetPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { - } + public void sendData(ByteBuf out) throws IOException {} @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.inventory.writeEntityToNBT(new NBTTagCompound())); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvSavePacket.java index 86fc4ad78..78933373c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuInvSavePacket.java @@ -12,6 +12,7 @@ import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import java.io.IOException; @@ -19,7 +20,13 @@ import java.io.IOException; public final class MainmenuInvSavePacket extends AbstractPacket { public static String packetName = "Request|MainmenuInvSave"; - public MainmenuInvSavePacket() { } + private NBTTagCompound compound; + + public MainmenuInvSavePacket() {} + + public MainmenuInvSavePacket(NBTTagCompound compound) { + this.compound = compound; + } @Override public Enum getType() { @@ -43,12 +50,18 @@ public final class MainmenuInvSavePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + npc.inventory.readEntityFromNBT(ByteBufUtils.readNBT(in)); npc.updateAI = true; npc.updateClient = true; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsGetPacket.java index 4598e8f4d..4b0ab51ed 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsGetPacket.java @@ -20,8 +20,7 @@ import java.io.IOException; public final class MainmenuStatsGetPacket extends AbstractPacket { public static String packetName = "Request|MainmenuStatsGet"; - public MainmenuStatsGetPacket() { - } + public MainmenuStatsGetPacket() {} @Override public Enum getType() { @@ -33,11 +32,6 @@ public final class MainmenuStatsGetPacket extends AbstractPacket { return PacketHandler.REQUEST_PACKET; } - @Override - public CustomNpcsPermissions.Permission getPermission() { - return CustomNpcsPermissions.NPC_STATS; - } - @Override public boolean needsNPC() { return true; @@ -45,13 +39,16 @@ public final class MainmenuStatsGetPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { - } + public void sendData(ByteBuf out) throws IOException {} @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.stats.writeToNBT(new NBTTagCompound())); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsSavePacket.java index b840a8e3a..3ff26f5a5 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/mainmenu/MainmenuStatsSavePacket.java @@ -12,6 +12,7 @@ import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import java.io.IOException; @@ -19,7 +20,12 @@ import java.io.IOException; public final class MainmenuStatsSavePacket extends AbstractPacket { public static String packetName = "Request|MainmenuStatsSave"; - public MainmenuStatsSavePacket() { + private NBTTagCompound compound; + + public MainmenuStatsSavePacket() {} + + public MainmenuStatsSavePacket(NBTTagCompound compound) { + this.compound = compound; } @Override @@ -45,12 +51,17 @@ public final class MainmenuStatsSavePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + npc.stats.readToNBT(ByteBufUtils.readNBT(in)); npc.updateClient = true; } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataGetPacket.java index 978e0c4f1..557698999 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataGetPacket.java @@ -20,7 +20,14 @@ import java.io.IOException; public final class PlayerDataGetPacket extends AbstractPacket { public static String packetName = "Request|PlayerDataGet"; - public PlayerDataGetPacket() { + private EnumPlayerData playerData; + private String name; + + public PlayerDataGetPacket() {} + + public PlayerDataGetPacket(EnumPlayerData playerData, String name) { + this.playerData = playerData; + this.name = name; } @Override @@ -36,19 +43,28 @@ public final class PlayerDataGetPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Fix PlayerData + out.writeInt(playerData.ordinal()); + if(playerData != EnumPlayerData.Players) + ByteBufUtils.writeString(out, this.name); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); - if (EnumPlayerData.values().length <= id) return; + if (EnumPlayerData.values().length <= id) + return; + String name = null; EnumPlayerData datatype = EnumPlayerData.values()[id]; if (datatype != EnumPlayerData.Players) name = ByteBufUtils.readString(in); + NoppesUtilServer.sendPlayerData(datatype, (EntityPlayerMP) player, name); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataMapRegenPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataMapRegenPacket.java index ac0f488f3..dec497e86 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataMapRegenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataMapRegenPacket.java @@ -44,8 +44,12 @@ public final class PlayerDataMapRegenPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NoppesUtilServer.regenPlayerData((EntityPlayerMP) player); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemovePacket.java index 806bcb19d..19ede4793 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemovePacket.java @@ -9,17 +9,36 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.NoppesUtilServer; +import noppes.npcs.constants.EnumPlayerData; import java.io.IOException; public final class PlayerDataRemovePacket extends AbstractPacket { public static String packetName = "Request|PlayerDataRemove"; - public PlayerDataRemovePacket() { + private EnumPlayerData playerData; + private String name; + + private int type; + private String selected; + + public PlayerDataRemovePacket() {} + + public PlayerDataRemovePacket(EnumPlayerData playerData, String name, String selected) { + this.playerData = playerData; + this.name = name; + this.selected = selected; + } + + public PlayerDataRemovePacket(EnumPlayerData playerData, String name, int selectedType) { + this.playerData = playerData; + this.name = name; + this.type = selectedType; } @Override @@ -40,13 +59,23 @@ public final class PlayerDataRemovePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Fix Send + out.writeInt(playerData.ordinal()); + ByteBufUtils.writeString(out, this.name); + if(playerData == EnumPlayerData.Players){ + ByteBufUtils.writeString(out, this.selected); + } else { + out.writeInt(this.type); + } } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NoppesUtilServer.removePlayerData(in, (EntityPlayerMP) player); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java index 6b27b738c..7e0c61deb 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java @@ -29,8 +29,7 @@ public final class TagRemovePacket extends AbstractPacket { this.tagId = tagId; } - public TagRemovePacket() { - } + public TagRemovePacket() {} @Override public Enum getType() { @@ -60,14 +59,17 @@ public final class TagRemovePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; int id = in.readInt(); TagController.getInstance().delete(id); NoppesUtilServer.sendTagDataAll((EntityPlayerMP) player); NBTTagCompound comp = new NBTTagCompound(); - new Tag().writeNBT(comp); + (new Tag()).writeNBT(comp); GuiDataPacket.sendGuiData((EntityPlayerMP) player, comp); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java index 04b8482e1..c2f007259 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java @@ -61,8 +61,12 @@ public final class TagSavePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + Tag tag = new Tag(); tag.readNBT(ByteBufUtils.readNBT(in)); TagController.getInstance().saveTag(tag); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSetPacket.java index 764b6ad85..e28190fa1 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSetPacket.java @@ -24,7 +24,12 @@ import java.io.IOException; public final class TagSetPacket extends AbstractPacket { public static String packetName = "Request|TagSet"; - public TagSetPacket() { + private NBTTagCompound compound; + + public TagSetPacket() {} + + public TagSetPacket(NBTTagCompound compound) { + this.compound = compound; } @Override @@ -50,13 +55,16 @@ public final class TagSetPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Fix Tag Set + ByteBufUtils.writeNBT(out, this.compound); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.CLONER)) + return; + this.setTags(npc, in); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoriesGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoriesGetPacket.java index fac055385..44c8709ca 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoriesGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoriesGetPacket.java @@ -18,8 +18,7 @@ import java.io.IOException; public final class TransportCategoriesGetPacket extends AbstractPacket { public static String packetName = "Request|TransportCategoriesGet"; - public TransportCategoriesGetPacket() { - } + public TransportCategoriesGetPacket() {} @Override public Enum getType() { @@ -38,8 +37,12 @@ public final class TransportCategoriesGetPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NoppesUtilServer.sendTransportCategoryData((EntityPlayerMP) player); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoryRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoryRemovePacket.java index 34cc8bad8..379391328 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoryRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategoryRemovePacket.java @@ -26,8 +26,7 @@ public final class TransportCategoryRemovePacket extends AbstractPacket { this.categoryId = categoryId; } - public TransportCategoryRemovePacket() { - } + public TransportCategoryRemovePacket() {} @Override public Enum getType() { @@ -52,8 +51,12 @@ public final class TransportCategoryRemovePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); TransportController.getInstance().removeCategory(id); NoppesUtilServer.sendTransportCategoryData((EntityPlayerMP) player); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategorySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategorySavePacket.java index 0bc413d09..d443c1c5c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategorySavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportCategorySavePacket.java @@ -55,8 +55,12 @@ public final class TransportCategorySavePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + String name = ByteBufUtils.readString(in); int id = in.readInt(); TransportController.getInstance().saveCategory(name, id); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportGetLocationPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportGetLocationPacket.java index ec3dd8b15..dbcbe2bd9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportGetLocationPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportGetLocationPacket.java @@ -46,9 +46,15 @@ public final class TransportGetLocationPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; - if (npc.advanced.role != EnumRoleType.Transporter) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + if (npc.advanced.role != EnumRoleType.Transporter) + return; + RoleTransporter role = (RoleTransporter) npc.roleInterface; if (role.hasTransport()) { GuiDataPacket.sendGuiData((EntityPlayerMP) player, role.getLocation().writeNBT()); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportRemovePacket.java index c85a45226..fe9e12922 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportRemovePacket.java @@ -53,8 +53,12 @@ public final class TransportRemovePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); TransportLocation loc = TransportController.getInstance().removeLocation(id); if (loc != null) diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportSavePacket.java index bb87d304f..6fe84ed05 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportSavePacket.java @@ -16,10 +16,12 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.constants.EnumJobType; +import noppes.npcs.constants.EnumRoleType; import noppes.npcs.controllers.ServerCloneController; import noppes.npcs.controllers.TransportController; import noppes.npcs.controllers.data.TransportLocation; import noppes.npcs.roles.JobSpawner; +import noppes.npcs.roles.RoleTransporter; import java.io.IOException; @@ -34,8 +36,7 @@ public final class TransportSavePacket extends AbstractPacket { this.compound = compound; } - public TransportSavePacket() { - } + public TransportSavePacket() {} @Override public Enum getType() { @@ -62,28 +63,23 @@ public final class TransportSavePacket extends AbstractPacket { public void sendData(ByteBuf out) throws IOException { out.writeInt(categoryId); ByteBufUtils.writeNBT(out, compound); - - // TODO: FIX TRANSPORT SAVE } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int cat = in.readInt(); - NBTTagCompound nbt = ByteBufUtils.readNBT(in); - TransportLocation location = TransportController.getInstance().saveLocation(cat, nbt, npc); - if (location != null) { - if (npc.advanced.job != EnumJobType.Spawner) return; - JobSpawner job = (JobSpawner) npc.jobInterface; - boolean useServerClone = in.readBoolean(); - if (useServerClone) { - NBTTagCompound compound = ServerCloneController.Instance.getCloneData(null, ByteBufUtils.readString(in), in.readInt()); - job.setJobCompound(in.readInt(), compound); - } else { - job.setJobCompound(in.readInt(), ByteBufUtils.readNBT(in)); - } - GuiDataPacket.sendGuiData((EntityPlayerMP) player, job.getTitles()); + TransportLocation location = TransportController.getInstance().saveLocation(cat, ByteBufUtils.readNBT(in), npc); + if(location != null){ + if(npc.advanced.role != EnumRoleType.Transporter) + return; + RoleTransporter role = (RoleTransporter) npc.roleInterface; + role.setTransport(location); } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportsGetPacket.java index 01d3ec21f..523bd66f0 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportsGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/transport/TransportsGetPacket.java @@ -18,7 +18,12 @@ import java.io.IOException; public final class TransportsGetPacket extends AbstractPacket { public static String packetName = "Request|TransportsGet"; - public TransportsGetPacket() { + private int id; + + public TransportsGetPacket() {} + + public TransportsGetPacket(int id) { + this.id = id; } @Override @@ -34,12 +39,17 @@ public final class TransportsGetPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.id); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); NoppesUtilServer.sendTransportData((EntityPlayerMP) player, id); } diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 4e1e4f309..3b4ddfbfd 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -546,7 +546,6 @@ public class NoppesUtilServer { playerdata.setNBT(new NBTTagCompound()); sendPlayerData(type, player, name); playerdata.save(); - return; } } diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index a6f9f18f4..71df5a2ca 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -456,142 +456,6 @@ public class PacketHandlerServer{ NoppesUtilServer.setEditingQuest(player,quest); player.openGui(CustomNpcs.instance, gui , player.worldObj, 0, 0, 0); } - else if(type == EnumPacketServer.TransportCategoriesGet){ - NoppesUtilServer.sendTransportCategoryData(player); - } - else if(type == EnumPacketServer.TransportCategorySave){ - TransportController.getInstance().saveCategory(ByteBufUtils.readString(buffer), buffer.readInt()); - } - else if(type == EnumPacketServer.TransportCategoryRemove){ - TransportController.getInstance().removeCategory(buffer.readInt()); - NoppesUtilServer.sendTransportCategoryData(player); - } - else if(type == EnumPacketServer.TransportRemove){ - int id = buffer.readInt(); - TransportLocation loc = TransportController.getInstance().removeLocation(id); - if(loc != null) - NoppesUtilServer.sendTransportData(player,loc.category.id); - } - else if(type == EnumPacketServer.TransportsGet){ - NoppesUtilServer.sendTransportData(player,buffer.readInt()); - } - else if(type == EnumPacketServer.TransportSave){ - int cat = buffer.readInt(); - TransportLocation location = TransportController.getInstance().saveLocation(cat, ByteBufUtils.readNBT(buffer), npc); - if(location != null){ - if(npc.advanced.role != EnumRoleType.Transporter) - return; - RoleTransporter role = (RoleTransporter) npc.roleInterface; - role.setTransport(location); - } - } - else if(type == EnumPacketServer.TransportGetLocation){ - if(npc.advanced.role != EnumRoleType.Transporter) - return; - RoleTransporter role = (RoleTransporter) npc.roleInterface; - if(role.hasTransport()){ - GuiDataPacket.sendGuiData(player, role.getLocation().writeNBT()); - ScrollSelectedPacket.setSelectedList(player, role.getLocation().category.title); - } - } - else if(type == EnumPacketServer.FactionSet){ - npc.setFaction(buffer.readInt()); - } - else if(type == EnumPacketServer.FactionSave){ - Faction faction = new Faction(); - faction.readNBT(ByteBufUtils.readNBT(buffer)); - FactionController.getInstance().saveFaction(faction); - NoppesUtilServer.sendFactionDataAll(player); - NBTTagCompound compound = new NBTTagCompound(); - faction.writeNBT(compound); - GuiDataPacket.sendGuiData(player, compound); - } - else if(type == EnumPacketServer.FactionRemove){ - FactionController.getInstance().delete(buffer.readInt()); - NoppesUtilServer.sendFactionDataAll(player); - NBTTagCompound compound = new NBTTagCompound(); - (new Faction()).writeNBT(compound); - GuiDataPacket.sendGuiData(player, compound); - } - else if(type == EnumPacketServer.TagSet){ - this.setTags(npc,buffer); - } - else if(type == EnumPacketServer.TagSave){ - Tag tag = new Tag(); - tag.readNBT(ByteBufUtils.readNBT(buffer)); - TagController.getInstance().saveTag(tag); - NoppesUtilServer.sendTagDataAll(player); - NBTTagCompound compound = new NBTTagCompound(); - tag.writeNBT(compound); - GuiDataPacket.sendGuiData(player, compound); - } - else if(type == EnumPacketServer.TagRemove){ - TagController.getInstance().delete(buffer.readInt()); - NoppesUtilServer.sendTagDataAll(player); - NBTTagCompound compound = new NBTTagCompound(); - (new Tag()).writeNBT(compound); - GuiDataPacket.sendGuiData(player, compound); - } - else if(type == EnumPacketServer.PlayerDataGet){ - int id = buffer.readInt(); - if(EnumPlayerData.values().length <= id) - return; - String name = null; - EnumPlayerData datatype = EnumPlayerData.values()[id]; - if(datatype != EnumPlayerData.Players) - name = ByteBufUtils.readString(buffer); - NoppesUtilServer.sendPlayerData(datatype,player,name); - } - else if(type == EnumPacketServer.PlayerDataRemove){ - NoppesUtilServer.removePlayerData(buffer,player); - } - else if(type == EnumPacketServer.PlayerDataMapRegen){ - NoppesUtilServer.regenPlayerData(player); - } - else if(type == EnumPacketServer.MainmenuDisplayGet){ - GuiDataPacket.sendGuiData(player, npc.display.writeToNBT(new NBTTagCompound())); - } - else if(type == EnumPacketServer.MainmenuDisplaySave){ - npc.display.readToNBT(ByteBufUtils.readNBT(buffer)); - npc.updateClient = true; - } - else if(type == EnumPacketServer.MainmenuStatsGet){ - GuiDataPacket.sendGuiData(player, npc.stats.writeToNBT(new NBTTagCompound())); - } - else if(type == EnumPacketServer.MainmenuStatsSave){ - npc.stats.readToNBT(ByteBufUtils.readNBT(buffer)); - npc.updateClient = true; - } - else if(type == EnumPacketServer.MainmenuInvGet){ - GuiDataPacket.sendGuiData(player, npc.inventory.writeEntityToNBT(new NBTTagCompound())); - } - else if(type == EnumPacketServer.MainmenuInvSave){ - npc.inventory.readEntityFromNBT(ByteBufUtils.readNBT(buffer)); - npc.updateAI = true; - npc.updateClient = true; - } - else if(type == EnumPacketServer.MainmenuAIGet){ - GuiDataPacket.sendGuiData(player, npc.ai.writeToNBT(new NBTTagCompound())); - } - else if(type == EnumPacketServer.MainmenuAISave){ - npc.ai.readToNBT(ByteBufUtils.readNBT(buffer)); - npc.setHealth(npc.getMaxHealth()); - npc.updateAI = true; - npc.updateClient = true; - } - else if(type == EnumPacketServer.MainmenuAdvancedGet){ - GuiDataPacket.sendGuiData(player, npc.advanced.writeToNBT(new NBTTagCompound())); - } - else if(type == EnumPacketServer.MainmenuAdvancedSave){ - npc.advanced.readToNBT(ByteBufUtils.readNBT(buffer)); - npc.updateAI = true; - npc.updateClient = true; - } - else if(type == EnumPacketServer.MainmenuAdvancedMarkData){ - MarkData data = MarkData.get(npc); - data.setNBT(ByteBufUtils.readNBT(buffer)); - data.syncClients(); - } else if(type == EnumPacketServer.JobSave){ NBTTagCompound original = npc.jobInterface.writeToNBT(new NBTTagCompound()); NBTTagCompound compound = ByteBufUtils.readNBT(buffer); @@ -880,10 +744,6 @@ public class PacketHandlerServer{ compound.setTag("ShortTags", validTagList); GuiDataPacket.sendGuiData(player, compound); } - else if (type == EnumPacketServer.TagSet) { - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - this.setTags(npc,buffer); - } else if (type != EnumPacketServer.NpcTagsGet && type != EnumPacketServer.TagsGet) { warn(player, "WE 2 tried todo something with the wrong tool, probably a hacker"); } diff --git a/src/main/java/noppes/npcs/client/gui/GuiNPCLinesEdit.java b/src/main/java/noppes/npcs/client/gui/GuiNPCLinesEdit.java index dbd63a655..9bf1a7ab2 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNPCLinesEdit.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNPCLinesEdit.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedGetPacket; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -22,7 +25,8 @@ public class GuiNPCLinesEdit extends GuiNPCInterface2 implements IGuiData, ISubG { super(npc); this.lines = lines; - Client.sendData(EnumPacketServer.MainmenuAdvancedGet); + + PacketClient.sendClient(new MainmenuAdvancedGetPacket()); } public void initGui() @@ -73,7 +77,8 @@ public class GuiNPCLinesEdit extends GuiNPCInterface2 implements IGuiData, ISubG public void save() { saveLines(); - Client.sendData(EnumPacketServer.MainmenuAdvancedSave, npc.advanced.writeToNBT(new NBTTagCompound())); + + PacketClient.sendClient(new MainmenuAdvancedSavePacket(npc.advanced.writeToNBT(new NBTTagCompound()))); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/GuiNPCTransportCategoryEdit.java b/src/main/java/noppes/npcs/client/gui/GuiNPCTransportCategoryEdit.java index 247110b02..4683d67f1 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNPCTransportCategoryEdit.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNPCTransportCategoryEdit.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.transport.TransportCategoriesGetPacket; +import kamkeel.npcs.network.packets.request.transport.TransportCategorySavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import noppes.npcs.client.Client; @@ -30,7 +33,7 @@ public class GuiNPCTransportCategoryEdit extends GuiNPCInterface super.initGui(); this.addTextField(new GuiNpcTextField(1, this, this.fontRendererObj, width / 2 - 40, 100, 140, 20, name)); addLabel(new GuiNpcLabel(1,"Title:", width / 2 - 100+4, 105, 0xffffff)); - + this.addButton(new GuiNpcButton(2, width / 2 - 100, 210,98, 20, "gui.back")); this.addButton(new GuiNpcButton(3, width / 2 +2, 210,98, 20, "Save")); } @@ -47,25 +50,20 @@ public class GuiNPCTransportCategoryEdit extends GuiNPCInterface if(id == 2) { NoppesUtil.openGUI(player, parent); - Client.sendData(EnumPacketServer.TransportCategoriesGet); + PacketClient.sendClient(new TransportCategoriesGetPacket()); } if(id == 3) { save(); NoppesUtil.openGUI(player, parent); - Client.sendData(EnumPacketServer.TransportCategoriesGet); + PacketClient.sendClient(new TransportCategoriesGetPacket()); } } public void save() { String name = getTextField(1).getText(); if(name.trim().isEmpty()) return; - Client.sendData(EnumPacketServer.TransportCategorySave,name,id); - } -// @Override -// public void drawDefaultBackground() -// { -// drawBackground(0); -// } + PacketClient.sendClient(new TransportCategorySavePacket(name, id)); + } } diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiClonerNPCTags.java b/src/main/java/noppes/npcs/client/gui/SubGuiClonerNPCTags.java index 4ebbc086c..663569cc5 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiClonerNPCTags.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiClonerNPCTags.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.tags.TagSetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.nbt.NBTTagCompound; @@ -146,7 +148,7 @@ public class SubGuiClonerNPCTags extends SubGuiInterface implements IGuiData,ISc GuiNpcMobSpawnerAdd.tagsCompound = UUIDTagList; tagCompound.setTag("TagNames",tagList); - Client.sendData(EnumPacketServer.TagSet, tagCompound); + PacketClient.sendClient(new TagSetPacket(tagCompound)); } public void keyTyped(char c, int i) diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java index e8f9069fa..e21bf73b6 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.advanced; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.faction.FactionSetPacket; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -15,7 +18,7 @@ public class GuiNPCFactionSetup extends GuiNPCInterface2 implements IScrollData, { private GuiCustomScroll scrollFactions; private HashMap data = new HashMap(); - + public GuiNPCFactionSetup(EntityNPCInterface npc) { super(npc); @@ -34,7 +37,7 @@ public class GuiNPCFactionSetup extends GuiNPCInterface2 implements IScrollData, this.addLabel(new GuiNpcLabel(12, "faction.ondeath", guiLeft + 4, guiTop + 69)); addButton(new GuiNpcButton(12, guiLeft + 90, guiTop + 64, 80, 20, "faction.points")); - + if(scrollFactions == null){ scrollFactions = new GuiCustomScroll(this,0,0); scrollFactions.setSize(180, 200); @@ -59,41 +62,41 @@ public class GuiNPCFactionSetup extends GuiNPCInterface2 implements IScrollData, if(button.id == 12) setSubGui(new SubGuiNpcFactionOptions(npc.advanced.factions)); } - + } - + @Override - public void setData(Vector list, HashMap data) + public void setData(Vector list, HashMap data) { String name = npc.getFaction().name; this.data = data; scrollFactions.setList(list); - + if(name != null) setSelected(name); } - + public void mouseClicked(int i, int j, int k) { super.mouseClicked(i, j, k); if(k == 0 && scrollFactions != null) scrollFactions.mouseClicked(i, j, k); } - + @Override public void setSelected(String selected) { scrollFactions.setSelected(selected); } - + @Override public void customScrollClicked(int i, int j, int k, GuiCustomScroll guiCustomScroll) { if(guiCustomScroll.id == 0) { - Client.sendData(EnumPacketServer.FactionSet, data.get(scrollFactions.getSelected())); + PacketClient.sendClient(new FactionSetPacket(data.get(scrollFactions.getSelected()))); } } - + public void save() { - Client.sendData(EnumPacketServer.MainmenuAdvancedSave, npc.advanced.writeToNBT(new NBTTagCompound())); - } + PacketClient.sendClient(new MainmenuAdvancedSavePacket(npc.advanced.writeToNBT(new NBTTagCompound()))); + } } diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCLinesMenu.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCLinesMenu.java index 48ab6be4e..cbc4d384f 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCLinesMenu.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCLinesMenu.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.advanced; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -13,7 +15,7 @@ import noppes.npcs.constants.EnumPacketServer; import noppes.npcs.entity.EntityNPCInterface; public class GuiNPCLinesMenu extends GuiNPCInterface2 { - + public GuiNPCLinesMenu(EntityNPCInterface npc) { super(npc); } @@ -54,10 +56,10 @@ public class GuiNPCLinesMenu extends GuiNPCInterface2 { npc.advanced.orderedLines = !((GuiNpcButtonYesNo)guibutton).getBoolean(); } } - + @Override public void save() { - Client.sendData(EnumPacketServer.MainmenuAdvancedSave, npc.advanced.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new MainmenuAdvancedSavePacket(npc.advanced.writeToNBT(new NBTTagCompound()))); } diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCMarks.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCMarks.java index 1be2ab503..da74e67c5 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCMarks.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCMarks.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.advanced; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedGetPacket; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedMarkDataPacket; import net.minecraft.client.gui.GuiButton; import noppes.npcs.client.Client; import noppes.npcs.client.gui.SubGuiColorSelector; @@ -78,7 +81,7 @@ public class GuiNPCMarks extends GuiNPCInterface2 implements ISubGuiListener { @Override public void save() { - Client.sendData(EnumPacketServer.MainmenuAdvancedMarkData, data.getNBT()); + PacketClient.sendClient(new MainmenuAdvancedMarkDataPacket(data.getNBT())); } } diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCSoundsMenu.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCSoundsMenu.java index 2634b9ddf..d397c6354 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCSoundsMenu.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCSoundsMenu.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.advanced; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -77,7 +79,7 @@ public class GuiNPCSoundsMenu extends GuiNPCInterface2 implements ITextfieldLis @Override public void save() { - Client.sendData(EnumPacketServer.MainmenuAdvancedSave, npc.advanced.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new MainmenuAdvancedSavePacket(npc.advanced.writeToNBT(new NBTTagCompound()))); } } diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCTagSetup.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCTagSetup.java index d3c04b74f..8b5306659 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCTagSetup.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCTagSetup.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.advanced; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.tags.TagSetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -120,7 +122,7 @@ public class GuiNPCTagSetup extends GuiNPCInterface2 implements IScrollData,ICus tagList.appendTag(new NBTTagString(string)); } tagCompound.setTag("TagNames",tagList); - Client.sendData(EnumPacketServer.TagSet, tagCompound); + PacketClient.sendClient(new TagSetPacket(tagCompound)); } public void keyTyped(char c, int i) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java index fb206e9b4..c8de2f07b 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.faction.FactionRemovePacket; +import kamkeel.npcs.network.packets.request.faction.FactionSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; @@ -106,7 +109,7 @@ public class GuiNPCManageFactions extends GuiNPCInterface2 implements IScrollDat NBTTagCompound compound = new NBTTagCompound(); faction.writeNBT(compound); - Client.sendData(EnumPacketServer.FactionSave, compound); + PacketClient.sendClient(new FactionSavePacket(compound)); } if(button.id == 1){ if(data.containsKey(scrollFactions.getSelected())) { @@ -205,7 +208,7 @@ public class GuiNPCManageFactions extends GuiNPCInterface2 implements IScrollDat NBTTagCompound compound = new NBTTagCompound(); faction.writeNBT(compound); - Client.sendData(EnumPacketServer.FactionSave, compound); + PacketClient.sendClient(new FactionSavePacket(compound)); } } @@ -253,7 +256,7 @@ public class GuiNPCManageFactions extends GuiNPCInterface2 implements IScrollDat return; if(id == 1) { if(data.containsKey(scrollFactions.getSelected())) { - Client.sendData(EnumPacketServer.FactionRemove, data.get(selected)); + PacketClient.sendClient(new FactionRemovePacket(data.get(selected))); scrollFactions.clear(); faction = new Faction(); initGui(); diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java index d36ed526e..6844dd881 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.tags.TagRemovePacket; +import kamkeel.npcs.network.packets.request.tags.TagSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -104,11 +107,11 @@ public class GuiNPCManageTags extends GuiNPCInterface2 implements IScrollData,IC NBTTagCompound compound = new NBTTagCompound(); tag.writeNBT(compound); - Client.sendData(EnumPacketServer.TagSave, compound); + PacketClient.sendClient(new TagSavePacket(compound)); } if(button.id == 1){ if(data.containsKey(scrollTags.getSelected())) { - Client.sendData(EnumPacketServer.TagRemove, data.get(selected)); + PacketClient.sendClient(new TagRemovePacket(data.get(selected))); scrollTags.clear(); tag = new Tag(); initGui(); @@ -163,7 +166,7 @@ public class GuiNPCManageTags extends GuiNPCInterface2 implements IScrollData,IC NBTTagCompound compound = new NBTTagCompound(); tag.writeNBT(compound); - Client.sendData(EnumPacketServer.TagSave, compound); + PacketClient.sendClient(new TagSavePacket(compound)); } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java index 78d04026e..5948b91d8 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java @@ -1,5 +1,10 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.transport.TransportCategoriesGetPacket; +import kamkeel.npcs.network.packets.request.transport.TransportCategoryRemovePacket; +import kamkeel.npcs.network.packets.request.transport.TransportRemovePacket; +import kamkeel.npcs.network.packets.request.transport.TransportsGetPacket; import net.minecraft.client.gui.GuiButton; import noppes.npcs.client.Client; import noppes.npcs.client.NoppesUtil; @@ -24,7 +29,7 @@ public class GuiNPCManageTransporters extends GuiNPCInterface implements IScroll public GuiNPCManageTransporters(EntityNPCInterface npc) { super(npc); - Client.sendData(EnumPacketServer.TransportCategoriesGet); + PacketClient.sendClient(new TransportCategoriesGetPacket()); drawDefaultBackground = false; title = "Transport Categories"; data = new HashMap(); @@ -36,7 +41,7 @@ public class GuiNPCManageTransporters extends GuiNPCInterface implements IScroll Vector list = new Vector(); slot = new GuiNPCStringSlot(list,this,false,18); slot.registerScrollButtons(4, 5); - + this.addButton(new GuiNpcButton(0,width / 2 - 100, height - 52, 65, 20, "gui.add")); this.addButton(new GuiNpcButton(1,width / 2 - 33 , height - 52, 65, 20, "selectServer.edit")); @@ -63,7 +68,7 @@ public class GuiNPCManageTransporters extends GuiNPCInterface implements IScroll if(selectCategory){ NoppesUtil.openGUI(player, new GuiNPCTransportCategoryEdit(npc, this, "", -1)); }else{ - + } } if(id == 1) @@ -73,7 +78,7 @@ public class GuiNPCManageTransporters extends GuiNPCInterface implements IScroll if(selectCategory){ NoppesUtil.openGUI(player, new GuiNPCTransportCategoryEdit(npc, this,slot.selected, data.get(slot.selected))); }else{ - + } } if(id == 4) @@ -84,7 +89,7 @@ public class GuiNPCManageTransporters extends GuiNPCInterface implements IScroll }else{ title = "Transport Categories"; selectCategory = true; - Client.sendData(EnumPacketServer.TransportCategoriesGet); + PacketClient.sendClient(new TransportCategoriesGetPacket()); initGui(); } } @@ -94,10 +99,10 @@ public class GuiNPCManageTransporters extends GuiNPCInterface implements IScroll return; save(); if(selectCategory){ - Client.sendData(EnumPacketServer.TransportCategoryRemove,data.get(slot.selected)); + PacketClient.sendClient(new TransportCategoryRemovePacket(data.get(slot.selected))); } else{ - Client.sendData(EnumPacketServer.TransportRemove,data.get(slot.selected)); + PacketClient.sendClient(new TransportRemovePacket(data.get(slot.selected))); } initGui(); } @@ -112,10 +117,10 @@ public class GuiNPCManageTransporters extends GuiNPCInterface implements IScroll if(selectCategory){ selectCategory = false; title = "TransportLocations"; - Client.sendData(EnumPacketServer.TransportsGet,data.get(slot.selected)); + PacketClient.sendClient(new TransportsGetPacket(data.get(slot.selected))); initGui(); } - + } public void save() { } @@ -129,7 +134,7 @@ public class GuiNPCManageTransporters extends GuiNPCInterface implements IScroll @Override public void setSelected(String selected) { // TODO Auto-generated method stub - + } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManagePlayerData.java b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManagePlayerData.java index 8dfa283af..d83327183 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManagePlayerData.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManagePlayerData.java @@ -1,5 +1,9 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.playerdata.PlayerDataGetPacket; +import kamkeel.npcs.network.packets.request.playerdata.PlayerDataMapRegenPacket; +import kamkeel.npcs.network.packets.request.playerdata.PlayerDataRemovePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; @@ -26,7 +30,7 @@ public class GuiNpcManagePlayerData extends GuiNPCInterface2 implements IScrollD public GuiNpcManagePlayerData(EntityNPCInterface npc) { super(npc); - Client.sendData(EnumPacketServer.PlayerDataGet,selection); + PacketClient.sendClient(new PlayerDataGetPacket(selection, "")); } public void initGui() @@ -115,9 +119,9 @@ public class GuiNpcManagePlayerData extends GuiNPCInterface2 implements IScrollD { if(selected != null){ if(selection == EnumPlayerData.Players) - Client.sendData(EnumPacketServer.PlayerDataRemove, selection,selectedPlayer,selected); + PacketClient.sendClient(new PlayerDataRemovePacket(selection, selectedPlayer, selected)); else - Client.sendData(EnumPacketServer.PlayerDataRemove, selection,selectedPlayer,data.get(selected)); + PacketClient.sendClient(new PlayerDataRemovePacket(selection, selectedPlayer, data.get(selected))); data.clear(); } selected = null; @@ -130,8 +134,9 @@ public class GuiNpcManagePlayerData extends GuiNPCInterface2 implements IScrollD initButtons(); scroll.clear(); data.clear(); - Client.sendData(EnumPacketServer.PlayerDataGet, selection, selectedPlayer); - selected = null; + + PacketClient.sendClient(new PlayerDataGetPacket(selection, selectedPlayer)); + selected = null; } } if(id == 7){ @@ -169,7 +174,7 @@ public class GuiNpcManagePlayerData extends GuiNPCInterface2 implements IScrollD @Override public void confirmClicked(boolean confirm, int id){ if(confirm){ - Client.sendData(EnumPacketServer.PlayerDataMapRegen); + PacketClient.sendClient(new PlayerDataMapRegenPacket()); close(); } else diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCInv.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCInv.java index 4f44f52da..f2ae90d16 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCInv.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCInv.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.mainmenu; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuInvGetPacket; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuInvSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; @@ -30,7 +33,7 @@ public class GuiNPCInv extends GuiContainerNPCInterface2 implements IGuiData, IT this.container = container; ySize = 200; slot = getResource("slot.png"); - Client.sendData(EnumPacketServer.MainmenuInvGet); + PacketClient.sendClient(new MainmenuInvGetPacket()); } public void initGui() @@ -178,8 +181,8 @@ public class GuiNPCInv extends GuiContainerNPCInterface2 implements IGuiData, IT npc.inventory.dropchance = chances; npc.inventory.minExp = getTextField(0).getInteger(); npc.inventory.maxExp = getTextField(1).getInteger(); - Client.sendData(EnumPacketServer.MainmenuInvSave, npc.inventory.writeEntityToNBT(new NBTTagCompound())); - } + PacketClient.sendClient(new MainmenuInvSavePacket(npc.inventory.writeEntityToNBT(new NBTTagCompound()))); + } @Override public void setGuiData(NBTTagCompound compound) { diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java index cf3b0070f..fcb110df1 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.mainmenu; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAISavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.DataAI; @@ -173,7 +175,7 @@ public class GuiNpcAI extends GuiNPCInterface2 implements ITextfieldListener, IG @Override public void save() { - Client.sendData(EnumPacketServer.MainmenuAISave, ai.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new MainmenuAISavePacket(ai.writeToNBT(new NBTTagCompound()))); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java index d05e8a0a5..0ac29a0e1 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.mainmenu; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedGetPacket; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NoppesStringUtils; @@ -22,8 +25,9 @@ public class GuiNpcAdvanced extends GuiNPCInterface2 implements IGuiData public GuiNpcAdvanced(EntityNPCInterface npc) { super(npc, 4); - Client.sendData(EnumPacketServer.MainmenuAdvancedGet); + PacketClient.sendClient(new MainmenuAdvancedGetPacket()); } + @Override public void initGui(){ super.initGui(); @@ -152,7 +156,7 @@ public class GuiNpcAdvanced extends GuiNPCInterface2 implements IGuiData @Override public void save() { if(hasChanges){ - Client.sendData(EnumPacketServer.MainmenuAdvancedSave, npc.advanced.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new MainmenuAdvancedSavePacket(npc.advanced.writeToNBT(new NBTTagCompound()))); hasChanges = false; } } diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java index eff43fae5..ee7dc49aa 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java @@ -2,6 +2,9 @@ package noppes.npcs.client.gui.mainmenu; import com.mojang.authlib.GameProfile; import kamkeel.npcs.addon.client.GeckoAddonClient; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuDisplayGetPacket; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuDisplaySavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.DataDisplay; @@ -25,7 +28,7 @@ public class GuiNpcDisplay extends GuiNPCInterface2 implements ITextfieldListene public GuiNpcDisplay(EntityNPCInterface npc) { super(npc,1); display = npc.display; - Client.sendData(EnumPacketServer.MainmenuDisplayGet); + PacketClient.sendClient(new MainmenuDisplayGetPacket()); } public void initGui(){ @@ -209,11 +212,11 @@ public class GuiNpcDisplay extends GuiNPCInterface2 implements ITextfieldListene public void save() { if(display.skinType == 1) display.loadProfile(); + npc.textureLocation = null; mc.renderGlobal.onEntityDestroy(npc); mc.renderGlobal.onEntityCreate(npc); - Client.sendData(EnumPacketServer.MainmenuDisplaySave, display.writeToNBT(new NBTTagCompound())); - + PacketClient.sendClient(new MainmenuDisplaySavePacket(display.writeToNBT(new NBTTagCompound()))); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java index 7ea0de8f8..8e24300ac 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java @@ -1,6 +1,9 @@ package noppes.npcs.client.gui.mainmenu; import kamkeel.npcs.addon.client.DBCClient; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuStatsGetPacket; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuStatsSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.nbt.NBTTagCompound; @@ -16,7 +19,8 @@ public class GuiNpcStats extends GuiNPCInterface2 implements ITextfieldListener, public GuiNpcStats(EntityNPCInterface npc) { super(npc,2); stats = npc.stats; - Client.sendData(EnumPacketServer.MainmenuStatsGet); + + PacketClient.sendClient(new MainmenuStatsGetPacket()); } @Override @@ -150,7 +154,7 @@ public class GuiNpcStats extends GuiNPCInterface2 implements ITextfieldListener, } @Override public void save() { - Client.sendData(EnumPacketServer.MainmenuStatsSave, stats.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new MainmenuStatsSavePacket(stats.writeToNBT(new NBTTagCompound()))); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTransporter.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTransporter.java index c093be695..7608318d4 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTransporter.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTransporter.java @@ -1,5 +1,9 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.transport.TransportCategoriesGetPacket; +import kamkeel.npcs.network.packets.request.transport.TransportGetLocationPacket; +import kamkeel.npcs.network.packets.request.transport.TransportSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -15,25 +19,25 @@ public class GuiNpcTransporter extends GuiNPCInterface2 implements IScrollData, private GuiCustomScroll scroll; public TransportLocation location = new TransportLocation(); private HashMap data = new HashMap(); - + public GuiNpcTransporter(EntityNPCInterface npc){ - super(npc); - Client.sendData(EnumPacketServer.TransportCategoriesGet); - Client.sendData(EnumPacketServer.TransportGetLocation); + super(npc); + PacketClient.sendClient(new TransportCategoriesGetPacket()); + PacketClient.sendClient(new TransportGetLocationPacket()); } - + public void initGui(){ super.initGui(); Vector list = new Vector(); list.addAll(data.keySet()); - + if(scroll == null){ scroll = new GuiCustomScroll(this,0); scroll.setSize(143, 208); } scroll.guiLeft = guiLeft + 214; scroll.guiTop = guiTop + 4; - + addScroll(scroll); addLabel(new GuiNpcLabel(0,"gui.name", guiLeft + 4, height + 8)); addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft + 60, guiTop + 3, 140, 20, location.name)); @@ -45,7 +49,7 @@ public class GuiNpcTransporter extends GuiNPCInterface2 implements IScrollData, GuiNpcButton button = (GuiNpcButton) guibutton; if(button.id == 0){ location.type = button.getValue(); - } + } } @Override public void save() { @@ -54,14 +58,14 @@ public class GuiNpcTransporter extends GuiNPCInterface2 implements IScrollData, String name = getTextField(0).getText(); if(!name.isEmpty()) location.name = name; - + location.posX = player.posX; location.posY = player.posY; location.posZ = player.posZ; location.dimension = player.dimension; - + int cat = data.get(scroll.getSelected()); - Client.sendData(EnumPacketServer.TransportSave,cat, location.writeNBT()); + PacketClient.sendClient(new TransportSavePacket(cat, location.writeNBT())); } @Override public void setData(Vector list, HashMap data) { diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 2569faa0c..803240be3 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -1,6 +1,8 @@ package noppes.npcs.constants; +import net.minecraft.client.gui.Gui; import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.client.gui.custom.components.CustomGuiButton; public enum EnumPacketServer { NPCDelete(CustomNpcsPermissions.NPC_DELETE, true), @@ -9,18 +11,11 @@ public enum EnumPacketServer { SpawnMob(CustomNpcsPermissions.SPAWNER_MOB), MobSpawner(CustomNpcsPermissions.SPAWNER_CREATE), - MainmenuAISave(CustomNpcsPermissions.NPC_AI,true), MainmenuAIGet(true), - MainmenuInvSave(CustomNpcsPermissions.NPC_INVENTORY, true), MainmenuInvGet(true), - MainmenuStatsSave(CustomNpcsPermissions.NPC_STATS, true), MainmenuStatsGet(true), - - MainmenuDisplaySave(CustomNpcsPermissions.NPC_DISPLAY, true), MainmenuDisplayGet(true), ModelDataSave(CustomNpcsPermissions.NPC_DISPLAY, true), - MainmenuAdvancedSave(CustomNpcsPermissions.NPC_ADVANCED,true), MainmenuAdvancedGet(true), MainmenuAdvancedMarkData(CustomNpcsPermissions.NPC_ADVANCED,true), - FactionSet(CustomNpcsPermissions.NPC_ADVANCED, true), - TagSet(CustomNpcsPermissions.NPC_ADVANCED, true), - TransportSave(CustomNpcsPermissions.NPC_ADVANCED, true), - TransformSave(CustomNpcsPermissions.NPC_ADVANCED, true), TransformGet(true), + MainmenuAdvancedMarkData(CustomNpcsPermissions.NPC_ADVANCED,true), + + TransformSave(CustomNpcsPermissions.NPC_ADVANCED, true), TransformGet(true), TransformLoad(CustomNpcsPermissions.NPC_ADVANCED, true), TraderMarketSave(CustomNpcsPermissions.NPC_ADVANCED, true), JobSave(CustomNpcsPermissions.NPC_ADVANCED, true), JobGet(true), @@ -51,20 +46,15 @@ public enum EnumPacketServer { ScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), ScriptDataGet(true), EventScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), EventScriptDataGet(true), - PlayerDataRemove(CustomNpcsPermissions.GLOBAL_PLAYERDATA), - PlayerDataMapRegen(CustomNpcsPermissions.GLOBAL_PLAYERDATA), - DialogCategoriesGet, DialogsGetFromDialog, DialogsGet, DialogGet, DialogRemove(CustomNpcsPermissions.GLOBAL_DIALOG), - TransportCategoryRemove(CustomNpcsPermissions.GLOBAL_TRANSPORT), TransportGetLocation(true), - TransportRemove(CustomNpcsPermissions.GLOBAL_TRANSPORT), TransportsGet, - TransportCategorySave(CustomNpcsPermissions.GLOBAL_TRANSPORT), TransportCategoriesGet, - FactionRemove(CustomNpcsPermissions.GLOBAL_FACTION), - FactionSave(CustomNpcsPermissions.GLOBAL_FACTION), FactionsGet, FactionGet, - TagRemove(CustomNpcsPermissions.GLOBAL_TAG), - TagSave(CustomNpcsPermissions.GLOBAL_TAG), TagsGet, TagGet, NpcTagsGet, + FactionsGet, + FactionGet, + TagsGet, + TagGet, + NpcTagsGet, QuestCategoriesGet, QuestRemove(CustomNpcsPermissions.GLOBAL_QUEST), QuestRewardSave(CustomNpcsPermissions.GLOBAL_QUEST), @@ -77,9 +67,8 @@ public enum EnumPacketServer { AnimationsGet, AnimationGet, AnimationRemove(CustomNpcsPermissions.GLOBAL_ANIMATION), AnimationSave(CustomNpcsPermissions.GLOBAL_ANIMATION), - QuestOpenGui, PlayerDataGet, QuestLogToServer, PartyLogToServer, UntrackQuest, + QuestOpenGui, QuestLogToServer, PartyLogToServer, UntrackQuest, - RemoteTpToNpc(CustomNpcsPermissions.NPC_TELEPORT), QuestGet, QuestCategoryGet, SaveTileEntity, MailOpenSetup, DimensionsGet, DimensionTeleport, GetTileEntity, Gui, IsGuiOpen, CacheAnimation, From 364bf2414f88f6d84f11f4198c661628d5bd4251 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 03:01:12 -0500 Subject: [PATCH 063/157] Custom GUI Packets --- .../kamkeel/npcs/network/PacketHandler.java | 22 ++++++++++++------- .../customgui/CustomGuiClosePacket.java | 2 +- .../customgui/CustomGuiUnfocusedPacket.java | 3 +-- .../customgui/CustomScrollClickPacket.java | 3 +-- .../npcs/client/gui/custom/GuiCustom.java | 17 +++++++++----- .../npcs/constants/EnumPacketServer.java | 4 ---- 6 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 4aea38ced..3079d711a 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -18,6 +18,10 @@ import kamkeel.npcs.network.packets.request.bank.BankGetPacket; import kamkeel.npcs.network.packets.request.bank.BankRemovePacket; import kamkeel.npcs.network.packets.request.bank.BankSavePacket; import kamkeel.npcs.network.packets.request.bank.BanksGetPacket; +import kamkeel.npcs.network.packets.request.customgui.CustomGuiButtonPacket; +import kamkeel.npcs.network.packets.request.customgui.CustomGuiClosePacket; +import kamkeel.npcs.network.packets.request.customgui.CustomGuiUnfocusedPacket; +import kamkeel.npcs.network.packets.request.customgui.CustomScrollClickPacket; import kamkeel.npcs.network.packets.request.dialog.*; import kamkeel.npcs.network.packets.request.faction.FactionRemovePacket; import kamkeel.npcs.network.packets.request.faction.FactionSavePacket; @@ -185,16 +189,18 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new RemoteResetPacket()); REQUEST_PACKET.registerPacket(new RemoteTpToNpcPacket()); - - - // + // CustomGUI + REQUEST_PACKET.registerPacket(new CustomGuiButtonPacket()); + REQUEST_PACKET.registerPacket(new CustomGuiClosePacket()); + REQUEST_PACKET.registerPacket(new CustomGuiUnfocusedPacket()); + REQUEST_PACKET.registerPacket(new CustomScrollClickPacket()); // Other REQUEST_PACKET.registerPacket(new GuiRequestPacket()); } public void registerDataPackets(){ - // Client Packets + // Data Packets DATA_PACKET.registerPacket(new AchievementPacket()); DATA_PACKET.registerPacket(new ChatAlertPacket()); DATA_PACKET.registerPacket(new ChatBubblePacket()); @@ -211,7 +217,7 @@ public class PacketHandler { DATA_PACKET.registerPacket(new UpdateAnimationsPacket()); DATA_PACKET.registerPacket(new VillagerListPacket()); - // Client | GUI Packets + // Data | GUI Packets DATA_PACKET.registerPacket(new GuiClosePacket()); DATA_PACKET.registerPacket(new GuiOpenPacket()); DATA_PACKET.registerPacket(new GuiErrorPacket()); @@ -221,7 +227,7 @@ public class PacketHandler { DATA_PACKET.registerPacket(new IsGuiOpenPacket()); DATA_PACKET.registerPacket(new GuiOpenBookPacket()); - // Client | NPC Packets + // Data | NPC Packets DATA_PACKET.registerPacket(new DeleteNpcPacket()); DATA_PACKET.registerPacket(new EditNpcPacket()); DATA_PACKET.registerPacket(new UpdateNpcPacket()); @@ -229,12 +235,12 @@ public class PacketHandler { DATA_PACKET.registerPacket(new RolePacket()); DATA_PACKET.registerPacket(new WeaponNpcPacket()); - // Client | Script Packets + // Data | Script Packets DATA_PACKET.registerPacket(new ScriptedParticlePacket()); DATA_PACKET.registerPacket(new ScriptOverlayClosePacket()); DATA_PACKET.registerPacket(new ScriptOverlayDataPacket()); - // Client | Large Packets + // Data | Large Packets DATA_PACKET.registerPacket(new ClonerPacket()); DATA_PACKET.registerPacket(new ScrollGroupPacket()); DATA_PACKET.registerPacket(new ScrollDataPacket()); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiClosePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiClosePacket.java index f258e2473..813eccfb5 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiClosePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiClosePacket.java @@ -26,7 +26,7 @@ public final class CustomGuiClosePacket extends AbstractPacket { public CustomGuiClosePacket() { } - public CustomGuiClosePacket(int id, NBTTagCompound comp) { + public CustomGuiClosePacket(NBTTagCompound comp) { this.compound = comp; } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiUnfocusedPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiUnfocusedPacket.java index 4f7982207..adb3456c4 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiUnfocusedPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomGuiUnfocusedPacket.java @@ -23,8 +23,7 @@ public final class CustomGuiUnfocusedPacket extends AbstractPacket { private NBTTagCompound compound; private int id; - public CustomGuiUnfocusedPacket() { - } + public CustomGuiUnfocusedPacket() {} public CustomGuiUnfocusedPacket(int id, NBTTagCompound comp) { this.compound = comp; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomScrollClickPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomScrollClickPacket.java index 980913ad7..d91502ef4 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomScrollClickPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/customgui/CustomScrollClickPacket.java @@ -27,8 +27,7 @@ public final class CustomScrollClickPacket extends AbstractPacket { private boolean doubleClick; private NBTTagCompound compound; - public CustomScrollClickPacket() { - } + public CustomScrollClickPacket() {} public CustomScrollClickPacket(NBTTagCompound compound, int scrollId, int scrollIndex, NBTTagCompound selection, boolean doubleClick) { this.compound = compound; diff --git a/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java b/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java index 91df8f5ef..e1f3213fb 100644 --- a/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java +++ b/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java @@ -1,5 +1,10 @@ package noppes.npcs.client.gui.custom; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.customgui.CustomGuiButtonPacket; +import kamkeel.npcs.network.packets.request.customgui.CustomGuiClosePacket; +import kamkeel.npcs.network.packets.request.customgui.CustomGuiUnfocusedPacket; +import kamkeel.npcs.network.packets.request.customgui.CustomScrollClickPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; @@ -449,25 +454,25 @@ public class GuiCustom extends GuiScreen implements ICustomScrollListener, IGuiD protected void actionPerformed(GuiButton button) { super.actionPerformed(button); - Client.sendData(EnumPacketServer.CustomGuiButton, new Object[]{this.updateGui().toNBT(), button.id}); + PacketClient.sendClient(new CustomGuiButtonPacket(button.id, this.updateGui().toNBT())); } public void buttonClick(CustomGuiButton button) { - Client.sendData(EnumPacketServer.CustomGuiButton, new Object[]{this.updateGui().toNBT(), button.id}); + PacketClient.sendClient(new CustomGuiButtonPacket(button.id, this.updateGui().toNBT())); } public String prevScrollClicked = null; public void customScrollClicked(int i, int j, int k, GuiCustomScroll scroll) { - Client.sendData(EnumPacketServer.CustomGuiScrollClick, new Object[]{this.updateGui().toNBT(), scroll.id, scroll.selected, this.getScrollSelection((CustomGuiScrollComponent)scroll), false}); + PacketClient.sendClient(new CustomScrollClickPacket(this.updateGui().toNBT(), scroll.id, scroll.selected, this.getScrollSelection((CustomGuiScrollComponent)scroll), false)); if(Integer.toString(scroll.selected).equals(prevScrollClicked)){ - Client.sendData(EnumPacketServer.CustomGuiScrollClick, new Object[]{this.updateGui().toNBT(), scroll.id, scroll.selected, this.getScrollSelection((CustomGuiScrollComponent)scroll), true}); + PacketClient.sendClient(new CustomScrollClickPacket(this.updateGui().toNBT(), scroll.id, scroll.selected, this.getScrollSelection((CustomGuiScrollComponent)scroll), true)); } prevScrollClicked = Integer.toString(scroll.selected); } public void onGuiClosed() { if (this.gui != null) { - Client.sendData(EnumPacketServer.CustomGuiClose, new Object[]{this.updateGui().toNBT()}); + PacketClient.sendClient(new CustomGuiClosePacket(this.updateGui().toNBT())); } if (this.mc.thePlayer != null) @@ -477,7 +482,7 @@ public class GuiCustom extends GuiScreen implements ICustomScrollListener, IGuiD } public void onTextFieldUnfocused(CustomGuiTextField textField){ - Client.sendData(EnumPacketServer.CustomGuiUnfocused, new Object[]{this.updateGui().toNBT(), textField.getID()}); + PacketClient.sendClient(new CustomGuiUnfocusedPacket(textField.getID(), this.updateGui().toNBT())); } ScriptGui updateGui() { diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 803240be3..991b310f1 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -13,8 +13,6 @@ public enum EnumPacketServer { ModelDataSave(CustomNpcsPermissions.NPC_DISPLAY, true), - MainmenuAdvancedMarkData(CustomNpcsPermissions.NPC_ADVANCED,true), - TransformSave(CustomNpcsPermissions.NPC_ADVANCED, true), TransformGet(true), TransformLoad(CustomNpcsPermissions.NPC_ADVANCED, true), TraderMarketSave(CustomNpcsPermissions.NPC_ADVANCED, true), @@ -73,8 +71,6 @@ public enum EnumPacketServer { SaveTileEntity, MailOpenSetup, DimensionsGet, DimensionTeleport, GetTileEntity, Gui, IsGuiOpen, CacheAnimation, - CustomGuiButton,CustomGuiScrollClick,CustomGuiClose,CustomGuiUnfocused, - SavePartyData, CreateParty, GetPartyData, DisbandParty, KickPlayer, LeavePlayer, PartyInvite, GetPartyInviteList, AcceptInvite, IgnoreInvite, SetPartyLeader, SetPartyQuest, From bd783a2e98a5958c04b161abd6e4dd0b5b3473ba Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 03:04:03 -0500 Subject: [PATCH 064/157] Dimension Get Packet --- .../java/kamkeel/npcs/network/PacketHandler.java | 2 ++ .../packets/request/AnimationCachePacket.java | 2 -- .../noppes/npcs/client/gui/GuiNpcDimension.java | 3 ++- .../npcs/client/gui/SubGuiNpcDimensions.java | 16 +++++++++------- .../noppes/npcs/constants/EnumPacketServer.java | 4 +--- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 3079d711a..0304e7979 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -13,6 +13,7 @@ import kamkeel.npcs.network.packets.data.gui.*; import kamkeel.npcs.network.packets.data.large.*; import kamkeel.npcs.network.packets.data.npc.*; import kamkeel.npcs.network.packets.data.script.*; +import kamkeel.npcs.network.packets.request.DimensionsGetPacket; import kamkeel.npcs.network.packets.request.GuiRequestPacket; import kamkeel.npcs.network.packets.request.bank.BankGetPacket; import kamkeel.npcs.network.packets.request.bank.BankRemovePacket; @@ -197,6 +198,7 @@ public class PacketHandler { // Other REQUEST_PACKET.registerPacket(new GuiRequestPacket()); + REQUEST_PACKET.registerPacket(new DimensionsGetPacket()); } public void registerDataPackets(){ diff --git a/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java index 0ba14f9d3..72a5e681e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java @@ -43,6 +43,4 @@ public final class AnimationCachePacket extends AbstractPacket { public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { PlayerDataController.Instance.getPlayerData(player).animationData.cacheAnimation(in.readInt()); } - - } diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java b/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java index 738939893..66ddad230 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java @@ -1,6 +1,7 @@ package noppes.npcs.client.gui; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.DimensionsGetPacket; import kamkeel.npcs.network.packets.request.npc.RemoteDeletePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.StatCollector; @@ -20,7 +21,7 @@ public class GuiNpcDimension extends GuiNPCInterface implements IScrollData{ super(); xSize = 256; setBackground("menubg.png"); - Client.sendData(EnumPacketServer.DimensionsGet); + PacketClient.sendClient(new DimensionsGetPacket()); } public void initGui() { diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDimensions.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDimensions.java index 8af8a10c1..013cfee08 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDimensions.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDimensions.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.DimensionsGetPacket; import net.minecraft.client.gui.GuiButton; import noppes.npcs.client.Client; import noppes.npcs.client.gui.util.*; @@ -14,14 +16,14 @@ public class SubGuiNpcDimensions extends SubGuiInterface implements IScrollData private GuiCustomScroll allDimensions; private HashMap dimensionMap = new HashMap<>(); private GuiCustomScroll dataDimensions; - + public SubGuiNpcDimensions(SpawnData data){ this.data = data; setBackground("menubg.png"); xSize = 346; ySize = 216; closeOnEsc = true; - Client.sendData(EnumPacketServer.DimensionsGet); + PacketClient.sendClient(new DimensionsGetPacket()); } public void initGui(){ @@ -34,7 +36,7 @@ public class SubGuiNpcDimensions extends SubGuiInterface implements IScrollData allDimensions.guiTop = guiTop + 14; this.addScroll(allDimensions); addLabel(new GuiNpcLabel(1, "spawning.availableDimensions", guiLeft + 4, guiTop + 4)); - + if(dataDimensions == null){ dataDimensions = new GuiCustomScroll(this,1); dataDimensions.setSize(140, 180); @@ -58,8 +60,8 @@ public class SubGuiNpcDimensions extends SubGuiInterface implements IScrollData addButton(new GuiNpcButton(3, guiLeft + 145, guiTop + 90, 55, 20, ">>")); addButton(new GuiNpcButton(4, guiLeft + 145, guiTop + 112, 55, 20, "<<")); - - + + addButton(new GuiNpcButton(66, guiLeft + 260, guiTop + 194, 60, 20, "gui.done")); } @@ -70,14 +72,14 @@ public class SubGuiNpcDimensions extends SubGuiInterface implements IScrollData data.dimensions.add(dimensionMap.get(allDimensions.getSelected())); allDimensions.selected = -1; initGui(); - } + } } if(button.id == 2){ if(dataDimensions.hasSelected()){ data.dimensions.remove(dimensionMap.get(dataDimensions.getSelected())); dataDimensions.selected = -1; initGui(); - } + } } if(button.id == 3){ data.dimensions.clear(); diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 991b310f1..df6970267 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -1,8 +1,6 @@ package noppes.npcs.constants; -import net.minecraft.client.gui.Gui; import noppes.npcs.CustomNpcsPermissions; -import noppes.npcs.client.gui.custom.components.CustomGuiButton; public enum EnumPacketServer { NPCDelete(CustomNpcsPermissions.NPC_DELETE, true), @@ -69,7 +67,7 @@ public enum EnumPacketServer { QuestGet, QuestCategoryGet, SaveTileEntity, MailOpenSetup, - DimensionsGet, DimensionTeleport, GetTileEntity, Gui, IsGuiOpen, CacheAnimation, + DimensionTeleport, GetTileEntity, IsGuiOpen, CacheAnimation, SavePartyData, CreateParty, GetPartyData, DisbandParty, KickPlayer, LeavePlayer, PartyInvite, GetPartyInviteList, AcceptInvite, IgnoreInvite, SetPartyLeader, SetPartyQuest, From 7366b110771bb897f9e179fa41b00b7e11e58548 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 03:08:52 -0500 Subject: [PATCH 065/157] Cache Animation Packet --- src/main/java/kamkeel/npcs/network/PacketHandler.java | 2 ++ .../npcs/network/packets/data/UpdateAnimationsPacket.java | 3 +++ src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java | 4 ++-- src/main/java/noppes/npcs/constants/EnumPacketServer.java | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 0304e7979..c4a29efad 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -13,6 +13,7 @@ import kamkeel.npcs.network.packets.data.gui.*; import kamkeel.npcs.network.packets.data.large.*; import kamkeel.npcs.network.packets.data.npc.*; import kamkeel.npcs.network.packets.data.script.*; +import kamkeel.npcs.network.packets.request.AnimationCachePacket; import kamkeel.npcs.network.packets.request.DimensionsGetPacket; import kamkeel.npcs.network.packets.request.GuiRequestPacket; import kamkeel.npcs.network.packets.request.bank.BankGetPacket; @@ -199,6 +200,7 @@ public class PacketHandler { // Other REQUEST_PACKET.registerPacket(new GuiRequestPacket()); REQUEST_PACKET.registerPacket(new DimensionsGetPacket()); + REQUEST_PACKET.registerPacket(new AnimationCachePacket()); } public void registerDataPackets(){ diff --git a/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java index 19582dd4f..f1d5ab8d1 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java @@ -5,8 +5,10 @@ import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumDataPacket; +import kamkeel.npcs.network.packets.request.AnimationCachePacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -85,6 +87,7 @@ public final class UpdateAnimationsPacket extends AbstractPacket { animationData.setAnimation(ClientCacheHandler.animationCache.get(animationId)); animationData.readFromNBT(nbt); + PacketClient.sendClient(new AnimationCachePacket(animationId)); } } } diff --git a/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java b/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java index e1f3213fb..0bbb7ea97 100644 --- a/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java +++ b/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java @@ -485,7 +485,7 @@ public class GuiCustom extends GuiScreen implements ICustomScrollListener, IGuiD PacketClient.sendClient(new CustomGuiUnfocusedPacket(textField.getID(), this.updateGui().toNBT())); } - ScriptGui updateGui() { + public ScriptGui updateGui() { Iterator var1 = this.dataHolders.iterator(); while(var1.hasNext()) { @@ -496,7 +496,7 @@ public class GuiCustom extends GuiScreen implements ICustomScrollListener, IGuiD return this.gui; } - NBTTagCompound getScrollSelection(CustomGuiScrollComponent scroll) { + public NBTTagCompound getScrollSelection(CustomGuiScrollComponent scroll) { NBTTagList list = new NBTTagList(); if (scroll.multiSelect) { Iterator var3 = scroll.getSelectedList().iterator(); diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index df6970267..445ca59b8 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -67,7 +67,7 @@ public enum EnumPacketServer { QuestGet, QuestCategoryGet, SaveTileEntity, MailOpenSetup, - DimensionTeleport, GetTileEntity, IsGuiOpen, CacheAnimation, + DimensionTeleport, GetTileEntity, IsGuiOpen, SavePartyData, CreateParty, GetPartyData, DisbandParty, KickPlayer, LeavePlayer, PartyInvite, GetPartyInviteList, AcceptInvite, IgnoreInvite, SetPartyLeader, SetPartyQuest, From 01241543806f6759e9fa66bff58bfbddd17edc7e Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 03:28:13 -0500 Subject: [PATCH 066/157] Job Packets --- .../kamkeel/npcs/network/PacketHandler.java | 10 ++++ .../packets/request/jobs/JobGetPacket.java | 12 +++-- .../packets/request/jobs/JobSavePacket.java | 28 ++++++++--- .../request/jobs/JobSpawnerAddPacket.java | 46 +++++++++++++++++-- .../request/jobs/JobSpawnerRemovePacket.java | 24 ++++++++-- .../java/noppes/npcs/PacketHandlerServer.java | 45 ------------------ .../client/gui/mainmenu/GuiNpcAdvanced.java | 3 +- .../npcs/client/gui/roles/GuiNpcBard.java | 4 +- .../client/gui/roles/GuiNpcConversation.java | 3 +- .../client/gui/roles/GuiNpcFollowerJob.java | 9 ++-- .../npcs/client/gui/roles/GuiNpcGuard.java | 33 ++++++------- .../npcs/client/gui/roles/GuiNpcHealer.java | 13 +++--- .../client/gui/roles/GuiNpcItemGiver.java | 11 +++-- .../npcs/client/gui/roles/GuiNpcSpawner.java | 36 ++++++++------- .../npcs/constants/EnumPacketServer.java | 6 +-- 15 files changed, 166 insertions(+), 117 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index c4a29efad..7fc823684 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -28,6 +28,10 @@ import kamkeel.npcs.network.packets.request.dialog.*; import kamkeel.npcs.network.packets.request.faction.FactionRemovePacket; import kamkeel.npcs.network.packets.request.faction.FactionSavePacket; import kamkeel.npcs.network.packets.request.faction.FactionSetPacket; +import kamkeel.npcs.network.packets.request.jobs.JobGetPacket; +import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; +import kamkeel.npcs.network.packets.request.jobs.JobSpawnerAddPacket; +import kamkeel.npcs.network.packets.request.jobs.JobSpawnerRemovePacket; import kamkeel.npcs.network.packets.request.linked.LinkedAddPacket; import kamkeel.npcs.network.packets.request.linked.LinkedGetAllPacket; import kamkeel.npcs.network.packets.request.linked.LinkedRemovePacket; @@ -197,6 +201,12 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new CustomGuiUnfocusedPacket()); REQUEST_PACKET.registerPacket(new CustomScrollClickPacket()); + // Job + REQUEST_PACKET.registerPacket(new JobGetPacket()); + REQUEST_PACKET.registerPacket(new JobSavePacket()); + REQUEST_PACKET.registerPacket(new JobSpawnerAddPacket()); + REQUEST_PACKET.registerPacket(new JobSpawnerRemovePacket()); + // Other REQUEST_PACKET.registerPacket(new GuiRequestPacket()); REQUEST_PACKET.registerPacket(new DimensionsGetPacket()); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobGetPacket.java index d2c1fd772..4fa88fbb9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobGetPacket.java @@ -50,9 +50,15 @@ public final class JobGetPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; - if(npc.jobInterface == null) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + if(npc.jobInterface == null) + return; + NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("JobData", true); npc.jobInterface.writeToNBT(compound); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSavePacket.java index 9349bae65..3ae0559b6 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSavePacket.java @@ -3,10 +3,7 @@ package kamkeel.npcs.network.packets.request.jobs; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import kamkeel.npcs.network.AbstractPacket; -import kamkeel.npcs.network.PacketChannel; -import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.*; import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; @@ -14,6 +11,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.roles.JobInterface; import java.io.IOException; import java.util.Set; @@ -21,8 +19,14 @@ import java.util.Set; public final class JobSavePacket extends AbstractPacket { public static String packetName = "Request|JobSave"; + private NBTTagCompound compound; + public JobSavePacket() { } + public JobSavePacket(NBTTagCompound compound) { + this.compound = compound; + } + @Override public Enum getType() { return EnumRequestPacket.JobSave; @@ -45,12 +49,18 @@ public final class JobSavePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NBTTagCompound original = npc.jobInterface.writeToNBT(new NBTTagCompound()); NBTTagCompound compound = ByteBufUtils.readNBT(in); Set names = compound.func_150296_c(); @@ -60,4 +70,8 @@ public final class JobSavePacket extends AbstractPacket { npc.jobInterface.readFromNBT(original); npc.updateClient = true; } + + public static void saveJob(JobInterface job){ + PacketClient.sendClient(new JobSavePacket(job.writeToNBT(new NBTTagCompound()))); + } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerAddPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerAddPacket.java index 5af9844b7..e0826b917 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerAddPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerAddPacket.java @@ -24,8 +24,29 @@ import java.io.IOException; public final class JobSpawnerAddPacket extends AbstractPacket { public static String packetName = "Request|JobSpawnerAdd"; + private boolean isServer; + + private String selected; + private int activeTab; + private int slot; + + private NBTTagCompound compound; + public JobSpawnerAddPacket() { } + public JobSpawnerAddPacket(boolean isServer, String selected, int activeTab, int slot) { + this.isServer = isServer; + this.selected = selected; + this.activeTab = activeTab; + this.slot = slot; + } + + public JobSpawnerAddPacket(boolean isServer, int slot, NBTTagCompound compound) { + this.isServer = isServer; + this.slot = slot; + this.compound = compound; + } + @Override public Enum getType() { return EnumRequestPacket.JobSpawnerAdd; @@ -48,13 +69,29 @@ public final class JobSpawnerAddPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + out.writeBoolean(this.isServer); + if(this.isServer){ + ByteBufUtils.writeString(out, selected); + out.writeInt(this.activeTab); + out.writeInt(this.slot); + } else { + out.writeInt(this.slot); + ByteBufUtils.writeNBT(out, this.compound); + } + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; - if(npc.advanced.job != EnumJobType.Spawner) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + if(npc.advanced.job != EnumJobType.Spawner) + return; + JobSpawner job = (JobSpawner) npc.jobInterface; boolean useServerClone = in.readBoolean(); if(useServerClone){ @@ -63,6 +100,7 @@ public final class JobSpawnerAddPacket extends AbstractPacket { } else { job.setJobCompound(in.readInt(), ByteBufUtils.readNBT(in)); } + GuiDataPacket.sendGuiData((EntityPlayerMP) player, job.getTitles()); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerRemovePacket.java index 0fa6cd82b..f5b415ed2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/jobs/JobSpawnerRemovePacket.java @@ -21,7 +21,13 @@ import java.io.IOException; public final class JobSpawnerRemovePacket extends AbstractPacket { public static String packetName = "Request|JobSpawnerRemove"; - public JobSpawnerRemovePacket() { } + private int slot; + + public JobSpawnerRemovePacket(){} + + public JobSpawnerRemovePacket(int slot) { + this.slot = slot; + } @Override public Enum getType() { @@ -45,13 +51,21 @@ public final class JobSpawnerRemovePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.slot); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; - if(npc.advanced.job != EnumJobType.Spawner) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + if(npc.advanced.job != EnumJobType.Spawner) + return; + JobSpawner job = (JobSpawner) npc.jobInterface; job.setJobCompound(in.readInt(), null); GuiDataPacket.sendGuiData((EntityPlayerMP) player, job.getTitles()); diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 71df5a2ca..fa10d7373 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -456,57 +456,12 @@ public class PacketHandlerServer{ NoppesUtilServer.setEditingQuest(player,quest); player.openGui(CustomNpcs.instance, gui , player.worldObj, 0, 0, 0); } - else if(type == EnumPacketServer.JobSave){ - NBTTagCompound original = npc.jobInterface.writeToNBT(new NBTTagCompound()); - NBTTagCompound compound = ByteBufUtils.readNBT(buffer); - Set names = compound.func_150296_c(); - for(String name : names) - original.setTag(name, compound.getTag(name)); - npc.jobInterface.readFromNBT(original); - npc.updateClient = true; - } - else if(type == EnumPacketServer.JobGet){ - if(npc.jobInterface == null) - return; - NBTTagCompound compound = new NBTTagCompound(); - compound.setBoolean("JobData", true); - npc.jobInterface.writeToNBT(compound); - - if(npc.advanced.job == EnumJobType.Spawner) - ((JobSpawner)npc.jobInterface).cleanCompound(compound); - - GuiDataPacket.sendGuiData(player, compound); - - if(npc.advanced.job == EnumJobType.Spawner) - GuiDataPacket.sendGuiData(player, ((JobSpawner)npc.jobInterface).getTitles()); - } - else if(type == EnumPacketServer.JobSpawnerAdd){ - if(npc.advanced.job != EnumJobType.Spawner) - return; - JobSpawner job = (JobSpawner) npc.jobInterface; - if(buffer.readBoolean()){ - NBTTagCompound compound = ServerCloneController.Instance.getCloneData(null, ByteBufUtils.readString(buffer), buffer.readInt()); - - job.setJobCompound(buffer.readInt(), compound); - } - else{ - job.setJobCompound(buffer.readInt(), ByteBufUtils.readNBT(buffer)); - } - GuiDataPacket.sendGuiData(player, job.getTitles()); - } else if(type == EnumPacketServer.RoleCompanionUpdate){ if(npc.advanced.role != EnumRoleType.Companion) return; ((RoleCompanion)npc.roleInterface).matureTo(EnumCompanionStage.values()[buffer.readInt()]); npc.updateClient = true; } - else if(type == EnumPacketServer.JobSpawnerRemove){ - if(npc.advanced.job != EnumJobType.Spawner) - return; - JobSpawner job = (JobSpawner) npc.jobInterface; - job.setJobCompound(buffer.readInt(), null); - GuiDataPacket.sendGuiData(player, job.getTitles()); - } else if(type == EnumPacketServer.RoleSave){ npc.roleInterface.readFromNBT(ByteBufUtils.readNBT(buffer)); npc.updateClient = true; diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java index 0ac29a0e1..6ef941e2e 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java @@ -1,6 +1,7 @@ package noppes.npcs.client.gui.mainmenu; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.jobs.JobGetPacket; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedGetPacket; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; import net.minecraft.client.gui.GuiButton; @@ -69,7 +70,7 @@ public class GuiNpcAdvanced extends GuiNPCInterface2 implements IGuiData } if(button.id == 4){ save(); - Client.sendData(EnumPacketServer.JobGet); + PacketClient.sendClient(new JobGetPacket()); } if(button.id == 5){ hasChanges = true; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBard.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBard.java index c56a19ca5..6160861cb 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBard.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBard.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -90,7 +92,7 @@ public class GuiNpcBard extends GuiNPCInterface2 implements ISubGuiListener job.maxRange = job.minRange; MusicController.Instance.stopAllSounds(); - Client.sendData(EnumPacketServer.JobSave, job.writeToNBT(new NBTTagCompound())); + JobSavePacket.saveJob(job); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcConversation.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcConversation.java index 4fc3be082..63ac397a1 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcConversation.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcConversation.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -109,7 +110,7 @@ public class GuiNpcConversation extends GuiNPCInterface2 implements ITextfieldLi @Override public void save() { - Client.sendData(EnumPacketServer.JobSave, job.writeToNBT(new NBTTagCompound())); + JobSavePacket.saveJob(job); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerJob.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerJob.java index 5b94d1189..6e4610e30 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerJob.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerJob.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; import noppes.npcs.client.gui.util.*; @@ -11,12 +12,12 @@ import java.util.ArrayList; import java.util.List; public class GuiNpcFollowerJob extends GuiNPCInterface2 implements ICustomScrollListener -{ +{ private JobFollower job; private GuiCustomScroll scroll; public GuiNpcFollowerJob(EntityNPCInterface npc) { - super(npc); + super(npc); job = (JobFollower) npc.jobInterface; } @@ -32,7 +33,7 @@ public class GuiNpcFollowerJob extends GuiNPCInterface2 implements ICustomScroll scroll.guiLeft = guiLeft + 268; scroll.guiTop = guiTop + 4; this.addScroll(scroll); - + List names = new ArrayList(); List list = npc.worldObj.getEntitiesWithinAABB(EntityNPCInterface.class, npc.boundingBox.expand(40, 40, 40)); for(EntityNPCInterface npc : list){ @@ -46,7 +47,7 @@ public class GuiNpcFollowerJob extends GuiNPCInterface2 implements ICustomScroll @Override public void save() { job.name = getTextField(1).getText(); - Client.sendData(EnumPacketServer.JobSave, job.writeToNBT(new NBTTagCompound())); + JobSavePacket.saveJob(job); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcGuard.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcGuard.java index b5365e465..956764479 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcGuard.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcGuard.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLivingBase; @@ -16,13 +17,13 @@ import noppes.npcs.roles.JobGuard; import java.util.ArrayList; import java.util.List; -public class GuiNpcGuard extends GuiNPCInterface2{ +public class GuiNpcGuard extends GuiNPCInterface2{ private JobGuard role; private GuiCustomScroll scroll1; private GuiCustomScroll scroll2; - + public GuiNpcGuard(EntityNPCInterface npc){ - super(npc); + super(npc); role = (JobGuard) npc.jobInterface; } @@ -37,10 +38,10 @@ public class GuiNpcGuard extends GuiNPCInterface2{ this.addLabel(new GuiNpcLabel(2, "guard.creepers", guiLeft + 275, guiTop + 9)); this.addButton(new GuiNpcButton(2, guiLeft + 360, guiTop + 4, 50, 20, new String[]{"gui.no", "gui.yes"},role.attackCreepers?1:0)); getButton(2).enabled = role.attackHostileMobs; - + this.addLabel(new GuiNpcLabel(3, "guard.specifictargets", guiLeft + 10, guiTop + 31)); - this.addButton(new GuiNpcButton(3, guiLeft + 85, guiTop + 26, 50, 20, new String[]{"gui.no", "gui.yes"},role.specific?1:0)); - + this.addButton(new GuiNpcButton(3, guiLeft + 85, guiTop + 26, 50, 20, new String[]{"gui.no", "gui.yes"},role.specific?1:0)); + if(role.specific){ if(scroll1 == null){ scroll1 = new GuiCustomScroll(this,0); @@ -50,7 +51,7 @@ public class GuiNpcGuard extends GuiNPCInterface2{ scroll1.guiTop = guiTop + 58; this.addScroll(scroll1); addLabel(new GuiNpcLabel(11, "guard.availableTargets", guiLeft + 4, guiTop + 48)); - + if(scroll2 == null){ scroll2 = new GuiCustomScroll(this,1); scroll2.setSize(175, 154); @@ -59,7 +60,7 @@ public class GuiNpcGuard extends GuiNPCInterface2{ scroll2.guiTop = guiTop + 58; this.addScroll(scroll2); addLabel(new GuiNpcLabel(12, "guard.currentTargets", guiLeft + 235, guiTop + 48)); - + List all = new ArrayList(); for(Object entity : EntityList.stringToClassMapping.keySet()){ String name = "entity." + entity + ".name"; @@ -71,11 +72,11 @@ public class GuiNpcGuard extends GuiNPCInterface2{ } scroll1.setList(all); scroll2.setList(role.targets); - - + + addButton(new GuiNpcButton(11, guiLeft + 180, guiTop + 80, 55, 20, ">")); addButton(new GuiNpcButton(12, guiLeft + 180, guiTop + 102, 55, 20, "<")); - + addButton(new GuiNpcButton(13, guiLeft + 180, guiTop + 130, 55, 20, ">>")); addButton(new GuiNpcButton(14, guiLeft + 180, guiTop + 152, 55, 20, "<<")); } @@ -92,11 +93,11 @@ public class GuiNpcGuard extends GuiNPCInterface2{ } if(button.id == 2){ role.attackCreepers = button.getValue()==1; - } + } if(button.id == 3){ role.specific = button.getValue()==1; initGui(); - } + } if(button.id == 11){ if(scroll1.hasSelected()){ @@ -104,14 +105,14 @@ public class GuiNpcGuard extends GuiNPCInterface2{ scroll1.selected = -1; scroll1.selected = -1; initGui(); - } + } } if(button.id == 12){ if(scroll2.hasSelected()){ role.targets.remove(scroll2.getSelected()); scroll2.selected = -1; initGui(); - } + } } if(button.id == 13){ role.targets.clear(); @@ -136,7 +137,7 @@ public class GuiNpcGuard extends GuiNPCInterface2{ } public void save() { - Client.sendData(EnumPacketServer.JobSave, role.writeToNBT(new NBTTagCompound())); + JobSavePacket.saveJob(role); } } diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcHealer.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcHealer.java index 615efbd12..6f57d3693 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcHealer.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcHealer.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; import noppes.npcs.client.gui.util.GuiNPCInterface2; @@ -10,11 +11,11 @@ import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.JobHealer; public class GuiNpcHealer extends GuiNPCInterface2 -{ +{ private JobHealer job; public GuiNpcHealer(EntityNPCInterface npc) { - super(npc); + super(npc); job = (JobHealer) npc.jobInterface; } @@ -26,16 +27,16 @@ public class GuiNpcHealer extends GuiNPCInterface2 addTextField(new GuiNpcTextField(1,this, this.fontRendererObj, guiLeft+130, guiTop + 105, 40, 20, job.speed + "")); getTextField(1).integersOnly = true; getTextField(1).setMinMaxDefault(1, Integer.MAX_VALUE, 8); - + addLabel(new GuiNpcLabel(2,"Range:", guiLeft + 60, guiTop + 133)); addTextField(new GuiNpcTextField(2,this, this.fontRendererObj, guiLeft+130, guiTop + 128, 40, 20, job.range + "")); getTextField(2).integersOnly = true; getTextField(2).setMinMaxDefault(2, Integer.MAX_VALUE, 5); - + } @Override public void elementClicked(){ - + } @@ -44,7 +45,7 @@ public class GuiNpcHealer extends GuiNPCInterface2 job.speed = getTextField(1).getInteger(); job.range = getTextField(2).getInteger(); - Client.sendData(EnumPacketServer.JobSave, job.writeToNBT(new NBTTagCompound())); + JobSavePacket.saveJob(job); } diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcItemGiver.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcItemGiver.java index 4d3e7eb6a..166b41aee 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcItemGiver.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcItemGiver.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -17,11 +18,11 @@ import java.util.ArrayList; import java.util.List; public class GuiNpcItemGiver extends GuiContainerNPCInterface2 -{ +{ private JobItemGiver role; public GuiNpcItemGiver(EntityNPCInterface npc, ContainerNpcItemGiver container) { - super(npc,container); + super(npc,container); ySize = 200; role = (JobItemGiver) npc.jobInterface; setBackground("npcitemgiver.png"); @@ -37,7 +38,7 @@ public class GuiNpcItemGiver extends GuiContainerNPCInterface2 getTextField(0).integersOnly = true; addLabel(new GuiNpcLabel(0,"Cooldown:", guiLeft + 6, guiTop + 59)); addLabel(new GuiNpcLabel(1,"Items to give", guiLeft + 46, guiTop + 79)); - + getTextField(0).integersOnly = true; int i = 0; @@ -71,7 +72,7 @@ public class GuiNpcItemGiver extends GuiContainerNPCInterface2 if(button.id == 4){ setSubGui(new SubGuiNpcAvailability(role.availability)); } - + } public void save() { @@ -89,7 +90,7 @@ public class GuiNpcItemGiver extends GuiContainerNPCInterface2 role.cooldown = cc; - Client.sendData(EnumPacketServer.JobSave, role.writeToNBT(new NBTTagCompound())); + JobSavePacket.saveJob(role); } } diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcSpawner.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcSpawner.java index 353fe4c4a..aa932cb14 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcSpawner.java @@ -1,5 +1,9 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; +import kamkeel.npcs.network.packets.request.jobs.JobSpawnerAddPacket; +import kamkeel.npcs.network.packets.request.jobs.JobSpawnerRemovePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; @@ -12,9 +16,9 @@ import noppes.npcs.roles.JobSpawner; public class GuiNpcSpawner extends GuiNPCInterface2 implements ITextfieldListener, IGuiData -{ +{ private JobSpawner job; - + private int slot = -1; public String title1 = "gui.selectnpc"; @@ -25,10 +29,10 @@ public class GuiNpcSpawner extends GuiNPCInterface2 implements ITextfieldListene public String title6 = "gui.selectnpc"; public String title7 = "gui.selectnpc"; public String title8 = "gui.selectnpc"; - + public GuiNpcSpawner(EntityNPCInterface npc) { - super(npc); + super(npc); job = (JobSpawner) npc.jobInterface; } @@ -66,12 +70,12 @@ public class GuiNpcSpawner extends GuiNPCInterface2 implements ITextfieldListene addLabel(new GuiNpcLabel(3, "4:", guiLeft + 4, y + 5)); this.addButton(new GuiNpcButton(3, guiLeft + 45, y, 140, 20, title4)); - y += 23; + y += 23; this.addButton(new GuiNpcButton(24, guiLeft + 20, y,20,20, "X")); addLabel(new GuiNpcLabel(4, "5:", guiLeft + 4, y + 5)); this.addButton(new GuiNpcButton(4, guiLeft + 45, y, 140, 20, title5)); - y += 23; + y += 23; this.addButton(new GuiNpcButton(25, guiLeft + 20, y,20,20, "X")); addLabel(new GuiNpcLabel(5, "6:", guiLeft + 4, y + 5)); this.addButton(new GuiNpcButton(5, guiLeft + 45, y, 140, 20, title6)); @@ -90,9 +94,9 @@ public class GuiNpcSpawner extends GuiNPCInterface2 implements ITextfieldListene addLabel(new GuiNpcLabel(9,"Z:", guiLeft + 161 + 190, y + 5)); addTextField(new GuiNpcTextField(9,this, fontRendererObj, guiLeft + 171 + 190, y, 24, 20, job.zOffset + "")); getTextField(9).integersOnly = true; - getTextField(9).setMinMaxDefault(-9, 9, 0); - - y += 23; + getTextField(9).setMinMaxDefault(-9, 9, 0); + + y += 23; addLabel(new GuiNpcLabel(10, "spawner.type", guiLeft + 4 + 190, y + 5)); addButton(new GuiNpcButton(10, guiLeft + 80 + 190, y, 100, 20, new String[]{"spawner.one", "spawner.all", "spawner.random", "spawner.summoner"}, job.spawnType)); @@ -122,15 +126,15 @@ public class GuiNpcSpawner extends GuiNPCInterface2 implements ITextfieldListene } protected void actionPerformed(GuiButton guibutton){ - GuiNpcButton button = (GuiNpcButton) guibutton; + GuiNpcButton button = (GuiNpcButton) guibutton; if(button.id >= 0 && button.id < 6){ slot = button.id + 1; setSubGui(new GuiNpcMobSpawnerSelector()); - } + } if(button.id >= 20 && button.id < 26){ int removeID = button.id - 19; job.setJobCompound(removeID, null); - Client.sendData(EnumPacketServer.JobSpawnerRemove, button.id - 19); + PacketClient.sendClient(new JobSpawnerRemovePacket(button.id - 19)); } if(button.id == 26){ job.doesntDie = button.getValue() == 1; @@ -182,13 +186,13 @@ public class GuiNpcSpawner extends GuiNPCInterface2 implements ITextfieldListene if(selector.isServer){ String selected = selector.getSelected(); if(selected != null) - Client.sendData(EnumPacketServer.JobSpawnerAdd, selector.isServer, selected, selector.activeTab, slot); + PacketClient.sendClient(new JobSpawnerAddPacket(selector.isServer, selected, selector.activeTab, slot)); } else{ NBTTagCompound compound = selector.getCompound(); if(compound != null){ - job.setJobCompound(slot, compound); - Client.sendData(EnumPacketServer.JobSpawnerAdd, selector.isServer, slot, compound); + job.setJobCompound(slot, compound); + PacketClient.sendClient(new JobSpawnerAddPacket(selector.isServer, slot, compound)); } } initGui(); @@ -198,7 +202,7 @@ public class GuiNpcSpawner extends GuiNPCInterface2 implements ITextfieldListene public void save() { NBTTagCompound compound = job.writeToNBT(new NBTTagCompound()); job.cleanCompound(compound); - Client.sendData(EnumPacketServer.JobSave, compound); + PacketClient.sendClient(new JobSavePacket(compound)); } @Override diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 445ca59b8..750587d6b 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -14,9 +14,9 @@ public enum EnumPacketServer { TransformSave(CustomNpcsPermissions.NPC_ADVANCED, true), TransformGet(true), TransformLoad(CustomNpcsPermissions.NPC_ADVANCED, true), TraderMarketSave(CustomNpcsPermissions.NPC_ADVANCED, true), - JobSave(CustomNpcsPermissions.NPC_ADVANCED, true), JobGet(true), - RoleSave(CustomNpcsPermissions.NPC_ADVANCED, true), RoleGet(true), - JobSpawnerAdd(CustomNpcsPermissions.NPC_ADVANCED, true), JobSpawnerRemove(CustomNpcsPermissions.NPC_ADVANCED, true), + + RoleSave(CustomNpcsPermissions.NPC_ADVANCED, true), + RoleGet(true), RoleCompanionUpdate(CustomNpcsPermissions.NPC_ADVANCED, true), ClonePreSave(CustomNpcsPermissions.NPC_CLONE), CloneSave(CustomNpcsPermissions.NPC_CLONE), CloneRemove(CustomNpcsPermissions.NPC_CLONE), CloneList, CloneTagList, CloneAllTags, CloneAllTagsShort, From 47e30ac8b4100d21d2562a83101000ce8c4ef00a Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 16:07:16 -0500 Subject: [PATCH 067/157] Huge Commit and Refactoring --- .../kamkeel/npcs/network/PacketHandler.java | 37 ++++++++++++--- .../npcs/network/enums/EnumRequestPacket.java | 35 +++++++++++++- .../packets/request/GuiRequestPacket.java | 2 - .../packets/request/MailOpenSetupPacket.java | 19 ++++++-- .../packets/request/MerchantUpdatePacket.java | 13 ++++- .../request/npc/ModelDataSavePacket.java | 17 +++++-- .../packets/request/npc/NpcDeletePacket.java | 3 +- .../role/RoleCompanionUpdatePacket.java | 22 +++++++-- .../packets/request/role/RoleGetPacket.java | 17 +++---- .../packets/request/role/RoleSavePacket.java | 19 ++++++-- .../request/transform/TransformGetPacket.java | 8 +++- .../transform/TransformLoadPacket.java | 14 +++++- .../transform/TransformSavePacket.java | 19 ++++++-- .../java/noppes/npcs/PacketHandlerServer.java | 47 ------------------- .../java/noppes/npcs/client/NoppesUtil.java | 2 + .../npcs/client/gui/GuiMerchantAdd.java | 6 ++- .../client/gui/SubGuiMailmanSendSetup.java | 4 +- .../client/gui/advanced/GuiNPCNightSetup.java | 26 +++++----- .../client/gui/mainmenu/GuiNpcAdvanced.java | 3 +- .../client/gui/model/GuiCreationScreen.java | 4 +- .../client/gui/roles/GuiNpcBankSetup.java | 3 +- .../client/gui/roles/GuiNpcCompanion.java | 29 +++++++----- .../client/gui/roles/GuiNpcFollowerSetup.java | 14 +++--- .../client/gui/roles/GuiNpcTraderSetup.java | 4 +- .../npcs/client/gui/util/GuiNpcMenu.java | 7 ++- .../npcs/constants/EnumPacketServer.java | 22 ++++----- 26 files changed, 257 insertions(+), 139 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 7fc823684..6f9a6f662 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -10,12 +10,11 @@ import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.enums.EnumChannelType; import kamkeel.npcs.network.packets.data.*; import kamkeel.npcs.network.packets.data.gui.*; +import kamkeel.npcs.network.packets.data.gui.IsGuiOpenPacket; import kamkeel.npcs.network.packets.data.large.*; import kamkeel.npcs.network.packets.data.npc.*; import kamkeel.npcs.network.packets.data.script.*; -import kamkeel.npcs.network.packets.request.AnimationCachePacket; -import kamkeel.npcs.network.packets.request.DimensionsGetPacket; -import kamkeel.npcs.network.packets.request.GuiRequestPacket; +import kamkeel.npcs.network.packets.request.*; import kamkeel.npcs.network.packets.request.bank.BankGetPacket; import kamkeel.npcs.network.packets.request.bank.BankRemovePacket; import kamkeel.npcs.network.packets.request.bank.BankSavePacket; @@ -50,9 +49,15 @@ import kamkeel.npcs.network.packets.request.recipe.RecipeGetPacket; import kamkeel.npcs.network.packets.request.recipe.RecipeRemovePacket; import kamkeel.npcs.network.packets.request.recipe.RecipeSavePacket; import kamkeel.npcs.network.packets.request.recipe.RecipesGetPacket; +import kamkeel.npcs.network.packets.request.role.RoleCompanionUpdatePacket; +import kamkeel.npcs.network.packets.request.role.RoleGetPacket; +import kamkeel.npcs.network.packets.request.role.RoleSavePacket; import kamkeel.npcs.network.packets.request.tags.TagRemovePacket; import kamkeel.npcs.network.packets.request.tags.TagSavePacket; import kamkeel.npcs.network.packets.request.tags.TagSetPacket; +import kamkeel.npcs.network.packets.request.transform.TransformGetPacket; +import kamkeel.npcs.network.packets.request.transform.TransformLoadPacket; +import kamkeel.npcs.network.packets.request.transform.TransformSavePacket; import kamkeel.npcs.network.packets.request.transport.*; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -96,6 +101,11 @@ public class PacketHandler { } public void registerRequestPackets(){ + // NPC Packets + REQUEST_PACKET.registerPacket(new NpcClosePacket()); + REQUEST_PACKET.registerPacket(new NpcDeletePacket()); + + // Linked Packets REQUEST_PACKET.registerPacket(new LinkedGetAllPacket()); REQUEST_PACKET.registerPacket(new LinkedRemovePacket()); @@ -185,7 +195,7 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new TransportSavePacket()); REQUEST_PACKET.registerPacket(new TransportGetLocationPacket()); - // Remote Packets + // Remote Packets Packets REQUEST_PACKET.registerPacket(new RemoteMainMenuPacket()); REQUEST_PACKET.registerPacket(new RemoteGlobalMenuPacket()); REQUEST_PACKET.registerPacket(new RemoteDeletePacket()); @@ -195,22 +205,35 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new RemoteResetPacket()); REQUEST_PACKET.registerPacket(new RemoteTpToNpcPacket()); - // CustomGUI + // CustomGUI Packets REQUEST_PACKET.registerPacket(new CustomGuiButtonPacket()); REQUEST_PACKET.registerPacket(new CustomGuiClosePacket()); REQUEST_PACKET.registerPacket(new CustomGuiUnfocusedPacket()); REQUEST_PACKET.registerPacket(new CustomScrollClickPacket()); - // Job + // Job Packets REQUEST_PACKET.registerPacket(new JobGetPacket()); REQUEST_PACKET.registerPacket(new JobSavePacket()); REQUEST_PACKET.registerPacket(new JobSpawnerAddPacket()); REQUEST_PACKET.registerPacket(new JobSpawnerRemovePacket()); - // Other + // Role Packets + REQUEST_PACKET.registerPacket(new RoleCompanionUpdatePacket()); + REQUEST_PACKET.registerPacket(new RoleSavePacket()); + REQUEST_PACKET.registerPacket(new RoleGetPacket()); + + // Transform Packets + REQUEST_PACKET.registerPacket(new TransformSavePacket()); + REQUEST_PACKET.registerPacket(new TransformGetPacket()); + REQUEST_PACKET.registerPacket(new TransformLoadPacket()); + + // Other Packets REQUEST_PACKET.registerPacket(new GuiRequestPacket()); REQUEST_PACKET.registerPacket(new DimensionsGetPacket()); REQUEST_PACKET.registerPacket(new AnimationCachePacket()); + REQUEST_PACKET.registerPacket(new MerchantUpdatePacket()); + REQUEST_PACKET.registerPacket(new ModelDataSavePacket()); + REQUEST_PACKET.registerPacket(new MailOpenSetupPacket()); } public void registerDataPackets(){ diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index bb40e8d83..5540f6f89 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -121,5 +121,38 @@ public enum EnumRequestPacket { PartySetLeader, PartySetQuest, - LinkedRemove, LinkedAdd, LinkedGetAll, LinkedSet, BankGet, BanksGet, BankSave, BankRemove, QuestCategoryGet, PlayerDataGet, PlayerDataRemove, PlayerDataMapRegen, JobSave, JobGet, JobSpawnerAdd, RoleCompanionUpdate, JobSpawnerRemove, RoleSave, RoleGet, MailOpenSetup, TransformSave, TransformGet, TransformLoad, TraderMarketSave, ServerUpdateSkinOverlays + LinkedRemove, + LinkedAdd, + LinkedGetAll, + LinkedSet, + + BankGet, + BanksGet, + BankSave, + BankRemove, + + QuestCategoryGet, + + PlayerDataGet, + PlayerDataRemove, + PlayerDataMapRegen, + + JobSave, + JobGet, + JobSpawnerAdd, + JobSpawnerRemove, + + RoleCompanionUpdate, + RoleSave, + RoleGet, + + MailOpenSetup, + + TransformSave, + TransformGet, + TransformLoad, + + TraderMarketSave, + + ServerUpdateSkinOverlays } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java index 27081330f..7e9c9b68e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java @@ -45,8 +45,6 @@ public final class GuiRequestPacket extends AbstractPacket { return true; } - // No permission override - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/MailOpenSetupPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/MailOpenSetupPacket.java index 7f1a909cf..473053715 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/MailOpenSetupPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/MailOpenSetupPacket.java @@ -12,6 +12,7 @@ import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; import noppes.npcs.constants.EnumGuiType; import noppes.npcs.containers.ContainerMail; @@ -22,8 +23,14 @@ import java.io.IOException; public final class MailOpenSetupPacket extends AbstractPacket { public static String packetName = "Request|MailOpenSetup"; + private NBTTagCompound compound; + public MailOpenSetupPacket() { } + public MailOpenSetupPacket(NBTTagCompound compound) { + this.compound = compound; + } + @Override public Enum getType() { return EnumRequestPacket.MailOpenSetup; @@ -36,12 +43,18 @@ public final class MailOpenSetupPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + PlayerMail mail = new PlayerMail(); mail.readNBT(ByteBufUtils.readNBT(in)); ContainerMail.staticmail = mail; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/MerchantUpdatePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/MerchantUpdatePacket.java index 1c830b376..41f812ae8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/MerchantUpdatePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/MerchantUpdatePacket.java @@ -9,6 +9,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.Entity; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.entity.player.EntityPlayer; @@ -22,8 +23,16 @@ import java.io.IOException; public final class MerchantUpdatePacket extends AbstractPacket { public static String packetName = "Request|MerchantUpdate"; + private int entityID; + private MerchantRecipeList list; + public MerchantUpdatePacket() { } + public MerchantUpdatePacket(int entityID, MerchantRecipeList list) { + this.entityID = entityID; + this.list = list; + } + @Override public Enum getType() { return EnumRequestPacket.MerchantUpdate; @@ -41,7 +50,9 @@ public final class MerchantUpdatePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.fillBuffer(out, this.entityID, this.list); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/ModelDataSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/ModelDataSavePacket.java index 06e6412de..81a426df1 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/npc/ModelDataSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/ModelDataSavePacket.java @@ -12,6 +12,7 @@ import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.entity.EntityCustomNpc; @@ -20,8 +21,14 @@ import java.io.IOException; public final class ModelDataSavePacket extends AbstractPacket { public static String packetName = "Request|ModelDataSave"; + private NBTTagCompound save; + public ModelDataSavePacket() { } + public ModelDataSavePacket(NBTTagCompound save) { + this.save = save; + } + @Override public Enum getType() { return EnumRequestPacket.ModelDataSave; @@ -45,13 +52,17 @@ public final class ModelDataSavePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { - + ByteBufUtils.writeNBT(out, this.save); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + if(npc instanceof EntityCustomNpc) ((EntityCustomNpc)npc).modelData.readFromNBT(ByteBufUtils.readNBT(in)); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/NpcDeletePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/NpcDeletePacket.java index 373b75823..6a4125ef2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/npc/NpcDeletePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/NpcDeletePacket.java @@ -21,8 +21,7 @@ import java.io.IOException; public final class NpcDeletePacket extends AbstractPacket { public static final String packetName = "Request|NPCDelete"; - public NpcDeletePacket() { - } + public NpcDeletePacket() {} @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/request/role/RoleCompanionUpdatePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleCompanionUpdatePacket.java index 5465cc029..1b291fb0d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/role/RoleCompanionUpdatePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleCompanionUpdatePacket.java @@ -13,6 +13,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.constants.EnumCompanionStage; +import noppes.npcs.constants.EnumRoleType; import noppes.npcs.roles.RoleCompanion; import java.io.IOException; @@ -20,8 +21,14 @@ import java.io.IOException; public final class RoleCompanionUpdatePacket extends AbstractPacket { public static String packetName = "Request|RoleCompanionUpdate"; + private EnumCompanionStage companionStage; + public RoleCompanionUpdatePacket() { } + public RoleCompanionUpdatePacket(EnumCompanionStage companionStage) { + this.companionStage = companionStage; + } + @Override public Enum getType() { return EnumRequestPacket.RoleCompanionUpdate; @@ -44,12 +51,21 @@ public final class RoleCompanionUpdatePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.companionStage.ordinal()); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + if(npc.advanced.role != EnumRoleType.Companion) + return; + ((RoleCompanion)npc.roleInterface).matureTo(EnumCompanionStage.values()[in.readInt()]); npc.updateClient = true; } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/role/RoleGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleGetPacket.java index 057f8d08c..11f6e0037 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/role/RoleGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleGetPacket.java @@ -32,11 +32,6 @@ public final class RoleGetPacket extends AbstractPacket { return PacketHandler.REQUEST_PACKET; } - @Override - public CustomNpcsPermissions.Permission getPermission() { - return CustomNpcsPermissions.NPC_ADVANCED; - } - @Override public boolean needsNPC() { return true; @@ -48,9 +43,15 @@ public final class RoleGetPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; - if(npc.roleInterface == null) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + + if(npc.roleInterface == null) + return; + NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("RoleData", true); GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.roleInterface.writeToNBT(compound)); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/role/RoleSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleSavePacket.java index 564798031..8a7555d9b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/role/RoleSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/role/RoleSavePacket.java @@ -12,6 +12,7 @@ import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import java.io.IOException; @@ -19,8 +20,14 @@ import java.io.IOException; public final class RoleSavePacket extends AbstractPacket { public static String packetName = "Request|RoleSave"; + private NBTTagCompound compound; + public RoleSavePacket() { } + public RoleSavePacket(NBTTagCompound compound) { + this.compound = compound; + } + @Override public Enum getType() { return EnumRequestPacket.RoleSave; @@ -43,12 +50,18 @@ public final class RoleSavePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + npc.roleInterface.readFromNBT(ByteBufUtils.readNBT(in)); npc.updateClient = true; } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformGetPacket.java index 5825b695e..19f561c9d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformGetPacket.java @@ -48,8 +48,12 @@ public final class TransformGetPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.transform.writeOptions(new NBTTagCompound())); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java index 61cc24001..b9b7cd136 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java @@ -18,8 +18,14 @@ import java.io.IOException; public final class TransformLoadPacket extends AbstractPacket { public static String packetName = "Request|TransformLoad"; + private boolean transform; + public TransformLoadPacket() { } + public TransformLoadPacket(boolean transform) { + this.transform = transform; + } + @Override public Enum getType() { return EnumRequestPacket.TransformLoad; @@ -46,8 +52,12 @@ public final class TransformLoadPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + if(npc.transform.isValid()) npc.transform.transform(in.readBoolean()); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformSavePacket.java index f5583b17d..4872161a3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformSavePacket.java @@ -12,6 +12,7 @@ import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import java.io.IOException; @@ -19,8 +20,14 @@ import java.io.IOException; public final class TransformSavePacket extends AbstractPacket { public static String packetName = "Request|TransformSave"; + private NBTTagCompound compound; + public TransformSavePacket() { } + public TransformSavePacket(NBTTagCompound compound) { + this.compound = compound; + } + @Override public Enum getType() { return EnumRequestPacket.TransformSave; @@ -43,12 +50,18 @@ public final class TransformSavePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, this.compound); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + boolean isValid = npc.transform.isValid(); npc.transform.readOptions(ByteBufUtils.readNBT(in)); if (isValid != npc.transform.isValid()) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index fa10d7373..acfa43274 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -456,53 +456,6 @@ public class PacketHandlerServer{ NoppesUtilServer.setEditingQuest(player,quest); player.openGui(CustomNpcs.instance, gui , player.worldObj, 0, 0, 0); } - else if(type == EnumPacketServer.RoleCompanionUpdate){ - if(npc.advanced.role != EnumRoleType.Companion) - return; - ((RoleCompanion)npc.roleInterface).matureTo(EnumCompanionStage.values()[buffer.readInt()]); - npc.updateClient = true; - } - else if(type == EnumPacketServer.RoleSave){ - npc.roleInterface.readFromNBT(ByteBufUtils.readNBT(buffer)); - npc.updateClient = true; - } - else if(type == EnumPacketServer.RoleGet){ - if(npc.roleInterface == null) - return; - NBTTagCompound compound = new NBTTagCompound(); - compound.setBoolean("RoleData", true); - GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(compound)); - } - else if(type == EnumPacketServer.MerchantUpdate){ - Entity entity = player.worldObj.getEntityByID(buffer.readInt()); - if(entity == null || !(entity instanceof EntityVillager)) - return; - MerchantRecipeList list = MerchantRecipeList.func_151390_b(new PacketBuffer(buffer)); - ((EntityVillager)entity).setRecipes(list); - } - else if(type == EnumPacketServer.ModelDataSave){ - if(npc instanceof EntityCustomNpc) - ((EntityCustomNpc)npc).modelData.readFromNBT(ByteBufUtils.readNBT(buffer)); - } - else if(type == EnumPacketServer.MailOpenSetup){ - PlayerMail mail = new PlayerMail(); - mail.readNBT(ByteBufUtils.readNBT(buffer)); - ContainerMail.staticmail = mail; - player.openGui(CustomNpcs.instance, EnumGuiType.PlayerMailman.ordinal(), player.worldObj, 1, 0, 0); - } - else if(type == EnumPacketServer.TransformSave){ - boolean isValid = npc.transform.isValid(); - npc.transform.readOptions(ByteBufUtils.readNBT(buffer)); - if(isValid != npc.transform.isValid()) - npc.updateAI = true; - } - else if(type == EnumPacketServer.TransformGet){ - GuiDataPacket.sendGuiData(player, npc.transform.writeOptions(new NBTTagCompound())); - } - else if(type == EnumPacketServer.TransformLoad){ - if(npc.transform.isValid()) - npc.transform.transform(buffer.readBoolean()); - } else if(type == EnumPacketServer.TraderMarketSave){ String market = ByteBufUtils.readString(buffer); if(market == null) diff --git a/src/main/java/noppes/npcs/client/NoppesUtil.java b/src/main/java/noppes/npcs/client/NoppesUtil.java index 50a23f2e8..b9d4134ce 100644 --- a/src/main/java/noppes/npcs/client/NoppesUtil.java +++ b/src/main/java/noppes/npcs/client/NoppesUtil.java @@ -3,6 +3,7 @@ package noppes.npcs.client; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.GuiRequestPacket; +import kamkeel.npcs.network.packets.request.IsGuiOpenPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -268,6 +269,7 @@ public class NoppesUtil { } public static void isGUIOpen(boolean isGUIOpen) { + PacketClient.sendClient(new IsGuiOpenPacket(isGUIOpen)); Client.sendData(EnumPacketServer.IsGuiOpen, isGUIOpen); } } diff --git a/src/main/java/noppes/npcs/client/gui/GuiMerchantAdd.java b/src/main/java/noppes/npcs/client/gui/GuiMerchantAdd.java index 7ca893a4e..d3a58146d 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiMerchantAdd.java +++ b/src/main/java/noppes/npcs/client/gui/GuiMerchantAdd.java @@ -4,6 +4,8 @@ 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.PacketClient; +import kamkeel.npcs.network.packets.request.MerchantUpdatePacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.inventory.GuiContainer; @@ -109,7 +111,7 @@ public class GuiMerchantAdd extends GuiContainer merchantrecipelist.remove(currentRecipeIndex); if(currentRecipeIndex > 0) currentRecipeIndex--; - Client.sendData(EnumPacketServer.MerchantUpdate, ServerEventsHandler.Merchant.getEntityId(), merchantrecipelist); + PacketClient.sendClient(new MerchantUpdatePacket(ServerEventsHandler.Merchant.getEntityId(), merchantrecipelist)); } } @@ -132,7 +134,7 @@ public class GuiMerchantAdd extends GuiContainer MerchantRecipeList merchantrecipelist = this.theIMerchant.getRecipes(mc.thePlayer); merchantrecipelist.add(recipe); - Client.sendData(EnumPacketServer.MerchantUpdate, ServerEventsHandler.Merchant.getEntityId(), merchantrecipelist); + PacketClient.sendClient(new MerchantUpdatePacket(ServerEventsHandler.Merchant.getEntityId(), merchantrecipelist)); } } diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiMailmanSendSetup.java b/src/main/java/noppes/npcs/client/gui/SubGuiMailmanSendSetup.java index fe72e3f8e..9191b884d 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiMailmanSendSetup.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiMailmanSendSetup.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.MailOpenSetupPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.nbt.NBTTagCompound; @@ -63,7 +65,7 @@ public class SubGuiMailmanSendSetup extends SubGuiInterface implements ITextfiel GuiMailmanWrite.parent = getParent(); GuiMailmanWrite.mail = mail; - Client.sendData(EnumPacketServer.MailOpenSetup, mail.writeNBT()); + PacketClient.sendClient(new MailOpenSetupPacket(mail.writeNBT())); } if(id == 3){ setSubGui(new GuiQuestSelection(mail.questId)); diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCNightSetup.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCNightSetup.java index a501d6b2b..fe8b57774 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCNightSetup.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCNightSetup.java @@ -1,5 +1,9 @@ package noppes.npcs.client.gui.advanced; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.transform.TransformGetPacket; +import kamkeel.npcs.network.packets.request.transform.TransformLoadPacket; +import kamkeel.npcs.network.packets.request.transform.TransformSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -14,12 +18,12 @@ import noppes.npcs.entity.EntityNPCInterface; public class GuiNPCNightSetup extends GuiNPCInterface2 implements IGuiData { private DataTransform data; - + public GuiNPCNightSetup(EntityNPCInterface npc) { super(npc); data = npc.transform; - Client.sendData(EnumPacketServer.TransformGet); + PacketClient.sendClient(new TransformGetPacket()); } public void initGui() @@ -40,16 +44,16 @@ public class GuiNPCNightSetup extends GuiNPCInterface2 implements IGuiData this.addLabel(new GuiNpcLabel(4, "menu.advanced", guiLeft + 4, guiTop + 113)); this.addButton(new GuiNpcButton(4, guiLeft + 104, guiTop + 108, 50, 20, new String[]{"gui.no","gui.yes"}, data.hasAdvanced?1:0)); - + this.addLabel(new GuiNpcLabel(5, "role.name", guiLeft + 4, guiTop + 135)); this.addButton(new GuiNpcButton(5, guiLeft + 104, guiTop + 130, 50, 20, new String[]{"gui.no","gui.yes"}, data.hasRole?1:0)); - + this.addLabel(new GuiNpcLabel(6, "job.name", guiLeft + 4, guiTop + 157)); this.addButton(new GuiNpcButton(6, guiLeft + 104, guiTop + 152, 50, 20, new String[]{"gui.no","gui.yes"}, data.hasJob?1:0)); - + this.addLabel(new GuiNpcLabel(10, "advanced.editingmode", guiLeft + 170, guiTop + 9)); this.addButton(new GuiNpcButton(10, guiLeft + 244, guiTop + 4, 50, 20, new String[]{"gui.no","gui.yes"}, data.editingModus?1:0)); - + if(data.editingModus){ this.addButton(new GuiNpcButton(11, guiLeft + 170, guiTop + 34, "advanced.loadday")); this.addButton(new GuiNpcButton(12, guiLeft + 170, guiTop + 56, "advanced.loadnight")); @@ -80,16 +84,16 @@ public class GuiNPCNightSetup extends GuiNPCInterface2 implements IGuiData initGui(); } if(button.id == 11){ - Client.sendData(EnumPacketServer.TransformLoad, false); + PacketClient.sendClient(new TransformLoadPacket(false)); } if(button.id == 12){ - Client.sendData(EnumPacketServer.TransformLoad, true); + PacketClient.sendClient(new TransformLoadPacket(true)); } } - - + + public void save() { - Client.sendData(EnumPacketServer.TransformSave, data.writeOptions(new NBTTagCompound())); + PacketClient.sendClient(new TransformSavePacket(data.writeOptions(new NBTTagCompound()))); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java index 6ef941e2e..687e80538 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java @@ -4,6 +4,7 @@ import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.jobs.JobGetPacket; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedGetPacket; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; +import kamkeel.npcs.network.packets.request.role.RoleGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NoppesStringUtils; @@ -60,7 +61,7 @@ public class GuiNpcAdvanced extends GuiNPCInterface2 implements IGuiData GuiNpcButton button = (GuiNpcButton) guibutton; if (button.id == 3) { save(); - Client.sendData(EnumPacketServer.RoleGet); + PacketClient.sendClient(new RoleGetPacket()); } if(button.id == 8){ hasChanges = true; diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java index a6d6c2c54..823de1980 100644 --- a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java +++ b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java @@ -1,6 +1,8 @@ package noppes.npcs.client.gui.model; import kamkeel.npcs.addon.client.GeckoAddonClient; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.npc.ModelDataSavePacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; @@ -380,7 +382,7 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol @Override public void close(){ - Client.sendData(EnumPacketServer.ModelDataSave, playerdata.writeToNBT()); + PacketClient.sendClient(new ModelDataSavePacket(playerdata.writeToNBT())); displayGuiScreen(parent); } diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java index fe3fc75e7..0f61d97e4 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java @@ -3,6 +3,7 @@ package noppes.npcs.client.gui.roles; import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.bank.BankGetPacket; import kamkeel.npcs.network.packets.request.bank.BanksGetPacket; +import kamkeel.npcs.network.packets.request.role.RoleSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -83,6 +84,6 @@ public class GuiNpcBankSetup extends GuiNPCInterface2 implements IScrollData,ICu } public void save() { - Client.sendData(EnumPacketServer.RoleSave, role.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new RoleSavePacket(role.writeToNBT(new NBTTagCompound()))); } } diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java index 0fdac6fd8..615eacaf3 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.role.RoleCompanionUpdatePacket; +import kamkeel.npcs.network.packets.request.role.RoleSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -14,11 +17,11 @@ import noppes.npcs.roles.RoleCompanion; import java.util.ArrayList; import java.util.List; -public class GuiNpcCompanion extends GuiNPCInterface2 implements ITextfieldListener, ISliderListener{ +public class GuiNpcCompanion extends GuiNPCInterface2 implements ITextfieldListener, ISliderListener{ private RoleCompanion role; private List talents = new ArrayList(); public GuiNpcCompanion(EntityNPCInterface npc){ - super(npc); + super(npc); role = (RoleCompanion) npc.roleInterface; } @@ -27,11 +30,11 @@ public class GuiNpcCompanion extends GuiNPCInterface2 implements ITextfieldListe super.initGui(); talents.clear(); int y = guiTop + 4; - + addButton(new GuiNpcButton(0, guiLeft + 70, y, 90, 20, new String[]{EnumCompanionStage.BABY.name, EnumCompanionStage.CHILD.name, EnumCompanionStage.TEEN.name, EnumCompanionStage.ADULT.name, EnumCompanionStage.FULLGROWN.name}, role.stage.ordinal())); addLabel(new GuiNpcLabel(0, "companion.stage", guiLeft + 4, y + 5)); addButton(new GuiNpcButton(1, guiLeft + 162, y, 90, 20, "gui.update")); - + addButton(new GuiNpcButton(2, guiLeft + 70, y += 22, 90, 20, new String[]{"gui.no", "gui.yes"}, role.canAge?1:0)); addLabel(new GuiNpcLabel(2, "companion.age", guiLeft + 4, y + 5)); if(role.canAge){ @@ -42,13 +45,13 @@ public class GuiNpcCompanion extends GuiNPCInterface2 implements ITextfieldListe talents.add(new GuiTalent(role, EnumCompanionTalent.INVENTORY, guiLeft + 4, y+=26)); addSlider(new GuiNpcSlider(this, 10, guiLeft + 30, y + 2, 100, 20, role.getExp(EnumCompanionTalent.INVENTORY)/5000f)); - + talents.add(new GuiTalent(role, EnumCompanionTalent.ARMOR, guiLeft + 4, y+=26)); addSlider(new GuiNpcSlider(this, 11, guiLeft + 30, y + 2, 100, 20, role.getExp(EnumCompanionTalent.ARMOR)/5000f)); - + talents.add(new GuiTalent(role, EnumCompanionTalent.SWORD, guiLeft + 4, y+=26)); addSlider(new GuiNpcSlider(this, 12, guiLeft + 30, y + 2, 100, 20, role.getExp(EnumCompanionTalent.SWORD)/5000f)); - + // talents.add(new GuiTalent(role, EnumCompanionTalent.RANGED, guiLeft + 4, y+=26)); // addSlider(new GuiNpcSlider(this, 13, guiLeft + 30, y + 2, 100, 20, role.getExp(EnumCompanionTalent.RANGED)/5000f)); } @@ -63,7 +66,7 @@ public class GuiNpcCompanion extends GuiNPCInterface2 implements ITextfieldListe initGui(); } if(guibutton.id == 1){ - Client.sendData(EnumPacketServer.RoleCompanionUpdate, role.stage.ordinal()); + PacketClient.sendClient(new RoleCompanionUpdatePacket(role.stage)); } if(guibutton.id == 2){ GuiNpcButton button = (GuiNpcButton) guibutton; @@ -85,16 +88,16 @@ public class GuiNpcCompanion extends GuiNPCInterface2 implements ITextfieldListe talent.drawScreen(i, j, f); } } - + @Override public void elementClicked(){ - + } @Override public void save() { - Client.sendData(EnumPacketServer.RoleSave, role.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new RoleSavePacket(role.writeToNBT(new NBTTagCompound()))); } @Override @@ -112,13 +115,13 @@ public class GuiNpcCompanion extends GuiNPCInterface2 implements ITextfieldListe @Override public void mousePressed(GuiNpcSlider slider) { // TODO Auto-generated method stub - + } @Override public void mouseReleased(GuiNpcSlider slider) { // TODO Auto-generated method stub - + } diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerSetup.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerSetup.java index 1c0e2cd20..b346619dd 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerSetup.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerSetup.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.role.RoleSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -47,13 +49,13 @@ public class GuiNpcFollowerSetup extends GuiContainerNPCInterface2 addLabel(new GuiNpcLabel(7, "follower.infiniteDays", guiLeft + 180, guiTop + 80)); addButton(new GuiNpcButtonYesNo(7, guiLeft + 260, guiTop + 75, role.infiniteDays)); - + addLabel(new GuiNpcLabel(8, "follower.guiDisabled", guiLeft + 180, guiTop + 104)); addButton(new GuiNpcButtonYesNo(8, guiLeft + 260, guiTop + 99, role.disableGui)); - + addLabel(new GuiNpcLabel(9, "follower.allowSoulstone", guiLeft + 180, guiTop + 128)); addButton(new GuiNpcButtonYesNo(9, guiLeft + 260, guiTop + 123, !role.refuseSoulStone)); - + addButton(new GuiNpcButton(10, guiLeft + 195, guiTop + 147, 100, 20, "remote.reset")); } @@ -77,7 +79,7 @@ public class GuiNpcFollowerSetup extends GuiContainerNPCInterface2 @Override protected void drawGuiContainerForegroundLayer(int par1, int par2) { - + } @Override public void save() { @@ -91,13 +93,13 @@ public class GuiNpcFollowerSetup extends GuiContainerNPCInterface2 days = getTextField(i).getInteger(); if(days <= 0) days = 1; - + map.put(i,days); } } role.rates = map; role.dialogHire = getTextField(3).getText(); role.dialogFarewell = getTextField(4).getText(); - Client.sendData(EnumPacketServer.RoleSave, role.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new RoleSavePacket(role.writeToNBT(new NBTTagCompound()))); } } diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java index 067699b70..1ad4ce2fb 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java @@ -1,6 +1,8 @@ package noppes.npcs.client.gui.roles; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.role.RoleSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; @@ -86,7 +88,7 @@ public class GuiNpcTraderSetup extends GuiContainerNPCInterface2 implements ITex @Override public void save() { Client.sendData(EnumPacketServer.TraderMarketSave, role.marketName, false); - Client.sendData(EnumPacketServer.RoleSave, role.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new RoleSavePacket(role.writeToNBT(new NBTTagCompound()))); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java index 0e9941d25..6649fdd7e 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.util; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.npc.NpcClosePacket; +import kamkeel.npcs.network.packets.request.npc.NpcDeletePacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiScreen; @@ -104,7 +107,7 @@ public class GuiNpcMenu implements GuiYesNoCallback { if (npc != null) { npc.reset(); if (saveNPC) - Client.sendData(EnumPacketServer.NpcMenuClose); + PacketClient.sendClient(new NpcClosePacket()); } } @@ -132,7 +135,7 @@ public class GuiNpcMenu implements GuiYesNoCallback { public void confirmClicked(boolean flag, int i) { Minecraft mc = Minecraft.getMinecraft(); if (flag) { - Client.sendData(EnumPacketServer.NPCDelete); + PacketClient.sendClient(new NpcDeletePacket()); mc.displayGuiScreen(null); mc.setIngameFocus(); } else { diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 750587d6b..5e2682a48 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -3,23 +3,19 @@ package noppes.npcs.constants; import noppes.npcs.CustomNpcsPermissions; public enum EnumPacketServer { - NPCDelete(CustomNpcsPermissions.NPC_DELETE, true), - NpcMenuClose(CustomNpcsPermissions.NPC_GUI, true), - RemoteReset(CustomNpcsPermissions.NPC_RESET), SpawnMob(CustomNpcsPermissions.SPAWNER_MOB), MobSpawner(CustomNpcsPermissions.SPAWNER_CREATE), - ModelDataSave(CustomNpcsPermissions.NPC_DISPLAY, true), - TransformSave(CustomNpcsPermissions.NPC_ADVANCED, true), TransformGet(true), - TransformLoad(CustomNpcsPermissions.NPC_ADVANCED, true), TraderMarketSave(CustomNpcsPermissions.NPC_ADVANCED, true), - RoleSave(CustomNpcsPermissions.NPC_ADVANCED, true), - RoleGet(true), - RoleCompanionUpdate(CustomNpcsPermissions.NPC_ADVANCED, true), - - ClonePreSave(CustomNpcsPermissions.NPC_CLONE), CloneSave(CustomNpcsPermissions.NPC_CLONE), CloneRemove(CustomNpcsPermissions.NPC_CLONE), CloneList, CloneTagList, CloneAllTags, CloneAllTagsShort, + ClonePreSave(CustomNpcsPermissions.NPC_CLONE), + CloneSave(CustomNpcsPermissions.NPC_CLONE), + CloneRemove(CustomNpcsPermissions.NPC_CLONE), + CloneList, + CloneTagList, + CloneAllTags, + CloneAllTagsShort, ScriptGlobalGuiDataSave(CustomNpcsPermissions.SCRIPT_GLOBAL, false), ScriptGlobalGuiDataGet(false), @@ -65,8 +61,8 @@ public enum EnumPacketServer { QuestOpenGui, QuestLogToServer, PartyLogToServer, UntrackQuest, - QuestGet, QuestCategoryGet, - SaveTileEntity, MailOpenSetup, + QuestGet, + SaveTileEntity, DimensionTeleport, GetTileEntity, IsGuiOpen, SavePartyData, CreateParty, GetPartyData, DisbandParty, KickPlayer, LeavePlayer, PartyInvite, GetPartyInviteList, AcceptInvite, From 601123811a8748bdfc742c1aa5d7f574f653fe6f Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 16:09:46 -0500 Subject: [PATCH 068/157] Informed IsGuiOpen --- src/main/java/kamkeel/npcs/network/PacketHandler.java | 1 + .../request/{IsGuiOpenPacket.java => IsGuiOpenInform.java} | 6 +++--- src/main/java/noppes/npcs/client/NoppesUtil.java | 6 ++---- 3 files changed, 6 insertions(+), 7 deletions(-) rename src/main/java/kamkeel/npcs/network/packets/request/{IsGuiOpenPacket.java => IsGuiOpenInform.java} (90%) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 6f9a6f662..b0c0f8dbd 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -228,6 +228,7 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new TransformLoadPacket()); // Other Packets + REQUEST_PACKET.registerPacket(new IsGuiOpenInform()); REQUEST_PACKET.registerPacket(new GuiRequestPacket()); REQUEST_PACKET.registerPacket(new DimensionsGetPacket()); REQUEST_PACKET.registerPacket(new AnimationCachePacket()); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenInform.java similarity index 90% rename from src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenPacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenInform.java index 4fe16d795..3aa839d51 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/IsGuiOpenInform.java @@ -13,15 +13,15 @@ import noppes.npcs.controllers.data.PlayerData; import java.io.IOException; -public final class IsGuiOpenPacket extends AbstractPacket { +public final class IsGuiOpenInform extends AbstractPacket { public static final String packetName = "Request|IsGuiOpen"; private boolean isOpen; - public IsGuiOpenPacket() { + public IsGuiOpenInform() { } - public IsGuiOpenPacket(boolean isOpen) { + public IsGuiOpenInform(boolean isOpen) { this.isOpen = isOpen; } diff --git a/src/main/java/noppes/npcs/client/NoppesUtil.java b/src/main/java/noppes/npcs/client/NoppesUtil.java index b9d4134ce..e9f9fce0c 100644 --- a/src/main/java/noppes/npcs/client/NoppesUtil.java +++ b/src/main/java/noppes/npcs/client/NoppesUtil.java @@ -3,7 +3,7 @@ package noppes.npcs.client; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.GuiRequestPacket; -import kamkeel.npcs.network.packets.request.IsGuiOpenPacket; +import kamkeel.npcs.network.packets.request.IsGuiOpenInform; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -22,7 +22,6 @@ import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.client.gui.util.IScrollData; import noppes.npcs.client.gui.util.IScrollGroup; import noppes.npcs.constants.EnumGuiType; -import noppes.npcs.constants.EnumPacketServer; import noppes.npcs.controllers.data.Dialog; import noppes.npcs.controllers.data.Quest; import noppes.npcs.controllers.data.SkinOverlay; @@ -269,7 +268,6 @@ public class NoppesUtil { } public static void isGUIOpen(boolean isGUIOpen) { - PacketClient.sendClient(new IsGuiOpenPacket(isGUIOpen)); - Client.sendData(EnumPacketServer.IsGuiOpen, isGUIOpen); + PacketClient.sendClient(new IsGuiOpenInform(isGUIOpen)); } } From 7c2ad0749bd9f662018decde75726d3c39ceb924 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Sun, 2 Feb 2025 22:21:29 +0100 Subject: [PATCH 069/157] Follower packet --- .../npcs/network/enums/EnumPlayerPacket.java | 4 + .../packets/player/FollowerPacket.java | 74 +++++++++++++++++++ .../java/noppes/npcs/PacketHandlerPlayer.java | 40 +++++----- .../client/gui/player/GuiNpcFollower.java | 26 ++++--- .../client/gui/player/GuiNpcFollowerHire.java | 14 ++-- .../npcs/constants/EnumPlayerPacket.java | 3 - 6 files changed, 120 insertions(+), 41 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index 5df856525..2a882953d 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -1,4 +1,8 @@ package kamkeel.npcs.network.enums; public enum EnumPlayerPacket { + FollowerAction; + + + } diff --git a/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java new file mode 100644 index 000000000..4319de343 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java @@ -0,0 +1,74 @@ +package kamkeel.npcs.network.packets.player; + +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.EnumPlayerPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.NoppesUtilPlayer; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.constants.EnumJobType; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public class FollowerPacket extends AbstractPacket { + public static final String packetName = "Player|Follower"; + + private final Action type; + + public FollowerPacket(Action action) { + this.type = action; + } + + @Override + public Enum getType() { + return EnumPlayerPacket.FollowerAction; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + Action requestedAction = Action.values()[in.readInt()]; + EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); + + if (npc == null || npc.advanced.job != EnumJobType.Follower) + return; + + EntityPlayerMP entityPlayerMP = (EntityPlayerMP) player; + + switch (requestedAction) { + case Hire: + NoppesUtilPlayer.hireFollower(entityPlayerMP, npc); + break; + case Extend: + NoppesUtilPlayer.extendFollower(entityPlayerMP, npc); + GuiDataPacket.sendGuiData(entityPlayerMP, npc.roleInterface.writeToNBT(new NBTTagCompound())); + break; + case State: + NoppesUtilPlayer.changeFollowerState(entityPlayerMP, npc); + GuiDataPacket.sendGuiData(entityPlayerMP, npc.roleInterface.writeToNBT(new NBTTagCompound())); + break; + } + + } + + public enum Action { + Hire, + Extend, + State + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index 88e5c4832..db38be181 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -126,26 +126,26 @@ public class PacketHandlerPlayer{ EventHooks.onPlayerMouseClicked(player, button, mouseWheel, buttonDown, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, keysDown); } - else if(type == EnumPlayerPacket.FollowerHire){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null || npc.advanced.role != EnumRoleType.Follower) - return; - NoppesUtilPlayer.hireFollower(player, npc); - } - else if(type == EnumPlayerPacket.FollowerExtend){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null || npc.advanced.role != EnumRoleType.Follower) - return; - NoppesUtilPlayer.extendFollower(player, npc); - GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); - } - else if(type == EnumPlayerPacket.FollowerState){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null || npc.advanced.role != EnumRoleType.Follower) - return; - NoppesUtilPlayer.changeFollowerState(player,npc); - GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); - } +// else if(type == EnumPlayerPacket.FollowerHire){ +// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); +// if(npc == null || npc.advanced.role != EnumRoleType.Follower) +// return; +// NoppesUtilPlayer.hireFollower(player, npc); +// } +// else if(type == EnumPlayerPacket.FollowerExtend){ +// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); +// if(npc == null || npc.advanced.role != EnumRoleType.Follower) +// return; +// NoppesUtilPlayer.extendFollower(player, npc); +// GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); +// } +// else if(type == EnumPlayerPacket.FollowerState){ +// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); +// if(npc == null || npc.advanced.role != EnumRoleType.Follower) +// return; +// NoppesUtilPlayer.changeFollowerState(player,npc); +// GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); +// } else if(type == EnumPlayerPacket.RoleGet){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null || npc.advanced.role == EnumRoleType.None) diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollower.java b/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollower.java index a51ad56d5..9b92d571a 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollower.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollower.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.player; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.player.FollowerPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.item.ItemStack; @@ -22,13 +24,13 @@ public class GuiNpcFollower extends GuiContainerNPCInterface implements IGuiDat private final ResourceLocation resource = new ResourceLocation("customnpcs","textures/gui/follower.png"); private EntityNPCInterface npc; private RoleFollower role; - + public GuiNpcFollower(EntityNPCInterface npc,ContainerNPCFollower container){ super(npc, container); this.npc = npc; role = (RoleFollower) npc.roleInterface; closeOnEsc = true; - + NoppesUtilPlayer.sendData(EnumPlayerPacket.RoleGet); } @Override @@ -44,10 +46,10 @@ public class GuiNpcFollower extends GuiContainerNPCInterface implements IGuiDat super.actionPerformed(guibutton); int id = guibutton.id; if(id == 4){ - NoppesUtilPlayer.sendData(EnumPlayerPacket.FollowerState); + PacketClient.sendClient(new FollowerPacket(FollowerPacket.Action.State)); } if(id == 5){ - NoppesUtilPlayer.sendData(EnumPlayerPacket.FollowerExtend); + PacketClient.sendClient(new FollowerPacket(FollowerPacket.Action.Extend)); } } @@ -58,7 +60,7 @@ public class GuiNpcFollower extends GuiContainerNPCInterface implements IGuiDat if(role.getDaysLeft() <= 1) fontRendererObj.drawString(StatCollector.translateToLocal("follower.daysleft")+": " + StatCollector.translateToLocal("follower.lastday"), 62, 94, CustomNpcResourceListener.DefaultTextColor); else - fontRendererObj.drawString(StatCollector.translateToLocal("follower.daysleft") + ": " + (role.getDaysLeft()-1), 62, 94, CustomNpcResourceListener.DefaultTextColor); + fontRendererObj.drawString(StatCollector.translateToLocal("follower.daysleft") + ": " + (role.getDaysLeft()-1), 62, 94, CustomNpcResourceListener.DefaultTextColor); } } @@ -78,9 +80,9 @@ public class GuiNpcFollower extends GuiContainerNPCInterface implements IGuiDat int days = 1; if(role.rates.containsKey(id)) days = role.rates.get(id); - + int yOffset = index * 20; - + int x = guiLeft + 68; int y = guiTop + yOffset + 4; RenderHelper.enableGUIStandardItemLighting(); @@ -89,22 +91,22 @@ public class GuiNpcFollower extends GuiContainerNPCInterface implements IGuiDat GL11.glEnable(GL11.GL_LIGHTING); itemRender.renderItemIntoGUI(fontRendererObj, mc.renderEngine, itemstack, x + 11,y); itemRender.renderItemOverlayIntoGUI(fontRendererObj, mc.renderEngine, itemstack, x+11,y); - RenderHelper.disableStandardItemLighting(); + RenderHelper.disableStandardItemLighting(); GL11.glDisable(32826 /*GL_RESCALE_NORMAL_EXT*/); - + String daysS = days + " " + ((days == 1)?StatCollector.translateToLocal("follower.day"):StatCollector.translateToLocal("follower.days")); fontRendererObj.drawString(" = "+daysS, x + 27, y + 4, CustomNpcResourceListener.DefaultTextColor); //fontRenderer.drawString(quantity, x + 0 + (12-fontRenderer.getStringWidth(quantity))/2, y + 4, 0x404040); - + index++; } } this.drawNpc(33, 131); } - + @Override public void save() { - + } @Override public void setGuiData(NBTTagCompound compound) { diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollowerHire.java b/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollowerHire.java index 174c394bc..5dfc6008b 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollowerHire.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollowerHire.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.player; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.player.FollowerPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.item.ItemStack; @@ -41,7 +43,7 @@ public class GuiNpcFollowerHire extends GuiContainerNPCInterface super.actionPerformed(guibutton); if(guibutton.id == 5) { - NoppesUtilPlayer.sendData(EnumPlayerPacket.FollowerHire); + PacketClient.sendClient(new FollowerPacket(FollowerPacket.Action.Hire)); close(); } } @@ -68,10 +70,10 @@ public class GuiNpcFollowerHire extends GuiContainerNPCInterface int days = 1; if(role.rates.containsKey(id)) days = role.rates.get(id); - - + + int yOffset = index * 26; - + int x = guiLeft + 78; int y = guiTop + yOffset + 10; GL11.glEnable(32826 /*GL_RESCALE_NORMAL_EXT*/); @@ -79,7 +81,7 @@ public class GuiNpcFollowerHire extends GuiContainerNPCInterface itemRender.renderItemIntoGUI(fontRendererObj, mc.renderEngine, itemstack, x + 11,y); itemRender.renderItemOverlayIntoGUI(fontRendererObj, mc.renderEngine, itemstack, x+11,y); - RenderHelper.disableStandardItemLighting(); + RenderHelper.disableStandardItemLighting(); GL11.glDisable(32826 /*GL_RESCALE_NORMAL_EXT*/); String daysS = days + " " + ((days == 1)?StatCollector.translateToLocal("follower.day"):StatCollector.translateToLocal("follower.days")); @@ -92,7 +94,7 @@ public class GuiNpcFollowerHire extends GuiContainerNPCInterface } index++; } - + } @Override public void save() { diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index dbd05a62e..14ff743c1 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -1,9 +1,6 @@ package noppes.npcs.constants; public enum EnumPlayerPacket { - FollowerHire, - FollowerExtend, - FollowerState, Transport, BankUnlock, BankUpgrade, From 864e1cb8c724e30434d2a2e39824d2cacf578fb0 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Sun, 2 Feb 2025 22:57:46 +0100 Subject: [PATCH 070/157] Bank packet --- .../npcs/network/enums/EnumPlayerPacket.java | 9 +- .../network/packets/player/BankPacket.java | 101 ++++++++++++++++++ .../java/noppes/npcs/PacketHandlerPlayer.java | 42 ++++---- .../client/gui/player/GuiNPCBankChest.java | 24 +++-- .../npcs/constants/EnumPlayerPacket.java | 6 +- 5 files changed, 146 insertions(+), 36 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index 2a882953d..200fea1e1 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -1,7 +1,14 @@ package kamkeel.npcs.network.enums; public enum EnumPlayerPacket { - FollowerAction; + FollowerAction, + Transport, // TODO + BankAction, + Dialog, // TODO + QuestLog, // TODO + TrackedQuest, // TODO + CheckQuestCompletion, // TODO + diff --git a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java new file mode 100644 index 000000000..6f4e320b5 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java @@ -0,0 +1,101 @@ +package kamkeel.npcs.network.packets.player; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumPlayerPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilPlayer; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.constants.EnumRoleType; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.BankData; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public class BankPacket extends AbstractPacket { + public static final String packetName = "Player|Follower"; + + private final Action type; + private final int slotID; + private final int bankID; + + private BankPacket(Action action, int bankID, int slotID) { + this.type = action; + this.bankID = bankID; + this.slotID = slotID; + } + + public static BankPacket Open(int bankID, int slotID) { + return new BankPacket(Action.OpenSlot, bankID, slotID); + } + public static BankPacket Upgrade() { + return new BankPacket(Action.Upgrade, -1, -1); + } + public static BankPacket Unlock() { + return new BankPacket(Action.Unlock, -1, -1); + } + + @Override + public Enum getType() { + return EnumPlayerPacket.BankAction; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } + + @Override + @SideOnly(Side.CLIENT) + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + + if (type == Action.OpenSlot) { + out.writeInt(bankID); + out.writeInt(slotID); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + Action requestedAction = Action.values()[in.readInt()]; + + if (!(player instanceof EntityPlayerMP)) + return; + + EntityPlayerMP playerMP = (EntityPlayerMP) player; + + EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(playerMP); + + if(npc == null || npc.advanced.role != EnumRoleType.Bank) + return; + + switch (requestedAction) { + case Unlock: + NoppesUtilPlayer.bankUnlock(playerMP, npc); + break; + case Upgrade: + NoppesUtilPlayer.bankUpgrade(playerMP, npc); + break; + case OpenSlot: + int bankID = in.readInt(); + int slotID = in.readInt(); + BankData data = PlayerDataController.Instance.getBankData(playerMP,bankID).getBankOrDefault(bankID); + data.openBankGui(playerMP, npc, bankID, slotID); + break; + } + + } + + private enum Action { + Unlock, + Upgrade, + OpenSlot + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index db38be181..899037147 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -158,27 +158,27 @@ public class PacketHandlerPlayer{ return; NoppesUtilPlayer.transport(player, npc, ByteBufUtils.readString(buffer)); } - else if(type == EnumPlayerPacket.BankUpgrade){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null || npc.advanced.role != EnumRoleType.Bank) - return; - NoppesUtilPlayer.bankUpgrade(player, npc); - } - else if(type == EnumPlayerPacket.BankUnlock){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null || npc.advanced.role != EnumRoleType.Bank) - return; - NoppesUtilPlayer.bankUnlock(player, npc); - } - else if(type == EnumPlayerPacket.BankSlotOpen){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null || npc.advanced.role != EnumRoleType.Bank) - return; - int slot = buffer.readInt(); - int bankId = buffer.readInt(); - BankData data = PlayerDataController.Instance.getBankData(player,bankId).getBankOrDefault(bankId); - data.openBankGui(player, npc, bankId, slot); - } +// else if(type == EnumPlayerPacket.BankUpgrade){ +// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); +// if(npc == null || npc.advanced.role != EnumRoleType.Bank) +// return; +// NoppesUtilPlayer.bankUpgrade(player, npc); +// } +// else if(type == EnumPlayerPacket.BankUnlock){ +// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); +// if(npc == null || npc.advanced.role != EnumRoleType.Bank) +// return; +// NoppesUtilPlayer.bankUnlock(player, npc); +// } +// else if(type == EnumPlayerPacket.BankSlotOpen){ +// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); +// if(npc == null || npc.advanced.role != EnumRoleType.Bank) +// return; +// int slot = buffer.readInt(); +// int bankId = buffer.readInt(); +// BankData data = PlayerDataController.Instance.getBankData(player,bankId).getBankOrDefault(bankId); +// data.openBankGui(player, npc, bankId, slot); +// } else if(type == EnumPlayerPacket.Dialog){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null) diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java b/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java index 3b86a26b9..e8ce79244 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.player; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.player.BankPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.item.ItemStack; @@ -26,7 +28,7 @@ public class GuiNPCBankChest extends GuiContainerNPCInterface implements IGuiDat private int maxSlots = 1; private int unlockedSlots = 1; private ItemStack currency; - + public GuiNPCBankChest(EntityNPCInterface npc,ContainerNPCBankInterface container) { super(npc,container); @@ -35,7 +37,7 @@ public class GuiNPCBankChest extends GuiContainerNPCInterface implements IGuiDat allowUserInput = false; //allowUserInput ySize = 235; closeOnEsc = true; - + } @Override public void initGui(){ @@ -70,18 +72,18 @@ public class GuiNPCBankChest extends GuiContainerNPCInterface implements IGuiDat int id = guibutton.id; if(id < 6){ close(); - NoppesUtilPlayer.sendData(EnumPlayerPacket.BankSlotOpen, id, container.bankid); + PacketClient.sendClient(BankPacket.Open(container.bankid, id)); } if(id == 8){ - NoppesUtilPlayer.sendData(EnumPlayerPacket.BankUnlock); + PacketClient.sendClient(BankPacket.Unlock()); } if(id == 9){ - NoppesUtilPlayer.sendData(EnumPlayerPacket.BankUpgrade); + PacketClient.sendClient(BankPacket.Upgrade()); } - + } - + @Override protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { @@ -91,8 +93,8 @@ public class GuiNPCBankChest extends GuiContainerNPCInterface implements IGuiDat int i1 = (height - ySize) / 2; drawTexturedModalRect(l, i1, 0, 0, xSize, 6); if(!container.isAvailable()){ - drawTexturedModalRect(l, i1 + 6, 0, 6, xSize, 64); - drawTexturedModalRect(l, i1 + 70, 0, 124, xSize, 222-124); + drawTexturedModalRect(l, i1 + 6, 0, 6, xSize, 64); + drawTexturedModalRect(l, i1 + 70, 0, 124, xSize, 222-124); int x = guiLeft + 30; int y = guiTop + 8; fontRendererObj.drawString(StatCollector.translateToLocal("bank.unlockCosts")+":", x , y + 4 , CustomNpcResourceListener.DefaultTextColor); @@ -100,7 +102,7 @@ public class GuiNPCBankChest extends GuiContainerNPCInterface implements IGuiDat } else if(container.isUpgraded()){ drawTexturedModalRect(l, i1 + 60, 0, 60, xSize, 162); - drawTexturedModalRect(l, i1 + 6, 0, 60, xSize, 64); + drawTexturedModalRect(l, i1 + 6, 0, 60, xSize, 64); } else if(container.canBeUpgraded()){ drawTexturedModalRect(l, i1 + 6, 0, 6, xSize, 216); @@ -136,7 +138,7 @@ public class GuiNPCBankChest extends GuiContainerNPCInterface implements IGuiDat { this.renderToolTip(item, mouseX, mouseY); } - RenderHelper.disableStandardItemLighting(); + RenderHelper.disableStandardItemLighting(); GL11.glColor4f(1, 1, 1, 1); } @Override diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index cf7fac454..0809a47af 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -5,13 +5,13 @@ public enum EnumPlayerPacket { // FollowerExtend, // FollowerState, Transport, - BankUnlock, - BankUpgrade, +// BankUnlock, +// BankUpgrade, Dialog, QuestLog, TrackedQuest, CheckQuestCompletion, - BankSlotOpen, +// BankSlotOpen, FactionsGet, MailGet, MailDelete, From 21557ff857a91d87a0cc2dc3b3508310ed1bca0d Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Sun, 2 Feb 2025 22:57:57 +0100 Subject: [PATCH 071/157] @SideOnly added --- .../packets/player/FollowerPacket.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java index 4319de343..8d7e82e06 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java @@ -1,5 +1,7 @@ package kamkeel.npcs.network.packets.player; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; @@ -36,6 +38,7 @@ public class FollowerPacket extends AbstractPacket { } @Override + @SideOnly(Side.CLIENT) public void sendData(ByteBuf out) throws IOException { out.writeInt(type.ordinal()); } @@ -43,24 +46,28 @@ public class FollowerPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { Action requestedAction = Action.values()[in.readInt()]; - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); + if (!(player instanceof EntityPlayerMP)) + return; + + EntityPlayerMP playerMP = (EntityPlayerMP) player; + + EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(playerMP); if (npc == null || npc.advanced.job != EnumJobType.Follower) return; - EntityPlayerMP entityPlayerMP = (EntityPlayerMP) player; switch (requestedAction) { case Hire: - NoppesUtilPlayer.hireFollower(entityPlayerMP, npc); + NoppesUtilPlayer.hireFollower(playerMP, npc); break; case Extend: - NoppesUtilPlayer.extendFollower(entityPlayerMP, npc); - GuiDataPacket.sendGuiData(entityPlayerMP, npc.roleInterface.writeToNBT(new NBTTagCompound())); + NoppesUtilPlayer.extendFollower(playerMP, npc); + GuiDataPacket.sendGuiData(playerMP, npc.roleInterface.writeToNBT(new NBTTagCompound())); break; case State: - NoppesUtilPlayer.changeFollowerState(entityPlayerMP, npc); - GuiDataPacket.sendGuiData(entityPlayerMP, npc.roleInterface.writeToNBT(new NBTTagCompound())); + NoppesUtilPlayer.changeFollowerState(playerMP, npc); + GuiDataPacket.sendGuiData(playerMP, npc.roleInterface.writeToNBT(new NBTTagCompound())); break; } From 55d271abad04f4f249a5e908c8882b18bcc372c4 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 17:00:32 -0500 Subject: [PATCH 072/157] Lots more packet schtuff --- .../kamkeel/npcs/network/PacketHandler.java | 19 +++-- .../npcs/network/enums/EnumRequestPacket.java | 2 +- .../packets/data/UpdateAnimationsPacket.java | 2 +- .../packets/request/REQUESTPacket.java | 55 -------------- .../packets/request/TileEntityGetPacket.java | 71 +++++++++++++++++++ .../packets/request/TileEntitySavePacket.java | 62 ++++++++++++++++ .../request/TraderMarketSavePacket.java | 25 +++++-- .../{ => animation}/AnimationCachePacket.java | 2 +- .../request/animation/AnimationGetPacket.java | 16 ++++- .../animation/AnimationRemovePacket.java | 16 ++++- .../animation/AnimationSavePacket.java | 10 ++- .../animation/AnimationsGetPacket.java | 7 +- .../{ => quest}/QuestLogToServerPacket.java | 2 +- .../request/quest/QuestOpenGuiPacket.java | 13 ++-- .../{ => quest}/QuestUntrackPacket.java | 2 +- .../request/{ => tags}/TagsGetPacket.java | 7 +- .../request/{ => tags}/TagsNpcGetPacket.java | 10 ++- .../java/noppes/npcs/PacketHandlerServer.java | 62 +--------------- .../npcs/client/gui/GuiBorderBlock.java | 22 +++--- .../npcs/client/gui/SubGuiClonerNPCTags.java | 11 ++- .../npcs/client/gui/SubGuiNpcQuest.java | 5 +- .../client/gui/advanced/GuiNPCTagSetup.java | 8 +-- .../gui/global/GuiNPCEditAnimation.java | 4 +- .../gui/global/GuiNPCManageAnimations.java | 15 ++-- .../client/gui/global/GuiNPCManageTags.java | 3 +- .../client/gui/roles/GuiNpcTraderSetup.java | 8 +-- .../npcs/constants/EnumPacketServer.java | 7 +- 27 files changed, 276 insertions(+), 190 deletions(-) delete mode 100644 src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/TileEntityGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/TileEntitySavePacket.java rename src/main/java/kamkeel/npcs/network/packets/request/{ => animation}/AnimationCachePacket.java (95%) rename src/main/java/kamkeel/npcs/network/packets/request/{ => quest}/QuestLogToServerPacket.java (96%) rename src/main/java/kamkeel/npcs/network/packets/request/{ => quest}/QuestUntrackPacket.java (95%) rename src/main/java/kamkeel/npcs/network/packets/request/{ => tags}/TagsGetPacket.java (80%) rename src/main/java/kamkeel/npcs/network/packets/request/{ => tags}/TagsNpcGetPacket.java (85%) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index b0c0f8dbd..9238f408e 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -15,6 +15,7 @@ import kamkeel.npcs.network.packets.data.large.*; import kamkeel.npcs.network.packets.data.npc.*; import kamkeel.npcs.network.packets.data.script.*; import kamkeel.npcs.network.packets.request.*; +import kamkeel.npcs.network.packets.request.animation.*; import kamkeel.npcs.network.packets.request.bank.BankGetPacket; import kamkeel.npcs.network.packets.request.bank.BankRemovePacket; import kamkeel.npcs.network.packets.request.bank.BankSavePacket; @@ -52,9 +53,7 @@ import kamkeel.npcs.network.packets.request.recipe.RecipesGetPacket; import kamkeel.npcs.network.packets.request.role.RoleCompanionUpdatePacket; import kamkeel.npcs.network.packets.request.role.RoleGetPacket; import kamkeel.npcs.network.packets.request.role.RoleSavePacket; -import kamkeel.npcs.network.packets.request.tags.TagRemovePacket; -import kamkeel.npcs.network.packets.request.tags.TagSavePacket; -import kamkeel.npcs.network.packets.request.tags.TagSetPacket; +import kamkeel.npcs.network.packets.request.tags.*; import kamkeel.npcs.network.packets.request.transform.TransformGetPacket; import kamkeel.npcs.network.packets.request.transform.TransformLoadPacket; import kamkeel.npcs.network.packets.request.transform.TransformSavePacket; @@ -105,7 +104,6 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new NpcClosePacket()); REQUEST_PACKET.registerPacket(new NpcDeletePacket()); - // Linked Packets REQUEST_PACKET.registerPacket(new LinkedGetAllPacket()); REQUEST_PACKET.registerPacket(new LinkedRemovePacket()); @@ -149,6 +147,7 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new QuestCategoryGetPacket()); // Quest Packets + REQUEST_PACKET.registerPacket(new QuestOpenGuiPacket()); REQUEST_PACKET.registerPacket(new QuestSavePacket()); REQUEST_PACKET.registerPacket(new QuestRemovePacket()); REQUEST_PACKET.registerPacket(new QuestDialogGetTitlePacket()); @@ -159,6 +158,8 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new FactionSetPacket()); // Tag Packets + REQUEST_PACKET.registerPacket(new TagsGetPacket()); + REQUEST_PACKET.registerPacket(new TagsNpcGetPacket()); REQUEST_PACKET.registerPacket(new TagSetPacket()); REQUEST_PACKET.registerPacket(new TagSavePacket()); REQUEST_PACKET.registerPacket(new TagRemovePacket()); @@ -227,6 +228,15 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new TransformGetPacket()); REQUEST_PACKET.registerPacket(new TransformLoadPacket()); + // Trader Packets + REQUEST_PACKET.registerPacket(new TraderMarketSavePacket()); + + // Animation Packets + REQUEST_PACKET.registerPacket(new AnimationsGetPacket()); + REQUEST_PACKET.registerPacket(new AnimationGetPacket()); + REQUEST_PACKET.registerPacket(new AnimationRemovePacket()); + REQUEST_PACKET.registerPacket(new AnimationSavePacket()); + // Other Packets REQUEST_PACKET.registerPacket(new IsGuiOpenInform()); REQUEST_PACKET.registerPacket(new GuiRequestPacket()); @@ -235,6 +245,7 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new MerchantUpdatePacket()); REQUEST_PACKET.registerPacket(new ModelDataSavePacket()); REQUEST_PACKET.registerPacket(new MailOpenSetupPacket()); + REQUEST_PACKET.registerPacket(new TileEntityGetPacket()); } public void registerDataPackets(){ diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index 5540f6f89..7dd5f594c 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -98,7 +98,7 @@ public enum EnumRequestPacket { RemoteNpcsGet, RemoteTpToNpc, SaveTileEntity, - GetTileEntity, + TileEntityGet, Gui, IsGuiOpen, CacheAnimation, diff --git a/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java index f1d5ab8d1..d6f1922a7 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/UpdateAnimationsPacket.java @@ -8,7 +8,7 @@ import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumDataPacket; -import kamkeel.npcs.network.packets.request.AnimationCachePacket; +import kamkeel.npcs.network.packets.request.animation.AnimationCachePacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java deleted file mode 100644 index 1dd50ade0..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/request/REQUESTPacket.java +++ /dev/null @@ -1,55 +0,0 @@ -package kamkeel.npcs.network.packets.request; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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.EnumRequestPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.CustomNpcsPermissions; - -import java.io.IOException; - -public final class REQUESTPacket extends AbstractPacket { - public static final String packetName = "Request|Name"; - - public REQUESTPacket() { - } - - - @Override - public Enum getType() { - return EnumRequestPacket.NPCDelete; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; - } - - @Override - public CustomNpcsPermissions.Permission getPermission() { - return null; - } - - @Override - public boolean needsNPC() { - return false; - } - - @SideOnly(Side.CLIENT) - @Override - public void sendData(ByteBuf out) throws IOException { - - - } - - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - - } - - -} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/TileEntityGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/TileEntityGetPacket.java new file mode 100644 index 000000000..280dc89dc --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/TileEntityGetPacket.java @@ -0,0 +1,71 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.WorldProvider; +import net.minecraftforge.common.DimensionManager; + +import java.io.IOException; +import java.util.HashMap; + +public final class TileEntityGetPacket extends AbstractPacket { + public static final String packetName = "Request|TileEntityGet"; + + private int x; + private int y; + private int z; + + + public TileEntityGetPacket() {} + + public TileEntityGetPacket(int x, int y, int z) { + this.x = x; + this.y = y; + this.z = z; + } + + @Override + public Enum getType() { + return EnumRequestPacket.TileEntityGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.x); + out.writeInt(this.y); + out.writeInt(this.z); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.BLOCK)) + return; + + TileEntity tile = player.worldObj.getTileEntity(in.readInt(), in.readInt(), in.readInt()); + NBTTagCompound compound = new NBTTagCompound(); + tile.writeToNBT(compound); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/TileEntitySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/TileEntitySavePacket.java new file mode 100644 index 000000000..5d8ef1e80 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/TileEntitySavePacket.java @@ -0,0 +1,62 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; + +import java.io.IOException; + +public final class TileEntitySavePacket extends AbstractPacket { + public static final String packetName = "Request|TileEntityGet"; + + private NBTTagCompound compound; + + public TileEntitySavePacket() {} + + public TileEntitySavePacket(NBTTagCompound compound) { + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.TileEntityGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.x); + out.writeInt(this.y); + out.writeInt(this.z); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.BLOCK)) + return; + + TileEntity tile = player.worldObj.getTileEntity(in.readInt(), in.readInt(), in.readInt()); + NBTTagCompound compound = new NBTTagCompound(); + tile.writeToNBT(compound); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/TraderMarketSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/TraderMarketSavePacket.java index 4e597f43e..1fee4191b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/TraderMarketSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/TraderMarketSavePacket.java @@ -21,8 +21,16 @@ import java.io.IOException; public final class TraderMarketSavePacket extends AbstractPacket { public static String packetName = "Request|TraderMarketSave"; + private String marketName; + private boolean setMarket; + public TraderMarketSavePacket() { } + public TraderMarketSavePacket(String marketName, boolean setMarket) { + this.marketName = marketName; + this.setMarket = setMarket; + } + @Override public Enum getType() { return EnumRequestPacket.TraderMarketSave; @@ -45,14 +53,23 @@ public final class TraderMarketSavePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, this.marketName); + out.writeBoolean(this.setMarket); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + String market = ByteBufUtils.readString(in); - if (market == null) return; + if (market == null) + return; + boolean bo = in.readBoolean(); if(npc.roleInterface instanceof RoleTrader){ if(bo) diff --git a/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationCachePacket.java similarity index 95% rename from src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationCachePacket.java index 72a5e681e..7bd561ce9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/AnimationCachePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationCachePacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.request; +package kamkeel.npcs.network.packets.request.animation; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationGetPacket.java index 8c295002a..2e65b098e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationGetPacket.java @@ -21,8 +21,14 @@ import java.io.IOException; public final class AnimationGetPacket extends AbstractPacket { public static String packetName = "Request|AnimationGet"; + private int animationID; + public AnimationGetPacket() { } + public AnimationGetPacket(int animationID) { + this.animationID = animationID; + } + @Override public Enum getType() { return EnumRequestPacket.AnimationGet; @@ -35,13 +41,17 @@ public final class AnimationGetPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { - out.writeInt(0); + out.writeInt(animationID); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); Animation animation = (Animation) AnimationController.getInstance().get(id); NBTTagCompound compound = animation.writeToNBT(); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationRemovePacket.java index e77bbdf36..49461a549 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationRemovePacket.java @@ -23,8 +23,14 @@ import java.io.IOException; public final class AnimationRemovePacket extends AbstractPacket { public static String packetName = "Request|AnimationRemove"; + private int animationID; + public AnimationRemovePacket() { } + public AnimationRemovePacket(int animationID) { + this.animationID = animationID; + } + @Override public Enum getType() { return EnumRequestPacket.AnimationRemove; @@ -43,13 +49,17 @@ public final class AnimationRemovePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { - out.writeInt(0); + out.writeInt(this.animationID ); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + int id = in.readInt(); AnimationController.getInstance().delete(id); NoppesUtilServer.sendAnimationDataAll((EntityPlayerMP) player); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationSavePacket.java index 0ad3fe4f4..2b80eb5be 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationSavePacket.java @@ -29,7 +29,7 @@ public final class AnimationSavePacket extends AbstractPacket { public AnimationSavePacket(NBTTagCompound animationNBT) { this.animationNBT = animationNBT; } - public AnimationSavePacket() { } + public AnimationSavePacket(){} @Override public Enum getType() { @@ -54,8 +54,12 @@ public final class AnimationSavePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NBTTagCompound compound = ByteBufUtils.readNBT(in); Animation animation = new Animation(); animation.readFromNBT(compound); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationsGetPacket.java index ba6f8de24..206a1900e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationsGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/animation/AnimationsGetPacket.java @@ -36,8 +36,11 @@ public final class AnimationsGetPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if (!(player instanceof EntityPlayerMP)) return; - if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) + return; + NoppesUtilServer.sendAnimationDataAll((EntityPlayerMP) player); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/QuestLogToServerPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestLogToServerPacket.java similarity index 96% rename from src/main/java/kamkeel/npcs/network/packets/request/QuestLogToServerPacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/quest/QuestLogToServerPacket.java index c62646706..4e9566d98 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/QuestLogToServerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestLogToServerPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.request; +package kamkeel.npcs.network.packets.request.quest; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestOpenGuiPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestOpenGuiPacket.java index 2935fca57..698fa75de 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestOpenGuiPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestOpenGuiPacket.java @@ -15,6 +15,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; import noppes.npcs.NoppesUtilServer; +import noppes.npcs.constants.EnumGuiType; import noppes.npcs.controllers.data.Quest; import java.io.IOException; @@ -22,16 +23,15 @@ import java.io.IOException; public final class QuestOpenGuiPacket extends AbstractPacket { public static String packetName = "Request|QuestOpenGui"; - private int guiId; + private EnumGuiType guiType; private NBTTagCompound questNBT; - public QuestOpenGuiPacket(int guiId, NBTTagCompound questNBT) { - this.guiId = guiId; + public QuestOpenGuiPacket(EnumGuiType guiType, NBTTagCompound questNBT) { + this.guiType = guiType; this.questNBT = questNBT; } - public QuestOpenGuiPacket() { - } + public QuestOpenGuiPacket() {} @Override public Enum getType() { @@ -46,7 +46,7 @@ public final class QuestOpenGuiPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { - out.writeInt(guiId); + out.writeInt(guiType.ordinal()); ByteBufUtils.writeNBT(out, questNBT); } @@ -54,6 +54,7 @@ public final class QuestOpenGuiPacket extends AbstractPacket { public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { if (!(player instanceof EntityPlayerMP)) return; + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/QuestUntrackPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestUntrackPacket.java similarity index 95% rename from src/main/java/kamkeel/npcs/network/packets/request/QuestUntrackPacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/quest/QuestUntrackPacket.java index f136f71cc..fd6291a6b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/QuestUntrackPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestUntrackPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.request; +package kamkeel.npcs.network.packets.request.quest; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/TagsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagsGetPacket.java similarity index 80% rename from src/main/java/kamkeel/npcs/network/packets/request/TagsGetPacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/tags/TagsGetPacket.java index 450d9c62d..4b303b65e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/TagsGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagsGetPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.request; +package kamkeel.npcs.network.packets.request.tags; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -6,6 +6,8 @@ import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -36,6 +38,9 @@ public final class TagsGetPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.CLONER)) + return; + NoppesUtilServer.sendTagDataAll((EntityPlayerMP) player); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/TagsNpcGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagsNpcGetPacket.java similarity index 85% rename from src/main/java/kamkeel/npcs/network/packets/request/TagsNpcGetPacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/tags/TagsNpcGetPacket.java index 62b77e0b9..66cf66621 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/TagsNpcGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagsNpcGetPacket.java @@ -1,4 +1,4 @@ -package kamkeel.npcs.network.packets.request; +package kamkeel.npcs.network.packets.request.tags; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -6,6 +6,8 @@ import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.network.packets.data.large.GuiDataPacket; import net.minecraft.entity.player.EntityPlayer; @@ -22,8 +24,7 @@ import java.util.UUID; public final class TagsNpcGetPacket extends AbstractPacket { public static final String packetName = "Request|NpcTagsGet"; - public TagsNpcGetPacket() { - } + public TagsNpcGetPacket() {} @Override public Enum getType() { @@ -47,6 +48,9 @@ public final class TagsNpcGetPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.CLONER)) + return; + NBTTagCompound compound = new NBTTagCompound(); NBTTagList tagList = new NBTTagList(); for (UUID uuid : npc.advanced.tagUUIDs) { diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index acfa43274..e0af601ba 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -368,12 +368,6 @@ public class PacketHandlerServer{ if (type == EnumPacketServer.SaveTileEntity) { NoppesUtilServer.saveTileEntity(player, ByteBufUtils.readNBT(buffer)); } - else if(type == EnumPacketServer.GetTileEntity){ - TileEntity tile = player.worldObj.getTileEntity(buffer.readInt(), buffer.readInt(), buffer.readInt()); - NBTTagCompound compound = new NBTTagCompound(); - tile.writeToNBT(compound); - GuiDataPacket.sendGuiData(player, compound); - } else if(type == EnumPacketServer.DialogCategoriesGet){ ScrollDataPacket.sendScrollData(player, DialogController.Instance.getScroll()); } @@ -449,48 +443,7 @@ public class PacketHandlerServer{ } private void wandPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws IOException{ - if(type == EnumPacketServer.QuestOpenGui){ - Quest quest = new Quest(); - int gui = buffer.readInt(); - quest.readNBT(ByteBufUtils.readNBT(buffer)); - NoppesUtilServer.setEditingQuest(player,quest); - player.openGui(CustomNpcs.instance, gui , player.worldObj, 0, 0, 0); - } - else if(type == EnumPacketServer.TraderMarketSave){ - String market = ByteBufUtils.readString(buffer); - if(market == null) - return; - boolean bo = buffer.readBoolean(); - if(npc.roleInterface instanceof RoleTrader){ - if(bo) - Market.setMarket(npc, market); - else - Market.save((RoleTrader)npc.roleInterface, market); - } - } - else if(type == EnumPacketServer.AnimationsGet){ - NoppesUtilServer.sendAnimationDataAll(player); - } - else if(type == EnumPacketServer.AnimationGet){ - Animation animation = (Animation) AnimationController.getInstance().get(buffer.readInt()); - NBTTagCompound compound = animation.writeToNBT(); - GuiDataPacket.sendGuiData(player, compound); - } - else if(type == EnumPacketServer.AnimationRemove){ - AnimationController.getInstance().delete(buffer.readInt()); - NoppesUtilServer.sendAnimationDataAll(player); - NBTTagCompound compound = (new Animation()).writeToNBT(); - GuiDataPacket.sendGuiData(player, compound); - } - else if(type == EnumPacketServer.AnimationSave){ - Animation animation = new Animation(); - animation.readFromNBT(ByteBufUtils.readNBT(buffer)); - AnimationController.getInstance().saveAnimation(animation); - NoppesUtilServer.sendAnimationDataAll(player); - GuiDataPacket.sendGuiData(player, animation.writeToNBT()); - } - else - blockPackets(type, buffer, player); + blockPackets(type, buffer, player); } private void mountPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException{ if(type == EnumPacketServer.SpawnRider){ @@ -652,19 +605,6 @@ public class PacketHandlerServer{ compound.setTag("ShortTags", validTagList); GuiDataPacket.sendGuiData(player, compound); } - else if (type != EnumPacketServer.NpcTagsGet && type != EnumPacketServer.TagsGet) { - warn(player, "WE 2 tried todo something with the wrong tool, probably a hacker"); - } - } - - private void setTags(EntityNPCInterface npc, ByteBuf buffer) throws IOException { - npc.advanced.tagUUIDs.removeIf(uuid -> TagController.getInstance().getTagFromUUID(uuid) != null); - NBTTagCompound compound = ByteBufUtils.readNBT(buffer); - NBTTagList list = compound.getTagList("TagNames",8); - for (int i = 0; i < list.tagCount(); i++) { - String tagName = list.getStringTagAt(i); - npc.advanced.tagUUIDs.add(((Tag)TagController.getInstance().getTagFromName(tagName)).uuid); - } } private void warn(EntityPlayer player, String warning){ diff --git a/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java b/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java index ded3070c3..66fec5aa4 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java +++ b/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.TileEntityGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.blocks.tiles.TileBorder; @@ -10,27 +12,27 @@ import noppes.npcs.constants.EnumPacketServer; public class GuiBorderBlock extends GuiNPCInterface implements IGuiData{ private TileBorder tile; - + public GuiBorderBlock(int x, int y, int z) { super(); tile = (TileBorder) player.worldObj.getTileEntity(x, y, z); - - Client.sendData(EnumPacketServer.GetTileEntity, x, y, z); + + PacketClient.sendClient(new TileEntityGetPacket(x, y, z)); } public void initGui() { super.initGui(); - + this.addButton(new GuiNpcButton(4, guiLeft + 40, guiTop + 40, 120, 20, "Availability Options")); - - addLabel(new GuiNpcLabel(0,"Height", guiLeft+ 1, guiTop + 76, 0xffffff)); + + addLabel(new GuiNpcLabel(0,"Height", guiLeft+ 1, guiTop + 76, 0xffffff)); addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft+ 60, guiTop + 71,40,20, tile.height + "")); getTextField(0).integersOnly = true; - getTextField(0).setMinMaxDefault(0, 500, 6); + getTextField(0).setMinMaxDefault(0, 500, 6); - addLabel(new GuiNpcLabel(1,"Message", guiLeft+ 1, guiTop + 100, 0xffffff)); + addLabel(new GuiNpcLabel(1,"Message", guiLeft+ 1, guiTop + 100, 0xffffff)); addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft+ 60, guiTop + 95,200,20, tile.message)); - + addButton(new GuiNpcButton(0, guiLeft + 40, guiTop + 190,120,20, "Done")); } protected void actionPerformed(GuiButton guibutton) { @@ -48,7 +50,7 @@ public class GuiBorderBlock extends GuiNPCInterface implements IGuiData{ return; tile.height = getTextField(0).getInteger(); tile.message = getTextField(1).getText(); - + NBTTagCompound compound = new NBTTagCompound(); tile.writeToNBT(compound); Client.sendData(EnumPacketServer.SaveTileEntity, compound); diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiClonerNPCTags.java b/src/main/java/noppes/npcs/client/gui/SubGuiClonerNPCTags.java index 663569cc5..d8512eba9 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiClonerNPCTags.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiClonerNPCTags.java @@ -1,18 +1,15 @@ package noppes.npcs.client.gui; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.tags.TagsGetPacket; +import kamkeel.npcs.network.packets.request.tags.TagsNpcGetPacket; import kamkeel.npcs.network.packets.request.tags.TagSetPacket; import net.minecraft.client.gui.GuiButton; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; -import noppes.npcs.controllers.TagController; -import noppes.npcs.controllers.data.Tag; import noppes.npcs.entity.EntityNPCInterface; import java.util.ArrayList; @@ -33,8 +30,8 @@ public class SubGuiClonerNPCTags extends SubGuiInterface implements IGuiData,ISc { this.parent = guiNpcMobSpawnerAdd; this.mobSpawnerAdd = guiNpcMobSpawnerAdd; - Client.sendData(EnumPacketServer.TagsGet); - Client.sendData(EnumPacketServer.NpcTagsGet); + PacketClient.sendClient(new TagsGetPacket()); + PacketClient.sendClient(new TagsNpcGetPacket()); setBackground("menubg.png"); xSize = 305; ySize = 220; diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java index 33c3e0b09..9e8900af3 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java @@ -1,6 +1,7 @@ package noppes.npcs.client.gui; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.quest.QuestOpenGuiPacket; import kamkeel.npcs.network.packets.request.quest.QuestSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; @@ -103,7 +104,7 @@ public class SubGuiNpcQuest extends SubGuiInterface implements ISubGuiListener, setSubGui(new SubGuiNpcTextArea(quest.logText)); } if(button.id == 5 && quest.id >= 0){ - Client.sendData(EnumPacketServer.QuestOpenGui, EnumGuiType.QuestReward, quest.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new QuestOpenGuiPacket(EnumGuiType.QuestReward, quest.writeToNBT(new NBTTagCompound()))); } if(button.id == 6 && quest.id >= 0){ quest.setType(EnumQuestType.values()[button.getValue()]); @@ -111,7 +112,7 @@ public class SubGuiNpcQuest extends SubGuiInterface implements ISubGuiListener, if(button.id == 7) { if(quest.type == EnumQuestType.Item) - Client.sendData(EnumPacketServer.QuestOpenGui, EnumGuiType.QuestItem, quest.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new QuestOpenGuiPacket(EnumGuiType.QuestItem, quest.writeToNBT(new NBTTagCompound()))); if(quest.type == EnumQuestType.Dialog) setSubGui(new GuiNpcQuestTypeDialog(npc, quest, this)); diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCTagSetup.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCTagSetup.java index 8b5306659..54c5abecf 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCTagSetup.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCTagSetup.java @@ -1,15 +1,15 @@ package noppes.npcs.client.gui.advanced; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.tags.TagsGetPacket; +import kamkeel.npcs.network.packets.request.tags.TagsNpcGetPacket; import kamkeel.npcs.network.packets.request.tags.TagSetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; import noppes.npcs.entity.EntityNPCInterface; import java.util.ArrayList; @@ -28,8 +28,8 @@ public class GuiNPCTagSetup extends GuiNPCInterface2 implements IScrollData,ICus public GuiNPCTagSetup(EntityNPCInterface npc) { super(npc); - Client.sendData(EnumPacketServer.TagsGet); - Client.sendData(EnumPacketServer.NpcTagsGet); + PacketClient.sendClient(new TagsGetPacket()); + PacketClient.sendClient(new TagsNpcGetPacket()); } public void initGui() diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCEditAnimation.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCEditAnimation.java index 70c3a9470..ce67c1662 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCEditAnimation.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCEditAnimation.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.animation.AnimationSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import noppes.npcs.client.Client; @@ -585,7 +587,7 @@ public class GuiNPCEditAnimation extends GuiModelInterface implements ITextfield public void close() { if (!this.hasSubGui()) { if (animation != null) { - Client.sendData(EnumPacketServer.AnimationSave, animation.writeToNBT()); + PacketClient.sendClient(new AnimationSavePacket(animation.writeToNBT())); } displayGuiScreen(parent); } else { diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageAnimations.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageAnimations.java index cbcdd0ed1..ddb9989f9 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageAnimations.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageAnimations.java @@ -1,5 +1,10 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.animation.AnimationGetPacket; +import kamkeel.npcs.network.packets.request.animation.AnimationRemovePacket; +import kamkeel.npcs.network.packets.request.animation.AnimationSavePacket; +import kamkeel.npcs.network.packets.request.animation.AnimationsGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; @@ -33,7 +38,7 @@ public class GuiNPCManageAnimations extends GuiModelInterface2 implements IScrol this.setSave(save); this.xOffset = -148 + 70; this.yOffset = -170 + 137; - Client.sendData(EnumPacketServer.AnimationsGet); + PacketClient.sendClient(new AnimationsGetPacket()); AnimationData data = npc.display.animationData; data.setEnabled(true); @@ -164,7 +169,7 @@ public class GuiNPCManageAnimations extends GuiModelInterface2 implements IScrol while(data.containsKey(name)) name += "_"; Animation animation = new Animation(-1, name); - Client.sendData(EnumPacketServer.AnimationSave, animation.writeToNBT()); + PacketClient.sendClient(new AnimationSavePacket(animation.writeToNBT())); } if(button.id == 1){ if(data.containsKey(scrollAnimations.getSelected())) { @@ -234,13 +239,13 @@ public class GuiNPCManageAnimations extends GuiModelInterface2 implements IScrol if(guiCustomScroll.id == 0) { selected = scrollAnimations.getSelected(); - Client.sendData(EnumPacketServer.AnimationGet, data.get(selected)); + PacketClient.sendClient(new AnimationGetPacket(data.get(selected))); } } public void save() { if(selected != null && data.containsKey(selected) && animation != null){ - Client.sendData(EnumPacketServer.AnimationSave, animation.writeToNBT()); + PacketClient.sendClient(new AnimationSavePacket(animation.writeToNBT())); } } @@ -272,7 +277,7 @@ public class GuiNPCManageAnimations extends GuiModelInterface2 implements IScrol return; if(id == 1) { if(data.containsKey(scrollAnimations.getSelected())) { - Client.sendData(EnumPacketServer.AnimationRemove, data.get(selected)); + PacketClient.sendClient(new AnimationRemovePacket(data.get(selected))); scrollAnimations.clear(); animation = new Animation(); initGui(); diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java index 6844dd881..315759d9d 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java @@ -1,6 +1,7 @@ package noppes.npcs.client.gui.global; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.tags.TagsGetPacket; import kamkeel.npcs.network.packets.request.tags.TagRemovePacket; import kamkeel.npcs.network.packets.request.tags.TagSavePacket; import net.minecraft.client.gui.GuiButton; @@ -28,7 +29,7 @@ public class GuiNPCManageTags extends GuiNPCInterface2 implements IScrollData,IC public GuiNPCManageTags(EntityNPCInterface npc) { super(npc); - Client.sendData(EnumPacketServer.TagsGet); + PacketClient.sendClient(new TagsGetPacket()); } public void initGui() diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java index 1ad4ce2fb..7d1c02bc2 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java @@ -2,6 +2,7 @@ package noppes.npcs.client.gui.roles; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.TraderMarketSavePacket; import kamkeel.npcs.network.packets.request.role.RoleSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; @@ -87,7 +88,7 @@ public class GuiNpcTraderSetup extends GuiContainerNPCInterface2 implements ITex @Override public void save() { - Client.sendData(EnumPacketServer.TraderMarketSave, role.marketName, false); + PacketClient.sendClient(new TraderMarketSavePacket(role.marketName, false)); PacketClient.sendClient(new RoleSavePacket(role.writeToNBT(new NBTTagCompound()))); } @@ -96,8 +97,7 @@ public class GuiNpcTraderSetup extends GuiContainerNPCInterface2 implements ITex String name = guiNpcTextField.getText(); if(!name.equalsIgnoreCase(role.marketName)){ role.marketName = name; - Client.sendData(EnumPacketServer.TraderMarketSave, role.marketName, true); - } - + PacketClient.sendClient(new TraderMarketSavePacket(role.marketName, true)); + } } } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 5e2682a48..62d981329 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -44,9 +44,7 @@ public enum EnumPacketServer { FactionsGet, FactionGet, - TagsGet, TagGet, - NpcTagsGet, QuestCategoriesGet, QuestRemove(CustomNpcsPermissions.GLOBAL_QUEST), QuestRewardSave(CustomNpcsPermissions.GLOBAL_QUEST), @@ -56,10 +54,7 @@ public enum EnumPacketServer { SpawnRider(CustomNpcsPermissions.TOOL_MOUNTER), MovingPathSave(CustomNpcsPermissions.TOOL_PATHER,true), MovingPathGet(true), - AnimationsGet, AnimationGet, - AnimationRemove(CustomNpcsPermissions.GLOBAL_ANIMATION), AnimationSave(CustomNpcsPermissions.GLOBAL_ANIMATION), - - QuestOpenGui, QuestLogToServer, PartyLogToServer, UntrackQuest, + QuestLogToServer, PartyLogToServer, UntrackQuest, QuestGet, SaveTileEntity, From 28acfbc8f8585315606bbc5d0adaca28ab4b181c Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Sun, 2 Feb 2025 23:03:34 +0100 Subject: [PATCH 073/157] register packets & needNPC --- .../kamkeel/npcs/network/PacketHandler.java | 9 ++++++++ .../network/packets/player/BankPacket.java | 21 +++++++++++++------ .../packets/player/FollowerPacket.java | 15 ++++++++----- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index b0c0f8dbd..ca1fd9b77 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -14,6 +14,8 @@ import kamkeel.npcs.network.packets.data.gui.IsGuiOpenPacket; import kamkeel.npcs.network.packets.data.large.*; import kamkeel.npcs.network.packets.data.npc.*; import kamkeel.npcs.network.packets.data.script.*; +import kamkeel.npcs.network.packets.player.BankPacket; +import kamkeel.npcs.network.packets.player.FollowerPacket; import kamkeel.npcs.network.packets.request.*; import kamkeel.npcs.network.packets.request.bank.BankGetPacket; import kamkeel.npcs.network.packets.request.bank.BankRemovePacket; @@ -98,6 +100,7 @@ public class PacketHandler { this.registerChannels(); this.registerDataPackets(); this.registerRequestPackets(); + this.registerPlayerPackets(); } public void registerRequestPackets(){ @@ -288,6 +291,12 @@ public class PacketHandler { DATA_PACKET.registerPacket(new PartyDataPacket()); } + public void registerPlayerPackets() { + PLAYER_PACKET.registerPacket(new FollowerPacket()); + + PLAYER_PACKET.registerPacket(new BankPacket()); + } + private void registerChannels() { for (PacketChannel channel : packetChannels) { FMLEventChannel eventChannel = diff --git a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java index 6f4e320b5..3f4a774f8 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java @@ -21,9 +21,13 @@ import java.io.IOException; public class BankPacket extends AbstractPacket { public static final String packetName = "Player|Follower"; - private final Action type; - private final int slotID; - private final int bankID; + private Action type; + private int slotID; + private int bankID; + + public BankPacket() { + + } private BankPacket(Action action, int bankID, int slotID) { this.type = action; @@ -31,6 +35,11 @@ public class BankPacket extends AbstractPacket { this.slotID = slotID; } + @Override + public boolean needsNPC() { + return true; + } + public static BankPacket Open(int bankID, int slotID) { return new BankPacket(Action.OpenSlot, bankID, slotID); } @@ -54,6 +63,8 @@ public class BankPacket extends AbstractPacket { @Override @SideOnly(Side.CLIENT) public void sendData(ByteBuf out) throws IOException { + if (type == null) + return; out.writeInt(type.ordinal()); if (type == Action.OpenSlot) { @@ -71,9 +82,7 @@ public class BankPacket extends AbstractPacket { EntityPlayerMP playerMP = (EntityPlayerMP) player; - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(playerMP); - - if(npc == null || npc.advanced.role != EnumRoleType.Bank) + if(npc.advanced.role != EnumRoleType.Bank) return; switch (requestedAction) { diff --git a/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java index 8d7e82e06..9b72fa808 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java @@ -21,12 +21,20 @@ import java.io.IOException; public class FollowerPacket extends AbstractPacket { public static final String packetName = "Player|Follower"; - private final Action type; + private Action type; + + public FollowerPacket() { + } public FollowerPacket(Action action) { this.type = action; } + @Override + public boolean needsNPC() { + return true; + } + @Override public Enum getType() { return EnumPlayerPacket.FollowerAction; @@ -51,12 +59,9 @@ public class FollowerPacket extends AbstractPacket { EntityPlayerMP playerMP = (EntityPlayerMP) player; - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(playerMP); - - if (npc == null || npc.advanced.job != EnumJobType.Follower) + if (npc.advanced.job != EnumJobType.Follower) return; - switch (requestedAction) { case Hire: NoppesUtilPlayer.hireFollower(playerMP, npc); From 902fad4e6fd205c9ddee8b3d7a4f5b3e28e948b6 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 17:03:45 -0500 Subject: [PATCH 074/157] Tile Entity Get and Save --- .../kamkeel/npcs/network/PacketHandler.java | 1 + .../npcs/network/enums/EnumRequestPacket.java | 2 +- .../packets/request/TileEntitySavePacket.java | 17 +++---- .../java/noppes/npcs/PacketHandlerServer.java | 5 +- .../npcs/client/gui/GuiBorderBlock.java | 3 +- .../npcs/client/gui/GuiNpcRedstoneBlock.java | 48 ++++++++++--------- .../npcs/client/gui/GuiNpcWaypoint.java | 16 ++++--- .../npcs/constants/EnumPacketServer.java | 9 ++-- 8 files changed, 51 insertions(+), 50 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 9238f408e..9eb0e3b83 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -246,6 +246,7 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new ModelDataSavePacket()); REQUEST_PACKET.registerPacket(new MailOpenSetupPacket()); REQUEST_PACKET.registerPacket(new TileEntityGetPacket()); + REQUEST_PACKET.registerPacket(new TileEntitySavePacket()); } public void registerDataPackets(){ diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index 7dd5f594c..5c293ab80 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -97,7 +97,7 @@ public enum EnumRequestPacket { RemoteNpcsGet, RemoteTpToNpc, - SaveTileEntity, + TileEntitySave, TileEntityGet, Gui, IsGuiOpen, diff --git a/src/main/java/kamkeel/npcs/network/packets/request/TileEntitySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/TileEntitySavePacket.java index 5d8ef1e80..42a0b5912 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/TileEntitySavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/TileEntitySavePacket.java @@ -9,16 +9,16 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; -import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; +import noppes.npcs.NoppesUtilServer; import java.io.IOException; public final class TileEntitySavePacket extends AbstractPacket { - public static final String packetName = "Request|TileEntityGet"; + public static final String packetName = "Request|TileEntitySave"; private NBTTagCompound compound; @@ -30,7 +30,7 @@ public final class TileEntitySavePacket extends AbstractPacket { @Override public Enum getType() { - return EnumRequestPacket.TileEntityGet; + return EnumRequestPacket.TileEntitySave; } @Override @@ -41,9 +41,7 @@ public final class TileEntitySavePacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { - out.writeInt(this.x); - out.writeInt(this.y); - out.writeInt(this.z); + ByteBufUtils.writeNBT(out, this.compound); } @Override @@ -54,9 +52,6 @@ public final class TileEntitySavePacket extends AbstractPacket { if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.BLOCK)) return; - TileEntity tile = player.worldObj.getTileEntity(in.readInt(), in.readInt(), in.readInt()); - NBTTagCompound compound = new NBTTagCompound(); - tile.writeToNBT(compound); - GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + NoppesUtilServer.saveTileEntity((EntityPlayerMP) player, ByteBufUtils.readNBT(in)); } } diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index e0af601ba..9a9605c58 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -365,10 +365,7 @@ public class PacketHandlerServer{ } private void blockPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { - if (type == EnumPacketServer.SaveTileEntity) { - NoppesUtilServer.saveTileEntity(player, ByteBufUtils.readNBT(buffer)); - } - else if(type == EnumPacketServer.DialogCategoriesGet){ + if(type == EnumPacketServer.DialogCategoriesGet){ ScrollDataPacket.sendScrollData(player, DialogController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogsGetFromDialog){ diff --git a/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java b/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java index 66fec5aa4..bc2d0e325 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java +++ b/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java @@ -2,6 +2,7 @@ package noppes.npcs.client.gui; import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.TileEntityGetPacket; +import kamkeel.npcs.network.packets.request.TileEntitySavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.blocks.tiles.TileBorder; @@ -53,7 +54,7 @@ public class GuiBorderBlock extends GuiNPCInterface implements IGuiData{ NBTTagCompound compound = new NBTTagCompound(); tile.writeToNBT(compound); - Client.sendData(EnumPacketServer.SaveTileEntity, compound); + PacketClient.sendClient(new TileEntitySavePacket(compound)); } @Override public void setGuiData(NBTTagCompound compound) { diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcRedstoneBlock.java b/src/main/java/noppes/npcs/client/gui/GuiNpcRedstoneBlock.java index b965a877c..283362c41 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcRedstoneBlock.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcRedstoneBlock.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.TileEntitySavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; @@ -14,58 +16,58 @@ import noppes.npcs.constants.EnumPacketServer; public class GuiNpcRedstoneBlock extends GuiNPCInterface{ private TileRedstoneBlock tile; - + public GuiNpcRedstoneBlock(int x, int y, int z) { super(); tile = (TileRedstoneBlock) player.worldObj.getTileEntity(x, y, z); } - + @Override public void initGui(){ super.initGui(); this.addButton(new GuiNpcButton(4, guiLeft + 40, guiTop + 20, 120, 20, "availability.options")); - addLabel(new GuiNpcLabel(11,"gui.detailed", guiLeft+ 40, guiTop + 47, 0xffffff)); + addLabel(new GuiNpcLabel(11,"gui.detailed", guiLeft+ 40, guiTop + 47, 0xffffff)); this.addButton(new GuiNpcButton(1, guiLeft + 110, guiTop + 42, 50, 20, new String[]{"gui.no", "gui.yes"},tile.isDetailed?1:0)); - + if(tile.isDetailed){ - addLabel(new GuiNpcLabel(0,StatCollector.translateToLocal("bard.ondistance") + " X:", guiLeft+ 1, guiTop + 76, 0xffffff)); + addLabel(new GuiNpcLabel(0,StatCollector.translateToLocal("bard.ondistance") + " X:", guiLeft+ 1, guiTop + 76, 0xffffff)); addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft+ 80, guiTop + 71,30,20, tile.onRangeX + "")); getTextField(0).integersOnly = true; - getTextField(0).setMinMaxDefault(0, 50, 6); - addLabel(new GuiNpcLabel(1,"Y:", guiLeft+ 113, guiTop + 76, 0xffffff)); + getTextField(0).setMinMaxDefault(0, 50, 6); + addLabel(new GuiNpcLabel(1,"Y:", guiLeft+ 113, guiTop + 76, 0xffffff)); addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft+ 122, guiTop + 71,30,20, tile.onRangeY + "")); getTextField(1).integersOnly = true; - getTextField(1).setMinMaxDefault(0, 50, 6); - addLabel(new GuiNpcLabel(2,"Z:", guiLeft+ 155, guiTop + 76, 0xffffff)); + getTextField(1).setMinMaxDefault(0, 50, 6); + addLabel(new GuiNpcLabel(2,"Z:", guiLeft+ 155, guiTop + 76, 0xffffff)); addTextField(new GuiNpcTextField(2, this, fontRendererObj, guiLeft+ 164, guiTop + 71,30,20, tile.onRangeZ + "")); getTextField(2).integersOnly = true; getTextField(2).setMinMaxDefault(0, 50, 6); - - addLabel(new GuiNpcLabel(3,StatCollector.translateToLocal("bard.offdistance") + " X:", guiLeft - 3, guiTop + 99, 0xffffff)); + + addLabel(new GuiNpcLabel(3,StatCollector.translateToLocal("bard.offdistance") + " X:", guiLeft - 3, guiTop + 99, 0xffffff)); addTextField(new GuiNpcTextField(3, this, fontRendererObj, guiLeft+ 80, guiTop + 94,30,20, tile.offRangeX + "")); getTextField(3).integersOnly = true; - getTextField(3).setMinMaxDefault(0, 50, 10); - addLabel(new GuiNpcLabel(4,"Y:", guiLeft+ 113, guiTop + 99, 0xffffff)); + getTextField(3).setMinMaxDefault(0, 50, 10); + addLabel(new GuiNpcLabel(4,"Y:", guiLeft+ 113, guiTop + 99, 0xffffff)); addTextField(new GuiNpcTextField(4, this, fontRendererObj, guiLeft+ 122, guiTop + 94,30,20, tile.offRangeY + "")); getTextField(4).integersOnly = true; - getTextField(4).setMinMaxDefault(0, 50, 10); - addLabel(new GuiNpcLabel(5,"Z:", guiLeft+ 155, guiTop + 99, 0xffffff)); + getTextField(4).setMinMaxDefault(0, 50, 10); + addLabel(new GuiNpcLabel(5,"Z:", guiLeft+ 155, guiTop + 99, 0xffffff)); addTextField(new GuiNpcTextField(5, this, fontRendererObj, guiLeft+ 164, guiTop + 94,30,20, tile.offRangeZ + "")); getTextField(5).integersOnly = true; getTextField(5).setMinMaxDefault(0, 50, 10); } else{ - addLabel(new GuiNpcLabel(0,"bard.ondistance", guiLeft+ 1, guiTop + 76, 0xffffff)); + addLabel(new GuiNpcLabel(0,"bard.ondistance", guiLeft+ 1, guiTop + 76, 0xffffff)); addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft+ 80, guiTop + 71,30,20, tile.onRange + "")); getTextField(0).integersOnly = true; - getTextField(0).setMinMaxDefault(0, 50, 6); - - addLabel(new GuiNpcLabel(3,"bard.offdistance", guiLeft - 3, guiTop + 99, 0xffffff)); + getTextField(0).setMinMaxDefault(0, 50, 6); + + addLabel(new GuiNpcLabel(3,"bard.offdistance", guiLeft - 3, guiTop + 99, 0xffffff)); addTextField(new GuiNpcTextField(3, this, fontRendererObj, guiLeft+ 80, guiTop + 94,30,20, tile.offRange + "")); getTextField(3).integersOnly = true; - getTextField(3).setMinMaxDefault(0, 50, 10); + getTextField(3).setMinMaxDefault(0, 50, 10); } addButton(new GuiNpcButton(0, guiLeft + 40, guiTop + 190,120,20, "Done")); } @@ -96,7 +98,7 @@ public class GuiNpcRedstoneBlock extends GuiNPCInterface{ tile.offRangeX = getTextField(3).getInteger(); tile.offRangeY = getTextField(4).getInteger(); tile.offRangeZ = getTextField(5).getInteger(); - + if(tile.onRangeX > tile.offRangeX) tile.offRangeX = tile.onRangeX; if(tile.onRangeY > tile.offRangeY) @@ -111,10 +113,10 @@ public class GuiNpcRedstoneBlock extends GuiNPCInterface{ tile.offRange = tile.onRange; } tile.isActivated = false; - + NBTTagCompound compound = new NBTTagCompound(); tile.writeToNBT(compound); - Client.sendData(EnumPacketServer.SaveTileEntity, compound); + PacketClient.sendClient(new TileEntitySavePacket(compound)); } } diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcWaypoint.java b/src/main/java/noppes/npcs/client/gui/GuiNpcWaypoint.java index bd1c40785..a260cd8ca 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcWaypoint.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcWaypoint.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.TileEntitySavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.blocks.tiles.TileWaypoint; @@ -13,7 +15,7 @@ import noppes.npcs.constants.EnumPacketServer; public class GuiNpcWaypoint extends GuiNPCInterface{ private TileWaypoint tile; - + public GuiNpcWaypoint(int x, int y, int z) { super(); tile = (TileWaypoint) player.worldObj.getTileEntity(x, y, z); @@ -23,11 +25,11 @@ public class GuiNpcWaypoint extends GuiNPCInterface{ { super.initGui(); - - addLabel(new GuiNpcLabel(0,"gui.name", guiLeft+ 1, guiTop + 76, 0xffffff)); + + addLabel(new GuiNpcLabel(0,"gui.name", guiLeft+ 1, guiTop + 76, 0xffffff)); addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft+ 60, guiTop + 71,200,20, tile.name)); - - addLabel(new GuiNpcLabel(1,"gui.range", guiLeft+ 1, guiTop + 97, 0xffffff)); + + addLabel(new GuiNpcLabel(1,"gui.range", guiLeft+ 1, guiTop + 97, 0xffffff)); addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft+ 60, guiTop + 92,200,20, tile.range + "")); getTextField(1).integersOnly = true; getTextField(1).setMinMaxDefault(2, 60, 10); @@ -43,10 +45,10 @@ public class GuiNpcWaypoint extends GuiNPCInterface{ public void save() { tile.name = getTextField(0).getText(); tile.range = getTextField(1).getInteger(); - + NBTTagCompound compound = new NBTTagCompound(); tile.writeToNBT(compound); - Client.sendData(EnumPacketServer.SaveTileEntity, compound); + PacketClient.sendClient(new TileEntitySavePacket(compound)); } } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 62d981329..d7f418d19 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -54,11 +54,14 @@ public enum EnumPacketServer { SpawnRider(CustomNpcsPermissions.TOOL_MOUNTER), MovingPathSave(CustomNpcsPermissions.TOOL_PATHER,true), MovingPathGet(true), - QuestLogToServer, PartyLogToServer, UntrackQuest, + QuestLogToServer, + PartyLogToServer, + UntrackQuest, QuestGet, - SaveTileEntity, - DimensionTeleport, GetTileEntity, IsGuiOpen, + DimensionTeleport, + GetTileEntity, + IsGuiOpen, SavePartyData, CreateParty, GetPartyData, DisbandParty, KickPlayer, LeavePlayer, PartyInvite, GetPartyInviteList, AcceptInvite, IgnoreInvite, SetPartyLeader, SetPartyQuest, From 2677809c0e484523b40c8867e831e77dfdad662e Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Sun, 2 Feb 2025 23:04:57 +0100 Subject: [PATCH 075/157] Remove null check --- .../java/kamkeel/npcs/network/packets/player/BankPacket.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java index 3f4a774f8..0c6b8d030 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java @@ -63,8 +63,6 @@ public class BankPacket extends AbstractPacket { @Override @SideOnly(Side.CLIENT) public void sendData(ByteBuf out) throws IOException { - if (type == null) - return; out.writeInt(type.ordinal()); if (type == Action.OpenSlot) { From 5117c39a2f6c58f1b45f009aafa2393d3a23ce5b Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Sun, 2 Feb 2025 23:07:53 +0100 Subject: [PATCH 076/157] Update packet name --- .../java/kamkeel/npcs/network/packets/player/BankPacket.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java index 0c6b8d030..de8005396 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java @@ -19,7 +19,7 @@ import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; public class BankPacket extends AbstractPacket { - public static final String packetName = "Player|Follower"; + public static final String packetName = "Player|Bank"; private Action type; private int slotID; From 87eeebc1afacd1a637aaec0744ec0807e5eebb70 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Sun, 2 Feb 2025 23:08:23 +0100 Subject: [PATCH 077/157] Remove unused imports --- .../java/kamkeel/npcs/network/packets/player/BankPacket.java | 2 -- .../kamkeel/npcs/network/packets/player/FollowerPacket.java | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java index de8005396..ba3199a29 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java @@ -10,11 +10,9 @@ import kamkeel.npcs.network.enums.EnumPlayerPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.NoppesUtilPlayer; -import noppes.npcs.NoppesUtilServer; import noppes.npcs.constants.EnumRoleType; import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.controllers.data.BankData; -import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; diff --git a/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java index 9b72fa808..d08e8f61d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/FollowerPacket.java @@ -12,9 +12,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NoppesUtilPlayer; -import noppes.npcs.NoppesUtilServer; import noppes.npcs.constants.EnumJobType; -import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; From abfb06aa7ad93b7e66b45d9a540778b40e74b57f Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Sun, 2 Feb 2025 23:19:29 +0100 Subject: [PATCH 078/157] TransportPacket --- .../kamkeel/npcs/network/PacketHandler.java | 3 + .../npcs/network/enums/EnumPlayerPacket.java | 12 +++- .../packets/player/TransportPacket.java | 58 +++++++++++++++++++ .../java/noppes/npcs/PacketHandlerPlayer.java | 12 ++-- .../gui/player/GuiTransportSelection.java | 14 +++-- .../npcs/constants/EnumPlayerPacket.java | 2 +- 6 files changed, 86 insertions(+), 15 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/TransportPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 1231e32f3..cec1f1024 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -16,6 +16,7 @@ import kamkeel.npcs.network.packets.data.npc.*; import kamkeel.npcs.network.packets.data.script.*; import kamkeel.npcs.network.packets.player.BankPacket; import kamkeel.npcs.network.packets.player.FollowerPacket; +import kamkeel.npcs.network.packets.player.TransportPacket; import kamkeel.npcs.network.packets.request.*; import kamkeel.npcs.network.packets.request.animation.*; import kamkeel.npcs.network.packets.request.bank.BankGetPacket; @@ -306,6 +307,8 @@ public class PacketHandler { public void registerPlayerPackets() { PLAYER_PACKET.registerPacket(new FollowerPacket()); + PLAYER_PACKET.registerPacket(new TransportPacket()); + PLAYER_PACKET.registerPacket(new BankPacket()); } diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index 200fea1e1..d816f5623 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -2,13 +2,21 @@ package kamkeel.npcs.network.enums; public enum EnumPlayerPacket { FollowerAction, - Transport, // TODO + Transport, BankAction, Dialog, // TODO QuestLog, // TODO TrackedQuest, // TODO CheckQuestCompletion, // TODO - + FactionsGet, // TODO + MailAction, // TODO: Get, Delete, Send, Read, OpenMail + SaveSign, // TODO + SaveBook, // TODO + Companion, // TODO: OpenInv, TalentExp + RoleGet, // TODO + KeyPressed, // TODO + MouseClicked, // TODO + ScreenSize; // TODO diff --git a/src/main/java/kamkeel/npcs/network/packets/player/TransportPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/TransportPacket.java new file mode 100644 index 000000000..6d868a959 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/TransportPacket.java @@ -0,0 +1,58 @@ +package kamkeel.npcs.network.packets.player; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumPlayerPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilPlayer; +import noppes.npcs.constants.EnumRoleType; + +import java.io.IOException; + +public class TransportPacket extends AbstractPacket { + public static final String packetName = "Player|Transport"; + + private String destination; + + public TransportPacket() { + + } + + public TransportPacket(String destination) { + this.destination = destination; + } + + @Override + public Enum getType() { + return EnumPlayerPacket.Transport; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } + + @Override + public boolean needsNPC() { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, destination); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (npc.advanced.role != EnumRoleType.Transporter) + return; + NoppesUtilPlayer.transport((EntityPlayerMP) player, npc, ByteBufUtils.readString(in)); + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index 899037147..69c1fd0e0 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -152,12 +152,12 @@ public class PacketHandlerPlayer{ return; GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); } - else if(type == EnumPlayerPacket.Transport){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null || npc.advanced.role != EnumRoleType.Transporter) - return; - NoppesUtilPlayer.transport(player, npc, ByteBufUtils.readString(buffer)); - } +// else if(type == EnumPlayerPacket.Transport){ +// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); +// if(npc == null || npc.advanced.role != EnumRoleType.Transporter) +// return; +// NoppesUtilPlayer.transport(player, npc, ByteBufUtils.readString(buffer)); +// } // else if(type == EnumPlayerPacket.BankUpgrade){ // EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); // if(npc == null || npc.advanced.role != EnumRoleType.Bank) diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiTransportSelection.java b/src/main/java/noppes/npcs/client/gui/player/GuiTransportSelection.java index cdad6e814..fa9ef7b58 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiTransportSelection.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiTransportSelection.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.player; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.player.TransportPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; @@ -18,9 +20,9 @@ public class GuiTransportSelection extends GuiNPCInterface implements ITopButton protected int xSize; protected int guiLeft; protected int guiTop; - + private GuiCustomScroll scroll; - + public GuiTransportSelection(EntityNPCInterface npc) { super(npc); xSize = 176; @@ -43,7 +45,7 @@ public class GuiTransportSelection extends GuiNPCInterface implements ITopButton scroll.guiTop = guiTop + 20; addScroll(scroll); } - + @Override public void drawScreen(int i, int j, float f) { @@ -61,7 +63,7 @@ public class GuiTransportSelection extends GuiNPCInterface implements ITopButton String sel = scroll.getSelected(); if(button.id == 0 && sel != null){ close(); - NoppesUtilPlayer.sendData(EnumPlayerPacket.Transport,sel); + PacketClient.sendClient(new TransportPacket(sel)); } } // @Override @@ -82,7 +84,7 @@ public class GuiTransportSelection extends GuiNPCInterface implements ITopButton close(); } } - + @Override public void save() { } @@ -93,7 +95,7 @@ public class GuiTransportSelection extends GuiNPCInterface implements ITopButton @Override public void setSelected(String selected) { // TODO Auto-generated method stub - + } } diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index 0809a47af..8f1d4a54a 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -4,7 +4,7 @@ public enum EnumPlayerPacket { // FollowerHire, // Finished // FollowerExtend, // FollowerState, - Transport, +// Transport, // BankUnlock, // BankUpgrade, Dialog, From 4a1732c5f03640efa1fe03ea5a619ddc2b391369 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 17:38:42 -0500 Subject: [PATCH 079/157] Finish a ton more packets --- .../kamkeel/npcs/network/PacketHandler.java | 17 +++++++ .../npcs/network/enums/EnumRequestPacket.java | 1 - .../request/party/PartyInviteListPacket.java | 44 ------------------- .../client/gui/player/inventory/GuiParty.java | 27 +++++++----- .../gui/player/inventory/GuiQuestLog.java | 10 +++-- .../gui/player/inventory/GuiSettings.java | 5 ++- .../npcs/constants/EnumPacketServer.java | 35 +++++---------- 7 files changed, 55 insertions(+), 84 deletions(-) delete mode 100644 src/main/java/kamkeel/npcs/network/packets/request/party/PartyInviteListPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 1231e32f3..0c503e87f 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -44,6 +44,7 @@ import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnGetPacket; import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnRemovePacket; import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnSavePacket; import kamkeel.npcs.network.packets.request.npc.*; +import kamkeel.npcs.network.packets.request.party.*; import kamkeel.npcs.network.packets.request.playerdata.PlayerDataGetPacket; import kamkeel.npcs.network.packets.request.playerdata.PlayerDataMapRegenPacket; import kamkeel.npcs.network.packets.request.playerdata.PlayerDataRemovePacket; @@ -154,6 +155,8 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new QuestSavePacket()); REQUEST_PACKET.registerPacket(new QuestRemovePacket()); REQUEST_PACKET.registerPacket(new QuestDialogGetTitlePacket()); + REQUEST_PACKET.registerPacket(new QuestLogToServerPacket()); + REQUEST_PACKET.registerPacket(new QuestUntrackPacket()); // Faction Packets REQUEST_PACKET.registerPacket(new FactionSavePacket()); @@ -234,6 +237,20 @@ public class PacketHandler { // Trader Packets REQUEST_PACKET.registerPacket(new TraderMarketSavePacket()); + // Party Packets + REQUEST_PACKET.registerPacket(new PartySavePacket()); + REQUEST_PACKET.registerPacket(new PartyInfoPacket()); + REQUEST_PACKET.registerPacket(new PartyDisbandPacket()); + REQUEST_PACKET.registerPacket(new PartySetLeaderPacket()); + REQUEST_PACKET.registerPacket(new PartyKickPacket()); + REQUEST_PACKET.registerPacket(new PartyDisbandPacket()); + REQUEST_PACKET.registerPacket(new PartyLeavePacket()); + REQUEST_PACKET.registerPacket(new PartySetQuestPacket()); + REQUEST_PACKET.registerPacket(new PartyInvitePacket()); + REQUEST_PACKET.registerPacket(new PartyAcceptInvitePacket()); + REQUEST_PACKET.registerPacket(new PartyIgnoreInvitePacket()); + REQUEST_PACKET.registerPacket(new PartyLogToServerPacket()); + // Animation Packets REQUEST_PACKET.registerPacket(new AnimationsGetPacket()); REQUEST_PACKET.registerPacket(new AnimationGetPacket()); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index 5c293ab80..ff9225140 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -115,7 +115,6 @@ public enum EnumRequestPacket { PartyKick, PartyLeave, PartyInvite, - PartyInviteList, PartyAcceptInvite, PartyIgnoreInvite, PartySetLeader, diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInviteListPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInviteListPacket.java deleted file mode 100644 index 006025a15..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInviteListPacket.java +++ /dev/null @@ -1,44 +0,0 @@ -package kamkeel.npcs.network.packets.request.party; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -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.EnumRequestPacket; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; - -import java.io.IOException; - -import static noppes.npcs.PacketHandlerServer.sendInviteData; - -public final class PartyInviteListPacket extends AbstractPacket { - public static final String packetName = "Request|PartyInviteList"; - - - public PartyInviteListPacket() { - } - - @Override - public Enum getType() { - return EnumRequestPacket.PartyInviteList; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; - } - - - @SideOnly(Side.CLIENT) - @Override - public void sendData(ByteBuf out) throws IOException { - } - - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - sendInviteData((EntityPlayerMP) player); - } -} diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java index 0a08de502..d5520f958 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.player.inventory; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.data.large.PartyDataPacket; +import kamkeel.npcs.network.packets.request.party.*; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; @@ -52,7 +55,7 @@ public class GuiParty extends GuiCNPCInventory implements ITextfieldListener,ICu ySize = 180; drawDefaultBackground = false; NoppesUtilPlayer.sendData(EnumPlayerPacket.TrackedQuest); - Client.sendData(EnumPacketServer.GetPartyData); + PacketClient.sendClient(new PartyInfoPacket()); } public void initGui(){ @@ -191,23 +194,23 @@ public class GuiParty extends GuiCNPCInventory implements ITextfieldListener,ICu switch (i) { case 0: // Leader New Player - Client.sendData(EnumPacketServer.SetPartyLeader, this.selectedPlayer); + PacketClient.sendClient(new PartySetLeaderPacket(this.selectedPlayer)); break; case 1: // Kick Other Player - Client.sendData(EnumPacketServer.KickPlayer, this.selectedPlayer); + PacketClient.sendClient(new PartyKickPacket(this.selectedPlayer)); break; case 2: // Disband Party - Client.sendData(EnumPacketServer.DisbandParty); + PacketClient.sendClient(new PartyDisbandPacket()); break; case 3: // Leave Party - Client.sendData(EnumPacketServer.LeavePlayer, this.player.getCommandSenderName()); + PacketClient.sendClient(new PartyLeavePacket(this.player.getCommandSenderName())); break; case 4: // Drop Party Quest - Client.sendData(EnumPacketServer.SetPartyQuest, -1); + PacketClient.sendClient(new PartySetQuestPacket(-1)); break; } receivedData = false; @@ -229,19 +232,19 @@ public class GuiParty extends GuiCNPCInventory implements ITextfieldListener,ICu switch (guibutton.id) { case 200: - Client.sendData(EnumPacketServer.CreateParty); + PacketClient.sendClient(new PartyInfoPacket(true)); receivedData = false; break; case 215: if (this.selectedInvite != null && !this.selectedInvite.isEmpty()) { - Client.sendData(EnumPacketServer.AcceptInvite, this.selectedInvite); + PacketClient.sendClient(new PartyAcceptInvitePacket(this.selectedInvite)); receivedData = false; return; } break; case 220: if (this.selectedInvite != null && !this.selectedInvite.isEmpty()) { - Client.sendData(EnumPacketServer.IgnoreInvite, this.selectedInvite); + PacketClient.sendClient(new PartyIgnoreInvitePacket(this.selectedInvite)); receivedData = false; return; } @@ -267,7 +270,7 @@ public class GuiParty extends GuiCNPCInventory implements ITextfieldListener,ICu case 330: String inviteName = this.getTextField(325).getText(); if (!inviteName.isEmpty() && !party.getPlayerNames(true).contains(inviteName.toLowerCase())) { - Client.sendData(EnumPacketServer.PartyInvite, inviteName); + PacketClient.sendClient(new PartyInvitePacket(inviteName)); this.getTextField(325).setText(""); } break; @@ -455,10 +458,10 @@ public class GuiParty extends GuiCNPCInventory implements ITextfieldListener,ICu public void save() { if (this.partyChanged) { if(ClientCacheHandler.party != null) - Client.sendData(EnumPacketServer.SavePartyData, ClientCacheHandler.party.writeClientNBT()); + PacketClient.sendClient(new PartySavePacket(ClientCacheHandler.party.writeClientNBT())); } if (!Objects.equals(this.originalTracked, data.trackedQuestKey)) { - Client.sendData(EnumPacketServer.PartyLogToServer, this.data.trackedQuestKey); + PacketClient.sendClient(new PartyLogToServerPacket(this.data.trackedQuestKey)); } } diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java index a146612db..14d0af3fd 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java @@ -1,5 +1,9 @@ package noppes.npcs.client.gui.player.inventory; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.party.PartyLogToServerPacket; +import kamkeel.npcs.network.packets.request.party.PartySetQuestPacket; +import kamkeel.npcs.network.packets.request.quest.QuestLogToServerPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; @@ -153,7 +157,7 @@ public class GuiQuestLog extends GuiCNPCInventory implements ICustomScrollListen String key = data.selectedCategory + ":" + data.selectedQuest; if(data.partyQuests.containsKey(key)){ int questID = data.partyQuests.get(key); - Client.sendData(EnumPacketServer.SetPartyQuest, questID); + PacketClient.sendClient(new PartySetQuestPacket(questID)); } } initGui(); @@ -192,7 +196,7 @@ public class GuiQuestLog extends GuiCNPCInventory implements ICustomScrollListen if (guibutton.id == 3) { if (Objects.equals(ClientCacheHandler.party.getCurrentQuestName(), data.selectedQuest)) { - Client.sendData(EnumPacketServer.SetPartyQuest, -1); + PacketClient.sendClient(new PartySetQuestPacket(-1)); } else { GuiYesNo yesnoDisband = new GuiYesNo(this, "Confirm", StatCollector.translateToLocal("party.setQuestConfirm"), 0); displayGuiScreen(yesnoDisband); @@ -405,7 +409,7 @@ public class GuiQuestLog extends GuiCNPCInventory implements ICustomScrollListen !Objects.equals(this.trackedQuestKeyOnOpen, data.trackedQuestKey))) { NBTTagCompound compound = new NBTTagCompound(); compound.setTag("Alerts", NBTTags.nbtStringStringMap(data.questAlerts)); - Client.sendData(EnumPacketServer.QuestLogToServer, compound, this.data.trackedQuestKey); + PacketClient.sendClient(new QuestLogToServerPacket(compound, this.data.trackedQuestKey)); } } diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java index ef529ed57..da692acab 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.player.inventory; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.packets.request.quest.QuestUntrackPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; @@ -102,7 +105,7 @@ public class GuiSettings extends GuiCNPCInventory implements ITextfieldListener, switch (i) { case 0: // Untrack Quest - Client.sendData(EnumPacketServer.UntrackQuest); + PacketClient.sendClient(new QuestUntrackPacket()); break; case 1: // Clear Skin Cache diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index d7f418d19..40f5cb8fd 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -6,9 +6,6 @@ public enum EnumPacketServer { SpawnMob(CustomNpcsPermissions.SPAWNER_MOB), MobSpawner(CustomNpcsPermissions.SPAWNER_CREATE), - - TraderMarketSave(CustomNpcsPermissions.NPC_ADVANCED, true), - ClonePreSave(CustomNpcsPermissions.NPC_CLONE), CloneSave(CustomNpcsPermissions.NPC_CLONE), CloneRemove(CustomNpcsPermissions.NPC_CLONE), @@ -35,38 +32,30 @@ public enum EnumPacketServer { ScriptBlockDataSave(CustomNpcsPermissions.SCRIPT_BLOCK, false), ScriptBlockDataGet(false), - ScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), ScriptDataGet(true), - EventScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), EventScriptDataGet(true), + ScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), + ScriptDataGet(true), + EventScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), + EventScriptDataGet(true), - DialogCategoriesGet, DialogsGetFromDialog, - DialogsGet, DialogGet, + DialogCategoriesGet, + DialogsGetFromDialog, + DialogsGet, + DialogGet, DialogRemove(CustomNpcsPermissions.GLOBAL_DIALOG), FactionsGet, FactionGet, TagGet, QuestCategoriesGet, - QuestRemove(CustomNpcsPermissions.GLOBAL_QUEST), - QuestRewardSave(CustomNpcsPermissions.GLOBAL_QUEST), - QuestSave(CustomNpcsPermissions.GLOBAL_QUEST), QuestsGetFromQuest, QuestsGet, + QuestsGetFromQuest, QuestsGet, MerchantUpdate(CustomNpcsPermissions.EDIT_VILLAGER), PlayerRider(CustomNpcsPermissions.TOOL_MOUNTER), SpawnRider(CustomNpcsPermissions.TOOL_MOUNTER), - MovingPathSave(CustomNpcsPermissions.TOOL_PATHER,true), MovingPathGet(true), - - QuestLogToServer, - PartyLogToServer, - UntrackQuest, + MovingPathSave(CustomNpcsPermissions.TOOL_PATHER,true), + MovingPathGet(true), QuestGet, - DimensionTeleport, - GetTileEntity, - IsGuiOpen, - - SavePartyData, CreateParty, GetPartyData, DisbandParty, KickPlayer, LeavePlayer, PartyInvite, GetPartyInviteList, AcceptInvite, - IgnoreInvite, SetPartyLeader, SetPartyQuest, - - ServerUpdateSkinOverlays; + DimensionTeleport; public CustomNpcsPermissions.Permission permission = null; public boolean needsNpc = false; From 57e41412dd1e6c9b9d55acc5057850bbd014af90 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 17:49:57 -0500 Subject: [PATCH 080/157] Small Fixes --- .../network/packets/data/ConfigCommandPacket.java | 3 +++ .../npcs/network/packets/data/ParticlePacket.java | 14 ++++++++------ .../packets/data/gui/GuiOpenBookPacket.java | 3 ++- .../request/transform/TransformLoadPacket.java | 4 +++- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java index c4e5b1e2a..6c8222b46 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ConfigCommandPacket.java @@ -53,6 +53,9 @@ public final class ConfigCommandPacket extends AbstractPacket { EnumConfigOperation configType = EnumConfigOperation.values()[in.readInt()]; if (configType == EnumConfigOperation.FONT) { // Font Configuration String font = ByteBufUtils.readString(in); + if(font == null) + return; + int size = in.readInt(); if (!font.isEmpty()) { ConfigClient.FontType = font; diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java index f2b018dc7..93fb772ea 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/ParticlePacket.java @@ -80,13 +80,15 @@ public final class ParticlePacket extends AbstractPacket { float yOffset = buffer.readFloat(); String particle = ByteBufUtils.readString(buffer); - World worldObj = Minecraft.getMinecraft().theWorld; + if(particle != null){ + World worldObj = Minecraft.getMinecraft().theWorld; - Random rand = worldObj.rand; - if (particle.equals("heal")) { - for (int k = 0; k < 6; k++) { - worldObj.spawnParticle("instantSpell", posX + (rand.nextDouble() - 0.5D) * (double) width, (posY + rand.nextDouble() * (double) height) - (double) yOffset, posZ + (rand.nextDouble() - 0.5D) * (double) width, 0, 0, 0); - worldObj.spawnParticle("spell", posX + (rand.nextDouble() - 0.5D) * (double) width, (posY + rand.nextDouble() * (double) height) - (double) yOffset, posZ + (rand.nextDouble() - 0.5D) * (double) width, 0, 0, 0); + Random rand = worldObj.rand; + if (particle.equals("heal")) { + for (int k = 0; k < 6; k++) { + worldObj.spawnParticle("instantSpell", posX + (rand.nextDouble() - 0.5D) * (double) width, (posY + rand.nextDouble() * (double) height) - (double) yOffset, posZ + (rand.nextDouble() - 0.5D) * (double) width, 0, 0, 0); + worldObj.spawnParticle("spell", posX + (rand.nextDouble() - 0.5D) * (double) width, (posY + rand.nextDouble() * (double) height) - (double) yOffset, posZ + (rand.nextDouble() - 0.5D) * (double) width, 0, 0, 0); + } } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java index 2df1e0aa4..c6e54678d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/gui/GuiOpenBookPacket.java @@ -61,6 +61,7 @@ public final class GuiOpenBookPacket extends AbstractPacket { int z = in.readInt(); NBTTagCompound nbt = ByteBufUtils.readNBT(in); ItemStack book = ItemStack.loadItemStackFromNBT(nbt); - NoppesUtil.openGUI(player, new GuiBook(player, book, x, y, z)); + if(book != null) + NoppesUtil.openGUI(player, new GuiBook(player, book, x, y, z)); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java index b9b7cd136..d4b82f2d9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/transform/TransformLoadPacket.java @@ -48,7 +48,9 @@ public final class TransformLoadPacket extends AbstractPacket { @SideOnly(Side.CLIENT) @Override - public void sendData(ByteBuf out) throws IOException { } + public void sendData(ByteBuf out) throws IOException { + out.writeBoolean(this.transform); + } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { From f950ba0a2239280788c055b7a46ec8e180152f78 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 18:10:57 -0500 Subject: [PATCH 081/157] Bunch more Get Packets --- .../kamkeel/npcs/network/PacketHandler.java | 4 ++ .../npcs/network/enums/EnumRequestPacket.java | 1 - .../dialog/DialogCategoriesGetPacket.java | 51 ++++++++++++++ .../request/dialog/DialogGetPacket.java | 69 +++++++++++++++++++ .../request/dialog/DialogsGetPacket.java | 66 ++++++++++++++++++ .../packets/request/tags/TagGetPacket.java | 61 ++++++++++++++++ .../java/noppes/npcs/PacketHandlerServer.java | 44 +----------- .../gui/SubGuiNpcAvailabilityDialog.java | 9 +-- .../client/gui/SubGuiNpcDialogOption.java | 3 +- .../gui/global/GuiNPCManageDialogs.java | 6 +- .../client/gui/global/GuiNPCManageTags.java | 3 +- .../npcs/constants/EnumPacketServer.java | 4 -- 12 files changed, 265 insertions(+), 56 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoriesGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogsGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/tags/TagGetPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 5d7c95679..15d374bbc 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -137,10 +137,13 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new DialogCategorySavePacket()); REQUEST_PACKET.registerPacket(new DialogCategoryRemovePacket()); REQUEST_PACKET.registerPacket(new DialogCategoryGetPacket()); + REQUEST_PACKET.registerPacket(new DialogCategoriesGetPacket()); // Dialog Packets REQUEST_PACKET.registerPacket(new DialogSavePacket()); REQUEST_PACKET.registerPacket(new DialogRemovePacket()); + REQUEST_PACKET.registerPacket(new DialogsGetPacket()); + REQUEST_PACKET.registerPacket(new DialogGetPacket()); REQUEST_PACKET.registerPacket(new DialogNpcGetPacket()); REQUEST_PACKET.registerPacket(new DialogNpcSetPacket()); @@ -166,6 +169,7 @@ public class PacketHandler { // Tag Packets REQUEST_PACKET.registerPacket(new TagsGetPacket()); + REQUEST_PACKET.registerPacket(new TagGetPacket()); REQUEST_PACKET.registerPacket(new TagsNpcGetPacket()); REQUEST_PACKET.registerPacket(new TagSetPacket()); REQUEST_PACKET.registerPacket(new TagSavePacket()); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index ff9225140..3a19ef37b 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -31,7 +31,6 @@ public enum EnumRequestPacket { DialogNpcGet, DialogCategorySave, DialogCategoriesGet, - DialogsGetFromDialog, DialogCategoryRemove, DialogCategoryGet, DialogSave, diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoriesGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoriesGetPacket.java new file mode 100644 index 000000000..1a264fd01 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogCategoriesGetPacket.java @@ -0,0 +1,51 @@ +package kamkeel.npcs.network.packets.request.dialog; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.data.DialogCategory; + +import java.io.IOException; + +public final class DialogCategoriesGetPacket extends AbstractPacket { + public static String packetName = "Request|DialogCategoriesGet"; + + public DialogCategoriesGetPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.DialogCategoriesGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException {} + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.BLOCK)) + return; + + ScrollDataPacket.sendScrollData((EntityPlayerMP) player, DialogController.Instance.getScroll()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogGetPacket.java new file mode 100644 index 000000000..dfe96e28c --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogGetPacket.java @@ -0,0 +1,69 @@ +package kamkeel.npcs.network.packets.request.dialog; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.*; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.data.Dialog; +import noppes.npcs.controllers.data.Quest; + +import java.io.IOException; + +public final class DialogGetPacket extends AbstractPacket { + public static String packetName = "Request|DialogGet"; + + private int dialogID; + + public DialogGetPacket() {} + + public DialogGetPacket(int dialogID) { + this.dialogID = dialogID; + } + + @Override + public Enum getType() { + return EnumRequestPacket.DialogGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.dialogID); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.BLOCK)) + return; + + Dialog dialog = DialogController.Instance.dialogs.get(in.readInt()); + if(dialog != null){ + NBTTagCompound compound = dialog.writeToNBT(new NBTTagCompound()); + Quest quest = QuestController.Instance.quests.get(dialog.quest); + if(quest != null) + compound.setString("DialogQuestName", quest.title); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } + } + + public static void getDialog(int id){ + PacketClient.sendClient(new DialogGetPacket(id)); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogsGetPacket.java new file mode 100644 index 000000000..fb8563785 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/dialog/DialogsGetPacket.java @@ -0,0 +1,66 @@ +package kamkeel.npcs.network.packets.request.dialog; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.DialogController; + +import java.io.IOException; + +public final class DialogsGetPacket extends AbstractPacket { + public static String packetName = "Request|DialogsGet"; + + private int categoryID; + private boolean sendGroup; + + public DialogsGetPacket() {} + + public DialogsGetPacket(int categoryID, boolean send) { + this.categoryID = categoryID; + this.sendGroup = send; + } + + @Override + public Enum getType() { + return EnumRequestPacket.DialogsGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.categoryID); + out.writeBoolean(this.sendGroup); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.BLOCK)) + return; + + int catID = in.readInt(); + boolean sendGroup = in.readBoolean(); + if(sendGroup){ + NoppesUtilServer.sendDialogGroup((EntityPlayerMP) player,DialogController.Instance.categories.get(catID)); + } + else { + NoppesUtilServer.sendDialogData((EntityPlayerMP) player,DialogController.Instance.categories.get(catID)); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagGetPacket.java new file mode 100644 index 000000000..74a2561dc --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagGetPacket.java @@ -0,0 +1,61 @@ +package kamkeel.npcs.network.packets.request.tags; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.TagController; +import noppes.npcs.controllers.data.Tag; + +import java.io.IOException; + +public final class TagGetPacket extends AbstractPacket { + public static final String packetName = "Request|TagGet"; + + private int tagID; + + public TagGetPacket() {} + + public TagGetPacket(int tagID) { + this.tagID = tagID; + } + + @Override + public Enum getType() { + return EnumRequestPacket.TagGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(tagID); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.CLONER)) + return; + + NBTTagCompound compound = new NBTTagCompound(); + Tag tag = TagController.getInstance().get(in.readInt()); + tag.writeNBT(compound); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } + + +} diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 9a9605c58..9bbe512c8 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -72,9 +72,7 @@ public class PacketHandlerServer{ warn(player, "tried to use custom npcs without a tool in hand, probably a hacker"); else { if (item != null) { - if (item.getItem() == CustomItems.wand) - wandPackets(type, in, player, npc); - else if (item.getItem() == CustomItems.moving) + if (item.getItem() == CustomItems.moving) movingPackets(type, in, player, npc); else if (item.getItem() == CustomItems.mount) mountPackets(type, in, player); @@ -365,26 +363,7 @@ public class PacketHandlerServer{ } private void blockPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { - if(type == EnumPacketServer.DialogCategoriesGet){ - ScrollDataPacket.sendScrollData(player, DialogController.Instance.getScroll()); - } - else if(type == EnumPacketServer.DialogsGetFromDialog){ - Dialog dialog = DialogController.Instance.dialogs.get(buffer.readInt()); - if(dialog == null) - return; - NoppesUtilServer.sendDialogData(player,dialog.category); - } - else if(type == EnumPacketServer.DialogsGet){ - int catID = buffer.readInt(); - boolean sendGroup = buffer.readBoolean(); - if(sendGroup){ - NoppesUtilServer.sendDialogGroup(player,DialogController.Instance.categories.get(catID)); - } - else { - NoppesUtilServer.sendDialogData(player,DialogController.Instance.categories.get(catID)); - } - } - else if(type == EnumPacketServer.QuestsGetFromQuest){ + if(type == EnumPacketServer.QuestsGetFromQuest){ Quest quest = QuestController.Instance.quests.get(buffer.readInt()); if(quest == null) return; @@ -406,16 +385,6 @@ public class PacketHandlerServer{ else if(type == EnumPacketServer.FactionsGet){ NoppesUtilServer.sendFactionDataAll(player); } - else if(type == EnumPacketServer.DialogGet){ - Dialog dialog = DialogController.Instance.dialogs.get(buffer.readInt()); - if(dialog != null){ - NBTTagCompound compound = dialog.writeToNBT(new NBTTagCompound()); - Quest quest = QuestController.Instance.quests.get(dialog.quest); - if(quest != null) - compound.setString("DialogQuestName", quest.title); - GuiDataPacket.sendGuiData(player, compound); - } - } else if(type == EnumPacketServer.QuestGet){ Quest quest = QuestController.Instance.quests.get(buffer.readInt()); if(quest != null){ @@ -431,17 +400,8 @@ public class PacketHandlerServer{ faction.writeNBT(compound); GuiDataPacket.sendGuiData(player, compound); } - else if(type == EnumPacketServer.TagGet){ - NBTTagCompound compound = new NBTTagCompound(); - Tag tag = TagController.getInstance().get(buffer.readInt()); - tag.writeNBT(compound); - GuiDataPacket.sendGuiData(player, compound); - } } - private void wandPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws IOException{ - blockPackets(type, buffer, player); - } private void mountPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException{ if(type == EnumPacketServer.SpawnRider){ Entity entity = EntityList.createEntityFromNBT(ByteBufUtils.readNBT(buffer), player.worldObj); diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityDialog.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityDialog.java index 65ca11e53..f13ba86df 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityDialog.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityDialog.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.packets.request.dialog.DialogGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -66,16 +67,16 @@ public class SubGuiNpcAvailabilityDialog extends SubGuiInterface implements GuiS getButton(13).setDisplayText("availability.selectdialog"); if(availabitily.dialogId >= 0){ - Client.sendData(EnumPacketServer.DialogGet, availabitily.dialogId); + DialogGetPacket.getDialog(availabitily.dialogId); } if(availabitily.dialog2Id >= 0){ - Client.sendData(EnumPacketServer.DialogGet, availabitily.dialog2Id); + DialogGetPacket.getDialog(availabitily.dialog2Id); } if(availabitily.dialog3Id >= 0){ - Client.sendData(EnumPacketServer.DialogGet, availabitily.dialog3Id); + DialogGetPacket.getDialog(availabitily.dialog3Id); } if(availabitily.dialog4Id >= 0){ - Client.sendData(EnumPacketServer.DialogGet, availabitily.dialog4Id); + DialogGetPacket.getDialog(availabitily.dialog4Id); } } diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogOption.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogOption.java index 55193a0de..1df85129d 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogOption.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogOption.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.packets.request.dialog.DialogGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -44,7 +45,7 @@ public class SubGuiNpcDialogOption extends SubGuiInterface implements IGuiData, if(option.optionType == EnumOptionType.DialogOption){ this.addButton(new GuiNpcButton(3, guiLeft + 4, guiTop + 84, "availability.selectdialog")); if(option.dialogId >= 0) - Client.sendData(EnumPacketServer.DialogGet, option.dialogId); + DialogGetPacket.getDialog(option.dialogId); } if(option.optionType == EnumOptionType.CommandBlock){ this.addTextField(new GuiNpcTextField(4, this, this.fontRendererObj, guiLeft + 4, guiTop + 84, 248, 20, option.command)); diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java index ddb273fd2..f5df87c17 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java @@ -43,7 +43,7 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou public GuiNPCManageDialogs(EntityNPCInterface npc) { super(npc); - Client.sendData(EnumPacketServer.DialogCategoriesGet); + PacketClient.sendClient(new DialogCategoriesGetPacket()); } public void initGui() @@ -278,7 +278,7 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou else { category.readNBT(compound); setPrevCatName(category.title); - Client.sendData(EnumPacketServer.DialogsGet, category.id, true); + PacketClient.sendClient(new DialogsGetPacket(category.id, true)); resetDiagList(); } initGui(); @@ -354,7 +354,7 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou String selected = dialogScroll.getSelected(); if(!selected.equals(prevDialogName) || override){ dialog = new Dialog(); - Client.sendData(EnumPacketServer.DialogGet, dialogData.get(selected)); + DialogGetPacket.getDialog(dialogData.get(selected)); setPrevDialogName(selected); } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java index 315759d9d..fe3d959a8 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java @@ -1,6 +1,7 @@ package noppes.npcs.client.gui.global; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.tags.TagGetPacket; import kamkeel.npcs.network.packets.request.tags.TagsGetPacket; import kamkeel.npcs.network.packets.request.tags.TagRemovePacket; import kamkeel.npcs.network.packets.request.tags.TagSavePacket; @@ -158,7 +159,7 @@ public class GuiNPCManageTags extends GuiNPCInterface2 implements IScrollData,IC { save(); selected = scrollTags.getSelected(); - Client.sendData(EnumPacketServer.TagGet, data.get(selected)); + PacketClient.sendClient(new TagGetPacket(data.get(selected))); } } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 40f5cb8fd..dd188752a 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -37,15 +37,11 @@ public enum EnumPacketServer { EventScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), EventScriptDataGet(true), - DialogCategoriesGet, - DialogsGetFromDialog, - DialogsGet, DialogGet, DialogRemove(CustomNpcsPermissions.GLOBAL_DIALOG), FactionsGet, FactionGet, - TagGet, QuestCategoriesGet, QuestsGetFromQuest, QuestsGet, MerchantUpdate(CustomNpcsPermissions.EDIT_VILLAGER), From f314d9d826a76845ffbd3c3ec44bf7861913aab2 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 18:14:52 -0500 Subject: [PATCH 082/157] Quest Get Packet --- .../kamkeel/npcs/network/PacketHandler.java | 1 + .../packets/request/quest/QuestGetPacket.java | 67 +++++++++++++++++++ .../java/noppes/npcs/PacketHandlerServer.java | 9 --- .../gui/SubGuiNpcAvailabilityQuest.java | 9 +-- .../client/gui/global/GuiNPCManageQuest.java | 2 +- .../npcs/constants/EnumPacketServer.java | 8 +-- 6 files changed, 76 insertions(+), 20 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/quest/QuestGetPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 15d374bbc..bb83c7835 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -161,6 +161,7 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new QuestDialogGetTitlePacket()); REQUEST_PACKET.registerPacket(new QuestLogToServerPacket()); REQUEST_PACKET.registerPacket(new QuestUntrackPacket()); + REQUEST_PACKET.registerPacket(new QuestGetPacket()); // Faction Packets REQUEST_PACKET.registerPacket(new FactionSavePacket()); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestGetPacket.java new file mode 100644 index 000000000..e3f9119d4 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestGetPacket.java @@ -0,0 +1,67 @@ +package kamkeel.npcs.network.packets.request.quest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.*; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.data.Dialog; +import noppes.npcs.controllers.data.Quest; + +import java.io.IOException; + +public final class QuestGetPacket extends AbstractPacket { + public static String packetName = "Request|QuestGet"; + + private int questID; + + public QuestGetPacket() {} + + public QuestGetPacket(int questID) { + this.questID = questID; + } + + @Override + public Enum getType() { + return EnumRequestPacket.QuestGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.questID); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.BLOCK)) + return; + + Quest quest = QuestController.Instance.quests.get(in.readInt()); + if(quest != null){ + NBTTagCompound compound = new NBTTagCompound(); + if(quest.hasNewQuest()) + compound.setString("NextQuestTitle", quest.getNextQuest().title); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, quest.writeToNBT(compound)); + } + } + + public static void getQuest(int id){ + PacketClient.sendClient(new QuestGetPacket(id)); + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 9bbe512c8..b2b5765da 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -385,15 +385,6 @@ public class PacketHandlerServer{ else if(type == EnumPacketServer.FactionsGet){ NoppesUtilServer.sendFactionDataAll(player); } - else if(type == EnumPacketServer.QuestGet){ - Quest quest = QuestController.Instance.quests.get(buffer.readInt()); - if(quest != null){ - NBTTagCompound compound = new NBTTagCompound(); - if(quest.hasNewQuest()) - compound.setString("NextQuestTitle", quest.getNextQuest().title); - GuiDataPacket.sendGuiData(player, quest.writeToNBT(compound)); - } - } else if(type == EnumPacketServer.FactionGet){ NBTTagCompound compound = new NBTTagCompound(); Faction faction = FactionController.getInstance().get(buffer.readInt()); diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java index a1d41e304..6d776f1c1 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.packets.request.quest.QuestGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -66,16 +67,16 @@ public class SubGuiNpcAvailabilityQuest extends SubGuiInterface implements GuiSe getButton(13).setDisplayText("availability.selectquest"); if(availabitily.questId >= 0){ - Client.sendData(EnumPacketServer.QuestGet, availabitily.questId); + QuestGetPacket.getQuest(availabitily.questId); } if(availabitily.quest2Id >= 0){ - Client.sendData(EnumPacketServer.QuestGet, availabitily.quest2Id); + QuestGetPacket.getQuest(availabitily.quest2Id); } if(availabitily.quest3Id >= 0){ - Client.sendData(EnumPacketServer.QuestGet, availabitily.quest3Id); + QuestGetPacket.getQuest(availabitily.quest3Id); } if(availabitily.quest4Id >= 0){ - Client.sendData(EnumPacketServer.QuestGet, availabitily.quest4Id); + QuestGetPacket.getQuest(availabitily.quest4Id); } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java index ea58e00b9..ad5c26edb 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java @@ -359,7 +359,7 @@ public class GuiNPCManageQuest extends GuiNPCInterface2 implements IScrollGroup, String selected = questScroll.getSelected(); if(!selected.equals(prevQuestName) || override){ quest = new Quest(); - Client.sendData(EnumPacketServer.QuestGet, questData.get(selected)); + QuestGetPacket.getQuest(questData.get(selected)); setPrevQuestName(selected); } } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index dd188752a..375dbb8ba 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -37,20 +37,16 @@ public enum EnumPacketServer { EventScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), EventScriptDataGet(true), - DialogGet, - DialogRemove(CustomNpcsPermissions.GLOBAL_DIALOG), - FactionsGet, FactionGet, QuestCategoriesGet, - QuestsGetFromQuest, QuestsGet, - MerchantUpdate(CustomNpcsPermissions.EDIT_VILLAGER), + QuestsGetFromQuest, + QuestsGet, PlayerRider(CustomNpcsPermissions.TOOL_MOUNTER), SpawnRider(CustomNpcsPermissions.TOOL_MOUNTER), MovingPathSave(CustomNpcsPermissions.TOOL_PATHER,true), MovingPathGet(true), - QuestGet, DimensionTeleport; public CustomNpcsPermissions.Permission permission = null; From b0e4d555cebf4e79d8e1746272a489e094d96be1 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 19:08:18 -0500 Subject: [PATCH 083/157] Complete Block & Wand Packets --- .../kamkeel/npcs/network/PacketHandler.java | 8 ++- .../request/faction/FactionGetPacket.java | 62 +++++++++++++++++ .../request/faction/FactionsGetPacket.java | 50 ++++++++++++++ .../quest/QuestCategoriesGetPacket.java | 49 +++++++++++++ .../request/quest/QuestsGetPacket.java | 68 +++++++++++++++++++ .../java/noppes/npcs/PacketHandlerServer.java | 33 --------- .../client/gui/GuiNPCFactionSelection.java | 4 +- .../client/gui/SubGuiNpcAvailability.java | 17 ++--- .../client/gui/SubGuiNpcFactionOptions.java | 24 ++++--- .../gui/advanced/GuiNPCFactionSetup.java | 3 +- .../gui/global/GuiNPCManageFactions.java | 6 +- .../client/gui/global/GuiNPCManageQuest.java | 4 +- .../npcs/constants/EnumPacketServer.java | 3 - 13 files changed, 267 insertions(+), 64 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/faction/FactionGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/faction/FactionsGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoriesGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/quest/QuestsGetPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index bb83c7835..c2881a27c 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -28,9 +28,7 @@ import kamkeel.npcs.network.packets.request.customgui.CustomGuiClosePacket; import kamkeel.npcs.network.packets.request.customgui.CustomGuiUnfocusedPacket; import kamkeel.npcs.network.packets.request.customgui.CustomScrollClickPacket; import kamkeel.npcs.network.packets.request.dialog.*; -import kamkeel.npcs.network.packets.request.faction.FactionRemovePacket; -import kamkeel.npcs.network.packets.request.faction.FactionSavePacket; -import kamkeel.npcs.network.packets.request.faction.FactionSetPacket; +import kamkeel.npcs.network.packets.request.faction.*; import kamkeel.npcs.network.packets.request.jobs.JobGetPacket; import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import kamkeel.npcs.network.packets.request.jobs.JobSpawnerAddPacket; @@ -153,6 +151,7 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new QuestCategorySavePacket()); REQUEST_PACKET.registerPacket(new QuestCategoryRemovePacket()); REQUEST_PACKET.registerPacket(new QuestCategoryGetPacket()); + REQUEST_PACKET.registerPacket(new QuestCategoriesGetPacket()); // Quest Packets REQUEST_PACKET.registerPacket(new QuestOpenGuiPacket()); @@ -162,11 +161,14 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new QuestLogToServerPacket()); REQUEST_PACKET.registerPacket(new QuestUntrackPacket()); REQUEST_PACKET.registerPacket(new QuestGetPacket()); + REQUEST_PACKET.registerPacket(new QuestsGetPacket()); // Faction Packets REQUEST_PACKET.registerPacket(new FactionSavePacket()); REQUEST_PACKET.registerPacket(new FactionRemovePacket()); REQUEST_PACKET.registerPacket(new FactionSetPacket()); + REQUEST_PACKET.registerPacket(new FactionGetPacket()); + REQUEST_PACKET.registerPacket(new FactionsGetPacket()); // Tag Packets REQUEST_PACKET.registerPacket(new TagsGetPacket()); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionGetPacket.java new file mode 100644 index 000000000..487e08f6c --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionGetPacket.java @@ -0,0 +1,62 @@ +package kamkeel.npcs.network.packets.request.faction; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.*; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.FactionController; +import noppes.npcs.controllers.data.Faction; + +import java.io.IOException; + +public final class FactionGetPacket extends AbstractPacket { + public static String packetName = "Request|FactionGet"; + + private int factionID; + + public FactionGetPacket() {} + + public FactionGetPacket(int factionID) { + this.factionID = factionID; + } + + @Override + public Enum getType() { + return EnumRequestPacket.FactionGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.factionID); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.BLOCK)) + return; + + NBTTagCompound compound = new NBTTagCompound(); + Faction faction = FactionController.getInstance().get(in.readInt()); + faction.writeNBT(compound); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } + + public static void getFaction(int id){ + PacketClient.sendClient(new FactionGetPacket(id)); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionsGetPacket.java new file mode 100644 index 000000000..36273b4d3 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/faction/FactionsGetPacket.java @@ -0,0 +1,50 @@ +package kamkeel.npcs.network.packets.request.faction; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.data.QuestCategory; + +import java.io.IOException; + +public final class FactionsGetPacket extends AbstractPacket { + public static String packetName = "Request|FactionsGet"; + + public FactionsGetPacket() {} + + + @Override + public Enum getType() { + return EnumRequestPacket.FactionsGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException {} + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.BLOCK)) + return; + + NoppesUtilServer.sendFactionDataAll((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoriesGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoriesGetPacket.java new file mode 100644 index 000000000..12ed56a54 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestCategoriesGetPacket.java @@ -0,0 +1,49 @@ +package kamkeel.npcs.network.packets.request.quest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.DialogController; + +import java.io.IOException; + +public final class QuestCategoriesGetPacket extends AbstractPacket { + public static String packetName = "Request|QuestCategoriesGet"; + + public QuestCategoriesGetPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.QuestCategoriesGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException {} + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.BLOCK)) + return; + + NoppesUtilServer.sendQuestCategoryData((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestsGetPacket.java new file mode 100644 index 000000000..29fc59194 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/quest/QuestsGetPacket.java @@ -0,0 +1,68 @@ +package kamkeel.npcs.network.packets.request.quest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.data.QuestCategory; + +import java.io.IOException; + +public final class QuestsGetPacket extends AbstractPacket { + public static String packetName = "Request|QuestsGet"; + + private int categoryID; + private boolean sendGroup; + + public QuestsGetPacket() {} + + public QuestsGetPacket(int categoryID, boolean send) { + this.categoryID = categoryID; + this.sendGroup = send; + } + + @Override + public Enum getType() { + return EnumRequestPacket.QuestsGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.categoryID); + out.writeBoolean(this.sendGroup); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.WAND, EnumItemPacketType.BLOCK)) + return; + + QuestCategory category = QuestController.Instance.categories.get(in.readInt()); + boolean sendGroup = in.readBoolean(); + if(sendGroup){ + NoppesUtilServer.sendQuestGroup((EntityPlayerMP) player,category); + } + else { + NoppesUtilServer.sendQuestData((EntityPlayerMP) player,category); + } + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index b2b5765da..1ecf5f04f 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -80,8 +80,6 @@ public class PacketHandlerServer{ clonePackets(type, in, player); else if (item.getItem() == CustomItems.teleporter) featherPackets(type, in, player); - else if (item.getItem() == Item.getItemFromBlock(CustomItems.waypoint) || item.getItem() == Item.getItemFromBlock(CustomItems.border) || item.getItem() == Item.getItemFromBlock(CustomItems.redstoneBlock)) - blockPackets(type, in, player); else if (ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) { if (type == EnumPacketServer.EventScriptDataGet || type == EnumPacketServer.EventScriptDataSave) npcEventScriptPackets(type, in, player, npc); @@ -362,37 +360,6 @@ public class PacketHandlerServer{ } } - private void blockPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { - if(type == EnumPacketServer.QuestsGetFromQuest){ - Quest quest = QuestController.Instance.quests.get(buffer.readInt()); - if(quest == null) - return; - NoppesUtilServer.sendQuestData(player,quest.category); - } - else if(type == EnumPacketServer.QuestCategoriesGet){ - NoppesUtilServer.sendQuestCategoryData(player); - } - else if(type == EnumPacketServer.QuestsGet){ - QuestCategory category = QuestController.Instance.categories.get(buffer.readInt()); - boolean sendGroup = buffer.readBoolean(); - if(sendGroup){ - NoppesUtilServer.sendQuestGroup(player,category); - } - else { - NoppesUtilServer.sendQuestData(player,category); - } - } - else if(type == EnumPacketServer.FactionsGet){ - NoppesUtilServer.sendFactionDataAll(player); - } - else if(type == EnumPacketServer.FactionGet){ - NBTTagCompound compound = new NBTTagCompound(); - Faction faction = FactionController.getInstance().get(buffer.readInt()); - faction.writeNBT(compound); - GuiDataPacket.sendGuiData(player, compound); - } - } - private void mountPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException{ if(type == EnumPacketServer.SpawnRider){ Entity entity = EntityList.createEntityFromNBT(ByteBufUtils.readNBT(buffer), player.worldObj); diff --git a/src/main/java/noppes/npcs/client/gui/GuiNPCFactionSelection.java b/src/main/java/noppes/npcs/client/gui/GuiNPCFactionSelection.java index 1b21e3911..2bc7165a5 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNPCFactionSelection.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNPCFactionSelection.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.faction.FactionsGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import noppes.npcs.client.Client; @@ -28,7 +30,7 @@ public class GuiNPCFactionSelection extends GuiNPCInterface implements IScrollDa this.parent = parent; this.factionId = dialog; - Client.sendData(EnumPacketServer.FactionsGet); + PacketClient.sendClient(new FactionsGetPacket()); if(parent instanceof GuiSelectionListener){ listener = (GuiSelectionListener) parent; diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailability.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailability.java index d6ec32d26..7cb69f471 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailability.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailability.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.packets.request.faction.FactionGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.Client; @@ -11,11 +12,11 @@ import noppes.npcs.constants.EnumPacketServer; import noppes.npcs.controllers.data.Availability; import noppes.npcs.controllers.data.Faction; -public class SubGuiNpcAvailability extends SubGuiInterface implements ITextfieldListener, GuiSelectionListener, IGuiData +public class SubGuiNpcAvailability extends SubGuiInterface implements ITextfieldListener, GuiSelectionListener, IGuiData { private Availability availabitily; private int slot = 0; - + public SubGuiNpcAvailability(Availability availabitily) { this.availabitily = availabitily; @@ -34,14 +35,14 @@ public class SubGuiNpcAvailability extends SubGuiInterface implements ITextfield this.addButton(new GuiNpcButton(0, guiLeft + 34, guiTop + 12, 180, 20, "availability.selectdialog")); this.addButton(new GuiNpcButton(1, guiLeft + 34, guiTop + 35, 180, 20, "availability.selectquest")); - + this.addButton(new GuiNpcButton(20, guiLeft + 4, guiTop + 104, 50, 20, new String[]{"availability.always","availability.is","availability.isnot"},availabitily.factionAvailable.ordinal())); this.addButton(new GuiNpcButton(22, guiLeft + 56, guiTop + 104, 60, 20, new String[]{"faction.friendly","faction.neutral","faction.unfriendly"},availabitily.factionStance.ordinal())); this.addButton(new GuiNpcButton(21, guiLeft + 118, guiTop + 104, 110, 20, "availability.selectfaction")); getButton(21).setEnabled(availabitily.factionAvailable != EnumAvailabilityFactionType.Always); getButton(22).setEnabled(availabitily.factionAvailable != EnumAvailabilityFactionType.Always); this.addButton(new GuiNpcButton(23, guiLeft + 230, guiTop + 104,20, 20, "X")); - + this.addButton(new GuiNpcButton(24, guiLeft + 4, guiTop + 126, 50, 20, new String[]{"availability.always","availability.is","availability.isnot"},availabitily.faction2Available.ordinal())); this.addButton(new GuiNpcButton(27, guiLeft + 56, guiTop + 126, 60, 20, new String[]{"faction.friendly","faction.neutral","faction.unfriendly"},availabitily.faction2Stance.ordinal())); this.addButton(new GuiNpcButton(25, guiLeft + 118, guiTop + 126, 110, 20, "availability.selectfaction")); @@ -56,19 +57,19 @@ public class SubGuiNpcAvailability extends SubGuiInterface implements ITextfield this.addTextField(new GuiNpcTextField(51, this, fontRendererObj, guiLeft + 50, guiTop + 170,90, 20, availabitily.minPlayerLevel + "")); this.getTextField(51).integersOnly = true; this.getTextField(51).setMinMaxDefault(0, Integer.MAX_VALUE, 0); - + this.addButton(new GuiNpcButton(66, guiLeft + 82, guiTop + 192,98, 20, "gui.done")); - + updateGuiButtons(); } private void updateGuiButtons() { if(availabitily.factionId >= 0){ - Client.sendData(EnumPacketServer.FactionGet, availabitily.factionId); + FactionGetPacket.getFaction(availabitily.factionId); } if(availabitily.faction2Id >= 0){ - Client.sendData(EnumPacketServer.FactionGet, availabitily.faction2Id); + FactionGetPacket.getFaction(availabitily.faction2Id); } } diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcFactionOptions.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcFactionOptions.java index fcfd6becd..05e43261f 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcFactionOptions.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcFactionOptions.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.faction.FactionsGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.StatCollector; import noppes.npcs.client.Client; @@ -15,9 +17,9 @@ public class SubGuiNpcFactionOptions extends SubGuiInterface implements IScrollD private FactionOptions options; private HashMap data = new HashMap(); private GuiCustomScroll scrollFactions; - + private int selected = -1; - + public SubGuiNpcFactionOptions(FactionOptions options) { this.options = options; @@ -25,7 +27,7 @@ public class SubGuiNpcFactionOptions extends SubGuiInterface implements IScrollD xSize = 256; ySize = 216; closeOnEsc = true; - Client.sendData(EnumPacketServer.FactionsGet); + PacketClient.sendClient(new FactionsGetPacket()); } public void initGui() @@ -42,7 +44,7 @@ public class SubGuiNpcFactionOptions extends SubGuiInterface implements IScrollD addLabel(new GuiNpcLabel(0, "1: ", guiLeft + 4, guiTop + 12)); if(data.containsValue(options.factionId)){ addLabel(new GuiNpcLabel(1, getFactionName(options.factionId), guiLeft + 12, guiTop + 8)); - + String label = ""; if(options.decreaseFactionPoints) label += StatCollector.translateToLocal("gui.decrease"); @@ -69,14 +71,14 @@ public class SubGuiNpcFactionOptions extends SubGuiInterface implements IScrollD addButton(new GuiNpcButton(1, guiLeft + 110, guiTop + 35, 20, 20, "X")); } - + if(selected >= 0 && (!data.containsValue(options.faction2Id) || !data.containsValue(options.factionId)) && !options.hasFaction(selected)){ addButton(new GuiNpcButton(2, guiLeft + 4, guiTop + 60, 90, 20, new String[]{"gui.increase","gui.decrease"},0)); - + addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft + 4, guiTop + 82, 110, 20, "10")); getTextField(1).integersOnly = true; getTextField(1).setMinMaxDefault(1, 100000, 10); - + addButton(new GuiNpcButton(3, guiLeft + 4, guiTop + 104, 60, 20, "gui.add")); } @@ -88,7 +90,7 @@ public class SubGuiNpcFactionOptions extends SubGuiInterface implements IScrollD return s; return null; } - + protected void actionPerformed(GuiButton guibutton) { int id = guibutton.id; @@ -135,16 +137,16 @@ public class SubGuiNpcFactionOptions extends SubGuiInterface implements IScrollD String name = scroll.getSelected(); this.data = data; scroll.setList(list); - + if(name != null) scroll.setSelected(name); - + initGui(); } @Override public void setSelected(String selected) { - + } } diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java index e21bf73b6..771d9f2ae 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java @@ -2,6 +2,7 @@ package noppes.npcs.client.gui.advanced; import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.faction.FactionSetPacket; +import kamkeel.npcs.network.packets.request.faction.FactionsGetPacket; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; @@ -22,7 +23,7 @@ public class GuiNPCFactionSetup extends GuiNPCInterface2 implements IScrollData, public GuiNPCFactionSetup(EntityNPCInterface npc) { super(npc); - Client.sendData(EnumPacketServer.FactionsGet); + PacketClient.sendClient(new FactionsGetPacket()); } public void initGui() diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java index c8de2f07b..b73237e7a 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java @@ -1,8 +1,10 @@ package noppes.npcs.client.gui.global; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.faction.FactionGetPacket; import kamkeel.npcs.network.packets.request.faction.FactionRemovePacket; import kamkeel.npcs.network.packets.request.faction.FactionSavePacket; +import kamkeel.npcs.network.packets.request.faction.FactionsGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; @@ -31,7 +33,7 @@ public class GuiNPCManageFactions extends GuiNPCInterface2 implements IScrollDat public GuiNPCManageFactions(EntityNPCInterface npc) { super(npc); - Client.sendData(EnumPacketServer.FactionsGet); + PacketClient.sendClient(new FactionsGetPacket()); } public void initGui() @@ -189,7 +191,7 @@ public class GuiNPCManageFactions extends GuiNPCInterface2 implements IScrollDat { save(); selected = scrollFactions.getSelected(); - Client.sendData(EnumPacketServer.FactionGet, data.get(selected)); + FactionGetPacket.getFaction(data.get(selected)); } else if(guiCustomScroll.id == 1) { diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java index ad5c26edb..de8d315fd 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java @@ -49,7 +49,7 @@ public class GuiNPCManageQuest extends GuiNPCInterface2 implements IScrollGroup, super(npc); Instance = this; quest = new Quest(); - Client.sendData(EnumPacketServer.QuestCategoriesGet); + PacketClient.sendClient(new QuestCategoriesGetPacket()); } public void initGui() @@ -283,7 +283,7 @@ public class GuiNPCManageQuest extends GuiNPCInterface2 implements IScrollGroup, else { category.readNBT(compound); setPrevCatName(category.title); - Client.sendData(EnumPacketServer.QuestsGet, category.id, true); + PacketClient.sendClient(new QuestsGetPacket(category.id, true)); resetQuestList(); } initGui(); diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 375dbb8ba..ce2ebde7c 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -39,9 +39,6 @@ public enum EnumPacketServer { FactionsGet, FactionGet, - QuestCategoriesGet, - QuestsGetFromQuest, - QuestsGet, PlayerRider(CustomNpcsPermissions.TOOL_MOUNTER), SpawnRider(CustomNpcsPermissions.TOOL_MOUNTER), MovingPathSave(CustomNpcsPermissions.TOOL_PATHER,true), From 42fe078efd5ac3185550c59383540550c0675a74 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 19:23:14 -0500 Subject: [PATCH 084/157] Pather and Mounter Packets --- .../kamkeel/npcs/network/PacketHandler.java | 9 +- .../npcs/network/enums/EnumRequestPacket.java | 3 +- .../network/packets/request/MountPacket.java | 97 +++++++++++++++++++ .../request/pather/MovingPathGetPacket.java | 56 +++++++++++ .../request/pather/MovingPathSavePacket.java | 73 ++++++++++++++ .../java/noppes/npcs/PacketHandlerServer.java | 23 +---- .../client/gui/GuiNpcMobSpawnerMounter.java | 43 ++++---- .../noppes/npcs/client/gui/GuiNpcPather.java | 17 ++-- .../npcs/constants/EnumPacketServer.java | 7 -- 9 files changed, 269 insertions(+), 59 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/MountPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/pather/MovingPathGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/pather/MovingPathSavePacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index c2881a27c..e124ef5c5 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -44,6 +44,8 @@ import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnRemovePack import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnSavePacket; import kamkeel.npcs.network.packets.request.npc.*; import kamkeel.npcs.network.packets.request.party.*; +import kamkeel.npcs.network.packets.request.pather.MovingPathGetPacket; +import kamkeel.npcs.network.packets.request.pather.MovingPathSavePacket; import kamkeel.npcs.network.packets.request.playerdata.PlayerDataGetPacket; import kamkeel.npcs.network.packets.request.playerdata.PlayerDataMapRegenPacket; import kamkeel.npcs.network.packets.request.playerdata.PlayerDataRemovePacket; @@ -264,17 +266,22 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new AnimationGetPacket()); REQUEST_PACKET.registerPacket(new AnimationRemovePacket()); REQUEST_PACKET.registerPacket(new AnimationSavePacket()); + REQUEST_PACKET.registerPacket(new AnimationCachePacket()); + + // Moving Path + REQUEST_PACKET.registerPacket(new MovingPathSavePacket()); + REQUEST_PACKET.registerPacket(new MovingPathGetPacket()); // Other Packets REQUEST_PACKET.registerPacket(new IsGuiOpenInform()); REQUEST_PACKET.registerPacket(new GuiRequestPacket()); REQUEST_PACKET.registerPacket(new DimensionsGetPacket()); - REQUEST_PACKET.registerPacket(new AnimationCachePacket()); REQUEST_PACKET.registerPacket(new MerchantUpdatePacket()); REQUEST_PACKET.registerPacket(new ModelDataSavePacket()); REQUEST_PACKET.registerPacket(new MailOpenSetupPacket()); REQUEST_PACKET.registerPacket(new TileEntityGetPacket()); REQUEST_PACKET.registerPacket(new TileEntitySavePacket()); + REQUEST_PACKET.registerPacket(new MountPacket()); } public void registerDataPackets(){ diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index 3a19ef37b..7cad412c0 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -84,8 +84,7 @@ public enum EnumRequestPacket { NaturalSpawnGetAll, MerchantUpdate, - PlayerRider, - SpawnRider, + MountPacket, MovingPathSave, MovingPathGet, diff --git a/src/main/java/kamkeel/npcs/network/packets/request/MountPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/MountPacket.java new file mode 100644 index 000000000..13df839be --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/MountPacket.java @@ -0,0 +1,97 @@ +package kamkeel.npcs.network.packets.request; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.network.packets.player.BankPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityList; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.Constants; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.ServerEventsHandler; + +import java.io.IOException; + +public final class MountPacket extends AbstractPacket { + public static final String packetName = "Request|MountPacket"; + + private Action action; + private NBTTagCompound compound; + + public MountPacket() {} + + public MountPacket(Action action, NBTTagCompound nbtTagCompound) { + this.action = action; + this.compound = nbtTagCompound; + } + + + @Override + public Enum getType() { + return EnumRequestPacket.MountPacket; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.TOOL_MOUNTER; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(action.ordinal()); + if(action == Action.Spawn) + ByteBufUtils.writeNBT(out, this.compound); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.MOUNTER, player)) + return; + + MountPacket.Action requestedAction = MountPacket.Action.values()[in.readInt()]; + switch (requestedAction){ + case Player: + player.mountEntity(ServerEventsHandler.mounted); + break; + case Spawn: + Entity entity = EntityList.createEntityFromNBT(ByteBufUtils.readNBT(in), player.worldObj); + player.worldObj.spawnEntityInWorld(entity); + entity.mountEntity(ServerEventsHandler.mounted); + break; + } + } + + public static MountPacket Player() { + return new MountPacket(Action.Player, new NBTTagCompound()); + } + public static MountPacket Spawn(NBTTagCompound compound) { + return new MountPacket(Action.Spawn, compound); + } + + private enum Action { + Player, + Spawn, + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/pather/MovingPathGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/pather/MovingPathGetPacket.java new file mode 100644 index 000000000..db1f45d42 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/pather/MovingPathGetPacket.java @@ -0,0 +1,56 @@ +package kamkeel.npcs.network.packets.request.pather; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NBTTags; + +import java.io.IOException; + +public final class MovingPathGetPacket extends AbstractPacket { + public static String packetName = "Request|MovingPathGet"; + + public MovingPathGetPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.MovingPathGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException {} + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.PATHER, player)) + return; + + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.ai.writeToNBT(new NBTTagCompound())); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/pather/MovingPathSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/pather/MovingPathSavePacket.java new file mode 100644 index 000000000..64dad666c --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/pather/MovingPathSavePacket.java @@ -0,0 +1,73 @@ +package kamkeel.npcs.network.packets.request.pather; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NBTTags; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.FactionController; +import noppes.npcs.controllers.data.Faction; + +import java.io.IOException; + +public final class MovingPathSavePacket extends AbstractPacket { + public static String packetName = "Request|MovingPathSave"; + + private NBTTagCompound saveNBT; + + public MovingPathSavePacket(NBTTagCompound saveNBT) { + this.saveNBT = saveNBT; + } + + public MovingPathSavePacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.MovingPathSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.TOOL_PATHER; + } + + @Override + public boolean needsNPC() { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeNBT(out, saveNBT); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(EnumItemPacketType.PATHER, player)) + return; + + npc.ai.setMovingPath(NBTTags.getIntegerArraySet(ByteBufUtils.readNBT(in).getTagList("MovingPathNew",10))); + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 1ecf5f04f..9bb58a648 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -72,9 +72,7 @@ public class PacketHandlerServer{ warn(player, "tried to use custom npcs without a tool in hand, probably a hacker"); else { if (item != null) { - if (item.getItem() == CustomItems.moving) - movingPackets(type, in, player, npc); - else if (item.getItem() == CustomItems.mount) + if (item.getItem() == CustomItems.mount) mountPackets(type, in, player); else if (item.getItem() == CustomItems.cloner) clonePackets(type, in, player); @@ -351,25 +349,8 @@ public class PacketHandlerServer{ } } - private void movingPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws IOException { - if(type == EnumPacketServer.MovingPathGet){ - GuiDataPacket.sendGuiData(player, npc.ai.writeToNBT(new NBTTagCompound())); - } - else if(type == EnumPacketServer.MovingPathSave){ - npc.ai.setMovingPath(NBTTags.getIntegerArraySet(ByteBufUtils.readNBT(buffer).getTagList("MovingPathNew",10))); - } - } - private void mountPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException{ - if(type == EnumPacketServer.SpawnRider){ - Entity entity = EntityList.createEntityFromNBT(ByteBufUtils.readNBT(buffer), player.worldObj); - player.worldObj.spawnEntityInWorld(entity); - entity.mountEntity(ServerEventsHandler.mounted); - } - else if(type == EnumPacketServer.PlayerRider){ - player.mountEntity(ServerEventsHandler.mounted); - } - else if(type == EnumPacketServer.CloneList){ + if(type == EnumPacketServer.CloneList){ NBTTagList list = new NBTTagList(); int tab = buffer.readInt(); for(String name : ServerCloneController.Instance.getClones(tab)) diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java index 78c9bda74..025d2c56a 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.packets.request.MountPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.Entity; @@ -20,19 +21,19 @@ import java.util.List; import java.util.Map; public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData{ - + private GuiCustomScroll scroll; - + private int posX,posY,posZ; - + private List list; - + private static int showingClones = 0; private static String search = ""; - + private int activeTab = 1; - + public GuiNpcMobSpawnerMounter(int i, int j, int k) { super(); xSize = 256; @@ -40,16 +41,16 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData posX = i; posY = j; posZ = k; - + this.closeOnEsc = true; - + setBackground("menubg.png"); } public void initGui() { super.initGui(); guiTop += 10; - + if(scroll == null){ scroll = new GuiCustomScroll(this,0); scroll.setSize(165, 188); @@ -59,7 +60,7 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData scroll.guiLeft = guiLeft + 4; scroll.guiTop = guiTop + 26; addScroll(scroll); - + addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft + 4, guiTop + 4, 165, 20, search)); GuiMenuTopButton button; @@ -90,7 +91,7 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData addSideButton(new GuiMenuSideButton(33,guiLeft - 90, this.guiTop + 170, 45,22, "13")); addSideButton(new GuiMenuSideButton(34,guiLeft - 45, this.guiTop + 191, 45,22, "14")); addSideButton(new GuiMenuSideButton(35,guiLeft - 90, this.guiTop + 191, 45,22, "15")); - + getSideButton(20 + activeTab).active = true; showClones(); } @@ -109,7 +110,7 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData e.printStackTrace(); } catch (NoSuchMethodException e) { } - } + } this.list = list; scroll.setList(getSearchList()); } @@ -119,7 +120,7 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData Client.sendData(EnumPacketServer.CloneList, activeTab); return; } - + ArrayList list = new ArrayList(); this.list = ClientCloneController.Instance.getClones(activeTab); scroll.setList(getSearchList()); @@ -127,7 +128,7 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData public void keyTyped(char c, int i) { super.keyTyped(c, i); - + if(search.equals(getTextField(1).getText())) return; search = getTextField(1).getText().toLowerCase(); @@ -147,7 +148,7 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData String sel = scroll.getSelected(); if(sel == null) return null; - + if(showingClones == 0){ return ClientCloneController.Instance.getCloneData(player, sel, activeTab); } @@ -159,9 +160,9 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData entity.writeToNBTOptional(compound); return compound; } - + } - + protected void actionPerformed(GuiButton guibutton) { int id = guibutton.id; @@ -172,12 +173,12 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData NBTTagCompound compound = getCompound(); if(compound != null){ compound.setTag("Pos", this.newDoubleNBTList(new double[] {this.posX + 0.5, this.posY + 1, this.posZ + 0.5})); - Client.sendData(EnumPacketServer.SpawnRider, compound); + MountPacket.Spawn(compound); close(); } } if(id == 2){ - Client.sendData(EnumPacketServer.PlayerRider); + MountPacket.Player(); close(); } if(id == 3){ @@ -211,11 +212,11 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData return nbttaglist; } - + @Override public void save() { // TODO Auto-generated method stub - + } @Override public void setGuiData(NBTTagCompound compound) { diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcPather.java b/src/main/java/noppes/npcs/client/gui/GuiNpcPather.java index 4e812a348..de27889a3 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcPather.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcPather.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.pather.MovingPathGetPacket; +import kamkeel.npcs.network.packets.request.pather.MovingPathSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.DataAI; @@ -17,11 +20,11 @@ import java.util.HashMap; import java.util.List; public class GuiNpcPather extends GuiNPCInterface implements IGuiData{ - + private GuiCustomScroll scroll; private HashMap data = new HashMap(); private DataAI ai; - + public GuiNpcPather(EntityNPCInterface npc) { super(); drawDefaultBackground = false; @@ -29,7 +32,7 @@ public class GuiNpcPather extends GuiNPCInterface implements IGuiData{ title = "Npc Pather"; setBackground("smallbg.png"); ai = npc.ai; - Client.sendData(EnumPacketServer.MovingPathGet); + PacketClient.sendClient(new MovingPathGetPacket()); } @Override public void initGui() @@ -44,7 +47,7 @@ public class GuiNpcPather extends GuiNPCInterface implements IGuiData{ scroll.setUnsortedList(list); scroll.guiLeft = guiLeft + 7; scroll.guiTop = guiTop + 12; - + addScroll(scroll); this.addButton(new GuiNpcButton(0, guiLeft + 6, guiTop + 178,52,20, "gui.down")); this.addButton(new GuiNpcButton(1, guiLeft + 62, guiTop + 178,52,20, "gui.up")); @@ -55,7 +58,7 @@ public class GuiNpcPather extends GuiNPCInterface implements IGuiData{ { if(scroll.selected < 0) return; - + int id = guibutton.id; if(id == 0){ List list = ai.getMovingPath(); @@ -109,12 +112,12 @@ public class GuiNpcPather extends GuiNPCInterface implements IGuiData{ close(); } } - + @Override public void save() { NBTTagCompound compound = new NBTTagCompound(); compound.setTag("MovingPathNew", NBTTags.nbtIntegerArraySet(ai.getMovingPath())); - Client.sendData(EnumPacketServer.MovingPathSave, compound); + PacketClient.sendClient(new MovingPathSavePacket(compound)); } @Override diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index ce2ebde7c..377959964 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -37,13 +37,6 @@ public enum EnumPacketServer { EventScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), EventScriptDataGet(true), - FactionsGet, - FactionGet, - PlayerRider(CustomNpcsPermissions.TOOL_MOUNTER), - SpawnRider(CustomNpcsPermissions.TOOL_MOUNTER), - MovingPathSave(CustomNpcsPermissions.TOOL_PATHER,true), - MovingPathGet(true), - DimensionTeleport; public CustomNpcsPermissions.Permission permission = null; From fb32ca6e29c74ad1ffd320e7ac9be50c1f8efcaa Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 01:32:49 +0100 Subject: [PATCH 085/157] InputDevicePacket --- .../kamkeel/npcs/network/PacketHandler.java | 3 + .../npcs/network/enums/EnumPlayerPacket.java | 3 +- .../network/packets/player/BankPacket.java | 13 +- .../packets/player/InputDevicePacket.java | 149 ++++++++++++++++++ .../java/noppes/npcs/PacketHandlerPlayer.java | 128 +++++++-------- .../noppes/npcs/client/ClientTickHandler.java | 34 +--- .../client/gui/player/GuiNPCBankChest.java | 6 +- 7 files changed, 230 insertions(+), 106 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/InputDevicePacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index e124ef5c5..92ae24c50 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -16,6 +16,7 @@ import kamkeel.npcs.network.packets.data.npc.*; import kamkeel.npcs.network.packets.data.script.*; import kamkeel.npcs.network.packets.player.BankPacket; import kamkeel.npcs.network.packets.player.FollowerPacket; +import kamkeel.npcs.network.packets.player.InputDevicePacket; import kamkeel.npcs.network.packets.player.TransportPacket; import kamkeel.npcs.network.packets.request.*; import kamkeel.npcs.network.packets.request.animation.*; @@ -341,6 +342,8 @@ public class PacketHandler { PLAYER_PACKET.registerPacket(new TransportPacket()); PLAYER_PACKET.registerPacket(new BankPacket()); + + PLAYER_PACKET.registerPacket(new InputDevicePacket()); } private void registerChannels() { diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index d816f5623..6059b0f7c 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -14,8 +14,7 @@ public enum EnumPlayerPacket { SaveBook, // TODO Companion, // TODO: OpenInv, TalentExp RoleGet, // TODO - KeyPressed, // TODO - MouseClicked, // TODO + InputDevice, ScreenSize; // TODO diff --git a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java index ba3199a29..d2597f6e9 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java @@ -5,6 +5,7 @@ import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumPlayerPacket; import net.minecraft.entity.player.EntityPlayer; @@ -38,14 +39,14 @@ public class BankPacket extends AbstractPacket { return true; } - public static BankPacket Open(int bankID, int slotID) { - return new BankPacket(Action.OpenSlot, bankID, slotID); + public static void Open(int bankID, int slotID) { + PacketClient.sendClient(new BankPacket(Action.OpenSlot, bankID, slotID)); } - public static BankPacket Upgrade() { - return new BankPacket(Action.Upgrade, -1, -1); + public static void Upgrade() { + PacketClient.sendClient(new BankPacket(Action.Upgrade, -1, -1)); } - public static BankPacket Unlock() { - return new BankPacket(Action.Unlock, -1, -1); + public static void Unlock() { + PacketClient.sendClient(new BankPacket(Action.Unlock, -1, -1)); } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/player/InputDevicePacket.java b/src/main/java/kamkeel/npcs/network/packets/player/InputDevicePacket.java new file mode 100644 index 000000000..84dac01fe --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/InputDevicePacket.java @@ -0,0 +1,149 @@ +package kamkeel.npcs.network.packets.player; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketClient; +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.entity.player.EntityPlayerMP; +import noppes.npcs.EventHooks; +import org.lwjgl.input.Keyboard; + +import java.io.IOException; + +public class InputDevicePacket extends AbstractPacket { + public static final String packetName = "Player|InputDevice"; + + private Type type; + + private int key, scroll; + private boolean isKeyPressed, ctrlPressed, shiftPressed, altPressed, metaPressed; + private String keysDownList; + + public InputDevicePacket() { + + } + + private InputDevicePacket(Type type, int key, boolean isDown) { + this.type = type; + this.key = key; + this.isKeyPressed = isDown; + } + public static void sendMouse(int mouseButton, int scroll, boolean isDown) { + InputDevicePacket packet = new InputDevicePacket(Type.MOUSE, mouseButton, isDown); + packet.scroll = scroll; + packet.commonDataGrabber(); + + PacketClient.sendClient(packet); + } + + public static void sendKeyboard(int key, boolean isDown) { + InputDevicePacket packet = new InputDevicePacket(Type.KEYBOARD, key, isDown); + packet.commonDataGrabber(); + + PacketClient.sendClient(packet); + } + + private void commonDataGrabber() { + ctrlPressed = Keyboard.isKeyDown(157) || Keyboard.isKeyDown(29); + shiftPressed = Keyboard.isKeyDown(54) || Keyboard.isKeyDown(42); + altPressed = Keyboard.isKeyDown(184) || Keyboard.isKeyDown(56); + metaPressed = Keyboard.isKeyDown(220) || Keyboard.isKeyDown(219); + + StringBuilder keysDownString = new StringBuilder(); + for (int i = 0; i < Keyboard.getKeyCount(); i++) {//Creates a comma separated string of the integer IDs of held keys + if (Keyboard.isKeyDown(i)) { + keysDownString.append(Integer.valueOf(i)).append(","); + } + } + if (keysDownString.length() > 0) {//Removes last comma for later parsing + keysDownString.deleteCharAt(keysDownString.length() - 1); + } + keysDownList = keysDownString.toString(); + } + + + @Override + public Enum getType() { + return EnumPlayerPacket.InputDevice; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } + + @Override + @SideOnly(Side.CLIENT) + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + + out.writeInt(key); + out.writeBoolean(isKeyPressed); + if (type == Type.MOUSE) { + out.writeInt(scroll); + } + + out.writeBoolean(ctrlPressed); + out.writeBoolean(shiftPressed); + out.writeBoolean(altPressed); + out.writeBoolean(metaPressed); + ByteBufUtils.writeString(out, keysDownList); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + EntityPlayerMP playerMP = (EntityPlayerMP) player; + + Type incomingType = Type.values()[in.readInt()]; + boolean isMouse = incomingType == Type.MOUSE; + + int inputKey = in.readInt(); + boolean isKeyDown = in.readBoolean(); + int scroll = isMouse ? in.readInt() : 0; + boolean ctrl = in.readBoolean(); + boolean shift = in.readBoolean(); + boolean alt = in.readBoolean(); + boolean meta = in.readBoolean(); + int[] pressedKeys = getPressedArray(ByteBufUtils.readString(in)); + + if (isMouse) + EventHooks.onPlayerMouseClicked(playerMP, inputKey, scroll, isKeyDown, ctrl, shift, alt, meta, pressedKeys); + else + EventHooks.onPlayerKeyPressed(playerMP, inputKey, ctrl, shift, alt, meta, isKeyDown, pressedKeys); + } + + private static int[] getPressedArray(String pressedKeys) { + if(pressedKeys == null) + return new int[0]; + + String[] split = pressedKeys.split(","); + int[] keysDown; + + if(pressedKeys.length() > 0) { + keysDown = new int[split.length]; + try { + for (int i = 0; i < split.length; i++) { + keysDown[i] = Integer.parseInt(split[i]); + } + } + catch (NumberFormatException ignored){ + } + } else { + keysDown = new int[0]; + } + return keysDown; + } + + private enum Type { + MOUSE, + KEYBOARD + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index 69c1fd0e0..fc43359e8 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -62,70 +62,70 @@ public class PacketHandlerPlayer{ return; NoppesUtilServer.sendOpenGui(player, EnumGuiType.CompanionInv, npc); } - else if(type == EnumPlayerPacket.KeyPressed) { - if(ScriptController.Instance.languages.isEmpty()) { - return; - } - - int button = buffer.readInt(); - boolean isCtrlPressed = buffer.readBoolean(); - boolean isShiftPressed = buffer.readBoolean(); - boolean isAltPressed = buffer.readBoolean(); - boolean isMetaPressed = buffer.readBoolean(); - boolean buttonDown = buffer.readBoolean(); - - String ints = ByteBufUtils.readString(buffer); - String[] split = ints.split(","); - int[] keysDown; - - if(ints.length() > 0) { - keysDown = new int[split.length]; - try { - for (int i = 0; i < split.length; i++) { - keysDown[i] = Integer.parseInt(split[i]); - } - } - catch (NumberFormatException ignored){ - } - } else { - keysDown = new int[0]; - } - - EventHooks.onPlayerKeyPressed(player, button, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, buttonDown, keysDown); - } - else if(type == EnumPlayerPacket.MouseClicked) { - if(ScriptController.Instance.languages.isEmpty()) { - return; - } - - int button = buffer.readInt(); - int mouseWheel = buffer.readInt(); - boolean buttonDown = buffer.readBoolean(); - - boolean isCtrlPressed = buffer.readBoolean(); - boolean isShiftPressed = buffer.readBoolean(); - boolean isAltPressed = buffer.readBoolean(); - boolean isMetaPressed = buffer.readBoolean(); - - String ints = ByteBufUtils.readString(buffer); - String[] split = ints.split(","); - int[] keysDown; - - if(ints.length() > 0) { - keysDown = new int[split.length]; - try { - for (int i = 0; i < split.length; i++) { - keysDown[i] = Integer.parseInt(split[i]); - } - } - catch (NumberFormatException ignored){ - } - } else { - keysDown = new int[0]; - } - - EventHooks.onPlayerMouseClicked(player, button, mouseWheel, buttonDown, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, keysDown); - } +// else if(type == EnumPlayerPacket.KeyPressed) { +// if(ScriptController.Instance.languages.isEmpty()) { +// return; +// } +// +// int button = buffer.readInt(); +// boolean isCtrlPressed = buffer.readBoolean(); +// boolean isShiftPressed = buffer.readBoolean(); +// boolean isAltPressed = buffer.readBoolean(); +// boolean isMetaPressed = buffer.readBoolean(); +// boolean buttonDown = buffer.readBoolean(); +// +// String ints = ByteBufUtils.readString(buffer); +// String[] split = ints.split(","); +// int[] keysDown; +// +// if(ints.length() > 0) { +// keysDown = new int[split.length]; +// try { +// for (int i = 0; i < split.length; i++) { +// keysDown[i] = Integer.parseInt(split[i]); +// } +// } +// catch (NumberFormatException ignored){ +// } +// } else { +// keysDown = new int[0]; +// } +// +// EventHooks.onPlayerKeyPressed(player, button, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, buttonDown, keysDown); +// } +// else if(type == EnumPlayerPacket.MouseClicked) { +// if(ScriptController.Instance.languages.isEmpty()) { +// return; +// } +// +// int button = buffer.readInt(); +// int mouseWheel = buffer.readInt(); +// boolean buttonDown = buffer.readBoolean(); +// +// boolean isCtrlPressed = buffer.readBoolean(); +// boolean isShiftPressed = buffer.readBoolean(); +// boolean isAltPressed = buffer.readBoolean(); +// boolean isMetaPressed = buffer.readBoolean(); +// +// String ints = ByteBufUtils.readString(buffer); +// String[] split = ints.split(","); +// int[] keysDown; +// +// if(ints.length() > 0) { +// keysDown = new int[split.length]; +// try { +// for (int i = 0; i < split.length; i++) { +// keysDown[i] = Integer.parseInt(split[i]); +// } +// } +// catch (NumberFormatException ignored){ +// } +// } else { +// keysDown = new int[0]; +// } +// +// EventHooks.onPlayerMouseClicked(player, button, mouseWheel, buttonDown, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, keysDown); +// } // else if(type == EnumPlayerPacket.FollowerHire){ // EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); // if(npc == null || npc.advanced.role != EnumRoleType.Follower) diff --git a/src/main/java/noppes/npcs/client/ClientTickHandler.java b/src/main/java/noppes/npcs/client/ClientTickHandler.java index e1a5a53fc..234fd2dcc 100644 --- a/src/main/java/noppes/npcs/client/ClientTickHandler.java +++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java @@ -6,6 +6,7 @@ import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import kamkeel.npcs.addon.client.DBCClient; +import kamkeel.npcs.network.packets.player.InputDevicePacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.inventory.ContainerPlayer; @@ -80,22 +81,7 @@ public class ClientTickHandler{ if(Mouse.getEventButton() == -1 && Mouse.getEventDWheel() == 0) return; - boolean isCtrlPressed = Keyboard.isKeyDown(157) || Keyboard.isKeyDown(29); - boolean isShiftPressed = Keyboard.isKeyDown(54) || Keyboard.isKeyDown(42); - boolean isAltPressed = Keyboard.isKeyDown(184) || Keyboard.isKeyDown(56); - boolean isMetaPressed = Keyboard.isKeyDown(220) || Keyboard.isKeyDown(219); - - StringBuilder keysDownString = new StringBuilder(); - for (int i = 0; i < Keyboard.getKeyCount(); i++) {//Creates a comma separated string of the integer IDs of held keys - if (Keyboard.isKeyDown(i)) { - keysDownString.append(Integer.valueOf(i)).append(","); - } - } - if (keysDownString.length() > 0) {//Removes last comma for later parsing - keysDownString.deleteCharAt(keysDownString.length() - 1); - } - - NoppesUtilPlayer.sendData(EnumPlayerPacket.MouseClicked, Mouse.getEventButton(),Mouse.getEventDWheel(),Mouse.isButtonDown(Mouse.getEventButton()), isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, keysDownString.toString()); + InputDevicePacket.sendMouse(Mouse.getEventButton(),Mouse.getEventDWheel(),Mouse.isButtonDown(Mouse.getEventButton())); } @SubscribeEvent @@ -127,23 +113,9 @@ public class ClientTickHandler{ if(!Keyboard.isRepeatEvent()) { int key = Keyboard.getEventKey(); - boolean isCtrlPressed = Keyboard.isKeyDown(157) || Keyboard.isKeyDown(29); - boolean isShiftPressed = Keyboard.isKeyDown(54) || Keyboard.isKeyDown(42); - boolean isAltPressed = Keyboard.isKeyDown(184) || Keyboard.isKeyDown(56); - boolean isMetaPressed = Keyboard.isKeyDown(220) || Keyboard.isKeyDown(219); boolean keyDown = Keyboard.isKeyDown(key); - StringBuilder keysDownString = new StringBuilder(); - for (int i = 0; i < Keyboard.getKeyCount(); i++) {//Creates a comma separated string of the integer IDs of held keys - if (Keyboard.isKeyDown(i)) { - keysDownString.append(Integer.valueOf(i)).append(","); - } - } - if (keysDownString.length() > 0) {//Removes last comma for later parsing - keysDownString.deleteCharAt(keysDownString.length() - 1); - } - - NoppesUtilPlayer.sendData(EnumPlayerPacket.KeyPressed, key, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, keyDown, keysDownString.toString()); + InputDevicePacket.sendKeyboard(key, keyDown); } } diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java b/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java index e8ce79244..8ec528f54 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java @@ -72,13 +72,13 @@ public class GuiNPCBankChest extends GuiContainerNPCInterface implements IGuiDat int id = guibutton.id; if(id < 6){ close(); - PacketClient.sendClient(BankPacket.Open(container.bankid, id)); + BankPacket.Open(container.bankid, id); } if(id == 8){ - PacketClient.sendClient(BankPacket.Unlock()); + BankPacket.Unlock(); } if(id == 9){ - PacketClient.sendClient(BankPacket.Upgrade()); + BankPacket.Upgrade(); } From 20e44c919fa2684b1da3c59f5c7d0f9e3f87d256 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 01:47:47 +0100 Subject: [PATCH 086/157] Rename BankPacket to BankActionPacket --- .../java/kamkeel/npcs/network/PacketHandler.java | 4 ++-- .../{BankPacket.java => BankActionPacket.java} | 12 ++++++------ .../npcs/network/packets/request/MountPacket.java | 4 ---- .../npcs/client/gui/player/GuiNPCBankChest.java | 11 ++++------- .../java/noppes/npcs/constants/EnumPlayerPacket.java | 4 ++-- 5 files changed, 14 insertions(+), 21 deletions(-) rename src/main/java/kamkeel/npcs/network/packets/player/{BankPacket.java => BankActionPacket.java} (86%) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 92ae24c50..52e9a3ede 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -14,7 +14,7 @@ import kamkeel.npcs.network.packets.data.gui.IsGuiOpenPacket; import kamkeel.npcs.network.packets.data.large.*; import kamkeel.npcs.network.packets.data.npc.*; import kamkeel.npcs.network.packets.data.script.*; -import kamkeel.npcs.network.packets.player.BankPacket; +import kamkeel.npcs.network.packets.player.BankActionPacket; import kamkeel.npcs.network.packets.player.FollowerPacket; import kamkeel.npcs.network.packets.player.InputDevicePacket; import kamkeel.npcs.network.packets.player.TransportPacket; @@ -341,7 +341,7 @@ public class PacketHandler { PLAYER_PACKET.registerPacket(new TransportPacket()); - PLAYER_PACKET.registerPacket(new BankPacket()); + PLAYER_PACKET.registerPacket(new BankActionPacket()); PLAYER_PACKET.registerPacket(new InputDevicePacket()); } diff --git a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/BankActionPacket.java similarity index 86% rename from src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java rename to src/main/java/kamkeel/npcs/network/packets/player/BankActionPacket.java index d2597f6e9..589d48796 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/BankPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/BankActionPacket.java @@ -17,18 +17,18 @@ import noppes.npcs.controllers.data.BankData; import java.io.IOException; -public class BankPacket extends AbstractPacket { +public class BankActionPacket extends AbstractPacket { public static final String packetName = "Player|Bank"; private Action type; private int slotID; private int bankID; - public BankPacket() { + public BankActionPacket() { } - private BankPacket(Action action, int bankID, int slotID) { + private BankActionPacket(Action action, int bankID, int slotID) { this.type = action; this.bankID = bankID; this.slotID = slotID; @@ -40,13 +40,13 @@ public class BankPacket extends AbstractPacket { } public static void Open(int bankID, int slotID) { - PacketClient.sendClient(new BankPacket(Action.OpenSlot, bankID, slotID)); + PacketClient.sendClient(new BankActionPacket(Action.OpenSlot, bankID, slotID)); } public static void Upgrade() { - PacketClient.sendClient(new BankPacket(Action.Upgrade, -1, -1)); + PacketClient.sendClient(new BankActionPacket(Action.Upgrade, -1, -1)); } public static void Unlock() { - PacketClient.sendClient(new BankPacket(Action.Unlock, -1, -1)); + PacketClient.sendClient(new BankActionPacket(Action.Unlock, -1, -1)); } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/request/MountPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/MountPacket.java index 13df839be..79572a782 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/MountPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/MountPacket.java @@ -9,16 +9,12 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; -import kamkeel.npcs.network.packets.data.large.GuiDataPacket; -import kamkeel.npcs.network.packets.player.BankPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.Constants; import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.ServerEventsHandler; diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java b/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java index 8ec528f54..1db1ff318 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiNPCBankChest.java @@ -1,20 +1,17 @@ package noppes.npcs.client.gui.player; -import kamkeel.npcs.network.PacketClient; -import kamkeel.npcs.network.packets.player.BankPacket; +import kamkeel.npcs.network.packets.player.BankActionPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; -import noppes.npcs.NoppesUtilPlayer; import noppes.npcs.NoppesUtilServer; import noppes.npcs.client.CustomNpcResourceListener; import noppes.npcs.client.gui.util.GuiContainerNPCInterface; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.IGuiData; -import noppes.npcs.constants.EnumPlayerPacket; import noppes.npcs.containers.ContainerNPCBankInterface; import noppes.npcs.entity.EntityNPCInterface; import org.lwjgl.opengl.GL11; @@ -72,13 +69,13 @@ public class GuiNPCBankChest extends GuiContainerNPCInterface implements IGuiDat int id = guibutton.id; if(id < 6){ close(); - BankPacket.Open(container.bankid, id); + BankActionPacket.Open(container.bankid, id); } if(id == 8){ - BankPacket.Unlock(); + BankActionPacket.Unlock(); } if(id == 9){ - BankPacket.Upgrade(); + BankActionPacket.Upgrade(); } diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index 8f1d4a54a..cc12a09f7 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -22,8 +22,8 @@ public enum EnumPlayerPacket { SaveBook, CompanionOpenInv, RoleGet, - KeyPressed, - MouseClicked, +// KeyPressed, +// MouseClicked, CompanionTalentExp, ScreenSize } From 0326947b23b8460b5b91ecb4169a011a84b0248b Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 19:49:36 -0500 Subject: [PATCH 087/157] Mounter Packets Completed + Cloner Packets --- .../kamkeel/npcs/network/PacketHandler.java | 8 + .../npcs/network/enums/EnumRequestPacket.java | 2 +- .../request/clone/CloneListPacket.java | 82 ++++++++++ .../request/clone/MobSpawnerPacket.java | 130 ++++++++++++++++ .../packets/request/clone/SpawnMobPacket.java | 140 ++++++++++++++++++ .../java/noppes/npcs/PacketHandlerServer.java | 92 +----------- .../npcs/client/gui/GuiNpcMobSpawner.java | 16 +- .../client/gui/GuiNpcMobSpawnerMounter.java | 4 +- .../client/gui/GuiNpcMobSpawnerSelector.java | 34 +++-- .../npcs/constants/EnumPacketServer.java | 1 - 10 files changed, 394 insertions(+), 115 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/clone/CloneListPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/clone/MobSpawnerPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/clone/SpawnMobPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index e124ef5c5..2a4952fa9 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -23,6 +23,9 @@ import kamkeel.npcs.network.packets.request.bank.BankGetPacket; import kamkeel.npcs.network.packets.request.bank.BankRemovePacket; import kamkeel.npcs.network.packets.request.bank.BankSavePacket; import kamkeel.npcs.network.packets.request.bank.BanksGetPacket; +import kamkeel.npcs.network.packets.request.clone.CloneListPacket; +import kamkeel.npcs.network.packets.request.clone.MobSpawnerPacket; +import kamkeel.npcs.network.packets.request.clone.SpawnMobPacket; import kamkeel.npcs.network.packets.request.customgui.CustomGuiButtonPacket; import kamkeel.npcs.network.packets.request.customgui.CustomGuiClosePacket; import kamkeel.npcs.network.packets.request.customgui.CustomGuiUnfocusedPacket; @@ -109,6 +112,11 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new NpcClosePacket()); REQUEST_PACKET.registerPacket(new NpcDeletePacket()); + // Cloner Packets + REQUEST_PACKET.registerPacket(new CloneListPacket()); + REQUEST_PACKET.registerPacket(new SpawnMobPacket()); + REQUEST_PACKET.registerPacket(new MobSpawnerPacket()); + // Linked Packets REQUEST_PACKET.registerPacket(new LinkedGetAllPacket()); REQUEST_PACKET.registerPacket(new LinkedRemovePacket()); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index 7cad412c0..e08a9c284 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -151,5 +151,5 @@ public enum EnumRequestPacket { TraderMarketSave, - ServerUpdateSkinOverlays + CloneList, ServerUpdateSkinOverlays } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneListPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneListPacket.java new file mode 100644 index 000000000..004ae7937 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneListPacket.java @@ -0,0 +1,82 @@ +package kamkeel.npcs.network.packets.request.clone; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; +import noppes.npcs.LogWriter; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class CloneListPacket extends AbstractPacket { + public static String packetName = "Request|CloneList"; + + private int tab; + + public CloneListPacket(int tab) { + this.tab = tab; + } + + public CloneListPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.CloneList; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(tab); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.MOUNTER, EnumItemPacketType.CLONER)) + return; + + int id = in.readInt(); + Entity entity = player.worldObj.getEntityByID(id); + if (!(entity instanceof EntityNPCInterface)) + return; + + NBTTagList list = new NBTTagList(); + int tab = in.readInt(); + for(String name : ServerCloneController.Instance.getClones(tab)) + list.appendTag(new NBTTagString(name)); + + NBTTagList listDate = new NBTTagList(); + for(String name : ServerCloneController.Instance.getClonesDate(tab)) + listDate.appendTag(new NBTTagString(name)); + + NBTTagCompound compound = new NBTTagCompound(); + compound.setTag("List", list); + compound.setTag("ListDate", listDate); + + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/clone/MobSpawnerPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/clone/MobSpawnerPacket.java new file mode 100644 index 000000000..29ff58063 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/clone/MobSpawnerPacket.java @@ -0,0 +1,130 @@ +package kamkeel.npcs.network.packets.request.clone; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.LogWriter; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public class MobSpawnerPacket extends AbstractPacket { + public static final String packetName = "Player|MobSpawner"; + + private Action type; + private int posX; + private int posY; + private int posz; + + private String selectedName; + private int tab; + + private NBTTagCompound compound; + + public MobSpawnerPacket() {} + + public MobSpawnerPacket(Action type, int posX, int posY, int posz, String selectedName, int tab) { + this.type = type; + this.posX = posX; + this.posY = posY; + this.posz = posz; + this.selectedName = selectedName; + this.tab = tab; + } + + public MobSpawnerPacket(Action type, int posX, int posY, int posz, NBTTagCompound compound) { + this.type = type; + this.posX = posX; + this.posY = posY; + this.posz = posz; + this.compound = compound; + } + + public static MobSpawnerPacket Server(int x, int y, int z, String name, int tab) { + return new MobSpawnerPacket(Action.Server, x, y, z, name, tab); + } + public static MobSpawnerPacket Client(int x, int y, int z, NBTTagCompound compound) { + return new MobSpawnerPacket(Action.Client, x, y, z, compound); + } + + @Override + public Enum getType() { + return EnumRequestPacket.MobSpawner; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.SPAWNER_CREATE; + } + + @Override + @SideOnly(Side.CLIENT) + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + out.writeInt(posX); + out.writeInt(posY); + out.writeInt(posz); + + if (type == Action.Server) { + ByteBufUtils.writeString(out, this.selectedName); + out.writeInt(this.tab); + } else { + ByteBufUtils.writeNBT(out, this.compound); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.CLONER)) + return; + + Action requestedAction = Action.values()[in.readInt()]; + int x = in.readInt(); + int y = in.readInt(); + int z = in.readInt(); + NBTTagCompound compound; + + if(requestedAction == Action.Server) + compound = ServerCloneController.Instance.getCloneData(player, ByteBufUtils.readString(in), in.readInt()); + else + compound = ByteBufUtils.readNBT(in); + + if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) { + return; + } + + if(compound != null) + NoppesUtilServer.createMobSpawner(x, y, z, compound, player); + } + + private enum Action { + Server, + Client, + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/clone/SpawnMobPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/clone/SpawnMobPacket.java new file mode 100644 index 000000000..68798c70a --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/clone/SpawnMobPacket.java @@ -0,0 +1,140 @@ +package kamkeel.npcs.network.packets.request.clone; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.LogWriter; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public class SpawnMobPacket extends AbstractPacket { + public static final String packetName = "Player|SpawnMob"; + + private Action type; + private int posX; + private int posY; + private int posz; + + private String selectedName; + private int tab; + + private NBTTagCompound compound; + + public SpawnMobPacket() {} + + public SpawnMobPacket(Action type, int posX, int posY, int posz, String selectedName, int tab) { + this.type = type; + this.posX = posX; + this.posY = posY; + this.posz = posz; + this.selectedName = selectedName; + this.tab = tab; + } + + public SpawnMobPacket(Action type, int posX, int posY, int posz, NBTTagCompound compound) { + this.type = type; + this.posX = posX; + this.posY = posY; + this.posz = posz; + this.compound = compound; + } + + public static SpawnMobPacket Server(int x, int y, int z, String name, int tab) { + return new SpawnMobPacket(Action.Server, x, y, z, name, tab); + } + public static SpawnMobPacket Client(int x, int y, int z, NBTTagCompound compound) { + return new SpawnMobPacket(Action.Client, x, y, z, compound); + } + + @Override + public Enum getType() { + return EnumRequestPacket.SpawnMob; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission() { + return CustomNpcsPermissions.SPAWNER_MOB; + } + + @Override + @SideOnly(Side.CLIENT) + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + out.writeInt(posX); + out.writeInt(posY); + out.writeInt(posz); + + if (type == Action.Server) { + ByteBufUtils.writeString(out, this.selectedName); + out.writeInt(this.tab); + } else { + ByteBufUtils.writeNBT(out, this.compound); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.CLONER)) + return; + + Action requestedAction = Action.values()[in.readInt()]; + int x = in.readInt(); + int y = in.readInt(); + int z = in.readInt(); + NBTTagCompound compound; + + if(requestedAction == Action.Server) + compound = ServerCloneController.Instance.getCloneData(player, ByteBufUtils.readString(in), in.readInt()); + else + compound = ByteBufUtils.readNBT(in); + + if(compound == null) + return; + Entity entity = NoppesUtilServer.spawnClone(compound, x, y, z, player.worldObj); + if(entity == null){ + player.addChatMessage(new ChatComponentText("Failed to create an entity out of your clone")); + return; + } + + if (entity instanceof EntityNPCInterface && !ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) { + EntityNPCInterface npc = (EntityNPCInterface) entity; + npc.script.setEnabled(false); + } + + if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ + LogWriter.script(String.format("[%s] (Player) %s SPAWNED ENTITY %s", "CLONER", player.getCommandSenderName(), entity)); + } + } + + private enum Action { + Server, + Client, + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 9bb58a648..721d7de45 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -72,9 +72,7 @@ public class PacketHandlerServer{ warn(player, "tried to use custom npcs without a tool in hand, probably a hacker"); else { if (item != null) { - if (item.getItem() == CustomItems.mount) - mountPackets(type, in, player); - else if (item.getItem() == CustomItems.cloner) + if (item.getItem() == CustomItems.cloner) clonePackets(type, in, player); else if (item.getItem() == CustomItems.teleporter) featherPackets(type, in, player); @@ -145,10 +143,6 @@ public class PacketHandlerServer{ } } - private void isGuiOpenPacket(ByteBuf buffer, EntityPlayerMP player) throws IOException { - NoppesUtilServer.isGUIOpen(buffer, player); - } - private void getScriptsEnabled(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { if (type == EnumPacketServer.ScriptGlobalGuiDataGet) { NBTTagCompound compound = new NBTTagCompound(); @@ -349,74 +343,8 @@ public class PacketHandlerServer{ } } - private void mountPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException{ - if(type == EnumPacketServer.CloneList){ - NBTTagList list = new NBTTagList(); - int tab = buffer.readInt(); - for(String name : ServerCloneController.Instance.getClones(tab)) - list.appendTag(new NBTTagString(name)); - - NBTTagList listDate = new NBTTagList(); - for(String name : ServerCloneController.Instance.getClonesDate(tab)) - listDate.appendTag(new NBTTagString(name)); - - NBTTagCompound compound = new NBTTagCompound(); - compound.setTag("List", list); - compound.setTag("ListDate", listDate); - - GuiDataPacket.sendGuiData(player, compound); - } - else - warn(player,"WE 1 tried todo something with the wrong tool, probably a hacker"); - } - private void clonePackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { - if(type == EnumPacketServer.SpawnMob){ - boolean server = buffer.readBoolean(); - int x = buffer.readInt(); - int y = buffer.readInt(); - int z = buffer.readInt(); - NBTTagCompound compound; - if(server) - compound = ServerCloneController.Instance.getCloneData(player, ByteBufUtils.readString(buffer), buffer.readInt()); - else - compound = ByteBufUtils.readNBT(buffer); - if(compound == null) - return; - Entity entity = NoppesUtilServer.spawnClone(compound, x, y, z, player.worldObj); - if(entity == null){ - player.addChatMessage(new ChatComponentText("Failed to create an entity out of your clone")); - return; - } - - if (entity instanceof EntityNPCInterface && !ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) { - EntityNPCInterface npc = (EntityNPCInterface) entity; - npc.script.setEnabled(false); - } - - if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ - LogWriter.script(String.format("[%s] (Player) %s SPAWNED ENTITY %s", "CLONER", player.getCommandSenderName(), entity)); - } - } - else if(type == EnumPacketServer.MobSpawner){ - boolean server = buffer.readBoolean(); - int x = buffer.readInt(); - int y = buffer.readInt(); - int z = buffer.readInt(); - NBTTagCompound compound; - if(server) - compound = ServerCloneController.Instance.getCloneData(player, ByteBufUtils.readString(buffer), buffer.readInt()); - else - compound = ByteBufUtils.readNBT(buffer); - - if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) { - return; - } - - if(compound != null) - NoppesUtilServer.createMobSpawner(x, y, z, compound, player); - } - else if(type == EnumPacketServer.ClonePreSave){ + if(type == EnumPacketServer.ClonePreSave){ boolean bo = ServerCloneController.Instance.getCloneData(null, ByteBufUtils.readString(buffer), buffer.readInt()) != null; NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("NameExists", bo); @@ -454,22 +382,6 @@ public class PacketHandlerServer{ GuiDataPacket.sendGuiData(player, compound); } - else if(type == EnumPacketServer.CloneList){ - NBTTagList list = new NBTTagList(); - int tab = buffer.readInt(); - for(String name : ServerCloneController.Instance.getClones(tab)) - list.appendTag(new NBTTagString(name)); - - NBTTagList listDate = new NBTTagList(); - for(String name : ServerCloneController.Instance.getClonesDate(tab)) - listDate.appendTag(new NBTTagString(name)); - - NBTTagCompound compound = new NBTTagCompound(); - compound.setTag("List", list); - compound.setTag("ListDate", listDate); - - GuiDataPacket.sendGuiData(player, compound); - } else if (type == EnumPacketServer.CloneTagList) { int tab = buffer.readInt(); TagMap tagMap = ServerTagMapController.Instance.getTagMap(tab); diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index f17b47e84..717968e39 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -1,5 +1,9 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.clone.CloneListPacket; +import kamkeel.npcs.network.packets.request.clone.MobSpawnerPacket; +import kamkeel.npcs.network.packets.request.clone.SpawnMobPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.Entity; @@ -188,7 +192,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { private void showClones() { if(showingClones == 2){ Client.sendData(EnumPacketServer.CloneTagList, activeTab); - Client.sendData(EnumPacketServer.CloneList, activeTab); + PacketClient.sendClient(new CloneListPacket(activeTab)); return; } @@ -377,14 +381,14 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { String sel = scroll.getSelected(); if(sel == null) return; - Client.sendData(EnumPacketServer.SpawnMob, true, posX, posY, posZ, sel, activeTab); + SpawnMobPacket.Server(posX, posY, posZ, sel, activeTab); close(); } else{ NBTTagCompound compound = getCompound(); if(compound == null) return; - Client.sendData(EnumPacketServer.SpawnMob, false, posX, posY, posZ, compound); + SpawnMobPacket.Client(posX, posY, posZ, compound); close(); } } @@ -393,14 +397,14 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { String sel = scroll.getSelected(); if(sel == null) return; - Client.sendData(EnumPacketServer.MobSpawner, true, posX, posY, posZ, sel, activeTab); + MobSpawnerPacket.Server(posX, posY, posZ, sel, activeTab); close(); } else{ NBTTagCompound compound = getCompound(); if(compound == null) return; - Client.sendData(EnumPacketServer.MobSpawner, false, posX, posY, posZ, compound); + MobSpawnerPacket.Client(posX, posY, posZ, compound); close(); } @@ -534,4 +538,4 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { } } -} \ No newline at end of file +} diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java index 025d2c56a..b8e7b9a5a 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java @@ -1,6 +1,8 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.MountPacket; +import kamkeel.npcs.network.packets.request.clone.CloneListPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.Entity; @@ -117,7 +119,7 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData private void showClones() { if(showingClones == 2){ - Client.sendData(EnumPacketServer.CloneList, activeTab); + PacketClient.sendClient(new CloneListPacket(activeTab)); return; } diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java index b3a8fe562..b347da7a1 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.clone.CloneListPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagDouble; @@ -13,24 +15,24 @@ import java.util.ArrayList; import java.util.List; public class GuiNpcMobSpawnerSelector extends SubGuiInterface implements IGuiData{ - + private GuiCustomScroll scroll; private List list; - + private static String search = ""; public int activeTab = 1; public boolean isServer = false; - + public GuiNpcMobSpawnerSelector() { super(); xSize = 256; this.closeOnEsc = true; setBackground("menubg.png"); } - - + + public void initGui(){ - super.initGui(); + super.initGui(); if(scroll == null){ scroll = new GuiCustomScroll(this,0); scroll.setSize(165, 188); @@ -40,7 +42,7 @@ public class GuiNpcMobSpawnerSelector extends SubGuiInterface implements IGuiDat scroll.guiLeft = guiLeft + 4; scroll.guiTop = guiTop + 26; addScroll(scroll); - + addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft + 4, guiTop + 4, 165, 20, search)); addButton(new GuiNpcButton(0, guiLeft + 171, guiTop + 80, 80, 20, "gui.done")); @@ -61,30 +63,30 @@ public class GuiNpcMobSpawnerSelector extends SubGuiInterface implements IGuiDat addSideButton(new GuiMenuSideButton(33,guiLeft - 90, this.guiTop + 170, 45,22, "13")); addSideButton(new GuiMenuSideButton(34,guiLeft - 45, this.guiTop + 191, 45,22, "14")); addSideButton(new GuiMenuSideButton(35,guiLeft - 90, this.guiTop + 191, 45,22, "15")); - + getSideButton(20 + activeTab).active = true; showClones(); } - + public String getSelected(){ return scroll.getSelected(); } private void showClones() { if(isServer){ - Client.sendData(EnumPacketServer.CloneList, activeTab); + PacketClient.sendClient(new CloneListPacket(activeTab)); return; } - + ArrayList list = new ArrayList(); - + this.list = new ArrayList(ClientCloneController.Instance.getClones(activeTab)); scroll.setList(getSearchList()); } public void keyTyped(char c, int i) { super.keyTyped(c, i); - + if(search.equals(getTextField(1).getText())) return; search = getTextField(1).getText().toLowerCase(); @@ -109,7 +111,7 @@ public class GuiNpcMobSpawnerSelector extends SubGuiInterface implements IGuiDat compound.setString("ClonedName", sel); return compound; } - + public void buttonEvent(GuiButton guibutton) { int id = guibutton.id; @@ -139,11 +141,11 @@ public class GuiNpcMobSpawnerSelector extends SubGuiInterface implements IGuiDat return nbttaglist; } - + @Override public void save() { // TODO Auto-generated method stub - + } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 377959964..7dc795de0 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -3,7 +3,6 @@ package noppes.npcs.constants; import noppes.npcs.CustomNpcsPermissions; public enum EnumPacketServer { - SpawnMob(CustomNpcsPermissions.SPAWNER_MOB), MobSpawner(CustomNpcsPermissions.SPAWNER_CREATE), ClonePreSave(CustomNpcsPermissions.NPC_CLONE), From a93c0fc3c6b1c7f465e2deafa42ff66de6f84633 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 03:23:50 +0100 Subject: [PATCH 088/157] Start work on Mail packets --- .../npcs/network/enums/EnumPlayerPacket.java | 3 +- .../packets/player/MailActionPacket.java | 214 ++++++++++++++++++ 2 files changed, 216 insertions(+), 1 deletion(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index 6059b0f7c..56d69b163 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -9,7 +9,8 @@ public enum EnumPlayerPacket { TrackedQuest, // TODO CheckQuestCompletion, // TODO FactionsGet, // TODO - MailAction, // TODO: Get, Delete, Send, Read, OpenMail + MailBoxAction, // TODO: Get, Delete, Send, Read, OpenMail + MailSend, SaveSign, // TODO SaveBook, // TODO Companion, // TODO: OpenInv, TalentExp diff --git a/src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java new file mode 100644 index 000000000..445b2f831 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java @@ -0,0 +1,214 @@ +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.*; +import kamkeel.npcs.network.enums.EnumPlayerPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.constants.EnumGuiType; +import noppes.npcs.containers.ContainerMail; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.PlayerQuestController; +import noppes.npcs.controllers.data.PlayerMail; +import noppes.npcs.controllers.data.PlayerMailData; +import noppes.npcs.controllers.data.QuestData; + +import java.io.IOException; +import java.util.Iterator; + +public class MailActionPacket extends AbstractPacket { + public static final String packetName = "Player|Mail"; + + private Action action; + private long time; + private String username; + + public MailActionPacket() { + } + + private MailActionPacket(Action action, long time, String sender) { + this.action = action; + this.time = time; + this.username = sender; + } + + public static void RequestMailData() { + MailActionPacket packet = new MailActionPacket(); + packet.action = Action.GET; + PacketClient.sendClient(packet); + } + public static void OpenMail(long time, String sender) { + PacketClient.sendClient(new MailActionPacket(Action.OPEN, time, sender)); + } + public static void DeleteMail(long time, String sender) { + PacketClient.sendClient(new MailActionPacket(Action.DELETE, time, sender)); + } + public static void ReadMail(long time, String sender) { + PacketClient.sendClient(new MailActionPacket(Action.READ, time, sender)); + } + public static void SendMail(String receiver, NBTTagCompound mailData) { + PacketClient.sendClient(new MailSendPacket(receiver, mailData)); + } + + @Override + public Enum getType() { + return EnumPlayerPacket.MailBoxAction; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(action.ordinal()); + + if (action == Action.GET) + return; + + switch (action) { + case OPEN: + case DELETE: + case READ: + out.writeLong(time); + ByteBufUtils.writeString(out, username); + break; + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + Action type = Action.values()[in.readInt()]; + + if(!(player instanceof EntityPlayerMP)) + return; + EntityPlayerMP playerMP = (EntityPlayerMP) player; + PlayerMailData data = PlayerDataController.Instance.getPlayerData(playerMP).mailData; + + if (type == Action.GET) { + GuiDataPacket.sendGuiData(playerMP, data.saveNBTData(new NBTTagCompound())); + return; + } + + long time = in.readLong(); + String user = ByteBufUtils.readString(in); + Iterator it = data.playermail.iterator(); + switch (type) { + case OPEN: + playerMP.closeContainer(); + + while(it.hasNext()){ + PlayerMail mail = it.next(); + if(mail.time == time && mail.sender.equals(user)){ + ContainerMail.staticmail = mail; + playerMP.openGui(CustomNpcs.instance, EnumGuiType.PlayerMailman.ordinal(), playerMP.worldObj, 0, 0, 0); + break; + } + } + break; + + case DELETE: + while(it.hasNext()){ + PlayerMail mail = it.next(); + if(mail.time == time && mail.sender.equals(user)){ + it.remove(); + } + } + GuiDataPacket.sendGuiData(playerMP, data.saveNBTData(new NBTTagCompound())); + break; + + case READ: + while(it.hasNext()){ + PlayerMail mail = it.next(); + if(mail.time == time && mail.sender.equals(user)){ + mail.beenRead = true; + if(mail.hasQuest()) + PlayerQuestController.addActiveQuest(new QuestData(mail.getQuest()), playerMP); + } + } + break; + } + } + + public static class MailSendPacket extends LargeAbstractPacket { + public static final String packetName = "Player|MailSend"; + private String username; + private NBTTagCompound mailContent; + + public MailSendPacket() { + + } + private MailSendPacket(String username, NBTTagCompound mailContent) { + this.username = username; + this.mailContent = mailContent; + } + + @Override + protected byte[] getData() throws IOException { + ByteBuf buffer = Unpooled.buffer(); + ByteBufUtils.writeString(buffer, this.username); + ByteBufUtils.writeBigNBT(buffer, this.mailContent); + return buffer.array(); + } + + @Override + @SideOnly(Side.SERVER) + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { + if(!(player instanceof EntityPlayerMP)) + return; + EntityPlayerMP playerMP = (EntityPlayerMP) player; + if(!(playerMP.openContainer instanceof ContainerMail)) + return; + + String mailReceiver = PlayerDataController.Instance.hasPlayer(ByteBufUtils.readString(data)); + if (mailReceiver.isEmpty()) { + NoppesUtilServer.sendGuiError(playerMP, 0); + return; + } + + PlayerMail mail = new PlayerMail(); + String s = playerMP.getDisplayName(); + if (!s.equals(playerMP.getCommandSenderName())) + s += " (" +playerMP.getCommandSenderName() + ")"; + mail.readNBT(ByteBufUtils.readBigNBT(data)); + mail.sender = s; + mail.items = ((ContainerMail) playerMP.openContainer).mail.items; + + if (mail.subject.isEmpty()) { + NoppesUtilServer.sendGuiError(playerMP, 1); + return; + } + PlayerDataController.Instance.addPlayerMessage(mailReceiver, mail); + + NBTTagCompound comp = new NBTTagCompound(); + comp.setString("username", mailReceiver); + NoppesUtilServer.sendGuiClose(playerMP, 1,comp); + } + + @Override + public Enum getType() { + return EnumPlayerPacket.MailSend; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } + } + + private enum Action { + GET, + OPEN, + READ, + DELETE, + } +} From 94fc6e035c0f21513fafeb92fba92c4b9d2f9b4d Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 03:31:04 +0100 Subject: [PATCH 089/157] Register mail packets --- .../kamkeel/npcs/network/PacketHandler.java | 8 +- .../packets/player/MailActionPacket.java | 2 +- .../java/noppes/npcs/PacketHandlerPlayer.java | 154 +++++++++--------- .../npcs/client/gui/player/GuiMailbox.java | 23 +-- .../client/gui/player/GuiMailmanWrite.java | 27 +-- .../npcs/constants/EnumPlayerPacket.java | 8 +- 6 files changed, 112 insertions(+), 110 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 3d2186509..f665463bc 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -14,10 +14,7 @@ import kamkeel.npcs.network.packets.data.gui.IsGuiOpenPacket; import kamkeel.npcs.network.packets.data.large.*; import kamkeel.npcs.network.packets.data.npc.*; import kamkeel.npcs.network.packets.data.script.*; -import kamkeel.npcs.network.packets.player.BankActionPacket; -import kamkeel.npcs.network.packets.player.FollowerPacket; -import kamkeel.npcs.network.packets.player.InputDevicePacket; -import kamkeel.npcs.network.packets.player.TransportPacket; +import kamkeel.npcs.network.packets.player.*; import kamkeel.npcs.network.packets.request.*; import kamkeel.npcs.network.packets.request.animation.*; import kamkeel.npcs.network.packets.request.bank.BankGetPacket; @@ -351,6 +348,9 @@ public class PacketHandler { PLAYER_PACKET.registerPacket(new BankActionPacket()); + PLAYER_PACKET.registerPacket(new MailActionPacket()); + PLAYER_PACKET.registerPacket(new MailActionPacket.MailSendPacket()); + PLAYER_PACKET.registerPacket(new InputDevicePacket()); } diff --git a/src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java index 445b2f831..2ddf3a550 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java @@ -25,7 +25,7 @@ import java.io.IOException; import java.util.Iterator; public class MailActionPacket extends AbstractPacket { - public static final String packetName = "Player|Mail"; + public static final String packetName = "Player|MailAction"; private Action action; private long time; diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index fc43359e8..c47d72239 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -204,83 +204,83 @@ public class PacketHandlerPlayer{ PlayerFactionData data = PlayerDataController.Instance.getPlayerData(player).factionData; GuiDataPacket.sendGuiData(player, data.getPlayerGuiData()); } - else if(type == EnumPlayerPacket.MailGet){ - PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; - GuiDataPacket.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); - } - else if(type == EnumPlayerPacket.MailDelete){ - long time = buffer.readLong(); - String username = ByteBufUtils.readString(buffer); - PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; - - Iterator it = data.playermail.iterator(); - while(it.hasNext()){ - PlayerMail mail = it.next(); - if(mail.time == time && mail.sender.equals(username)){ - it.remove(); - } - } - GuiDataPacket.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); - } - else if(type == EnumPlayerPacket.MailSend){ - if(!(player.openContainer instanceof ContainerMail)) - return; - String username = PlayerDataController.Instance.hasPlayer(ByteBufUtils.readString(buffer)); - if(username.isEmpty()){ - NoppesUtilServer.sendGuiError(player, 0); - return; - } - - PlayerMail mail = new PlayerMail(); - //String s = player.func_145748_c_().getFormattedText(); - String s = player.getDisplayName(); - if(!s.equals(player.getCommandSenderName())) - s += "(" + player.getCommandSenderName() + ")"; - mail.readNBT(ByteBufUtils.readNBT(buffer)); - mail.sender = s; - mail.items = ((ContainerMail)player.openContainer).mail.items; - - if(mail.subject.isEmpty()){ - NoppesUtilServer.sendGuiError(player, 1); - return; - } - PlayerDataController.Instance.addPlayerMessage(username, mail); - - NBTTagCompound comp = new NBTTagCompound(); - comp.setString("username", username); - NoppesUtilServer.sendGuiClose(player, 1,comp); - } - else if(type == EnumPlayerPacket.MailboxOpenMail){ - long time = buffer.readLong(); - String username = ByteBufUtils.readString(buffer); - player.closeContainer(); - PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; - - Iterator it = data.playermail.iterator(); - while(it.hasNext()){ - PlayerMail mail = it.next(); - if(mail.time == time && mail.sender.equals(username)){ - ContainerMail.staticmail = mail; - player.openGui(CustomNpcs.instance, EnumGuiType.PlayerMailman.ordinal(), player.worldObj, 0, 0, 0); - break; - } - } - } - else if(type == EnumPlayerPacket.MailRead){ - long time = buffer.readLong(); - String username = ByteBufUtils.readString(buffer); - PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; - - Iterator it = data.playermail.iterator(); - while(it.hasNext()){ - PlayerMail mail = it.next(); - if(mail.time == time && mail.sender.equals(username)){ - mail.beenRead = true; - if(mail.hasQuest()) - PlayerQuestController.addActiveQuest(new QuestData(mail.getQuest()), player); - } - } - } +// else if(type == EnumPlayerPacket.MailGet){ +// PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; +// GuiDataPacket.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); +// } +// else if(type == EnumPlayerPacket.MailDelete){ +// long time = buffer.readLong(); +// String username = ByteBufUtils.readString(buffer); +// PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; +// +// Iterator it = data.playermail.iterator(); +// while(it.hasNext()){ +// PlayerMail mail = it.next(); +// if(mail.time == time && mail.sender.equals(username)){ +// it.remove(); +// } +// } +// GuiDataPacket.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); +// } +// else if(type == EnumPlayerPacket.MailSend){ +// if(!(player.openContainer instanceof ContainerMail)) +// return; +// String username = PlayerDataController.Instance.hasPlayer(ByteBufUtils.readString(buffer)); +// if(username.isEmpty()){ +// NoppesUtilServer.sendGuiError(player, 0); +// return; +// } +// +// PlayerMail mail = new PlayerMail(); +// //String s = player.func_145748_c_().getFormattedText(); +// String s = player.getDisplayName(); +// if(!s.equals(player.getCommandSenderName())) +// s += "(" + player.getCommandSenderName() + ")"; +// mail.readNBT(ByteBufUtils.readNBT(buffer)); +// mail.sender = s; +// mail.items = ((ContainerMail)player.openContainer).mail.items; +// +// if(mail.subject.isEmpty()){ +// NoppesUtilServer.sendGuiError(player, 1); +// return; +// } +// PlayerDataController.Instance.addPlayerMessage(username, mail); +// +// NBTTagCompound comp = new NBTTagCompound(); +// comp.setString("username", username); +// NoppesUtilServer.sendGuiClose(player, 1,comp); +// } +// else if(type == EnumPlayerPacket.MailboxOpenMail){ +// long time = buffer.readLong(); +// String username = ByteBufUtils.readString(buffer); +// player.closeContainer(); +// PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; +// +// Iterator it = data.playermail.iterator(); +// while(it.hasNext()){ +// PlayerMail mail = it.next(); +// if(mail.time == time && mail.sender.equals(username)){ +// ContainerMail.staticmail = mail; +// player.openGui(CustomNpcs.instance, EnumGuiType.PlayerMailman.ordinal(), player.worldObj, 0, 0, 0); +// break; +// } +// } +// } +// else if(type == EnumPlayerPacket.MailRead){ +// long time = buffer.readLong(); +// String username = ByteBufUtils.readString(buffer); +// PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; +// +// Iterator it = data.playermail.iterator(); +// while(it.hasNext()){ +// PlayerMail mail = it.next(); +// if(mail.time == time && mail.sender.equals(username)){ +// mail.beenRead = true; +// if(mail.hasQuest()) +// PlayerQuestController.addActiveQuest(new QuestData(mail.getQuest()), player); +// } +// } +// } else if(type == EnumPlayerPacket.SignSave) { int x = buffer.readInt(), y = buffer.readInt(), z = buffer.readInt(); if (player.worldObj.blockExists(x, y, z)) { diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiMailbox.java b/src/main/java/noppes/npcs/client/gui/player/GuiMailbox.java index f3028e3df..2094720d2 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiMailbox.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiMailbox.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui.player; +import kamkeel.npcs.network.packets.player.MailActionPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; @@ -18,16 +19,16 @@ import java.util.Comparator; import java.util.List; public class GuiMailbox extends GuiNPCInterface implements IGuiData, ICustomScrollListener, GuiYesNoCallback{ - + private GuiCustomScroll scroll; private PlayerMailData data; private PlayerMail selected; - + public GuiMailbox() { super(); xSize = 256; setBackground("menubg.png"); - NoppesUtilPlayer.sendData(EnumPlayerPacket.MailGet); + MailActionPacket.RequestMailData(); } public void initGui() { @@ -39,7 +40,7 @@ public class GuiMailbox extends GuiNPCInterface implements IGuiData, ICustomScro scroll.guiLeft = guiLeft + 4; scroll.guiTop = guiTop + 4; addScroll(scroll); - + String title = StatCollector.translateToLocal("mailbox.name"); int x = (xSize - this.fontRendererObj.getStringWidth(title)) / 2; @@ -81,7 +82,7 @@ public class GuiMailbox extends GuiNPCInterface implements IGuiData, ICustomScro public void confirmClicked(boolean flag, int i) { if(flag && selected != null){ - NoppesUtilPlayer.sendData(EnumPlayerPacket.MailDelete, selected.time, selected.sender); + MailActionPacket.DeleteMail(selected.time, selected.sender); selected = null; } NoppesUtil.openGUI(player, this); @@ -94,7 +95,7 @@ public class GuiMailbox extends GuiNPCInterface implements IGuiData, ICustomScro if(id == 0){ GuiMailmanWrite.parent = this; GuiMailmanWrite.mail = selected; - NoppesUtilPlayer.sendData(EnumPlayerPacket.MailboxOpenMail, selected.time, selected.sender); + MailActionPacket.OpenMail(selected.time, selected.sender); selected = null; scroll.selected = -1; } @@ -103,7 +104,7 @@ public class GuiMailbox extends GuiNPCInterface implements IGuiData, ICustomScro displayGuiScreen(guiyesno); } } - + @Override public void mouseClicked(int i, int j, int k) { @@ -121,13 +122,13 @@ public class GuiMailbox extends GuiNPCInterface implements IGuiData, ICustomScro @Override public void save() { // TODO Auto-generated method stub - + } @Override public void setGuiData(NBTTagCompound compound) { PlayerMailData data = new PlayerMailData(); data.loadNBTData(compound); - + List list = new ArrayList(); Collections.sort(data.playermail, new Comparator(){ public int compare(PlayerMail o1, PlayerMail o2){ @@ -150,10 +151,10 @@ public class GuiMailbox extends GuiNPCInterface implements IGuiData, ICustomScro GuiCustomScroll guiCustomScroll) { selected = data.playermail.get(guiCustomScroll.selected); initGui(); - + if(selected != null && !selected.beenRead){ selected.beenRead = true; - NoppesUtilPlayer.sendData(EnumPlayerPacket.MailRead, selected.time, selected.sender); + MailActionPacket.ReadMail(selected.time, selected.sender); } } diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiMailmanWrite.java b/src/main/java/noppes/npcs/client/gui/player/GuiMailmanWrite.java index d17b799c9..32efa064c 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiMailmanWrite.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiMailmanWrite.java @@ -2,6 +2,7 @@ package noppes.npcs.client.gui.player; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import kamkeel.npcs.network.packets.player.MailActionPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; @@ -38,15 +39,15 @@ public class GuiMailmanWrite extends GuiContainerNPCInterface implements ITextfi private NBTTagList bookPages; private GuiButtonNextPage buttonNextPage; private GuiButtonNextPage buttonPreviousPage; - + private boolean canEdit; private boolean canSend; /** The GuiButton to sign this book. */ - + public static GuiScreen parent; public static PlayerMail mail = new PlayerMail(); - + private Minecraft mc = Minecraft.getMinecraft(); private String username = ""; @@ -105,7 +106,7 @@ public class GuiMailmanWrite extends GuiContainerNPCInterface implements ITextfi addLabel(new GuiNpcLabel(0, "mailbox.sender", guiLeft + 170, guiTop + 32, 0)); else addLabel(new GuiNpcLabel(0, "mailbox.username", guiLeft + 170, guiTop + 32, 0)); - + if(canEdit && !canSend) addTextField(new GuiNpcTextField(2, this, fontRendererObj, guiLeft + 170, guiTop + 42, 114, 20, mail.sender)); else if(canEdit) @@ -124,7 +125,7 @@ public class GuiMailmanWrite extends GuiContainerNPCInterface implements ITextfi addButton(new GuiNpcButton(0, this.guiLeft + 200, guiTop + 171, 60, 20, "gui.done")); else if(canEdit) addButton(new GuiNpcButton(0, this.guiLeft + 200, guiTop + 171, 60, 20, "mailbox.send")); - + if(!canEdit && !canSend) addButton(new GuiNpcButton(4, this.guiLeft + 200, guiTop + 171, 60, 20, "selectWorld.deleteButton")); if(!canEdit || canSend) @@ -148,12 +149,12 @@ public class GuiMailmanWrite extends GuiContainerNPCInterface implements ITextfi this.buttonNextPage.setVisible(this.currPage < this.bookTotalPages - 1 || this.canEdit); this.buttonPreviousPage.setVisible(this.currPage > 0); } - + @Override public void confirmClicked(boolean flag, int i) { if(flag){ - NoppesUtilPlayer.sendData(EnumPlayerPacket.MailDelete, mail.time, mail.sender); + MailActionPacket.DeleteMail(mail.time, mail.sender); close(); } else @@ -172,7 +173,7 @@ public class GuiMailmanWrite extends GuiContainerNPCInterface implements ITextfi if(id == 0){ mail.message.setTag("pages", bookPages); if(canSend) - NoppesUtilPlayer.sendData(EnumPlayerPacket.MailSend, this.username, mail.writeNBT()); + MailActionPacket.SendMail(this.username, mail.writeNBT()); else close(); } @@ -327,7 +328,7 @@ public class GuiMailmanWrite extends GuiContainerNPCInterface implements ITextfi { s1 = this.bookPages.getStringTagAt(this.currPage); } - + if(canEdit){ if (mc.fontRenderer.getBidiFlag()) { @@ -349,14 +350,14 @@ public class GuiMailmanWrite extends GuiContainerNPCInterface implements ITextfi this.drawGradientRect(guiLeft + 175, guiTop + 136, guiLeft + 269, guiTop + 154, -1072689136, -804253680); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - + this.mc.getTextureManager().bindTexture(bookWidgets); for(int i = 0; i < 4; i++) this.drawTexturedModalRect(guiLeft + 175 + i * 24, guiTop + 134, 0, 22, 24, 24); - + super.drawScreen(par1, par2, par3); - + } public void close(){ @@ -390,6 +391,6 @@ public class GuiMailmanWrite extends GuiContainerNPCInterface implements ITextfi @Override public void save() { - + } } diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index cc12a09f7..f277ddbc4 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -13,11 +13,11 @@ public enum EnumPlayerPacket { CheckQuestCompletion, // BankSlotOpen, FactionsGet, - MailGet, +// MailGet, MailDelete, - MailSend, - MailRead, - MailboxOpenMail, +// MailSend, +// MailRead, +// MailboxOpenMail, SignSave, SaveBook, CompanionOpenInv, From e6e860b895f36a8d7cbf4f216d1ea37b517df333 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 03:31:52 +0100 Subject: [PATCH 090/157] SideOnly on MailActionPacket --- .../kamkeel/npcs/network/packets/player/MailActionPacket.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java index 2ddf3a550..93f9034c3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/MailActionPacket.java @@ -69,6 +69,7 @@ public class MailActionPacket extends AbstractPacket { } @Override + @SideOnly(Side.CLIENT) public void sendData(ByteBuf out) throws IOException { out.writeInt(action.ordinal()); From 021989aa7937541832a75c89ef17d60420dcb246 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 03:41:01 +0100 Subject: [PATCH 091/157] ScreenSize packet --- .../kamkeel/npcs/network/PacketHandler.java | 2 + .../npcs/network/enums/EnumPlayerPacket.java | 7 +-- .../packets/player/ScreenSizePacket.java | 49 +++++++++++++++++++ .../java/noppes/npcs/PacketHandlerPlayer.java | 8 +-- .../noppes/npcs/client/ClientTickHandler.java | 4 +- .../npcs/constants/EnumPlayerPacket.java | 4 +- 6 files changed, 62 insertions(+), 12 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/ScreenSizePacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index f665463bc..91079c6da 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -352,6 +352,8 @@ public class PacketHandler { PLAYER_PACKET.registerPacket(new MailActionPacket.MailSendPacket()); PLAYER_PACKET.registerPacket(new InputDevicePacket()); + + PLAYER_PACKET.registerPacket(new ScreenSizePacket()); } private void registerChannels() { diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index 56d69b163..d1893b557 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -9,15 +9,12 @@ public enum EnumPlayerPacket { TrackedQuest, // TODO CheckQuestCompletion, // TODO FactionsGet, // TODO - MailBoxAction, // TODO: Get, Delete, Send, Read, OpenMail + MailBoxAction, MailSend, SaveSign, // TODO SaveBook, // TODO Companion, // TODO: OpenInv, TalentExp RoleGet, // TODO InputDevice, - ScreenSize; // TODO - - - + ScreenSize } diff --git a/src/main/java/kamkeel/npcs/network/packets/player/ScreenSizePacket.java b/src/main/java/kamkeel/npcs/network/packets/player/ScreenSizePacket.java new file mode 100644 index 000000000..83beebcd9 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/ScreenSizePacket.java @@ -0,0 +1,49 @@ +package kamkeel.npcs.network.packets.player; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumPlayerPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.controllers.PlayerDataController; + +import java.io.IOException; + +public class ScreenSizePacket extends AbstractPacket { + public static final String packetName = "Player|ScreenSize"; + private int width, height; + + public ScreenSizePacket() { + } + + public ScreenSizePacket(int width, int height){ + this.width = width; + this.height = height; + } + + @Override + public Enum getType() { + return EnumPlayerPacket.ScreenSize; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } + + @Override + @SideOnly(Side.CLIENT) + public void sendData(ByteBuf out) throws IOException { + out.writeInt(width); + out.writeInt(height); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + int width = in.readInt(), height = in.readInt(); + PlayerDataController.Instance.getPlayerData(player).screenSize.setSize(width,height); + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index c47d72239..598074e20 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -319,9 +319,9 @@ public class PacketHandlerPlayer{ } } } - else if(type == EnumPlayerPacket.ScreenSize){ - int width = buffer.readInt(), height = buffer.readInt(); - PlayerDataController.Instance.getPlayerData(player).screenSize.setSize(width,height); - } +// 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/ClientTickHandler.java b/src/main/java/noppes/npcs/client/ClientTickHandler.java index 234fd2dcc..812b3f29f 100644 --- a/src/main/java/noppes/npcs/client/ClientTickHandler.java +++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java @@ -6,7 +6,9 @@ import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import kamkeel.npcs.addon.client.DBCClient; +import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.player.InputDevicePacket; +import kamkeel.npcs.network.packets.player.ScreenSizePacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.inventory.ContainerPlayer; @@ -72,7 +74,7 @@ public class ClientTickHandler{ if(Minecraft.getMinecraft().thePlayer!=null && (prevWidth!=mc.displayWidth || prevHeight!=mc.displayHeight)){ prevWidth = mc.displayWidth; prevHeight = mc.displayHeight; - NoppesUtilPlayer.sendData(EnumPlayerPacket.ScreenSize,mc.displayWidth,mc.displayHeight); + PacketClient.sendClient(new ScreenSizePacket(mc.displayWidth,mc.displayHeight)); } } diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index f277ddbc4..e8e68e455 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -14,7 +14,7 @@ public enum EnumPlayerPacket { // BankSlotOpen, FactionsGet, // MailGet, - MailDelete, +// MailDelete, // MailSend, // MailRead, // MailboxOpenMail, @@ -25,5 +25,5 @@ public enum EnumPlayerPacket { // KeyPressed, // MouseClicked, CompanionTalentExp, - ScreenSize +// ScreenSize } From c5329a1c6395c3e821bd6120759e12628455126d Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 03:57:40 +0100 Subject: [PATCH 092/157] General get packet --- .../kamkeel/npcs/network/PacketHandler.java | 2 + .../npcs/network/enums/EnumPlayerPacket.java | 7 +- .../packets/player/CheckPlayerValue.java | 87 +++++++++++++++++++ .../java/noppes/npcs/PacketHandlerPlayer.java | 38 ++++---- .../noppes/npcs/client/ClientTickHandler.java | 3 +- .../client/gui/player/GuiDialogInteract.java | 4 +- .../gui/player/inventory/GuiFaction.java | 4 +- .../client/gui/player/inventory/GuiParty.java | 3 +- .../gui/player/inventory/GuiProfiles.java | 4 +- .../gui/player/inventory/GuiQuestLog.java | 3 +- .../npcs/constants/EnumPlayerPacket.java | 8 +- 11 files changed, 129 insertions(+), 34 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/CheckPlayerValue.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 91079c6da..08a491ae5 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -348,6 +348,8 @@ public class PacketHandler { PLAYER_PACKET.registerPacket(new BankActionPacket()); + PLAYER_PACKET.registerPacket(new CheckPlayerValue()); + PLAYER_PACKET.registerPacket(new MailActionPacket()); PLAYER_PACKET.registerPacket(new MailActionPacket.MailSendPacket()); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index d1893b557..8d8e7b1ab 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -5,16 +5,13 @@ public enum EnumPlayerPacket { Transport, BankAction, Dialog, // TODO - QuestLog, // TODO - TrackedQuest, // TODO - CheckQuestCompletion, // TODO - FactionsGet, // TODO + GetPlayerValue, MailBoxAction, MailSend, SaveSign, // TODO SaveBook, // TODO Companion, // TODO: OpenInv, TalentExp - RoleGet, // TODO + GetRole, // TODO InputDevice, ScreenSize } diff --git a/src/main/java/kamkeel/npcs/network/packets/player/CheckPlayerValue.java b/src/main/java/kamkeel/npcs/network/packets/player/CheckPlayerValue.java new file mode 100644 index 000000000..9c3eb4c62 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/CheckPlayerValue.java @@ -0,0 +1,87 @@ +package kamkeel.npcs.network.packets.player; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.EnumPlayerPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilPlayer; +import noppes.npcs.controllers.PartyController; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.Party; +import noppes.npcs.controllers.data.PlayerData; +import noppes.npcs.controllers.data.PlayerFactionData; +import noppes.npcs.controllers.data.PlayerQuestData; + +import java.io.IOException; + +public class CheckPlayerValue extends AbstractPacket { + public static final String packetName = "Player|CheckPlayerVal"; + + private Type type; + + public CheckPlayerValue() { + } + + public CheckPlayerValue(Type type) { + this.type = type; + } + + @Override + public Enum getType() { + return EnumPlayerPacket.GetPlayerValue; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } + + @Override + @SideOnly(Side.CLIENT) + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + EntityPlayerMP playerMP = (EntityPlayerMP) player; + Type type = Type.values()[in.readInt()]; + switch (type) { + case Faction: + PlayerFactionData data = PlayerDataController.Instance.getPlayerData(playerMP).factionData; + GuiDataPacket.sendGuiData(playerMP, data.getPlayerGuiData()); + break; + case QuestLog: + NoppesUtilPlayer.sendQuestLogData(playerMP); + break; + case TrackedQuest: + NoppesUtilPlayer.sendTrackedQuest(playerMP); + break; + case CheckQuestCompletion: + PlayerData playerData = PlayerDataController.Instance.getPlayerData(playerMP); + PlayerQuestData questData = PlayerDataController.Instance.getPlayerData(playerMP).questData; + Party playerParty = playerData.getPlayerParty(); + if(playerParty != null) + PartyController.Instance().checkQuestCompletion(playerParty, null); + + questData.checkQuestCompletion(playerData, null); + break; + + } + } + + public enum Type { + Faction, + QuestLog, + TrackedQuest, + CheckQuestCompletion + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index 598074e20..e25109423 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -185,25 +185,25 @@ public class PacketHandlerPlayer{ return; NoppesUtilPlayer.dialogSelected(buffer.readInt(), buffer.readInt(), player, npc); } - else if(type == EnumPlayerPacket.CheckQuestCompletion){ - PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - PlayerQuestData questData = PlayerDataController.Instance.getPlayerData(player).questData; - Party playerParty = playerData.getPlayerParty(); - if(playerParty != null) - PartyController.Instance().checkQuestCompletion(playerParty, null); - - questData.checkQuestCompletion(playerData, null); - } - else if(type == EnumPlayerPacket.QuestLog){ - NoppesUtilPlayer.sendQuestLogData(player); - } - else if(type == EnumPlayerPacket.TrackedQuest){ - NoppesUtilPlayer.sendTrackedQuest(player); - } - else if(type == EnumPlayerPacket.FactionsGet){ - PlayerFactionData data = PlayerDataController.Instance.getPlayerData(player).factionData; - GuiDataPacket.sendGuiData(player, data.getPlayerGuiData()); - } +// else if(type == EnumPlayerPacket.CheckQuestCompletion){ +// PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); +// PlayerQuestData questData = PlayerDataController.Instance.getPlayerData(player).questData; +// Party playerParty = playerData.getPlayerParty(); +// if(playerParty != null) +// PartyController.Instance().checkQuestCompletion(playerParty, null); +// +// questData.checkQuestCompletion(playerData, null); +// } +// else if(type == EnumPlayerPacket.QuestLog){ +// NoppesUtilPlayer.sendQuestLogData(player); +// } +// else if(type == EnumPlayerPacket.TrackedQuest){ +// NoppesUtilPlayer.sendTrackedQuest(player); +// } +// else if(type == EnumPlayerPacket.FactionsGet){ +// PlayerFactionData data = PlayerDataController.Instance.getPlayerData(player).factionData; +// GuiDataPacket.sendGuiData(player, data.getPlayerGuiData()); +// } // else if(type == EnumPlayerPacket.MailGet){ // PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; // GuiDataPacket.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); diff --git a/src/main/java/noppes/npcs/client/ClientTickHandler.java b/src/main/java/noppes/npcs/client/ClientTickHandler.java index 812b3f29f..d53bc21e5 100644 --- a/src/main/java/noppes/npcs/client/ClientTickHandler.java +++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java @@ -7,6 +7,7 @@ import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import kamkeel.npcs.addon.client.DBCClient; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.player.CheckPlayerValue; import kamkeel.npcs.network.packets.player.InputDevicePacket; import kamkeel.npcs.network.packets.player.ScreenSizePacket; import net.minecraft.client.Minecraft; @@ -49,7 +50,7 @@ public class ClientTickHandler{ } if(mc.thePlayer != null && mc.thePlayer.openContainer instanceof ContainerPlayer){ if(otherContainer){ - NoppesUtilPlayer.sendData(EnumPlayerPacket.CheckQuestCompletion); + PacketClient.sendClient(new CheckPlayerValue(CheckPlayerValue.Type.CheckQuestCompletion)); otherContainer = false; } } diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiDialogInteract.java b/src/main/java/noppes/npcs/client/gui/player/GuiDialogInteract.java index 648e9511d..1f06092c4 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiDialogInteract.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiDialogInteract.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.player; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.player.CheckPlayerValue; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.FontRenderer; @@ -644,7 +646,7 @@ public class GuiDialogInteract extends GuiNPCInterface implements IGuiClose } private void closed(){ grabMouse(false); - NoppesUtilPlayer.sendData(EnumPlayerPacket.CheckQuestCompletion); + PacketClient.sendClient(new CheckPlayerValue(CheckPlayerValue.Type.CheckQuestCompletion)); } public void save() { diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiFaction.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiFaction.java index 41ff92a08..9e7b39cf6 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiFaction.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiFaction.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.player.inventory; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.player.CheckPlayerValue; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -35,7 +37,7 @@ public class GuiFaction extends GuiCNPCInventory implements IGuiData { ySize = 180; this.drawDefaultBackground = false; title = ""; - NoppesUtilPlayer.sendData(EnumPlayerPacket.FactionsGet); + PacketClient.sendClient(new CheckPlayerValue(CheckPlayerValue.Type.Faction)); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java index d5520f958..26def4100 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java @@ -2,6 +2,7 @@ package noppes.npcs.client.gui.player.inventory; import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.data.large.PartyDataPacket; +import kamkeel.npcs.network.packets.player.CheckPlayerValue; import kamkeel.npcs.network.packets.request.party.*; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; @@ -54,7 +55,7 @@ public class GuiParty extends GuiCNPCInventory implements ITextfieldListener,ICu xSize = 280; ySize = 180; drawDefaultBackground = false; - NoppesUtilPlayer.sendData(EnumPlayerPacket.TrackedQuest); + PacketClient.sendClient(new CheckPlayerValue(CheckPlayerValue.Type.TrackedQuest)); PacketClient.sendClient(new PartyInfoPacket()); } diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiProfiles.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiProfiles.java index d874a4e19..053deddac 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiProfiles.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiProfiles.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.player.inventory; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.player.CheckPlayerValue; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -35,7 +37,7 @@ public class GuiProfiles extends GuiCNPCInventory implements IGuiData { ySize = 180; this.drawDefaultBackground = false; title = ""; - NoppesUtilPlayer.sendData(EnumPlayerPacket.FactionsGet); + PacketClient.sendClient(new CheckPlayerValue(CheckPlayerValue.Type.Faction)); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java index 14d0af3fd..cd6c8c381 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java @@ -1,6 +1,7 @@ package noppes.npcs.client.gui.player.inventory; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.player.CheckPlayerValue; import kamkeel.npcs.network.packets.request.party.PartyLogToServerPacket; import kamkeel.npcs.network.packets.request.party.PartySetQuestPacket; import kamkeel.npcs.network.packets.request.quest.QuestLogToServerPacket; @@ -51,7 +52,7 @@ public class GuiQuestLog extends GuiCNPCInventory implements ICustomScrollListen xSize = 280; ySize = 180; drawDefaultBackground = false; - NoppesUtilPlayer.sendData(EnumPlayerPacket.QuestLog); + PacketClient.sendClient(new CheckPlayerValue(CheckPlayerValue.Type.QuestLog)); } public void initGui(){ super.initGui(); diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index e8e68e455..809979483 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -8,11 +8,11 @@ public enum EnumPlayerPacket { // BankUnlock, // BankUpgrade, Dialog, - QuestLog, - TrackedQuest, - CheckQuestCompletion, +// QuestLog, +// TrackedQuest, +// CheckQuestCompletion, // BankSlotOpen, - FactionsGet, +// FactionsGet, // MailGet, // MailDelete, // MailSend, From ea1f5b259d9d25f15eb6c2fcc102d6e9324fb6e8 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 04:16:24 +0100 Subject: [PATCH 093/157] Dialog packet --- .../kamkeel/npcs/network/PacketHandler.java | 2 + .../npcs/network/enums/EnumPlayerPacket.java | 2 +- .../packets/player/DialogSelectPacket.java | 54 +++++++++++++++++++ .../java/noppes/npcs/PacketHandlerPlayer.java | 12 ++--- .../client/gui/player/GuiDialogInteract.java | 5 +- .../npcs/constants/EnumPlayerPacket.java | 2 +- 6 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/DialogSelectPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 08a491ae5..1c322f387 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -348,6 +348,8 @@ public class PacketHandler { PLAYER_PACKET.registerPacket(new BankActionPacket()); + PLAYER_PACKET.registerPacket(new DialogSelectPacket()); + PLAYER_PACKET.registerPacket(new CheckPlayerValue()); PLAYER_PACKET.registerPacket(new MailActionPacket()); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index 8d8e7b1ab..b5ed33a4e 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -4,7 +4,7 @@ public enum EnumPlayerPacket { FollowerAction, Transport, BankAction, - Dialog, // TODO + DialogSelect, GetPlayerValue, MailBoxAction, MailSend, diff --git a/src/main/java/kamkeel/npcs/network/packets/player/DialogSelectPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/DialogSelectPacket.java new file mode 100644 index 000000000..36dfc75e4 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/DialogSelectPacket.java @@ -0,0 +1,54 @@ +package kamkeel.npcs.network.packets.player; + +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.EnumPlayerPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import noppes.npcs.NoppesUtilPlayer; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public class DialogSelectPacket extends AbstractPacket { + public static final String packetName = "Player|DialogSelect"; + + private int dialogID, optionID; + + public DialogSelectPacket(){ + } + public DialogSelectPacket(int dialogID, int optionID) { + this.dialogID = dialogID; + this.optionID = optionID; + } + + @Override + public Enum getType() { + return EnumPlayerPacket.DialogSelect; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(dialogID); + out.writeInt(optionID); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + EntityPlayerMP playerMP = (EntityPlayerMP) player; + EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(playerMP); + if(npc == null) + return; + NoppesUtilPlayer.dialogSelected(in.readInt(), in.readInt(), playerMP, npc); + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index e25109423..c40c36849 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -179,12 +179,12 @@ public class PacketHandlerPlayer{ // BankData data = PlayerDataController.Instance.getBankData(player,bankId).getBankOrDefault(bankId); // data.openBankGui(player, npc, bankId, slot); // } - else if(type == EnumPlayerPacket.Dialog){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null) - return; - NoppesUtilPlayer.dialogSelected(buffer.readInt(), buffer.readInt(), player, npc); - } +// else if(type == EnumPlayerPacket.Dialog){ +// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); +// if(npc == null) +// return; +// NoppesUtilPlayer.dialogSelected(buffer.readInt(), buffer.readInt(), player, npc); +// } // else if(type == EnumPlayerPacket.CheckQuestCompletion){ // PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); // PlayerQuestData questData = PlayerDataController.Instance.getPlayerData(player).questData; diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiDialogInteract.java b/src/main/java/noppes/npcs/client/gui/player/GuiDialogInteract.java index 1f06092c4..9161db30a 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiDialogInteract.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiDialogInteract.java @@ -2,6 +2,7 @@ package noppes.npcs.client.gui.player; import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.player.CheckPlayerValue; +import kamkeel.npcs.network.packets.player.DialogSelectPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.FontRenderer; @@ -595,7 +596,7 @@ public class GuiDialogInteract extends GuiNPCInterface implements IGuiClose handleDialogSelection(); } if (closeOnEsc && (i == 1 || isInventoryKey(i))){ - NoppesUtilPlayer.sendData(EnumPlayerPacket.Dialog, dialog.id, -1); + PacketClient.sendClient(new DialogSelectPacket(dialog.id, -1)); closed(); close(); } @@ -615,7 +616,7 @@ public class GuiDialogInteract extends GuiNPCInterface implements IGuiClose optionId = selected; else if(!options.isEmpty()) optionId = options.get(selected); - NoppesUtilPlayer.sendData(EnumPlayerPacket.Dialog, dialog.id, optionId); + PacketClient.sendClient(new DialogSelectPacket(dialog.id, optionId)); if(dialog == null || !dialog.hasOtherOptions() || options.isEmpty()){ closed(); close(); diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index 809979483..4441fd9cd 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -7,7 +7,7 @@ public enum EnumPlayerPacket { // Transport, // BankUnlock, // BankUpgrade, - Dialog, +// Dialog, // QuestLog, // TrackedQuest, // CheckQuestCompletion, From 54a07ffb4846c7f2c4a43bd41ee4b11da9430849 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 04:19:20 +0100 Subject: [PATCH 094/157] Dialog packet needs NPC --- .../npcs/network/packets/player/DialogSelectPacket.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/player/DialogSelectPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/DialogSelectPacket.java index 36dfc75e4..c87f7ae5d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/player/DialogSelectPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/player/DialogSelectPacket.java @@ -25,6 +25,11 @@ public class DialogSelectPacket extends AbstractPacket { this.optionID = optionID; } + @Override + public boolean needsNPC() { + return true; + } + @Override public Enum getType() { return EnumPlayerPacket.DialogSelect; @@ -46,9 +51,6 @@ public class DialogSelectPacket extends AbstractPacket { if (!(player instanceof EntityPlayerMP)) return; EntityPlayerMP playerMP = (EntityPlayerMP) player; - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(playerMP); - if(npc == null) - return; NoppesUtilPlayer.dialogSelected(in.readInt(), in.readInt(), playerMP, npc); } } From a5c3c6768b8dad0a28aed14b6265dad3d504baa9 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 04:29:07 +0100 Subject: [PATCH 095/157] CompanionActionPacket --- .../kamkeel/npcs/network/PacketHandler.java | 2 + .../npcs/network/enums/EnumPlayerPacket.java | 2 +- .../packets/player/CompanionActionPacket.java | 93 +++++++++++++++++++ .../java/noppes/npcs/PacketHandlerPlayer.java | 40 ++++---- .../companion/GuiNpcCompanionStats.java | 29 +++--- .../companion/GuiNpcCompanionTalents.java | 27 +++--- .../npcs/constants/EnumPlayerPacket.java | 4 +- 7 files changed, 147 insertions(+), 50 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/CompanionActionPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 1c322f387..a5a5fec17 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -355,6 +355,8 @@ public class PacketHandler { PLAYER_PACKET.registerPacket(new MailActionPacket()); PLAYER_PACKET.registerPacket(new MailActionPacket.MailSendPacket()); + PLAYER_PACKET.registerPacket(new CompanionActionPacket()); + PLAYER_PACKET.registerPacket(new InputDevicePacket()); PLAYER_PACKET.registerPacket(new ScreenSizePacket()); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index b5ed33a4e..bbc69f64c 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -10,7 +10,7 @@ public enum EnumPlayerPacket { MailSend, SaveSign, // TODO SaveBook, // TODO - Companion, // TODO: OpenInv, TalentExp + CompanionAction, // TODO: OpenInv, TalentExp GetRole, // TODO InputDevice, ScreenSize diff --git a/src/main/java/kamkeel/npcs/network/packets/player/CompanionActionPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/CompanionActionPacket.java new file mode 100644 index 000000000..266ab2d07 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/CompanionActionPacket.java @@ -0,0 +1,93 @@ +package kamkeel.npcs.network.packets.player; + +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.enums.EnumPlayerPacket; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.constants.EnumCompanionTalent; +import noppes.npcs.constants.EnumGuiType; +import noppes.npcs.constants.EnumRoleType; +import noppes.npcs.roles.RoleCompanion; + +import java.io.IOException; + +public class CompanionActionPacket extends AbstractPacket { + public static final String packetName = "Player|CompanionAction"; + + private Type type; + private int talentOrdinal; + private int exp; + + public CompanionActionPacket() { + + } + + public static void OpenInventory() { + CompanionActionPacket packet = new CompanionActionPacket(); + packet.type = Type.OpenInventory; + PacketClient.sendClient(packet); + } + + public static void TalentExp(EnumCompanionTalent talent, int exp) { + CompanionActionPacket packet = new CompanionActionPacket(); + packet.type = Type.TalentExp; + packet.talentOrdinal = talent.ordinal(); + packet.exp = exp; + PacketClient.sendClient(packet); + } + + @Override + public boolean needsNPC() { + return true; + } + + @Override + public Enum getType() { + return EnumPlayerPacket.CompanionAction; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + + if (type == Type.TalentExp) { + out.writeInt(talentOrdinal); + out.writeInt(exp); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + Type type = Type.values()[in.readInt()]; + + if(npc.advanced.role != EnumRoleType.Companion || player != npc.getOwner()) + return; + + if (type == Type.OpenInventory) { + NoppesUtilServer.sendOpenGui(player, EnumGuiType.CompanionInv, npc); + return; + } + int id = in.readInt(); + int exp = in.readInt(); + RoleCompanion role = (RoleCompanion) npc.roleInterface; + if(exp <= 0 || !role.canAddExp(-exp) || id < 0 || id >= EnumCompanionTalent.values().length) //should never happen unless hacking + return; + EnumCompanionTalent talent = EnumCompanionTalent.values()[id]; + role.addExp(-exp); + role.addTalentExp(talent, exp); + } + + private enum Type { + OpenInventory, + TalentExp + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index c40c36849..b68b434f5 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -43,25 +43,25 @@ public class PacketHandlerPlayer{ } private void player(ByteBuf buffer, EntityPlayerMP player, EnumPlayerPacket type) throws IOException { - if(type == EnumPlayerPacket.CompanionTalentExp){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null || npc.advanced.role != EnumRoleType.Companion || player != npc.getOwner()) - return; - int id = buffer.readInt(); - int exp = buffer.readInt(); - RoleCompanion role = (RoleCompanion) npc.roleInterface; - if(exp <= 0 || !role.canAddExp(-exp) || id < 0 || id >= EnumCompanionTalent.values().length) //should never happen unless hacking - return; - EnumCompanionTalent talent = EnumCompanionTalent.values()[id]; - role.addExp(-exp); - role.addTalentExp(talent, exp); - } - else if(type == EnumPlayerPacket.CompanionOpenInv){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null || npc.advanced.role != EnumRoleType.Companion || player != npc.getOwner()) - return; - NoppesUtilServer.sendOpenGui(player, EnumGuiType.CompanionInv, npc); - } +// if(type == EnumPlayerPacket.CompanionTalentExp){ +// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); +// if(npc == null || npc.advanced.role != EnumRoleType.Companion || player != npc.getOwner()) +// return; +// int id = buffer.readInt(); +// int exp = buffer.readInt(); +// RoleCompanion role = (RoleCompanion) npc.roleInterface; +// if(exp <= 0 || !role.canAddExp(-exp) || id < 0 || id >= EnumCompanionTalent.values().length) //should never happen unless hacking +// return; +// EnumCompanionTalent talent = EnumCompanionTalent.values()[id]; +// role.addExp(-exp); +// role.addTalentExp(talent, exp); +// } +// else if(type == EnumPlayerPacket.CompanionOpenInv){ +// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); +// if(npc == null || npc.advanced.role != EnumRoleType.Companion || player != npc.getOwner()) +// return; +// NoppesUtilServer.sendOpenGui(player, EnumGuiType.CompanionInv, npc); +// } // else if(type == EnumPlayerPacket.KeyPressed) { // if(ScriptController.Instance.languages.isEmpty()) { // return; @@ -146,7 +146,7 @@ public class PacketHandlerPlayer{ // NoppesUtilPlayer.changeFollowerState(player,npc); // GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); // } - else if(type == EnumPlayerPacket.RoleGet){ + if(type == EnumPlayerPacket.RoleGet){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); if(npc == null || npc.advanced.role == EnumRoleType.None) return; diff --git a/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionStats.java b/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionStats.java index b393299e2..73e3b8c7e 100644 --- a/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionStats.java +++ b/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionStats.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui.player.companion; +import kamkeel.npcs.network.packets.player.CompanionActionPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.item.ItemStack; @@ -41,11 +42,11 @@ public class GuiNpcCompanionStats extends GuiNPCInterface implements IGuiData { addLabel(new GuiNpcLabel(3, NoppesStringUtils.translate("companion.strength", ": ", npc.stats.getAttackStrength()), guiLeft + 4, y+=12)); addLabel(new GuiNpcLabel(4, NoppesStringUtils.translate("companion.level", ": ", role.getTotalLevel()), guiLeft + 4, y+=12)); addLabel(new GuiNpcLabel(5, NoppesStringUtils.translate("job.name", ": ", "gui.none"), guiLeft + 4, y+=12)); - + addTopMenu(role, this, 1); - + } - + public static void addTopMenu(RoleCompanion role, GuiScreen screen, int active){ if(screen instanceof GuiNPCInterface){ GuiNPCInterface gui = (GuiNPCInterface) screen; @@ -79,7 +80,7 @@ public class GuiNpcCompanionStats extends GuiNPCInterface implements IGuiData { CustomNpcs.proxy.openGui(npc, EnumGuiType.CompanionTalent); } if(id == 3){ - NoppesUtilPlayer.sendData(EnumPlayerPacket.CompanionOpenInv); + CompanionActionPacket.OpenInventory(); } } @@ -89,12 +90,12 @@ public class GuiNpcCompanionStats extends GuiNPCInterface implements IGuiData { if(isEating && !role.isEating()){ NoppesUtilPlayer.sendData(EnumPlayerPacket.RoleGet); } - + isEating = role.isEating(); super.drawNpc(34, 150); int y = drawHealth(guiTop + 88); } - + private int drawHealth(int y){ this.mc.getTextureManager().bindTexture(icons); @@ -102,23 +103,23 @@ public class GuiNpcCompanionStats extends GuiNPCInterface implements IGuiData { if(role.talents.containsKey(EnumCompanionTalent.ARMOR) || max > 0){ for (int i = 0; i < 10; ++i){ int x = guiLeft + 66 + i * 10; - + if (i * 2 + 1 < max){ this.drawTexturedModalRect(x, y, 34, 9, 9, 9); } - + if (i * 2 + 1 == max){ this.drawTexturedModalRect(x, y, 25, 9, 9, 9); } - + if (i * 2 + 1 > max){ this.drawTexturedModalRect(x, y, 16, 9, 9, 9); } - + } y += 10; } - + max = MathHelper.ceiling_float_int(npc.getMaxHealth()); int k = (int)npc.getHealth(); float scale = 1; @@ -134,12 +135,12 @@ public class GuiNpcCompanionStats extends GuiNPCInterface implements IGuiData { if(k > i) this.drawTexturedModalRect(x, y + offset, 52 + i % 2 * 5, 0, i % 2 == 1?4:5, 9); } - + k = role.foodstats.getFoodLevel(); y += 10; if(max > 20) y += 10; - + for(int i = 0; i < 20; i++){ int x = guiLeft + 66 + i % 20 * 5; this.drawTexturedModalRect(x, y, 16 + i % 2 * 5, 27, i % 2 == 1?4:5, 9); @@ -151,7 +152,7 @@ public class GuiNpcCompanionStats extends GuiNPCInterface implements IGuiData { @Override public void save() { - + } @Override diff --git a/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionTalents.java b/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionTalents.java index 99740d703..f9e1c8a9d 100644 --- a/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionTalents.java +++ b/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionTalents.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui.player.companion; +import kamkeel.npcs.network.packets.player.CompanionActionPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiButton; @@ -29,7 +30,7 @@ import java.util.Map; public class GuiNpcCompanionTalents extends GuiNPCInterface{ private RoleCompanion role; - private Map talents = new HashMap(); + private Map talents = new HashMap(); private GuiNpcButton selected; public GuiNpcCompanionTalents(EntityNPCInterface npc) { @@ -46,7 +47,7 @@ public class GuiNpcCompanionTalents extends GuiNPCInterface{ super.initGui(); talents.clear(); int y = guiTop + 12; - + addLabel(new GuiNpcLabel(0, NoppesStringUtils.translate("quest.exp", ": "), guiLeft + 4, guiTop + 10)); GuiNpcCompanionStats.addTopMenu(role, this, 2); @@ -55,7 +56,7 @@ public class GuiNpcCompanionTalents extends GuiNPCInterface{ addTalent(i++, e); } } - + private void addTalent(int i, EnumCompanionTalent talent){ int y = guiTop + 28 + i/2 * 26; int x = guiLeft + 4 + i % 2 * 84; @@ -75,7 +76,7 @@ public class GuiNpcCompanionTalents extends GuiNPCInterface{ CustomNpcs.proxy.openGui(npc, EnumGuiType.Companion); } if(id == 3){ - NoppesUtilPlayer.sendData(EnumPlayerPacket.CompanionOpenInv); + CompanionActionPacket.OpenInventory(); } if(id >= 10){ selected = (GuiNpcButton) guibutton; @@ -83,19 +84,19 @@ public class GuiNpcCompanionTalents extends GuiNPCInterface{ addExperience(1); } } - + private void addExperience(int exp){ EnumCompanionTalent talent = talents.get(selected.id - 10).talent; if(!role.canAddExp(-exp) && role.currentExp <= 0) return; if(exp > role.currentExp) exp = role.currentExp; - NoppesUtilPlayer.sendData(EnumPlayerPacket.CompanionTalentExp, talent.ordinal(), exp); + CompanionActionPacket.TalentExp(talent, exp); role.talents.put(talent, role.talents.get(talent) + exp); role.addExp(-exp); getLabel(selected.id - 10).label = role.talents.get(talent) + "/" + role.getNextLevel(talent); } - + private long lastPressedTime = 0; private long startPressedTime = 0; @Override @@ -122,7 +123,7 @@ public class GuiNpcCompanionTalents extends GuiNPCInterface{ selected = null; } } - + mc.getTextureManager().bindTexture(Gui.icons); this.drawTexturedModalRect(guiLeft + 4, guiTop + 20, 10, 64, 162, 5); @@ -142,9 +143,9 @@ public class GuiNpcCompanionTalents extends GuiNPCInterface{ @Override public void save() { - + } - + public static class GuiTalent extends GuiScreen{ private EnumCompanionTalent talent; private int x, y; @@ -156,12 +157,12 @@ public class GuiNpcCompanionTalents extends GuiNPCInterface{ this.y = y; this.role = role; } - + @Override public void drawScreen(int i, int j, float f) { Minecraft mc = Minecraft.getMinecraft(); mc.getTextureManager().bindTexture(resource); - + ItemStack item = talent.item; if(item.getItem() == null) item = new ItemStack(Blocks.dirt); @@ -177,7 +178,7 @@ public class GuiNpcCompanionTalents extends GuiNPCInterface{ RenderHelper.enableGUIStandardItemLighting(); itemRender.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), item, x + 4, y + 4); itemRender.renderItemOverlayIntoGUI(mc.fontRenderer, mc.getTextureManager(), item, x + 4, y + 4); - RenderHelper.disableStandardItemLighting(); + RenderHelper.disableStandardItemLighting(); GL11.glDisable(GL11.GL_LIGHTING); GL11.glTranslatef(0, 0, 200); this.drawCenteredString(mc.fontRenderer, role.getTalentLevel(talent) + "", x + 20, y + 16, 0xFFFFFF); diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index 4441fd9cd..ec781e13b 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -20,10 +20,10 @@ public enum EnumPlayerPacket { // MailboxOpenMail, SignSave, SaveBook, - CompanionOpenInv, +// CompanionOpenInv, RoleGet, // KeyPressed, // MouseClicked, - CompanionTalentExp, +// CompanionTalentExp, // ScreenSize } From 9841d158ffc4025be9875b23595eb73b77bb12be Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 22:31:39 -0500 Subject: [PATCH 096/157] Cloner Packets --- .../kamkeel/npcs/network/PacketHandler.java | 11 ++- .../npcs/network/enums/EnumRequestPacket.java | 3 +- .../request/clone/CloneAllTagsPacket.java | 62 ++++++++++++++ .../clone/CloneAllTagsShortPacket.java | 60 +++++++++++++ .../request/clone/ClonePreSavePacket.java | 69 +++++++++++++++ .../request/clone/CloneRemovePacket.java | 84 ++++++++++++++++++ .../request/clone/CloneSavePacket.java | 85 +++++++++++++++++++ .../request/clone/CloneTagListPacket.java | 66 ++++++++++++++ .../java/noppes/npcs/PacketHandlerServer.java | 76 +---------------- .../npcs/client/gui/GuiNpcMobSpawner.java | 10 +-- .../npcs/client/gui/GuiNpcMobSpawnerAdd.java | 11 ++- .../npcs/constants/EnumPacketServer.java | 10 --- 12 files changed, 449 insertions(+), 98 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/clone/CloneAllTagsPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/clone/CloneAllTagsShortPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/clone/ClonePreSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/clone/CloneRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/clone/CloneSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/clone/CloneTagListPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 08a491ae5..c8b44640e 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -21,9 +21,7 @@ import kamkeel.npcs.network.packets.request.bank.BankGetPacket; import kamkeel.npcs.network.packets.request.bank.BankRemovePacket; import kamkeel.npcs.network.packets.request.bank.BankSavePacket; import kamkeel.npcs.network.packets.request.bank.BanksGetPacket; -import kamkeel.npcs.network.packets.request.clone.CloneListPacket; -import kamkeel.npcs.network.packets.request.clone.MobSpawnerPacket; -import kamkeel.npcs.network.packets.request.clone.SpawnMobPacket; +import kamkeel.npcs.network.packets.request.clone.*; import kamkeel.npcs.network.packets.request.customgui.CustomGuiButtonPacket; import kamkeel.npcs.network.packets.request.customgui.CustomGuiClosePacket; import kamkeel.npcs.network.packets.request.customgui.CustomGuiUnfocusedPacket; @@ -114,6 +112,13 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new CloneListPacket()); REQUEST_PACKET.registerPacket(new SpawnMobPacket()); REQUEST_PACKET.registerPacket(new MobSpawnerPacket()); + REQUEST_PACKET.registerPacket(new ClonePreSavePacket()); + REQUEST_PACKET.registerPacket(new CloneSavePacket()); + REQUEST_PACKET.registerPacket(new CloneRemovePacket()); + REQUEST_PACKET.registerPacket(new CloneTagListPacket()); + REQUEST_PACKET.registerPacket(new CloneAllTagsPacket()); + REQUEST_PACKET.registerPacket(new CloneAllTagsShortPacket()); + // Linked Packets REQUEST_PACKET.registerPacket(new LinkedGetAllPacket()); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index e08a9c284..e3fc88b4b 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -151,5 +151,6 @@ public enum EnumRequestPacket { TraderMarketSave, - CloneList, ServerUpdateSkinOverlays + CloneList, + CloneSave, CloneRemove, CloneTagList, CloneAllTags, CloneAllTagsShort, ClonePreSave } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneAllTagsPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneAllTagsPacket.java new file mode 100644 index 000000000..6aafe22dc --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneAllTagsPacket.java @@ -0,0 +1,62 @@ +package kamkeel.npcs.network.packets.request.clone; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import noppes.npcs.controllers.ServerTagMapController; +import noppes.npcs.controllers.TagController; +import noppes.npcs.controllers.data.Tag; +import noppes.npcs.controllers.data.TagMap; + +import java.io.IOException; +import java.util.HashSet; + +public final class CloneAllTagsPacket extends AbstractPacket { + public static String packetName = "Request|CloneAllTags"; + + public CloneAllTagsPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.CloneAllTags; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException {} + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.CLONER)) + return; + + NBTTagCompound compound = new NBTTagCompound(); + HashSet validTags = TagController.getInstance().getAllTags(); + NBTTagList validTagList = new NBTTagList(); + for(Tag tag : validTags){ + NBTTagCompound tagCompound = new NBTTagCompound(); + tag.writeNBT(tagCompound); + validTagList.appendTag(tagCompound); + } + compound.setTag("AllTags", validTagList); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneAllTagsShortPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneAllTagsShortPacket.java new file mode 100644 index 000000000..127a7caf2 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneAllTagsShortPacket.java @@ -0,0 +1,60 @@ +package kamkeel.npcs.network.packets.request.clone; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import noppes.npcs.controllers.TagController; +import noppes.npcs.controllers.data.Tag; + +import java.io.IOException; +import java.util.HashSet; + +public final class CloneAllTagsShortPacket extends AbstractPacket { + public static String packetName = "Request|CloneAllTagsShort"; + + public CloneAllTagsShortPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.CloneAllTagsShort; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException {} + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.CLONER)) + return; + + NBTTagCompound compound = new NBTTagCompound(); + HashSet validTags = TagController.getInstance().getAllTags(); + NBTTagList validTagList = new NBTTagList(); + for(Tag tag : validTags){ + NBTTagCompound tagCompound = new NBTTagCompound(); + tag.writeShortNBT(tagCompound); + validTagList.appendTag(tagCompound); + } + compound.setTag("ShortTags", validTagList); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/clone/ClonePreSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/clone/ClonePreSavePacket.java new file mode 100644 index 000000000..e769219c8 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/clone/ClonePreSavePacket.java @@ -0,0 +1,69 @@ +package kamkeel.npcs.network.packets.request.clone; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.ServerCloneController; + +import java.io.IOException; + +public final class ClonePreSavePacket extends AbstractPacket { + public static String packetName = "Request|ClonePreSave"; + + private String name; + private int tab; + + public ClonePreSavePacket() {} + + public ClonePreSavePacket(String name, int tab) { + this.name = name; + this.tab = tab; + } + + @Override + public Enum getType() { + return EnumRequestPacket.ClonePreSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.NPC_CLONE; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, this.name); + out.writeInt(tab); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.CLONER)) + return; + + boolean bo = ServerCloneController.Instance.getCloneData(null, ByteBufUtils.readString(in), in.readInt()) != null; + NBTTagCompound compound = new NBTTagCompound(); + compound.setBoolean("NameExists", bo); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneRemovePacket.java new file mode 100644 index 000000000..44e33ccc9 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneRemovePacket.java @@ -0,0 +1,84 @@ +package kamkeel.npcs.network.packets.request.clone; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.ServerCloneController; + +import java.io.IOException; + +public final class CloneRemovePacket extends AbstractPacket { + public static String packetName = "Request|CloneRemove"; + + private int tab; + private String name; + + public CloneRemovePacket() {} + + public CloneRemovePacket(int tab, String name) { + this.tab = tab; + this.name = name; + } + + @Override + public Enum getType() { + return EnumRequestPacket.CloneRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.NPC_CLONE; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(tab); + ByteBufUtils.writeString(out, this.name); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.CLONER)) + return; + + int tab = in.readInt(); + ServerCloneController.Instance.removeClone(ByteBufUtils.readString(in), tab); + + NBTTagList list = new NBTTagList(); + + for(String name : ServerCloneController.Instance.getClones(tab)) + list.appendTag(new NBTTagString(name)); + + NBTTagList listDate = new NBTTagList(); + for(String name : ServerCloneController.Instance.getClonesDate(tab)) + listDate.appendTag(new NBTTagString(name)); + + NBTTagCompound compound = new NBTTagCompound(); + compound.setTag("List", list); + compound.setTag("ListDate", listDate); + + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneSavePacket.java new file mode 100644 index 000000000..e757a9079 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneSavePacket.java @@ -0,0 +1,85 @@ +package kamkeel.npcs.network.packets.request.clone; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.controllers.data.PlayerData; + +import java.io.IOException; + +public final class CloneSavePacket extends AbstractPacket { + public static String packetName = "Request|CloneSave"; + + private String name; + private int tab; + private NBTTagCompound tagExtra; + private NBTTagCompound tagCompound; + + public CloneSavePacket() {} + + public CloneSavePacket(String name, int tab, NBTTagCompound tagExtra, NBTTagCompound tagCompound) { + this.name = name; + this.tab = tab; + this.tagExtra = tagExtra; + this.tagCompound = tagCompound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.CloneSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.NPC_CLONE; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, this.name); + out.writeInt(tab); + ByteBufUtils.writeNBT(out, this.tagExtra); + ByteBufUtils.writeNBT(out, this.tagCompound); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.CLONER)) + return; + + PlayerData data = PlayerDataController.Instance.getPlayerData(player); + if(data.cloned == null) + return; + + String name = ByteBufUtils.readString(in); + int tab = in.readInt(); + NBTTagCompound tagExtra = ByteBufUtils.readNBT(in); + NBTTagCompound tagCompound = ByteBufUtils.readNBT(in); + + NBTTagList tagList = tagCompound.getTagList("TagUUIDs", 8); + data.cloned.setTag("TagUUIDs", tagList); + ServerCloneController.Instance.addClone(data.cloned, name, tab, tagExtra); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneTagListPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneTagListPacket.java new file mode 100644 index 000000000..312831112 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneTagListPacket.java @@ -0,0 +1,66 @@ +package kamkeel.npcs.network.packets.request.clone; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; +import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.controllers.ServerTagMapController; +import noppes.npcs.controllers.data.TagMap; +import noppes.npcs.entity.EntityNPCInterface; + +import java.io.IOException; + +public final class CloneTagListPacket extends AbstractPacket { + public static String packetName = "Request|CloneTagList"; + + private int tab; + + public CloneTagListPacket(int tab) { + this.tab = tab; + } + + public CloneTagListPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.CloneTagList; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(tab); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.CLONER)) + return; + + int tab = in.readInt(); + TagMap tagMap = ServerTagMapController.Instance.getTagMap(tab); + NBTTagCompound compound = new NBTTagCompound(); + compound.setTag("CloneTags", tagMap.writeNBT()); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 721d7de45..ee6c9050b 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -72,9 +72,7 @@ public class PacketHandlerServer{ warn(player, "tried to use custom npcs without a tool in hand, probably a hacker"); else { if (item != null) { - if (item.getItem() == CustomItems.cloner) - clonePackets(type, in, player); - else if (item.getItem() == CustomItems.teleporter) + if (item.getItem() == CustomItems.teleporter) featherPackets(type, in, player); else if (ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) { if (type == EnumPacketServer.EventScriptDataGet || type == EnumPacketServer.EventScriptDataSave) @@ -343,78 +341,6 @@ public class PacketHandlerServer{ } } - private void clonePackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { - if(type == EnumPacketServer.ClonePreSave){ - boolean bo = ServerCloneController.Instance.getCloneData(null, ByteBufUtils.readString(buffer), buffer.readInt()) != null; - NBTTagCompound compound = new NBTTagCompound(); - compound.setBoolean("NameExists", bo); - GuiDataPacket.sendGuiData(player, compound); - } - else if(type == EnumPacketServer.CloneSave){ - PlayerData data = PlayerDataController.Instance.getPlayerData(player); - if(data.cloned == null) - return; - String name = ByteBufUtils.readString(buffer); - int tab = buffer.readInt(); - NBTTagCompound tagExtra = ByteBufUtils.readNBT(buffer); - NBTTagCompound tagCompound = ByteBufUtils.readNBT(buffer); - - NBTTagList tagList = tagCompound.getTagList("TagUUIDs", 8); - data.cloned.setTag("TagUUIDs", tagList); - ServerCloneController.Instance.addClone(data.cloned, name, tab, tagExtra); - } - else if(type == EnumPacketServer.CloneRemove){ - int tab = buffer.readInt(); - ServerCloneController.Instance.removeClone(ByteBufUtils.readString(buffer), tab); - - NBTTagList list = new NBTTagList(); - - for(String name : ServerCloneController.Instance.getClones(tab)) - list.appendTag(new NBTTagString(name)); - - NBTTagList listDate = new NBTTagList(); - for(String name : ServerCloneController.Instance.getClonesDate(tab)) - listDate.appendTag(new NBTTagString(name)); - - NBTTagCompound compound = new NBTTagCompound(); - compound.setTag("List", list); - compound.setTag("ListDate", listDate); - - GuiDataPacket.sendGuiData(player, compound); - } - else if (type == EnumPacketServer.CloneTagList) { - int tab = buffer.readInt(); - TagMap tagMap = ServerTagMapController.Instance.getTagMap(tab); - NBTTagCompound compound = new NBTTagCompound(); - compound.setTag("CloneTags", tagMap.writeNBT()); - GuiDataPacket.sendGuiData(player, compound); - } - else if (type == EnumPacketServer.CloneAllTags) { - NBTTagCompound compound = new NBTTagCompound(); - HashSet validTags = TagController.getInstance().getAllTags(); - NBTTagList validTagList = new NBTTagList(); - for(Tag tag : validTags){ - NBTTagCompound tagCompound = new NBTTagCompound(); - tag.writeNBT(tagCompound); - validTagList.appendTag(tagCompound); - } - compound.setTag("AllTags", validTagList); - GuiDataPacket.sendGuiData(player, compound); - } - else if (type == EnumPacketServer.CloneAllTagsShort) { - NBTTagCompound compound = new NBTTagCompound(); - HashSet validTags = TagController.getInstance().getAllTags(); - NBTTagList validTagList = new NBTTagList(); - for(Tag tag : validTags){ - NBTTagCompound tagCompound = new NBTTagCompound(); - tag.writeShortNBT(tagCompound); - validTagList.appendTag(tagCompound); - } - compound.setTag("ShortTags", validTagList); - GuiDataPacket.sendGuiData(player, compound); - } - } - private void warn(EntityPlayer player, String warning){ MinecraftServer.getServer().logWarning(player.getCommandSenderName() + ": " + warning); } diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index 717968e39..f6ae0de13 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -1,9 +1,7 @@ package noppes.npcs.client.gui; import kamkeel.npcs.network.PacketClient; -import kamkeel.npcs.network.packets.request.clone.CloneListPacket; -import kamkeel.npcs.network.packets.request.clone.MobSpawnerPacket; -import kamkeel.npcs.network.packets.request.clone.SpawnMobPacket; +import kamkeel.npcs.network.packets.request.clone.*; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.Entity; @@ -66,7 +64,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { this.closeOnEsc = true; setBackground("menubg.png"); - Client.sendData(EnumPacketServer.CloneAllTags, activeTab); + PacketClient.sendClient(new CloneAllTagsPacket()); } public void initGui() { @@ -191,7 +189,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { } private void showClones() { if(showingClones == 2){ - Client.sendData(EnumPacketServer.CloneTagList, activeTab); + PacketClient.sendClient(new CloneTagListPacket(activeTab)); PacketClient.sendClient(new CloneListPacket(activeTab)); return; } @@ -431,7 +429,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { if(id == 6){ if(scroll.getSelected() != null){ if(showingClones == 2){ - Client.sendData(EnumPacketServer.CloneRemove, activeTab, scroll.getSelected()); + PacketClient.sendClient(new CloneRemovePacket(activeTab, scroll.getSelected())); return; } ClientCloneController.Instance.removeClone(scroll.getSelected(), activeTab); diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java index 877d06866..f817eb30b 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java @@ -1,5 +1,10 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.packets.request.clone.CloneAllTagsShortPacket; +import kamkeel.npcs.network.packets.request.clone.ClonePreSavePacket; +import kamkeel.npcs.network.packets.request.clone.CloneSavePacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; @@ -58,7 +63,7 @@ public class GuiNpcMobSpawnerAdd extends GuiNPCInterface implements GuiYesNoCall addTagUUIDs = new HashSet<>(); } if(isNPC){ - Client.sendData(EnumPacketServer.CloneAllTagsShort); + PacketClient.sendClient(new CloneAllTagsShortPacket()); } } @@ -102,7 +107,7 @@ public class GuiNpcMobSpawnerAdd extends GuiNPCInterface implements GuiYesNoCall confirmClicked(true, 0); } else - Client.sendData(EnumPacketServer.ClonePreSave, name, tab); + PacketClient.sendClient(new ClonePreSavePacket(name, tab)); } if(id == 1){ close(); @@ -145,7 +150,7 @@ public class GuiNpcMobSpawnerAdd extends GuiNPCInterface implements GuiYesNoCall if(isNPC){ compounder.setTag("TagUUIDs", tagsCompound); } - Client.sendData(EnumPacketServer.CloneSave, name, tab, extraTags, compounder); + PacketClient.sendClient(new CloneSavePacket(name, tab, extraTags, compounder)); } close(); diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 7dc795de0..80ca0590f 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -3,16 +3,6 @@ package noppes.npcs.constants; import noppes.npcs.CustomNpcsPermissions; public enum EnumPacketServer { - MobSpawner(CustomNpcsPermissions.SPAWNER_CREATE), - - ClonePreSave(CustomNpcsPermissions.NPC_CLONE), - CloneSave(CustomNpcsPermissions.NPC_CLONE), - CloneRemove(CustomNpcsPermissions.NPC_CLONE), - CloneList, - CloneTagList, - CloneAllTags, - CloneAllTagsShort, - ScriptGlobalGuiDataSave(CustomNpcsPermissions.SCRIPT_GLOBAL, false), ScriptGlobalGuiDataGet(false), From 10f12ad03691cac047f58335402a2ad5bdf331ba Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 04:32:59 +0100 Subject: [PATCH 097/157] Get NPC Role packet --- .../kamkeel/npcs/network/PacketHandler.java | 2 + .../npcs/network/enums/EnumPlayerPacket.java | 4 +- .../network/packets/player/GetNPCRole.java | 47 +++++++++++++++++++ .../java/noppes/npcs/PacketHandlerPlayer.java | 14 +++--- .../client/gui/player/GuiNpcFollower.java | 3 +- .../companion/GuiNpcCompanionStats.java | 6 ++- .../npcs/constants/EnumPlayerPacket.java | 2 +- 7 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/GetNPCRole.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index a5a5fec17..57c31e506 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -357,6 +357,8 @@ public class PacketHandler { PLAYER_PACKET.registerPacket(new CompanionActionPacket()); + PLAYER_PACKET.registerPacket(new GetNPCRole()); + PLAYER_PACKET.registerPacket(new InputDevicePacket()); PLAYER_PACKET.registerPacket(new ScreenSizePacket()); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index bbc69f64c..6ba1c7c64 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -10,8 +10,8 @@ public enum EnumPlayerPacket { MailSend, SaveSign, // TODO SaveBook, // TODO - CompanionAction, // TODO: OpenInv, TalentExp - GetRole, // TODO + CompanionAction, + GetRole, InputDevice, ScreenSize } diff --git a/src/main/java/kamkeel/npcs/network/packets/player/GetNPCRole.java b/src/main/java/kamkeel/npcs/network/packets/player/GetNPCRole.java new file mode 100644 index 000000000..1056ddb48 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/GetNPCRole.java @@ -0,0 +1,47 @@ +package kamkeel.npcs.network.packets.player; + +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.EnumPlayerPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.constants.EnumRoleType; + +import java.io.IOException; + +public class GetNPCRole extends AbstractPacket { + public static final String packetName = "Player|GetNPCRole"; + + @Override + public Enum getType() { + return EnumPlayerPacket.GetRole; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } + + @Override + public boolean needsNPC() { + return true; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(!(player instanceof EntityPlayerMP)) + return; + if (npc.advanced.role == EnumRoleType.None) + return; + GuiDataPacket.sendGuiData((EntityPlayerMP) player, npc.roleInterface.writeToNBT(new NBTTagCompound())); + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index b68b434f5..e0d9f297b 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -146,12 +146,12 @@ public class PacketHandlerPlayer{ // NoppesUtilPlayer.changeFollowerState(player,npc); // GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); // } - if(type == EnumPlayerPacket.RoleGet){ - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(npc == null || npc.advanced.role == EnumRoleType.None) - return; - GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); - } +// if(type == EnumPlayerPacket.RoleGet){ +// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); +// if(npc == null || npc.advanced.role == EnumRoleType.None) +// return; +// GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); +// } // else if(type == EnumPlayerPacket.Transport){ // EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); // if(npc == null || npc.advanced.role != EnumRoleType.Transporter) @@ -281,7 +281,7 @@ public class PacketHandlerPlayer{ // } // } // } - else if(type == EnumPlayerPacket.SignSave) { + 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); diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollower.java b/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollower.java index 9b92d571a..815ae9c9a 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollower.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiNpcFollower.java @@ -2,6 +2,7 @@ package noppes.npcs.client.gui.player; import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.player.FollowerPacket; +import kamkeel.npcs.network.packets.player.GetNPCRole; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.item.ItemStack; @@ -31,7 +32,7 @@ public class GuiNpcFollower extends GuiContainerNPCInterface implements IGuiDat role = (RoleFollower) npc.roleInterface; closeOnEsc = true; - NoppesUtilPlayer.sendData(EnumPlayerPacket.RoleGet); + PacketClient.sendClient(new GetNPCRole()); } @Override public void initGui(){ diff --git a/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionStats.java b/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionStats.java index 73e3b8c7e..c95927985 100644 --- a/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionStats.java +++ b/src/main/java/noppes/npcs/client/gui/player/companion/GuiNpcCompanionStats.java @@ -1,6 +1,8 @@ package noppes.npcs.client.gui.player.companion; +import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.player.CompanionActionPacket; +import kamkeel.npcs.network.packets.player.GetNPCRole; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.item.ItemStack; @@ -29,7 +31,7 @@ public class GuiNpcCompanionStats extends GuiNPCInterface implements IGuiData { setBackground("companion.png"); xSize = 171; ySize = 166; - NoppesUtilPlayer.sendData(EnumPlayerPacket.RoleGet); + PacketClient.sendClient(new GetNPCRole()); } @Override @@ -88,7 +90,7 @@ public class GuiNpcCompanionStats extends GuiNPCInterface implements IGuiData { public void drawScreen(int i, int j, float f) { super.drawScreen(i, j, f); if(isEating && !role.isEating()){ - NoppesUtilPlayer.sendData(EnumPlayerPacket.RoleGet); + PacketClient.sendClient(new GetNPCRole()); } isEating = role.isEating(); diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index ec781e13b..de1a15d1b 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -21,7 +21,7 @@ public enum EnumPlayerPacket { SignSave, SaveBook, // CompanionOpenInv, - RoleGet, +// RoleGet, // KeyPressed, // MouseClicked, // CompanionTalentExp, 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 098/157] 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()))); } } From c55ef6d0fc645af6de25a15c1238042e98d2f9d5 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 04:45:03 +0100 Subject: [PATCH 099/157] Register packets --- src/main/java/kamkeel/npcs/network/PacketHandler.java | 3 +++ .../java/kamkeel/npcs/network/enums/EnumPlayerPacket.java | 4 ++-- src/main/java/noppes/npcs/constants/EnumPlayerPacket.java | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 32a284019..578b94307 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -360,6 +360,9 @@ public class PacketHandler { PLAYER_PACKET.registerPacket(new MailActionPacket()); PLAYER_PACKET.registerPacket(new MailActionPacket.MailSendPacket()); + PLAYER_PACKET.registerPacket(new SaveSignPacket()); + PLAYER_PACKET.registerPacket(new SaveBookPacket()); + PLAYER_PACKET.registerPacket(new CompanionActionPacket()); PLAYER_PACKET.registerPacket(new GetNPCRole()); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java index 6ba1c7c64..953e7ff19 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumPlayerPacket.java @@ -8,8 +8,8 @@ public enum EnumPlayerPacket { GetPlayerValue, MailBoxAction, MailSend, - SaveSign, // TODO - SaveBook, // TODO + SaveSign, + SaveBook, CompanionAction, GetRole, InputDevice, diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index de1a15d1b..aeaab47a0 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -18,8 +18,8 @@ public enum EnumPlayerPacket { // MailSend, // MailRead, // MailboxOpenMail, - SignSave, - SaveBook, +// SignSave, +// SaveBook, // CompanionOpenInv, // RoleGet, // KeyPressed, From d11f72eb0d23af37d7e3fbac78f1f0a39de88749 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 22:47:40 -0500 Subject: [PATCH 100/157] More THings --- .../kamkeel/npcs/network/PacketHandler.java | 2 + .../java/kamkeel/npcs/network/PacketUtil.java | 59 +++++++ .../npcs/network/enums/EnumRequestPacket.java | 9 +- .../feather/DimensionTeleportPacket.java | 78 ++++++++ .../request/party/PartyInfoPacket.java | 35 +++- .../request/party/PartyInvitePacket.java | 25 ++- .../request/party/PartyKickPacket.java | 2 +- .../request/party/PartyLeavePacket.java | 2 +- .../packets/request/script/EventScript.java | 96 ++++++++++ .../java/noppes/npcs/PacketHandlerServer.java | 166 ++---------------- .../npcs/client/gui/GuiNpcDimension.java | 3 +- .../npcs/client/gui/mainmenu/GuiNpcAI.java | 3 +- .../npcs/constants/EnumPacketServer.java | 5 +- .../npcs/controllers/PartyController.java | 2 +- .../npcs/controllers/data/PlayerData.java | 4 +- 15 files changed, 323 insertions(+), 168 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/feather/DimensionTeleportPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/script/EventScript.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 8dfe54057..617b2b6e2 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -28,6 +28,7 @@ import kamkeel.npcs.network.packets.request.customgui.CustomGuiUnfocusedPacket; import kamkeel.npcs.network.packets.request.customgui.CustomScrollClickPacket; import kamkeel.npcs.network.packets.request.dialog.*; import kamkeel.npcs.network.packets.request.faction.*; +import kamkeel.npcs.network.packets.request.feather.DimensionTeleportPacket; import kamkeel.npcs.network.packets.request.jobs.JobGetPacket; import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import kamkeel.npcs.network.packets.request.jobs.JobSpawnerAddPacket; @@ -293,6 +294,7 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new TileEntityGetPacket()); REQUEST_PACKET.registerPacket(new TileEntitySavePacket()); REQUEST_PACKET.registerPacket(new MountPacket()); + REQUEST_PACKET.registerPacket(new DimensionTeleportPacket()); } public void registerDataPackets(){ diff --git a/src/main/java/kamkeel/npcs/network/PacketUtil.java b/src/main/java/kamkeel/npcs/network/PacketUtil.java index 0f097e1f0..ef5fd5c22 100644 --- a/src/main/java/kamkeel/npcs/network/PacketUtil.java +++ b/src/main/java/kamkeel/npcs/network/PacketUtil.java @@ -1,12 +1,22 @@ package kamkeel.npcs.network; +import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomItems; import noppes.npcs.LogWriter; +import noppes.npcs.NBTTags; +import noppes.npcs.controllers.ScriptContainer; +import noppes.npcs.controllers.ScriptController; +import noppes.npcs.controllers.data.IScriptHandler; +import java.io.IOException; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; @@ -167,4 +177,53 @@ public class PacketUtil { return type.toString(); } } + + public static void getScripts(IScriptHandler data, EntityPlayerMP player) { + NBTTagCompound compound = new NBTTagCompound(); + compound.setBoolean("ScriptEnabled", data.getEnabled()); + compound.setString("ScriptLanguage", data.getLanguage()); + compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); + compound.setTag("ScriptConsole", NBTTags.NBTLongStringMap(data.getConsoleText())); + GuiDataPacket.sendGuiData(player, compound); + List containers = data.getScripts(); + for (int i = 0; i < containers.size(); i++) { + ScriptContainer container = containers.get(i); + NBTTagCompound tabCompound = new NBTTagCompound(); + tabCompound.setInteger("Tab",i); + tabCompound.setTag("Script",container.writeToNBT(new NBTTagCompound())); + tabCompound.setInteger("TotalScripts",containers.size()); + GuiDataPacket.sendGuiData(player, tabCompound); + } + } + + public static void saveScripts(IScriptHandler data, ByteBuf buffer, EntityPlayerMP player) throws IOException { + int tab = buffer.readInt(); + int totalScripts = buffer.readInt(); + if (totalScripts == 0) { + data.getScripts().clear(); + } + + if (tab >= 0) { + if (data.getScripts().size() > totalScripts) { + data.setScripts(data.getScripts().subList(0,totalScripts)); + } else while (data.getScripts().size() < totalScripts) { + data.getScripts().add(new ScriptContainer(data)); + } + NBTTagCompound tabCompound = ByteBufUtils.readNBT(buffer); + ScriptContainer script = new ScriptContainer(data); + script.readFromNBT(tabCompound); + data.getScripts().set(tab,script); + } else { + NBTTagCompound compound = ByteBufUtils.readNBT(buffer); + data.setLanguage(compound.getString("ScriptLanguage")); + if (!ScriptController.Instance.languages.containsKey(data.getLanguage())) { + if (!ScriptController.Instance.languages.isEmpty()) { + data.setLanguage((String) ScriptController.Instance.languages.keySet().toArray()[0]); + } else { + data.setLanguage("ECMAScript"); + } + } + data.setEnabled(compound.getBoolean("ScriptEnabled")); + } + } } diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index e3fc88b4b..b718b8660 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -152,5 +152,12 @@ public enum EnumRequestPacket { TraderMarketSave, CloneList, - CloneSave, CloneRemove, CloneTagList, CloneAllTags, CloneAllTagsShort, ClonePreSave + CloneSave, + CloneRemove, + CloneTagList, + CloneAllTags, + CloneAllTagsShort, + ClonePreSave, + + EventScript, DimensionTeleport } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/feather/DimensionTeleportPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/feather/DimensionTeleportPacket.java new file mode 100644 index 000000000..884552595 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/feather/DimensionTeleportPacket.java @@ -0,0 +1,78 @@ +package kamkeel.npcs.network.packets.request.feather; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.world.WorldServer; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesUtilPlayer; +import noppes.npcs.controllers.ServerCloneController; + +import java.io.IOException; + +public final class DimensionTeleportPacket extends AbstractPacket { + public static String packetName = "Request|DimensionTeleport"; + + private int dimensionID; + + public DimensionTeleportPacket() {} + + public DimensionTeleportPacket(int dimensionID) { + this.dimensionID = dimensionID; + } + + @Override + public Enum getType() { + return EnumRequestPacket.DimensionTeleport; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(dimensionID); + } + + @SideOnly(Side.SERVER) + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.TELEPORTER)) + return; + + int dimension = in.readInt(); + WorldServer world = MinecraftServer.getServer().worldServerForDimension(dimension); + ChunkCoordinates coords = world.getEntrancePortalLocation(); + if(coords == null){ + coords = world.getSpawnPoint(); + if(!world.isAirBlock(coords.posX, coords.posY, coords.posZ)) + coords.posY = world.getTopSolidOrLiquidBlock(coords.posX, coords.posZ); + else{ + while(world.isAirBlock(coords.posX, coords.posY - 1, coords.posZ) && coords.posY > 0){ + coords.posY--; + } + if(coords.posY == 0) + coords.posY = world.getTopSolidOrLiquidBlock(coords.posX, coords.posZ); + } + } + NoppesUtilPlayer.teleportPlayer((EntityPlayerMP) player, coords.posX, coords.posY, coords.posZ, dimension); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java index 3883b0a09..02f146965 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java @@ -7,15 +7,24 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.PartyDataPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; import noppes.npcs.config.ConfigMain; +import noppes.npcs.constants.EnumQuestCompletion; import noppes.npcs.controllers.PartyController; +import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.controllers.data.Party; +import noppes.npcs.controllers.data.PlayerData; +import noppes.npcs.controllers.data.Quest; import java.io.IOException; +import java.util.Vector; -import static noppes.npcs.PacketHandlerServer.sendPartyData; +import static kamkeel.npcs.network.packets.request.party.PartyInvitePacket.sendInviteData; public final class PartyInfoPacket extends AbstractPacket { public static final String packetName = "Request|PartyInfo"; @@ -60,4 +69,28 @@ public final class PartyInfoPacket extends AbstractPacket { } sendPartyData((EntityPlayerMP) player); } + + public static void sendPartyData(EntityPlayerMP player) { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + if (playerData.partyUUID != null) { + Party party = PartyController.Instance().getParty(playerData.partyUUID); + NBTTagCompound compound = party.writeToNBT(); + if (party.getQuest() != null) { + Quest quest = (Quest) party.getQuest(); + compound.setString("QuestName", quest.getCategory().getName() + ":" + quest.getName()); + Vector vector = quest.questInterface.getPartyQuestLogStatus(party); + NBTTagList list = new NBTTagList(); + for (String s : vector) { + list.appendTag(new NBTTagString(s)); + } + compound.setTag("QuestProgress", list); + if(quest.completion == EnumQuestCompletion.Npc && quest.questInterface.isPartyCompleted(party)) { + compound.setString("QuestCompleteWith", quest.completerNpc); + } + } + PartyDataPacket.sendPartyData(player, compound); + } else { + sendInviteData(player); + } + } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java index 518d77e07..1ae14a308 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java @@ -7,9 +7,12 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.PartyDataPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import noppes.npcs.EventHooks; import noppes.npcs.NoppesUtilServer; import noppes.npcs.api.entity.IPlayer; @@ -21,8 +24,8 @@ import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.event.PartyEvent; import java.io.IOException; - -import static noppes.npcs.PacketHandlerServer.sendInviteData; +import java.util.HashSet; +import java.util.UUID; public final class PartyInvitePacket extends AbstractPacket { public static final String packetName = "Request|PartyInvite"; @@ -72,4 +75,22 @@ public final class PartyInvitePacket extends AbstractPacket { } } } + + public static void sendInviteData(EntityPlayerMP player) { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + if (playerData.partyUUID == null) { + NBTTagCompound compound = new NBTTagCompound(); + NBTTagList list = new NBTTagList(); + HashSet partyInvites = playerData.getPartyInvites(); + for (UUID uuid : partyInvites) { + Party party = PartyController.Instance().getParty(uuid); + NBTTagCompound partyCompound = new NBTTagCompound(); + partyCompound.setString("PartyLeader", party.getPartyLeaderName()); + partyCompound.setString("PartyUUID", party.getPartyUUID().toString()); + list.appendTag(partyCompound); + } + compound.setTag("PartyInvites", list); + PartyDataPacket.sendPartyData(player, compound); + } + } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java index b4ca36fcc..0a0d3b97c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java @@ -23,7 +23,7 @@ import noppes.npcs.scripted.event.PartyEvent; import java.io.IOException; import java.util.UUID; -import static noppes.npcs.PacketHandlerServer.sendInviteData; +import static kamkeel.npcs.network.packets.request.party.PartyInvitePacket.sendInviteData; public final class PartyKickPacket extends AbstractPacket { public static final String packetName = "Request|PartyKick"; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java index d2439e218..1a55d008a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java @@ -22,7 +22,7 @@ import noppes.npcs.scripted.event.PartyEvent; import java.io.IOException; -import static noppes.npcs.PacketHandlerServer.sendInviteData; +import static kamkeel.npcs.network.packets.request.party.PartyInvitePacket.sendInviteData; public final class PartyLeavePacket extends AbstractPacket { public static final String packetName = "Request|PartyLeave"; diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/EventScript.java b/src/main/java/kamkeel/npcs/network/packets/request/script/EventScript.java new file mode 100644 index 000000000..1f668e51a --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/EventScript.java @@ -0,0 +1,96 @@ +package kamkeel.npcs.network.packets.request.script; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.*; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.network.packets.player.BankActionPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.controllers.data.DataScript; +import noppes.npcs.controllers.data.IScriptHandler; + +import java.io.IOException; + +public final class EventScript extends AbstractPacket { + public static String packetName = "Request|EventScript"; + + private EventScript.Action type; + private int page; + private int maxSize; + private NBTTagCompound compound; + + public EventScript() {} + + public EventScript(Action type, int page, int maxSize, NBTTagCompound compound) { + this.type = type; + this.page = page; + this.maxSize = maxSize; + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.EventScript; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public boolean needsNPC(){ + return true; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.SCRIPT_NPC; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + + if(type == Action.SAVE){ + + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.SCRIPTER)) + return; + + Action requestedAction = Action.values()[in.readInt()]; + DataScript data = npc.script; + if(requestedAction == Action.GET){ + PacketUtil.getScripts(data, (EntityPlayerMP) player); + } else { + + } + } + + public static void Save(int id, int maxSize, NBTTagCompound compound) { + PacketClient.sendClient(new EventScript(Action.SAVE, id, maxSize, compound)); + } + public static void Get() { + PacketClient.sendClient(new EventScript(Action.GET, -1, -1, new NBTTagCompound())); + } + + private enum Action { + GET, + SAVE + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index ee6c9050b..477953db3 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -4,62 +4,34 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; 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.packets.data.ScrollSelectedPacket; +import kamkeel.npcs.network.PacketUtil; import kamkeel.npcs.network.packets.data.large.GuiDataPacket; -import kamkeel.npcs.network.packets.data.large.PartyDataPacket; -import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; -import kamkeel.npcs.network.packets.data.large.ScrollListPacket; import kamkeel.npcs.util.ByteBufUtils; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityList; -import net.minecraft.entity.passive.EntityVillager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.nbt.NBTTagString; import net.minecraft.network.NetHandlerPlayServer; -import net.minecraft.network.PacketBuffer; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChunkCoordinates; -import net.minecraft.village.MerchantRecipeList; -import net.minecraft.world.WorldServer; import noppes.npcs.blocks.tiles.TileScripted; import noppes.npcs.config.ConfigDebug; -import noppes.npcs.config.ConfigMain; import noppes.npcs.config.ConfigScript; import noppes.npcs.constants.*; -import noppes.npcs.containers.ContainerMail; import noppes.npcs.controllers.*; -import noppes.npcs.controllers.LinkedNpcController.LinkedData; import noppes.npcs.controllers.data.*; -import noppes.npcs.entity.EntityCustomNpc; import noppes.npcs.entity.EntityNPCInterface; -import noppes.npcs.roles.JobSpawner; -import noppes.npcs.roles.RoleCompanion; -import noppes.npcs.roles.RoleTrader; -import noppes.npcs.roles.RoleTransporter; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.item.ScriptCustomItem; import java.io.IOException; -import java.util.*; public class PacketHandlerServer{ @SubscribeEvent public void onServerPacket(ServerCustomPacketEvent event) { EntityPlayerMP player = ((NetHandlerPlayServer)event.handler).playerEntity; - if(ConfigMain.OpsOnly && !NoppesUtilServer.isOp(player)){ - warn(player, "tried to use custom npcs without being an op"); - return; - } ByteBuf in = event.packet.payload(); EnumPacketServer type = null; try { @@ -72,9 +44,7 @@ public class PacketHandlerServer{ warn(player, "tried to use custom npcs without a tool in hand, probably a hacker"); else { if (item != null) { - if (item.getItem() == CustomItems.teleporter) - featherPackets(type, in, player); - else if (ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) { + if (ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) { if (type == EnumPacketServer.EventScriptDataGet || type == EnumPacketServer.EventScriptDataSave) npcEventScriptPackets(type, in, player, npc); else if (type == EnumPacketServer.ScriptPlayerGet || type == EnumPacketServer.ScriptPlayerSave) @@ -99,49 +69,7 @@ public class PacketHandlerServer{ } } - public static void sendPartyData(EntityPlayerMP player) { - PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - if (playerData.partyUUID != null) { - Party party = PartyController.Instance().getParty(playerData.partyUUID); - NBTTagCompound compound = party.writeToNBT(); - if (party.getQuest() != null) { - Quest quest = (Quest) party.getQuest(); - compound.setString("QuestName", quest.getCategory().getName() + ":" + quest.getName()); - Vector vector = quest.questInterface.getPartyQuestLogStatus(party); - NBTTagList list = new NBTTagList(); - for (String s : vector) { - list.appendTag(new NBTTagString(s)); - } - compound.setTag("QuestProgress", list); - if(quest.completion == EnumQuestCompletion.Npc && quest.questInterface.isPartyCompleted(party)) { - compound.setString("QuestCompleteWith", quest.completerNpc); - } - } - PartyDataPacket.sendPartyData(player, compound); - } else { - sendInviteData(player); - } - } - - public static void sendInviteData(EntityPlayerMP player) { - PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - if (playerData.partyUUID == null) { - NBTTagCompound compound = new NBTTagCompound(); - NBTTagList list = new NBTTagList(); - HashSet partyInvites = playerData.getPartyInvites(); - for (UUID uuid : partyInvites) { - Party party = PartyController.Instance().getParty(uuid); - NBTTagCompound partyCompound = new NBTTagCompound(); - partyCompound.setString("PartyLeader", party.getPartyLeaderName()); - partyCompound.setString("PartyUUID", party.getPartyUUID().toString()); - list.appendTag(partyCompound); - } - compound.setTag("PartyInvites", list); - PartyDataPacket.sendPartyData(player, compound); - } - } - - private void getScriptsEnabled(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { + private void getScriptsEnabled(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { if (type == EnumPacketServer.ScriptGlobalGuiDataGet) { NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("ScriptsEnabled", ConfigScript.ScriptingEnabled); @@ -175,61 +103,12 @@ public class PacketHandlerServer{ } } - public static void getScripts(IScriptHandler data, ByteBuf buffer, EntityPlayerMP player) { - NBTTagCompound compound = new NBTTagCompound(); - compound.setBoolean("ScriptEnabled", data.getEnabled()); - compound.setString("ScriptLanguage", data.getLanguage()); - compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); - compound.setTag("ScriptConsole", NBTTags.NBTLongStringMap(data.getConsoleText())); - GuiDataPacket.sendGuiData(player, compound); - List containers = data.getScripts(); - for (int i = 0; i < containers.size(); i++) { - ScriptContainer container = containers.get(i); - NBTTagCompound tabCompound = new NBTTagCompound(); - tabCompound.setInteger("Tab",i); - tabCompound.setTag("Script",container.writeToNBT(new NBTTagCompound())); - tabCompound.setInteger("TotalScripts",containers.size()); - GuiDataPacket.sendGuiData(player, tabCompound); - } - } - - public static void saveScripts(IScriptHandler data, ByteBuf buffer, EntityPlayerMP player) throws IOException { - int tab = buffer.readInt(); - int totalScripts = buffer.readInt(); - if (totalScripts == 0) { - data.getScripts().clear(); - } - - if (tab >= 0) { - if (data.getScripts().size() > totalScripts) { - data.setScripts(data.getScripts().subList(0,totalScripts)); - } else while (data.getScripts().size() < totalScripts) { - data.getScripts().add(new ScriptContainer(data)); - } - NBTTagCompound tabCompound = ByteBufUtils.readNBT(buffer); - ScriptContainer script = new ScriptContainer(data); - script.readFromNBT(tabCompound); - data.getScripts().set(tab,script); - } else { - NBTTagCompound compound = ByteBufUtils.readNBT(buffer); - data.setLanguage(compound.getString("ScriptLanguage")); - if (!ScriptController.Instance.languages.containsKey(data.getLanguage())) { - if (!ScriptController.Instance.languages.isEmpty()) { - data.setLanguage((String) ScriptController.Instance.languages.keySet().toArray()[0]); - } else { - data.setLanguage("ECMAScript"); - } - } - data.setEnabled(compound.getBoolean("ScriptEnabled")); - } - } - - private void npcEventScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws Exception { + private void npcEventScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws Exception { DataScript data = npc.script; if(type == EnumPacketServer.EventScriptDataGet) { - getScripts(data,buffer,player); + PacketUtil.getScripts(data,buffer,player); } else if(type == EnumPacketServer.EventScriptDataSave) { - saveScripts(data,buffer,player); + PacketUtil.saveScripts(data,buffer,player); npc.updateAI = true; npc.script.hasInited = false; if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ @@ -241,10 +120,10 @@ public class PacketHandlerServer{ private void playerScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws Exception { PlayerDataScript data = ScriptController.Instance.playerScripts; if(type == EnumPacketServer.ScriptPlayerGet) { - getScripts(data,buffer,player); + PacketUtil.getScripts(data,buffer,player); } else if(type == EnumPacketServer.ScriptPlayerSave) { int tab = buffer.getInt(buffer.readerIndex()); - saveScripts(data,buffer,player); + PacketUtil.saveScripts(data,buffer,player); ScriptController.Instance.lastPlayerUpdate = System.currentTimeMillis(); if(tab == -1) ScriptController.Instance.savePlayerScriptsSync(); @@ -254,10 +133,10 @@ public class PacketHandlerServer{ private void forgeScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws Exception { ForgeDataScript data = ScriptController.Instance.forgeScripts; if (type == EnumPacketServer.ScriptForgeGet) { - getScripts(data,buffer,player); + PacketUtil.getScripts(data,buffer,player); } else if (type == EnumPacketServer.ScriptForgeSave) { int tab = buffer.getInt(buffer.readerIndex()); - saveScripts(data,buffer,player); + PacketUtil.saveScripts(data,buffer,player); ScriptController.Instance.lastForgeUpdate = System.currentTimeMillis(); if(tab == -1) ScriptController.Instance.saveForgeScriptsSync(); @@ -267,10 +146,10 @@ public class PacketHandlerServer{ private void npcGlobalScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws Exception { GlobalNPCDataScript data = ScriptController.Instance.globalNpcScripts; if(type == EnumPacketServer.ScriptGlobalNPCGet) { - getScripts(data,buffer,player); + PacketUtil.getScripts(data,buffer,player); } else if(type == EnumPacketServer.ScriptGlobalNPCSave) { int tab = buffer.getInt(buffer.readerIndex()); - saveScripts(data,buffer,player); + PacketUtil.saveScripts(data,buffer,player); ScriptController.Instance.lastGlobalNpcUpdate = System.currentTimeMillis(); if(tab == -1) ScriptController.Instance.saveGlobalScriptsSync(); @@ -320,27 +199,6 @@ public class PacketHandlerServer{ } } - private void featherPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { - if(type == EnumPacketServer.DimensionTeleport){ - int dimension = buffer.readInt(); - WorldServer world = MinecraftServer.getServer().worldServerForDimension(dimension); - ChunkCoordinates coords = world.getEntrancePortalLocation(); - if(coords == null){ - coords = world.getSpawnPoint(); - if(!world.isAirBlock(coords.posX, coords.posY, coords.posZ)) - coords.posY = world.getTopSolidOrLiquidBlock(coords.posX, coords.posZ); - else{ - while(world.isAirBlock(coords.posX, coords.posY - 1, coords.posZ) && coords.posY > 0){ - coords.posY--; - } - if(coords.posY == 0) - coords.posY = world.getTopSolidOrLiquidBlock(coords.posX, coords.posZ); - } - } - NoppesUtilPlayer.teleportPlayer(player, coords.posX, coords.posY, coords.posZ, dimension); - } - } - private void warn(EntityPlayer player, String warning){ MinecraftServer.getServer().logWarning(player.getCommandSenderName() + ": " + warning); } diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java b/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java index 66ddad230..fc5cfed7b 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java @@ -2,6 +2,7 @@ package noppes.npcs.client.gui; import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.DimensionsGetPacket; +import kamkeel.npcs.network.packets.request.feather.DimensionTeleportPacket; import kamkeel.npcs.network.packets.request.npc.RemoteDeletePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.StatCollector; @@ -58,7 +59,7 @@ public class GuiNpcDimension extends GuiNPCInterface implements IScrollData{ return; if(id == 4){ - Client.sendData(EnumPacketServer.DimensionTeleport, data.get(scroll.getSelected())); + PacketClient.sendClient(new DimensionTeleportPacket(data.get(scroll.getSelected()))); close(); } } diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java index fcb110df1..918867df4 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java @@ -1,6 +1,7 @@ package noppes.npcs.client.gui.mainmenu; import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAIGetPacket; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAISavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; @@ -18,7 +19,7 @@ public class GuiNpcAI extends GuiNPCInterface2 implements ITextfieldListener, IG public GuiNpcAI(EntityNPCInterface npc) { super(npc,6); ai = npc.ai; - Client.sendData(EnumPacketServer.MainmenuAIGet); + PacketClient.sendClient(new MainmenuAIGetPacket()); } public void initGui() diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 80ca0590f..cb2b83441 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -23,10 +23,9 @@ public enum EnumPacketServer { ScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), ScriptDataGet(true), - EventScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), - EventScriptDataGet(true), - DimensionTeleport; + EventScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), + EventScriptDataGet(true); public CustomNpcsPermissions.Permission permission = null; public boolean needsNpc = false; diff --git a/src/main/java/noppes/npcs/controllers/PartyController.java b/src/main/java/noppes/npcs/controllers/PartyController.java index 4dcad43f3..c38c8647a 100644 --- a/src/main/java/noppes/npcs/controllers/PartyController.java +++ b/src/main/java/noppes/npcs/controllers/PartyController.java @@ -25,7 +25,7 @@ import java.util.HashMap; import java.util.UUID; import java.util.Vector; -import static noppes.npcs.PacketHandlerServer.sendInviteData; +import static kamkeel.npcs.network.packets.request.party.PartyInvitePacket.sendInviteData; public class PartyController { private static PartyController Instance; diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerData.java b/src/main/java/noppes/npcs/controllers/data/PlayerData.java index 19f9a8396..3852fffea 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerData.java @@ -3,6 +3,7 @@ package noppes.npcs.controllers.data; import kamkeel.npcs.addon.DBCAddon; import kamkeel.npcs.network.packets.data.AchievementPacket; import kamkeel.npcs.network.packets.data.ChatAlertPacket; +import kamkeel.npcs.network.packets.request.party.PartyInvitePacket; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -12,7 +13,6 @@ import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; -import noppes.npcs.PacketHandlerServer; import noppes.npcs.api.entity.ICustomNpc; import noppes.npcs.api.handler.*; import noppes.npcs.config.ConfigMain; @@ -274,7 +274,7 @@ public class PlayerData implements IExtendedEntityProperties, IPlayerData { public void ignoreInvite(UUID uuid) { if (uuid != null) { this.partyInvites.remove(uuid); - PacketHandlerServer.sendInviteData((EntityPlayerMP) player); + PartyInvitePacket.sendInviteData((EntityPlayerMP) player); } } From 0f948a9d62c329a12cd9689ab85e2290f5f84349 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 23:15:53 -0500 Subject: [PATCH 101/157] Script Packets --- .../kamkeel/npcs/network/PacketHandler.java | 11 ++ .../java/kamkeel/npcs/network/PacketUtil.java | 2 +- .../npcs/network/enums/EnumRequestPacket.java | 2 +- .../request/script/BlockScriptPacket.java | 113 +++++++++++++ ...ventScript.java => EventScriptPacket.java} | 35 ++-- .../request/script/ForgeScriptPacket.java | 101 ++++++++++++ .../request/script/GlobalNPCScriptPacket.java | 101 ++++++++++++ .../request/script/ItemScriptPacket.java | 103 ++++++++++++ .../request/script/NPCScriptPacket.java | 105 ++++++++++++ .../request/script/PlayerScriptPacket.java | 104 ++++++++++++ .../request/script/ScriptInfoPacket.java | 100 ++++++++++++ .../java/noppes/npcs/PacketHandlerServer.java | 154 ------------------ src/main/java/noppes/npcs/client/Client.java | 2 +- .../npcs/client/gui/GuiBorderBlock.java | 3 +- .../npcs/client/gui/GuiMerchantAdd.java | 4 +- .../client/gui/GuiNPCFactionSelection.java | 4 +- .../npcs/client/gui/GuiNPCLinesEdit.java | 4 +- .../gui/GuiNPCTransportCategoryEdit.java | 4 +- .../npcs/client/gui/GuiNpcDimension.java | 4 +- .../npcs/client/gui/GuiNpcMobSpawner.java | 4 +- .../npcs/client/gui/GuiNpcMobSpawnerAdd.java | 4 +- .../client/gui/GuiNpcMobSpawnerMounter.java | 4 +- .../client/gui/GuiNpcMobSpawnerSelector.java | 4 +- .../noppes/npcs/client/gui/GuiNpcPather.java | 4 +- .../npcs/client/gui/GuiNpcRedstoneBlock.java | 4 +- .../npcs/client/gui/GuiNpcRemoteEditor.java | 4 +- .../npcs/client/gui/GuiNpcWaypoint.java | 4 +- .../noppes/npcs/client/gui/GuiScript.java | 9 +- .../client/gui/SubGuiMailmanSendSetup.java | 4 +- .../client/gui/SubGuiNpcAvailability.java | 4 +- .../gui/SubGuiNpcAvailabilityDialog.java | 4 +- .../gui/SubGuiNpcAvailabilityQuest.java | 4 +- .../npcs/client/gui/SubGuiNpcDialog.java | 4 +- .../client/gui/SubGuiNpcDialogOption.java | 4 +- .../client/gui/SubGuiNpcDialogVisual.java | 4 +- .../npcs/client/gui/SubGuiNpcDimensions.java | 4 +- .../client/gui/SubGuiNpcFactionOptions.java | 4 +- .../npcs/client/gui/SubGuiNpcQuest.java | 2 +- .../gui/advanced/GuiNPCAdvancedLinkedNpc.java | 4 +- .../gui/advanced/GuiNPCDialogNpcOptions.java | 4 +- .../gui/advanced/GuiNPCFactionSetup.java | 4 +- .../client/gui/advanced/GuiNPCLinesMenu.java | 4 +- .../npcs/client/gui/advanced/GuiNPCMarks.java | 4 +- .../client/gui/advanced/GuiNPCNightSetup.java | 4 +- .../client/gui/advanced/GuiNPCSoundsMenu.java | 4 +- .../npcs/client/gui/custom/GuiCustom.java | 4 +- .../gui/global/GuiNPCEditAnimation.java | 4 +- .../gui/global/GuiNPCManageAnimations.java | 4 +- .../client/gui/global/GuiNPCManageBanks.java | 4 +- .../gui/global/GuiNPCManageDialogs.java | 4 +- .../gui/global/GuiNPCManageFactions.java | 4 +- .../gui/global/GuiNPCManageLinkedNpc.java | 4 +- .../client/gui/global/GuiNPCManageQuest.java | 4 +- .../client/gui/global/GuiNPCManageTags.java | 4 +- .../gui/global/GuiNPCManageTransporters.java | 4 +- .../gui/global/GuiNpcManagePlayerData.java | 4 +- .../gui/global/GuiNpcManageRecipes.java | 4 +- .../gui/global/GuiNpcNaturalSpawns.java | 4 +- .../npcs/client/gui/mainmenu/GuiNPCInv.java | 4 +- .../npcs/client/gui/mainmenu/GuiNpcAI.java | 4 +- .../client/gui/mainmenu/GuiNpcAdvanced.java | 4 +- .../client/gui/mainmenu/GuiNpcDisplay.java | 4 +- .../npcs/client/gui/mainmenu/GuiNpcStats.java | 4 +- .../client/gui/model/GuiCreationScreen.java | 4 +- .../client/gui/player/inventory/GuiParty.java | 4 +- .../gui/player/inventory/GuiQuestLog.java | 2 +- .../gui/player/inventory/GuiSettings.java | 4 +- .../gui/questtypes/GuiNpcQuestTypeDialog.java | 4 +- .../client/gui/roles/GuiNpcBankSetup.java | 4 +- .../npcs/client/gui/roles/GuiNpcBard.java | 4 +- .../client/gui/roles/GuiNpcCompanion.java | 4 +- .../client/gui/roles/GuiNpcConversation.java | 4 +- .../client/gui/roles/GuiNpcFollowerJob.java | 4 +- .../client/gui/roles/GuiNpcFollowerSetup.java | 4 +- .../npcs/client/gui/roles/GuiNpcGuard.java | 4 +- .../npcs/client/gui/roles/GuiNpcHealer.java | 4 +- .../client/gui/roles/GuiNpcItemGiver.java | 4 +- .../npcs/client/gui/roles/GuiNpcSpawner.java | 4 +- .../client/gui/roles/GuiNpcTraderSetup.java | 4 +- .../client/gui/roles/GuiNpcTransporter.java | 4 +- .../client/gui/script/GuiNPCEventScripts.java | 9 +- .../client/gui/script/GuiScriptAllNPCs.java | 11 +- .../client/gui/script/GuiScriptBlock.java | 11 +- .../client/gui/script/GuiScriptForge.java | 11 +- .../client/gui/script/GuiScriptGlobal.java | 7 +- .../npcs/client/gui/script/GuiScriptItem.java | 9 +- .../client/gui/script/GuiScriptPlayers.java | 11 +- .../npcs/client/gui/util/GuiNpcMenu.java | 4 +- .../npcs/constants/EnumPacketServer.java | 47 ------ 89 files changed, 937 insertions(+), 384 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/script/BlockScriptPacket.java rename src/main/java/kamkeel/npcs/network/packets/request/script/{EventScript.java => EventScriptPacket.java} (62%) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/script/ForgeScriptPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/script/GlobalNPCScriptPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/script/ItemScriptPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/script/NPCScriptPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/script/PlayerScriptPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/script/ScriptInfoPacket.java delete mode 100644 src/main/java/noppes/npcs/constants/EnumPacketServer.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 5f286a94e..394a491a4 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -57,6 +57,7 @@ import kamkeel.npcs.network.packets.request.recipe.RecipesGetPacket; import kamkeel.npcs.network.packets.request.role.RoleCompanionUpdatePacket; import kamkeel.npcs.network.packets.request.role.RoleGetPacket; import kamkeel.npcs.network.packets.request.role.RoleSavePacket; +import kamkeel.npcs.network.packets.request.script.*; import kamkeel.npcs.network.packets.request.tags.*; import kamkeel.npcs.network.packets.request.transform.TransformGetPacket; import kamkeel.npcs.network.packets.request.transform.TransformLoadPacket; @@ -109,6 +110,16 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new NpcClosePacket()); REQUEST_PACKET.registerPacket(new NpcDeletePacket()); + // Script Packets + REQUEST_PACKET.registerPacket(new BlockScriptPacket()); + REQUEST_PACKET.registerPacket(new EventScriptPacket()); + REQUEST_PACKET.registerPacket(new ForgeScriptPacket()); + REQUEST_PACKET.registerPacket(new GlobalNPCScriptPacket()); + REQUEST_PACKET.registerPacket(new ItemScriptPacket()); + REQUEST_PACKET.registerPacket(new NPCScriptPacket()); + REQUEST_PACKET.registerPacket(new PlayerScriptPacket()); + REQUEST_PACKET.registerPacket(new ScriptInfoPacket()); + // Cloner Packets REQUEST_PACKET.registerPacket(new CloneListPacket()); REQUEST_PACKET.registerPacket(new SpawnMobPacket()); diff --git a/src/main/java/kamkeel/npcs/network/PacketUtil.java b/src/main/java/kamkeel/npcs/network/PacketUtil.java index ef5fd5c22..ad8286efe 100644 --- a/src/main/java/kamkeel/npcs/network/PacketUtil.java +++ b/src/main/java/kamkeel/npcs/network/PacketUtil.java @@ -196,7 +196,7 @@ public class PacketUtil { } } - public static void saveScripts(IScriptHandler data, ByteBuf buffer, EntityPlayerMP player) throws IOException { + public static void saveScripts(IScriptHandler data, ByteBuf buffer) throws IOException { int tab = buffer.readInt(); int totalScripts = buffer.readInt(); if (totalScripts == 0) { diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index b718b8660..db80613b6 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -159,5 +159,5 @@ public enum EnumRequestPacket { CloneAllTagsShort, ClonePreSave, - EventScript, DimensionTeleport + EventScript, PlayerScript, ForgeScript, GlobalNPCScript, ItemScript, BlockScript, NPCScript, ScriptInfo, DimensionTeleport } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/BlockScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/BlockScriptPacket.java new file mode 100644 index 000000000..1b9fcb81d --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/BlockScriptPacket.java @@ -0,0 +1,113 @@ +package kamkeel.npcs.network.packets.request.script; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.blocks.tiles.TileScripted; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ScriptController; +import noppes.npcs.controllers.data.PlayerDataScript; +import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.item.ScriptCustomItem; + +import java.io.IOException; + +public final class BlockScriptPacket extends AbstractPacket { + public static String packetName = "Request|BlockScript"; + + private BlockScriptPacket.Action type; + private int x; + private int y; + private int z; + private NBTTagCompound compound; + + public BlockScriptPacket() {} + + public BlockScriptPacket(Action type, int x, int y, int z, NBTTagCompound compound) { + this.type = type; + this.x = x; + this.y = y; + this.z = z; + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.BlockScript; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.SCRIPT_BLOCK; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + out.writeInt(x); + out.writeInt(y); + out.writeInt(z); + if(type == Action.SAVE){ + ByteBufUtils.writeNBT(out, this.compound); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) + return; + + Action requestedAction = Action.values()[in.readInt()]; + if(requestedAction == Action.GET){ + TileEntity tile = player.worldObj.getTileEntity(in.readInt(), in.readInt(), in.readInt()); + if(!(tile instanceof TileScripted)) + return; + NBTTagCompound compound = ((TileScripted) tile).getNBT(new NBTTagCompound()); + compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } else { + if (!player.capabilities.isCreativeMode) { + return; + } + TileEntity tile = player.worldObj.getTileEntity(in.readInt(), in.readInt(), in.readInt()); + if(!(tile instanceof TileScripted)) + return; + TileScripted script = (TileScripted) tile; + script.setNBT(ByteBufUtils.readNBT(in)); + script.lastInited = -1; + } + } + + public static void Save(int x, int y, int z, NBTTagCompound compound) { + PacketClient.sendClient(new BlockScriptPacket(Action.SAVE, x, y, z, compound)); + } + public static void Get(int x, int y, int z) { + PacketClient.sendClient(new BlockScriptPacket(Action.GET, x, y, z, new NBTTagCompound())); + } + + private enum Action { + GET, + SAVE + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/EventScript.java b/src/main/java/kamkeel/npcs/network/packets/request/script/EventScriptPacket.java similarity index 62% rename from src/main/java/kamkeel/npcs/network/packets/request/script/EventScript.java rename to src/main/java/kamkeel/npcs/network/packets/request/script/EventScriptPacket.java index 1f668e51a..cac6be389 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/script/EventScript.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/EventScriptPacket.java @@ -1,35 +1,35 @@ package kamkeel.npcs.network.packets.request.script; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.*; import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; -import kamkeel.npcs.network.packets.data.large.GuiDataPacket; -import kamkeel.npcs.network.packets.player.BankActionPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; -import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.LogWriter; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.config.ConfigScript; import noppes.npcs.controllers.data.DataScript; -import noppes.npcs.controllers.data.IScriptHandler; import java.io.IOException; -public final class EventScript extends AbstractPacket { +public final class EventScriptPacket extends AbstractPacket { public static String packetName = "Request|EventScript"; - private EventScript.Action type; + private EventScriptPacket.Action type; private int page; private int maxSize; private NBTTagCompound compound; - public EventScript() {} + public EventScriptPacket() {} - public EventScript(Action type, int page, int maxSize, NBTTagCompound compound) { + public EventScriptPacket(Action type, int page, int maxSize, NBTTagCompound compound) { this.type = type; this.page = page; this.maxSize = maxSize; @@ -62,7 +62,9 @@ public final class EventScript extends AbstractPacket { out.writeInt(type.ordinal()); if(type == Action.SAVE){ - + out.writeInt(this.page); + out.writeInt(this.maxSize); + ByteBufUtils.writeNBT(out, this.compound); } } @@ -70,6 +72,10 @@ public final class EventScript extends AbstractPacket { public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { if (!(player instanceof EntityPlayerMP)) return; + + if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) + return; + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.SCRIPTER)) return; @@ -78,15 +84,20 @@ public final class EventScript extends AbstractPacket { if(requestedAction == Action.GET){ PacketUtil.getScripts(data, (EntityPlayerMP) player); } else { - + PacketUtil.saveScripts(data, in); + npc.updateAI = true; + npc.script.hasInited = false; + if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ + LogWriter.script(String.format("[%s] (Player) %s SAVED NPC %s (%s, %s, %s) [%s]", "SCRIPTER", player.getCommandSenderName(), npc.display.getName(), (int)npc.posX, (int)(npc).posY, (int)npc.posZ, npc.worldObj.getWorldInfo().getWorldName())); + } } } public static void Save(int id, int maxSize, NBTTagCompound compound) { - PacketClient.sendClient(new EventScript(Action.SAVE, id, maxSize, compound)); + PacketClient.sendClient(new EventScriptPacket(Action.SAVE, id, maxSize, compound)); } public static void Get() { - PacketClient.sendClient(new EventScript(Action.GET, -1, -1, new NBTTagCompound())); + PacketClient.sendClient(new EventScriptPacket(Action.GET, -1, -1, new NBTTagCompound())); } private enum Action { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/ForgeScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/ForgeScriptPacket.java new file mode 100644 index 000000000..02ab27097 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/ForgeScriptPacket.java @@ -0,0 +1,101 @@ +package kamkeel.npcs.network.packets.request.script; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.*; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ScriptController; +import noppes.npcs.controllers.data.ForgeDataScript; +import noppes.npcs.controllers.data.IScriptHandler; +import noppes.npcs.controllers.data.PlayerDataScript; + +import java.io.IOException; + +public final class ForgeScriptPacket extends AbstractPacket { + public static String packetName = "Request|EventScript"; + + private ForgeScriptPacket.Action type; + private int page; + private int maxSize; + private NBTTagCompound compound; + + public ForgeScriptPacket() {} + + public ForgeScriptPacket(Action type, int page, int maxSize, NBTTagCompound compound) { + this.type = type; + this.page = page; + this.maxSize = maxSize; + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.ForgeScript; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.SCRIPT_FORGE; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + + if(type == Action.SAVE){ + out.writeInt(this.page); + out.writeInt(this.maxSize); + ByteBufUtils.writeNBT(out, this.compound); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.SCRIPTER)) + return; + + Action requestedAction = Action.values()[in.readInt()]; + ForgeDataScript data = ScriptController.Instance.forgeScripts; + if(requestedAction == Action.GET){ + PacketUtil.getScripts((IScriptHandler) data, (EntityPlayerMP) player); + } else { + int tab = in.getInt(in.readerIndex()); + PacketUtil.saveScripts(data, in); + ScriptController.Instance.lastForgeUpdate = System.currentTimeMillis(); + if(tab == -1) + ScriptController.Instance.saveForgeScriptsSync(); + } + } + + public static void Save(int id, int maxSize, NBTTagCompound compound) { + PacketClient.sendClient(new ForgeScriptPacket(Action.SAVE, id, maxSize, compound)); + } + public static void Get() { + PacketClient.sendClient(new ForgeScriptPacket(Action.GET, -1, -1, new NBTTagCompound())); + } + + private enum Action { + GET, + SAVE + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/GlobalNPCScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/GlobalNPCScriptPacket.java new file mode 100644 index 000000000..a34cbb1fa --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/GlobalNPCScriptPacket.java @@ -0,0 +1,101 @@ +package kamkeel.npcs.network.packets.request.script; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.*; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ScriptController; +import noppes.npcs.controllers.data.ForgeDataScript; +import noppes.npcs.controllers.data.GlobalNPCDataScript; +import noppes.npcs.controllers.data.IScriptHandler; + +import java.io.IOException; + +public final class GlobalNPCScriptPacket extends AbstractPacket { + public static String packetName = "Request|GlobalNPCScript"; + + private GlobalNPCScriptPacket.Action type; + private int page; + private int maxSize; + private NBTTagCompound compound; + + public GlobalNPCScriptPacket() {} + + public GlobalNPCScriptPacket(Action type, int page, int maxSize, NBTTagCompound compound) { + this.type = type; + this.page = page; + this.maxSize = maxSize; + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.GlobalNPCScript; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.SCRIPT_GLOBAL; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + + if(type == Action.SAVE){ + out.writeInt(this.page); + out.writeInt(this.maxSize); + ByteBufUtils.writeNBT(out, this.compound); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.SCRIPTER)) + return; + + Action requestedAction = Action.values()[in.readInt()]; + GlobalNPCDataScript data = ScriptController.Instance.globalNpcScripts; + if(requestedAction == Action.GET){ + PacketUtil.getScripts((IScriptHandler) data, (EntityPlayerMP) player); + } else { + int tab = in.getInt(in.readerIndex()); + PacketUtil.saveScripts(data,in); + ScriptController.Instance.lastGlobalNpcUpdate = System.currentTimeMillis(); + if(tab == -1) + ScriptController.Instance.saveGlobalScriptsSync(); + } + } + + public static void Save(int id, int maxSize, NBTTagCompound compound) { + PacketClient.sendClient(new GlobalNPCScriptPacket(Action.SAVE, id, maxSize, compound)); + } + public static void Get() { + PacketClient.sendClient(new GlobalNPCScriptPacket(Action.GET, -1, -1, new NBTTagCompound())); + } + + private enum Action { + GET, + SAVE + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/ItemScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/ItemScriptPacket.java new file mode 100644 index 000000000..07be1630d --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/ItemScriptPacket.java @@ -0,0 +1,103 @@ +package kamkeel.npcs.network.packets.request.script; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.*; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ScriptController; +import noppes.npcs.controllers.data.IScriptHandler; +import noppes.npcs.controllers.data.PlayerDataScript; +import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.item.ScriptCustomItem; + +import java.io.IOException; + +public final class ItemScriptPacket extends AbstractPacket { + public static String packetName = "Request|ItemScript"; + + private ItemScriptPacket.Action type; + private NBTTagCompound compound; + + public ItemScriptPacket() {} + + public ItemScriptPacket(Action type, NBTTagCompound compound) { + this.type = type; + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.ItemScript; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.SCRIPT_ITEM; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + + if(type == Action.SAVE){ + ByteBufUtils.writeNBT(out, this.compound); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) + return; + + Action requestedAction = Action.values()[in.readInt()]; + if(requestedAction == Action.GET){ + ScriptCustomItem iw = (ScriptCustomItem) NpcAPI.Instance().getIItemStack(player.getHeldItem()); + iw.loadScriptData(); + NBTTagCompound compound = iw.getMCNbt(); + compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } else { + if (!player.capabilities.isCreativeMode) { + return; + } + + NBTTagCompound compound = ByteBufUtils.readNBT(in); + ScriptCustomItem wrapper = (ScriptCustomItem) NpcAPI.Instance().getIItemStack(player.getHeldItem()); + wrapper.setMCNbt(compound); + wrapper.saveScriptData(); + wrapper.loaded = false; + wrapper.lastInited = -1; + ((EntityPlayerMP) player).sendContainerToPlayer(player.inventoryContainer); + } + } + + public static void Save(NBTTagCompound compound) { + PacketClient.sendClient(new ItemScriptPacket(Action.SAVE, compound)); + } + public static void Get() { + PacketClient.sendClient(new ItemScriptPacket(Action.GET, new NBTTagCompound())); + } + + private enum Action { + GET, + SAVE + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/NPCScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/NPCScriptPacket.java new file mode 100644 index 000000000..fc6073fbb --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/NPCScriptPacket.java @@ -0,0 +1,105 @@ +package kamkeel.npcs.network.packets.request.script; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.*; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.LogWriter; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ScriptController; +import noppes.npcs.controllers.data.GlobalNPCDataScript; +import noppes.npcs.controllers.data.IScriptHandler; + +import java.io.IOException; + +public final class NPCScriptPacket extends AbstractPacket { + public static String packetName = "Request|NPCScript"; + + private NPCScriptPacket.Action type; + private NBTTagCompound compound; + + public NPCScriptPacket() {} + + public NPCScriptPacket(Action type, NBTTagCompound compound) { + this.type = type; + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.NPCScript; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.SCRIPT_NPC; + } + + @Override + public boolean needsNPC(){ + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + + if(type == Action.SAVE){ + ByteBufUtils.writeNBT(out, this.compound); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.SCRIPTER)) + return; + + Action requestedAction = Action.values()[in.readInt()]; + if(requestedAction == Action.GET){ + NBTTagCompound compound = npc.script.writeToNBT(new NBTTagCompound()); + compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } else { + npc.script.readFromNBT(ByteBufUtils.readNBT(in)); + npc.updateAI = true; + npc.script.hasInited = false; + if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ + LogWriter.script(String.format("[%s] (Player) %s SAVED NPC %s (%s, %s, %s) [%s]", "SCRIPTER", player.getCommandSenderName(), npc.display.getName(), (int)npc.posX, (int)(npc).posY, (int)npc.posZ, npc.worldObj.getWorldInfo().getWorldName())); + } + } + } + + public static void Save(NBTTagCompound compound) { + PacketClient.sendClient(new NPCScriptPacket(Action.SAVE, compound)); + } + public static void Get() { + PacketClient.sendClient(new NPCScriptPacket(Action.GET, new NBTTagCompound())); + } + + private enum Action { + GET, + SAVE + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/PlayerScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/PlayerScriptPacket.java new file mode 100644 index 000000000..ec57a2d25 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/PlayerScriptPacket.java @@ -0,0 +1,104 @@ +package kamkeel.npcs.network.packets.request.script; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.*; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.LogWriter; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ScriptController; +import noppes.npcs.controllers.data.DataScript; +import noppes.npcs.controllers.data.IScriptHandler; +import noppes.npcs.controllers.data.PlayerDataScript; + +import java.io.IOException; + +public final class PlayerScriptPacket extends AbstractPacket { + public static String packetName = "Request|PlayerScript"; + + private PlayerScriptPacket.Action type; + private int page; + private int maxSize; + private NBTTagCompound compound; + + public PlayerScriptPacket() {} + + public PlayerScriptPacket(Action type, int page, int maxSize, NBTTagCompound compound) { + this.type = type; + this.page = page; + this.maxSize = maxSize; + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.PlayerScript; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.SCRIPT_PLAYER; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + + if(type == Action.SAVE){ + out.writeInt(this.page); + out.writeInt(this.maxSize); + ByteBufUtils.writeNBT(out, this.compound); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.SCRIPTER)) + return; + + Action requestedAction = Action.values()[in.readInt()]; + PlayerDataScript data = ScriptController.Instance.playerScripts; + if(requestedAction == Action.GET){ + PacketUtil.getScripts((IScriptHandler) data, (EntityPlayerMP) player); + } else { + int tab = in.getInt(in.readerIndex()); + PacketUtil.saveScripts(data, in); + ScriptController.Instance.lastPlayerUpdate = System.currentTimeMillis(); + if(tab == -1) + ScriptController.Instance.savePlayerScriptsSync(); + } + } + + public static void Save(int id, int maxSize, NBTTagCompound compound) { + PacketClient.sendClient(new PlayerScriptPacket(Action.SAVE, id, maxSize, compound)); + } + public static void Get() { + PacketClient.sendClient(new PlayerScriptPacket(Action.GET, -1, -1, new NBTTagCompound())); + } + + private enum Action { + GET, + SAVE + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/ScriptInfoPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/ScriptInfoPacket.java new file mode 100644 index 000000000..c4bfbfa8b --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/ScriptInfoPacket.java @@ -0,0 +1,100 @@ +package kamkeel.npcs.network.packets.request.script; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.*; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.LogWriter; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ScriptController; + +import java.io.IOException; + +public final class ScriptInfoPacket extends AbstractPacket { + public static String packetName = "Request|NPCScript"; + + private ScriptInfoPacket.Action type; + private NBTTagCompound compound; + + public ScriptInfoPacket() {} + + public ScriptInfoPacket(Action type, NBTTagCompound compound) { + this.type = type; + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.ScriptInfo; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.SCRIPT_GLOBAL; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + + if(type == Action.SAVE){ + ByteBufUtils.writeNBT(out, this.compound); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) + return; + + if (!PacketUtil.verifyItemPacket(player, EnumItemPacketType.SCRIPTER)) + return; + + Action requestedAction = Action.values()[in.readInt()]; + if(requestedAction == Action.GET){ + NBTTagCompound compound = new NBTTagCompound(); + compound.setBoolean("ScriptsEnabled", ConfigScript.ScriptingEnabled); + compound.setBoolean("PlayerScriptsEnabled", ConfigScript.GlobalPlayerScripts); + compound.setBoolean("GlobalNPCScriptsEnabled", ConfigScript.GlobalNPCScripts); + compound.setBoolean("ForgeScriptsEnabled", ConfigScript.GlobalForgeScripts); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } else { + NBTTagCompound compound = ByteBufUtils.readNBT(in); + ConfigScript.ScriptingEnabled = compound.getBoolean("ScriptsEnabled"); + ConfigScript.GlobalPlayerScripts = compound.getBoolean("PlayerScriptsEnabled"); + ConfigScript.GlobalNPCScripts = compound.getBoolean("GlobalNPCScriptsEnabled"); + ConfigScript.GlobalForgeScripts = compound.getBoolean("ForgeScriptsEnabled"); + } + } + + public static void Save(NBTTagCompound compound) { + PacketClient.sendClient(new ScriptInfoPacket(Action.SAVE, compound)); + } + public static void Get() { + PacketClient.sendClient(new ScriptInfoPacket(Action.GET, new NBTTagCompound())); + } + + private enum Action { + GET, + SAVE + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 477953db3..b22b650d8 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -40,165 +40,11 @@ public class PacketHandlerServer{ ItemStack item = player.inventory.getCurrentItem(); EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - if(item == null && (type == EnumPacketServer.ScriptPlayerGet || type == EnumPacketServer.ScriptPlayerSave || type == EnumPacketServer.ScriptGlobalNPCGet || type == EnumPacketServer.ScriptGlobalNPCSave || type == EnumPacketServer.ScriptForgeGet || type == EnumPacketServer.ScriptForgeSave)) - warn(player, "tried to use custom npcs without a tool in hand, probably a hacker"); - else { - if (item != null) { - if (ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) { - if (type == EnumPacketServer.EventScriptDataGet || type == EnumPacketServer.EventScriptDataSave) - npcEventScriptPackets(type, in, player, npc); - else if (type == EnumPacketServer.ScriptPlayerGet || type == EnumPacketServer.ScriptPlayerSave) - playerScriptPackets(type, in, player); - else if (type == EnumPacketServer.ScriptGlobalNPCGet || type == EnumPacketServer.ScriptGlobalNPCSave) - npcGlobalScriptPackets(type, in, player); - else if (type == EnumPacketServer.ScriptForgeGet || type == EnumPacketServer.ScriptForgeSave) - forgeScriptPackets(type, in, player); - else if (type == EnumPacketServer.ScriptItemDataGet || type == EnumPacketServer.ScriptItemDataSave) - itemScriptPackets(type, in, player); - else if (type == EnumPacketServer.ScriptBlockDataGet || type == EnumPacketServer.ScriptBlockDataSave) - blockScriptPackets(type, in, player); - else if (type == EnumPacketServer.ScriptGlobalGuiDataGet || type == EnumPacketServer.ScriptGlobalGuiDataSave) - getScriptsEnabled(type, in, player); - else if (item.getItem() == CustomItems.scripter) - scriptPackets(type, in, player, npc); - } - } - } } catch (Exception e) { LogWriter.error("Error with EnumPacketServer." + type, e); } } - private void getScriptsEnabled(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { - if (type == EnumPacketServer.ScriptGlobalGuiDataGet) { - NBTTagCompound compound = new NBTTagCompound(); - compound.setBoolean("ScriptsEnabled", ConfigScript.ScriptingEnabled); - compound.setBoolean("PlayerScriptsEnabled", ConfigScript.GlobalPlayerScripts); - compound.setBoolean("GlobalNPCScriptsEnabled", ConfigScript.GlobalNPCScripts); - compound.setBoolean("ForgeScriptsEnabled", ConfigScript.GlobalForgeScripts); - GuiDataPacket.sendGuiData(player, compound); - } - else if (type == EnumPacketServer.ScriptGlobalGuiDataSave) { - NBTTagCompound compound = ByteBufUtils.readNBT(buffer); - ConfigScript.ScriptingEnabled = compound.getBoolean("ScriptsEnabled"); - ConfigScript.GlobalPlayerScripts = compound.getBoolean("PlayerScriptsEnabled"); - ConfigScript.GlobalNPCScripts = compound.getBoolean("GlobalNPCScriptsEnabled"); - ConfigScript.GlobalForgeScripts = compound.getBoolean("ForgeScriptsEnabled"); - } - } - - private void scriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws Exception { - if(type == EnumPacketServer.ScriptDataSave){ - npc.script.readFromNBT(ByteBufUtils.readNBT(buffer)); - npc.updateAI = true; - npc.script.hasInited = false; - if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ - LogWriter.script(String.format("[%s] (Player) %s SAVED NPC %s (%s, %s, %s) [%s]", "SCRIPTER", player.getCommandSenderName(), npc.display.getName(), (int)npc.posX, (int)(npc).posY, (int)npc.posZ, npc.worldObj.getWorldInfo().getWorldName())); - } - } - else if(type == EnumPacketServer.ScriptDataGet){ - NBTTagCompound compound = npc.script.writeToNBT(new NBTTagCompound()); - compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); - GuiDataPacket.sendGuiData(player, compound); - } - } - - private void npcEventScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws Exception { - DataScript data = npc.script; - if(type == EnumPacketServer.EventScriptDataGet) { - PacketUtil.getScripts(data,buffer,player); - } else if(type == EnumPacketServer.EventScriptDataSave) { - PacketUtil.saveScripts(data,buffer,player); - npc.updateAI = true; - npc.script.hasInited = false; - if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ - LogWriter.script(String.format("[%s] (Player) %s SAVED NPC %s (%s, %s, %s) [%s]", "SCRIPTER", player.getCommandSenderName(), npc.display.getName(), (int)npc.posX, (int)(npc).posY, (int)npc.posZ, npc.worldObj.getWorldInfo().getWorldName())); - } - } - } - - private void playerScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws Exception { - PlayerDataScript data = ScriptController.Instance.playerScripts; - if(type == EnumPacketServer.ScriptPlayerGet) { - PacketUtil.getScripts(data,buffer,player); - } else if(type == EnumPacketServer.ScriptPlayerSave) { - int tab = buffer.getInt(buffer.readerIndex()); - PacketUtil.saveScripts(data,buffer,player); - ScriptController.Instance.lastPlayerUpdate = System.currentTimeMillis(); - if(tab == -1) - ScriptController.Instance.savePlayerScriptsSync(); - } - } - - private void forgeScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws Exception { - ForgeDataScript data = ScriptController.Instance.forgeScripts; - if (type == EnumPacketServer.ScriptForgeGet) { - PacketUtil.getScripts(data,buffer,player); - } else if (type == EnumPacketServer.ScriptForgeSave) { - int tab = buffer.getInt(buffer.readerIndex()); - PacketUtil.saveScripts(data,buffer,player); - ScriptController.Instance.lastForgeUpdate = System.currentTimeMillis(); - if(tab == -1) - ScriptController.Instance.saveForgeScriptsSync(); - } - } - - private void npcGlobalScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws Exception { - GlobalNPCDataScript data = ScriptController.Instance.globalNpcScripts; - if(type == EnumPacketServer.ScriptGlobalNPCGet) { - PacketUtil.getScripts(data,buffer,player); - } else if(type == EnumPacketServer.ScriptGlobalNPCSave) { - int tab = buffer.getInt(buffer.readerIndex()); - PacketUtil.saveScripts(data,buffer,player); - ScriptController.Instance.lastGlobalNpcUpdate = System.currentTimeMillis(); - if(tab == -1) - ScriptController.Instance.saveGlobalScriptsSync(); - } - } - - private void itemScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws Exception { - if (type == EnumPacketServer.ScriptItemDataGet) { - ScriptCustomItem iw = (ScriptCustomItem) NpcAPI.Instance().getIItemStack(player.getHeldItem()); - iw.loadScriptData(); - NBTTagCompound compound = iw.getMCNbt(); - compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); - GuiDataPacket.sendGuiData(player, compound); - } else if (type == EnumPacketServer.ScriptItemDataSave) { - if (!player.capabilities.isCreativeMode) { - return; - } - - NBTTagCompound compound = ByteBufUtils.readNBT(buffer); - ScriptCustomItem wrapper = (ScriptCustomItem) NpcAPI.Instance().getIItemStack(player.getHeldItem()); - wrapper.setMCNbt(compound); - wrapper.saveScriptData(); - wrapper.loaded = false; - wrapper.lastInited = -1; - player.sendContainerToPlayer(player.inventoryContainer); - } - } - - private void blockScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws Exception { - if (type == EnumPacketServer.ScriptBlockDataGet) { - TileEntity tile = player.worldObj.getTileEntity(buffer.readInt(), buffer.readInt(), buffer.readInt()); - if(!(tile instanceof TileScripted)) - return; - NBTTagCompound compound = ((TileScripted) tile).getNBT(new NBTTagCompound()); - compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); - GuiDataPacket.sendGuiData(player, compound); - } else if (type == EnumPacketServer.ScriptBlockDataSave) { - if (!player.capabilities.isCreativeMode) { - return; - } - TileEntity tile = player.worldObj.getTileEntity(buffer.readInt(), buffer.readInt(), buffer.readInt()); - if(!(tile instanceof TileScripted)) - return; - TileScripted script = (TileScripted) tile; - script.setNBT(ByteBufUtils.readNBT(buffer)); - script.lastInited = -1; - } - } - private void warn(EntityPlayer player, String warning){ MinecraftServer.getServer().logWarning(player.getCommandSenderName() + ": " + warning); } diff --git a/src/main/java/noppes/npcs/client/Client.java b/src/main/java/noppes/npcs/client/Client.java index c2fa8df37..2012b38b0 100644 --- a/src/main/java/noppes/npcs/client/Client.java +++ b/src/main/java/noppes/npcs/client/Client.java @@ -5,7 +5,7 @@ import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import noppes.npcs.CustomNpcs; import noppes.npcs.Server; -import noppes.npcs.constants.EnumPacketServer; + import java.io.IOException; diff --git a/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java b/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java index bc2d0e325..290385537 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java +++ b/src/main/java/noppes/npcs/client/gui/GuiBorderBlock.java @@ -6,9 +6,8 @@ import kamkeel.npcs.network.packets.request.TileEntitySavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.blocks.tiles.TileBorder; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; public class GuiBorderBlock extends GuiNPCInterface implements IGuiData{ diff --git a/src/main/java/noppes/npcs/client/gui/GuiMerchantAdd.java b/src/main/java/noppes/npcs/client/gui/GuiMerchantAdd.java index d3a58146d..9979ecf1f 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiMerchantAdd.java +++ b/src/main/java/noppes/npcs/client/gui/GuiMerchantAdd.java @@ -18,10 +18,10 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.village.MerchantRecipe; import net.minecraft.village.MerchantRecipeList; import noppes.npcs.ServerEventsHandler; -import noppes.npcs.client.Client; + import noppes.npcs.client.CustomNpcResourceListener; import noppes.npcs.client.gui.util.GuiNpcButton; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.containers.ContainerMerchantAdd; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; diff --git a/src/main/java/noppes/npcs/client/gui/GuiNPCFactionSelection.java b/src/main/java/noppes/npcs/client/gui/GuiNPCFactionSelection.java index 2bc7165a5..b3ba50227 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNPCFactionSelection.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNPCFactionSelection.java @@ -4,10 +4,10 @@ import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.faction.FactionsGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Quest; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/GuiNPCLinesEdit.java b/src/main/java/noppes/npcs/client/gui/GuiNPCLinesEdit.java index 9bf1a7ab2..ea0bffc3e 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNPCLinesEdit.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNPCLinesEdit.java @@ -5,10 +5,10 @@ import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedGetPacket; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.select.GuiSoundSelection; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Line; import noppes.npcs.controllers.data.Lines; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/GuiNPCTransportCategoryEdit.java b/src/main/java/noppes/npcs/client/gui/GuiNPCTransportCategoryEdit.java index 4683d67f1..c25e59dbf 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNPCTransportCategoryEdit.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNPCTransportCategoryEdit.java @@ -5,13 +5,13 @@ import kamkeel.npcs.network.packets.request.transport.TransportCategoriesGetPack import kamkeel.npcs.network.packets.request.transport.TransportCategorySavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.GuiNpcLabel; import noppes.npcs.client.gui.util.GuiNpcTextField; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; public class GuiNPCTransportCategoryEdit extends GuiNPCInterface diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java b/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java index fc5cfed7b..f2aa248b2 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java @@ -6,10 +6,10 @@ import kamkeel.npcs.network.packets.request.feather.DimensionTeleportPacket; import kamkeel.npcs.network.packets.request.npc.RemoteDeletePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import java.util.HashMap; import java.util.Vector; diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index f6ae0de13..0d00d30f3 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -11,11 +11,11 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.StatCollector; import net.minecraft.world.World; -import noppes.npcs.client.Client; + import noppes.npcs.client.controllers.ClientCloneController; import noppes.npcs.client.controllers.ClientTagMapController; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Tag; import noppes.npcs.controllers.data.TagMap; diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java index f817eb30b..4215e59d3 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java @@ -14,10 +14,10 @@ import net.minecraft.entity.EntityList; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; -import noppes.npcs.client.Client; + import noppes.npcs.client.controllers.ClientCloneController; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.TagController; import noppes.npcs.controllers.data.Tag; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java index b8e7b9a5a..2384e8c59 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java @@ -12,10 +12,10 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagDouble; import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; -import noppes.npcs.client.Client; + import noppes.npcs.client.controllers.ClientCloneController; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import java.lang.reflect.Modifier; import java.util.ArrayList; diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java index b347da7a1..b0b861166 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java @@ -6,10 +6,10 @@ import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagDouble; import net.minecraft.nbt.NBTTagList; -import noppes.npcs.client.Client; + import noppes.npcs.client.controllers.ClientCloneController; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcPather.java b/src/main/java/noppes/npcs/client/gui/GuiNpcPather.java index de27889a3..1421a17b2 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcPather.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcPather.java @@ -7,12 +7,12 @@ import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.DataAI; import noppes.npcs.NBTTags; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.GuiCustomScroll; import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.IGuiData; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import java.util.ArrayList; diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcRedstoneBlock.java b/src/main/java/noppes/npcs/client/gui/GuiNpcRedstoneBlock.java index 283362c41..114af0fb6 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcRedstoneBlock.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcRedstoneBlock.java @@ -6,12 +6,12 @@ import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; import noppes.npcs.blocks.tiles.TileRedstoneBlock; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.GuiNpcLabel; import noppes.npcs.client.gui.util.GuiNpcTextField; -import noppes.npcs.constants.EnumPacketServer; + public class GuiNpcRedstoneBlock extends GuiNPCInterface{ diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java b/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java index d4d745d01..19133cbca 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java @@ -7,10 +7,10 @@ import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; import net.minecraft.entity.Entity; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import java.util.HashMap; diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcWaypoint.java b/src/main/java/noppes/npcs/client/gui/GuiNpcWaypoint.java index a260cd8ca..c8fdc959d 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcWaypoint.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcWaypoint.java @@ -5,12 +5,12 @@ import kamkeel.npcs.network.packets.request.TileEntitySavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.blocks.tiles.TileWaypoint; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.GuiNpcLabel; import noppes.npcs.client.gui.util.GuiNpcTextField; -import noppes.npcs.constants.EnumPacketServer; + public class GuiNpcWaypoint extends GuiNPCInterface{ diff --git a/src/main/java/noppes/npcs/client/gui/GuiScript.java b/src/main/java/noppes/npcs/client/gui/GuiScript.java index 8169cdcd3..cd444d038 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiScript.java +++ b/src/main/java/noppes/npcs/client/gui/GuiScript.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.packets.request.script.NPCScriptPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiConfirmOpenLink; import net.minecraft.client.gui.GuiYesNo; @@ -9,11 +10,11 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.server.MinecraftServer; import net.minecraft.util.StatCollector; import noppes.npcs.NoppesStringUtils; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.script.GuiNPCEventScripts; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.ScriptContainer; import noppes.npcs.controllers.ScriptController; import noppes.npcs.controllers.data.DataScript; @@ -38,7 +39,7 @@ public class GuiScript extends GuiNPCInterface implements IGuiData, GuiYesNoCall xSize = 420; setBackground("menubg.png"); - Client.sendData(EnumPacketServer.ScriptDataGet); + NPCScriptPacket.Get(); } public void initGui() { @@ -267,7 +268,7 @@ public class GuiScript extends GuiNPCInterface implements IGuiData, GuiYesNoCall @Override public void save() { setScript(); - Client.sendData(EnumPacketServer.ScriptDataSave, script.writeToNBT(new NBTTagCompound())); + NPCScriptPacket.Save(script.writeToNBT(new NBTTagCompound())); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiMailmanSendSetup.java b/src/main/java/noppes/npcs/client/gui/SubGuiMailmanSendSetup.java index 9191b884d..0dadea474 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiMailmanSendSetup.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiMailmanSendSetup.java @@ -5,11 +5,11 @@ import kamkeel.npcs.network.packets.request.MailOpenSetupPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.player.GuiMailmanWrite; import noppes.npcs.client.gui.select.GuiQuestSelection; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.containers.ContainerMail; import noppes.npcs.controllers.data.PlayerMail; diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailability.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailability.java index 7cb69f471..6d4b5bc4a 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailability.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailability.java @@ -3,12 +3,12 @@ package noppes.npcs.client.gui; import kamkeel.npcs.network.packets.request.faction.FactionGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumAvailabilityFactionType; import noppes.npcs.constants.EnumDayTime; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Availability; import noppes.npcs.controllers.data.Faction; diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityDialog.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityDialog.java index f13ba86df..35ee2158f 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityDialog.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityDialog.java @@ -3,11 +3,11 @@ package noppes.npcs.client.gui; import kamkeel.npcs.network.packets.request.dialog.DialogGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.select.GuiDialogSelection; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumAvailabilityDialog; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Availability; import noppes.npcs.controllers.data.Dialog; diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java index 6d776f1c1..c993936db 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java @@ -3,11 +3,11 @@ package noppes.npcs.client.gui; import kamkeel.npcs.network.packets.request.quest.QuestGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.select.GuiQuestSelection; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumAvailabilityQuest; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Availability; import noppes.npcs.controllers.data.Quest; diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialog.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialog.java index f82206cd4..0e09356c3 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialog.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialog.java @@ -4,7 +4,7 @@ import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.dialog.DialogSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.EntityUtil; import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.global.GuiNPCManageDialogs; @@ -12,7 +12,7 @@ import noppes.npcs.client.gui.player.GuiDialogInteract; import noppes.npcs.client.gui.select.GuiQuestSelection; import noppes.npcs.client.gui.select.GuiSoundSelection; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Dialog; import noppes.npcs.controllers.data.PlayerMail; import noppes.npcs.entity.EntityDialogNpc; diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogOption.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogOption.java index 1df85129d..f5565e43f 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogOption.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogOption.java @@ -3,11 +3,11 @@ package noppes.npcs.client.gui; import kamkeel.npcs.network.packets.request.dialog.DialogGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.select.GuiDialogSelection; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumOptionType; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Dialog; import noppes.npcs.controllers.data.DialogOption; diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java index e81d28309..bd7092d50 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java @@ -4,11 +4,11 @@ import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.dialog.DialogSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.util.*; import noppes.npcs.config.ConfigMain; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Dialog; import noppes.npcs.controllers.data.DialogImage; diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDimensions.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDimensions.java index 013cfee08..f90cc61b1 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDimensions.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDimensions.java @@ -3,9 +3,9 @@ package noppes.npcs.client.gui; import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.DimensionsGetPacket; import net.minecraft.client.gui.GuiButton; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.SpawnData; import java.util.*; diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcFactionOptions.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcFactionOptions.java index 05e43261f..d3cce58c2 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcFactionOptions.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcFactionOptions.java @@ -4,9 +4,9 @@ import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.faction.FactionsGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.FactionOptions; import java.util.HashMap; diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java index 9e8900af3..8b1b70319 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcQuest.java @@ -5,7 +5,7 @@ import kamkeel.npcs.network.packets.request.quest.QuestOpenGuiPacket; import kamkeel.npcs.network.packets.request.quest.QuestSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.global.GuiNPCManageQuest; import noppes.npcs.client.gui.questtypes.GuiNpcQuestTypeDialog; import noppes.npcs.client.gui.questtypes.GuiNpcQuestTypeKill; diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAdvancedLinkedNpc.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAdvancedLinkedNpc.java index f739440f1..f9d6a1bba 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAdvancedLinkedNpc.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAdvancedLinkedNpc.java @@ -5,9 +5,9 @@ import kamkeel.npcs.network.packets.request.linked.LinkedGetAllPacket; import kamkeel.npcs.network.packets.request.linked.LinkedSetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import java.util.ArrayList; diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCDialogNpcOptions.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCDialogNpcOptions.java index 2818edbe1..88dd27c92 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCDialogNpcOptions.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCDialogNpcOptions.java @@ -7,10 +7,10 @@ import kamkeel.npcs.network.packets.request.dialog.DialogNpcSetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.select.GuiDialogSelection; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.DialogOption; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java index 771d9f2ae..e7aab677e 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCFactionSetup.java @@ -6,10 +6,10 @@ import kamkeel.npcs.network.packets.request.faction.FactionsGetPacket; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.SubGuiNpcFactionOptions; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import java.util.HashMap; diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCLinesMenu.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCLinesMenu.java index cbc4d384f..92d5c49dd 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCLinesMenu.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCLinesMenu.java @@ -4,14 +4,14 @@ import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.GuiNPCLinesEdit; import noppes.npcs.client.gui.util.GuiNPCInterface2; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.GuiNpcButtonYesNo; import noppes.npcs.client.gui.util.GuiNpcLabel; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; public class GuiNPCLinesMenu extends GuiNPCInterface2 { diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCMarks.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCMarks.java index da74e67c5..bad32b76b 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCMarks.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCMarks.java @@ -4,11 +4,11 @@ import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedGetPacket; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedMarkDataPacket; import net.minecraft.client.gui.GuiButton; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.SubGuiColorSelector; import noppes.npcs.client.gui.SubGuiNpcAvailability; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.constants.MarkType; import noppes.npcs.controllers.data.MarkData; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCNightSetup.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCNightSetup.java index fe8b57774..cbe94b524 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCNightSetup.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCNightSetup.java @@ -6,12 +6,12 @@ import kamkeel.npcs.network.packets.request.transform.TransformLoadPacket; import kamkeel.npcs.network.packets.request.transform.TransformSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.GuiNPCInterface2; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.GuiNpcLabel; import noppes.npcs.client.gui.util.IGuiData; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.DataTransform; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCSoundsMenu.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCSoundsMenu.java index d397c6354..efd0e5d0b 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCSoundsMenu.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCSoundsMenu.java @@ -4,10 +4,10 @@ import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAdvancedSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.select.GuiSoundSelection; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; public class GuiNPCSoundsMenu extends GuiNPCInterface2 implements ITextfieldListener, ISubGuiListener diff --git a/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java b/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java index 0bbb7ea97..6bf025ae3 100644 --- a/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java +++ b/src/main/java/noppes/npcs/client/gui/custom/GuiCustom.java @@ -25,7 +25,7 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import noppes.npcs.api.gui.ICustomGuiComponent; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.custom.components.*; import noppes.npcs.client.gui.custom.interfaces.IClickListener; import noppes.npcs.client.gui.custom.interfaces.IDataHolder; @@ -33,7 +33,7 @@ import noppes.npcs.client.gui.custom.interfaces.IGuiComponent; import noppes.npcs.client.gui.util.GuiCustomScroll; import noppes.npcs.client.gui.util.ICustomScrollListener; import noppes.npcs.client.gui.util.IGuiData; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.containers.ContainerCustomGui; import noppes.npcs.scripted.gui.*; import org.lwjgl.input.Keyboard; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCEditAnimation.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCEditAnimation.java index ce67c1662..7117d1816 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCEditAnimation.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCEditAnimation.java @@ -4,13 +4,13 @@ import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.animation.AnimationSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.SubGuiAnimationFrame; import noppes.npcs.client.gui.SubGuiAnimationOptions; import noppes.npcs.client.gui.SubGuiColorSelector; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumAnimationPart; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Animation; import noppes.npcs.controllers.data.AnimationData; import noppes.npcs.controllers.data.Frame; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageAnimations.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageAnimations.java index ddb9989f9..e9d310122 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageAnimations.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageAnimations.java @@ -10,10 +10,10 @@ import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.*; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageBanks.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageBanks.java index d81be0183..ec0f581b1 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageBanks.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageBanks.java @@ -7,10 +7,10 @@ import kamkeel.npcs.network.packets.request.bank.BankSavePacket; import kamkeel.npcs.network.packets.request.bank.BanksGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.CustomNpcResourceListener; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.containers.ContainerManageBanks; import noppes.npcs.controllers.data.Bank; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java index f5df87c17..686c6326e 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java @@ -7,12 +7,12 @@ import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.SubGuiEditText; import noppes.npcs.client.gui.SubGuiNpcDialog; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Dialog; import noppes.npcs.controllers.data.DialogCategory; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java index b73237e7a..c2cc01330 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageFactions.java @@ -10,12 +10,12 @@ import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.SubGuiColorSelector; import noppes.npcs.client.gui.SubGuiNpcFactionPoints; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Faction; import noppes.npcs.controllers.data.Quest; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinkedNpc.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinkedNpc.java index 90e5a4495..2e3cd06f8 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinkedNpc.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinkedNpc.java @@ -6,10 +6,10 @@ import kamkeel.npcs.network.packets.request.linked.LinkedGetAllPacket; import kamkeel.npcs.network.packets.request.linked.LinkedRemovePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.SubGuiEditText; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import java.util.ArrayList; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java index de8d315fd..ecc020188 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java @@ -8,12 +8,12 @@ import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.SubGuiEditText; import noppes.npcs.client.gui.SubGuiNpcQuest; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Dialog; import noppes.npcs.controllers.data.Quest; import noppes.npcs.controllers.data.QuestCategory; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java index fe3d959a8..1d9bc3e13 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java @@ -7,10 +7,10 @@ import kamkeel.npcs.network.packets.request.tags.TagRemovePacket; import kamkeel.npcs.network.packets.request.tags.TagSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.SubGuiColorSelector; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Tag; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java index 5948b91d8..61fc8143c 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java @@ -6,7 +6,7 @@ import kamkeel.npcs.network.packets.request.transport.TransportCategoryRemovePac import kamkeel.npcs.network.packets.request.transport.TransportRemovePacket; import kamkeel.npcs.network.packets.request.transport.TransportsGetPacket; import net.minecraft.client.gui.GuiButton; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.GuiNPCTransportCategoryEdit; import noppes.npcs.client.gui.mainmenu.GuiNPCGlobalMainMenu; @@ -14,7 +14,7 @@ import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.client.gui.util.GuiNPCStringSlot; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.IScrollData; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import java.util.HashMap; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManagePlayerData.java b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManagePlayerData.java index d83327183..4b505c9d3 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManagePlayerData.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManagePlayerData.java @@ -7,9 +7,9 @@ import kamkeel.npcs.network.packets.request.playerdata.PlayerDataRemovePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.constants.EnumPlayerData; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java index d11d825b4..6fc87a9d0 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java @@ -8,11 +8,11 @@ import kamkeel.npcs.network.packets.request.recipe.RecipesGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumGuiType; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.containers.ContainerManageRecipes; import noppes.npcs.controllers.data.RecipeCarpentry; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNpcNaturalSpawns.java b/src/main/java/noppes/npcs/client/gui/global/GuiNpcNaturalSpawns.java index 579f6ce40..bd3b4e9e5 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNpcNaturalSpawns.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNpcNaturalSpawns.java @@ -8,13 +8,13 @@ import kamkeel.npcs.network.packets.request.naturalspawns.NaturalSpawnSavePacket import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.GuiNpcMobSpawnerSelector; import noppes.npcs.client.gui.SubGuiNpcBiomes; import noppes.npcs.client.gui.SubGuiNpcDimensions; import noppes.npcs.client.gui.SubGuiSpawningOptions; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.SpawnData; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCInv.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCInv.java index f2ae90d16..d4b033b4d 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCInv.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCInv.java @@ -10,9 +10,9 @@ import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.inventory.Slot; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.containers.ContainerNPCInv; import noppes.npcs.entity.EntityNPCInterface; import org.lwjgl.opengl.GL11; diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java index 918867df4..bf3fefef4 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java @@ -6,12 +6,12 @@ import kamkeel.npcs.network.packets.request.mainmenu.MainmenuAISavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.DataAI; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.SubGuiNpcMovement; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumCombatPolicy; import noppes.npcs.constants.EnumNavType; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; public class GuiNpcAI extends GuiNPCInterface2 implements ITextfieldListener, IGuiData{ diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java index 687e80538..4a4eae046 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAdvanced.java @@ -8,7 +8,7 @@ import kamkeel.npcs.network.packets.request.role.RoleGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NoppesStringUtils; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.advanced.*; import noppes.npcs.client.gui.roles.*; @@ -17,7 +17,7 @@ import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.IGuiData; import noppes.npcs.constants.EnumGuiType; import noppes.npcs.constants.EnumJobType; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.constants.EnumRoleType; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java index ee7dc49aa..6c138b25c 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java @@ -8,14 +8,14 @@ import kamkeel.npcs.network.packets.request.mainmenu.MainmenuDisplaySavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.DataDisplay; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.*; import noppes.npcs.client.gui.model.GuiCreationScreen; import noppes.npcs.client.gui.select.GuiTextureSelection; import noppes.npcs.client.gui.util.*; import noppes.npcs.config.ConfigMain; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.SkinOverlay; import noppes.npcs.entity.EntityCustomNpc; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java index 8e24300ac..8fc1d567c 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcStats.java @@ -8,10 +8,10 @@ import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.DataStats; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.*; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; public class GuiNpcStats extends GuiNPCInterface2 implements ITextfieldListener, IGuiData{ diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java index 823de1980..590b8d4ea 100644 --- a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java +++ b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java @@ -16,10 +16,10 @@ import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagByte; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.*; import noppes.npcs.compat.PixelmonHelper; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.*; import java.lang.reflect.Method; diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java index 26def4100..07af473b1 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java @@ -14,11 +14,11 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import noppes.npcs.NoppesUtilPlayer; import noppes.npcs.QuestLogData; -import noppes.npcs.client.Client; + import noppes.npcs.client.ClientCacheHandler; import noppes.npcs.client.CustomNpcResourceListener; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.constants.EnumPlayerPacket; import noppes.npcs.controllers.data.Party; import noppes.npcs.controllers.data.Quest; diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java index cd6c8c381..1ab495627 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java @@ -17,7 +17,7 @@ import noppes.npcs.NoppesUtilPlayer; import noppes.npcs.QuestLogData; import noppes.npcs.client.*; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.constants.EnumPlayerPacket; import noppes.npcs.controllers.data.Party; import noppes.npcs.util.ValueUtil; diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java index da692acab..f85d95c00 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java @@ -8,14 +8,14 @@ import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; + import noppes.npcs.client.ClientCacheHandler; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.GuiNpcLabel; import noppes.npcs.client.gui.util.GuiNpcTextField; import noppes.npcs.client.gui.util.ITextfieldListener; import noppes.npcs.config.ConfigClient; -import noppes.npcs.constants.EnumPacketServer; + import org.lwjgl.opengl.GL11; import tconstruct.client.tabs.AbstractTab; diff --git a/src/main/java/noppes/npcs/client/gui/questtypes/GuiNpcQuestTypeDialog.java b/src/main/java/noppes/npcs/client/gui/questtypes/GuiNpcQuestTypeDialog.java index d4613bb26..9458c5095 100644 --- a/src/main/java/noppes/npcs/client/gui/questtypes/GuiNpcQuestTypeDialog.java +++ b/src/main/java/noppes/npcs/client/gui/questtypes/GuiNpcQuestTypeDialog.java @@ -5,13 +5,13 @@ import kamkeel.npcs.network.packets.request.quest.QuestDialogGetTitlePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.select.GuiDialogSelection; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.GuiSelectionListener; import noppes.npcs.client.gui.util.IGuiData; import noppes.npcs.client.gui.util.SubGuiInterface; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Quest; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.quests.QuestDialog; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java index 0f61d97e4..615368344 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBankSetup.java @@ -6,12 +6,12 @@ import kamkeel.npcs.network.packets.request.bank.BanksGetPacket; import kamkeel.npcs.network.packets.request.role.RoleSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.GuiCustomScroll; import noppes.npcs.client.gui.util.GuiNPCInterface2; import noppes.npcs.client.gui.util.ICustomScrollListener; import noppes.npcs.client.gui.util.IScrollData; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.Bank; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.RoleBank; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBard.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBard.java index 6160861cb..319d3bfcf 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBard.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcBard.java @@ -4,11 +4,11 @@ import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.controllers.MusicController; import noppes.npcs.client.gui.select.GuiSoundSelection; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.JobBard; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java index 615eacaf3..af4c4de5e 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java @@ -5,12 +5,12 @@ import kamkeel.npcs.network.packets.request.role.RoleCompanionUpdatePacket; import kamkeel.npcs.network.packets.request.role.RoleSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.player.companion.GuiNpcCompanionTalents.GuiTalent; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumCompanionStage; import noppes.npcs.constants.EnumCompanionTalent; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.RoleCompanion; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcConversation.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcConversation.java index 63ac397a1..1ee14f2f4 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcConversation.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcConversation.java @@ -3,11 +3,11 @@ package noppes.npcs.client.gui.roles; import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.SubGuiNpcAvailability; import noppes.npcs.client.gui.select.GuiQuestSelection; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.JobConversation; import noppes.npcs.roles.JobConversation.ConversationLine; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerJob.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerJob.java index 6e4610e30..0223de066 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerJob.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerJob.java @@ -2,9 +2,9 @@ package noppes.npcs.client.gui.roles; import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.JobFollower; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerSetup.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerSetup.java index b346619dd..bf40f5cf4 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerSetup.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcFollowerSetup.java @@ -6,9 +6,9 @@ import net.minecraft.client.gui.GuiButton; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.containers.ContainerNPCFollowerSetup; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.RoleFollower; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcGuard.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcGuard.java index 956764479..bb2a2bdf9 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcGuard.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcGuard.java @@ -5,12 +5,12 @@ import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.GuiCustomScroll; import noppes.npcs.client.gui.util.GuiNPCInterface2; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.GuiNpcLabel; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.JobGuard; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcHealer.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcHealer.java index 6f57d3693..25ac2077e 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcHealer.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcHealer.java @@ -2,11 +2,11 @@ package noppes.npcs.client.gui.roles; import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.GuiNPCInterface2; import noppes.npcs.client.gui.util.GuiNpcLabel; import noppes.npcs.client.gui.util.GuiNpcTextField; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.JobHealer; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcItemGiver.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcItemGiver.java index 166b41aee..15cf67340 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcItemGiver.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcItemGiver.java @@ -3,13 +3,13 @@ package noppes.npcs.client.gui.roles; import kamkeel.npcs.network.packets.request.jobs.JobSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.SubGuiNpcAvailability; import noppes.npcs.client.gui.util.GuiContainerNPCInterface2; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.GuiNpcLabel; import noppes.npcs.client.gui.util.GuiNpcTextField; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.containers.ContainerNpcItemGiver; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.JobItemGiver; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcSpawner.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcSpawner.java index aa932cb14..1afbedf74 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcSpawner.java @@ -7,10 +7,10 @@ import kamkeel.npcs.network.packets.request.jobs.JobSpawnerRemovePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.GuiNpcMobSpawnerSelector; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.JobSpawner; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java index 7d1c02bc2..389e52850 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTraderSetup.java @@ -7,10 +7,10 @@ import kamkeel.npcs.network.packets.request.role.RoleSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; -import noppes.npcs.client.Client; + import noppes.npcs.client.CustomNpcResourceListener; import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.containers.ContainerNPCTraderSetup; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.RoleTrader; diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTransporter.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTransporter.java index 7608318d4..6bf2c3f62 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTransporter.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcTransporter.java @@ -6,9 +6,9 @@ import kamkeel.npcs.network.packets.request.transport.TransportGetLocationPacket import kamkeel.npcs.network.packets.request.transport.TransportSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.*; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.controllers.data.TransportLocation; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiNPCEventScripts.java b/src/main/java/noppes/npcs/client/gui/script/GuiNPCEventScripts.java index 47560b2fa..2a2420a83 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiNPCEventScripts.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiNPCEventScripts.java @@ -1,9 +1,8 @@ package noppes.npcs.client.gui.script; +import kamkeel.npcs.network.packets.request.script.EventScriptPacket; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NBTTags; -import noppes.npcs.client.Client; -import noppes.npcs.constants.EnumPacketServer; import noppes.npcs.controllers.ScriptContainer; import noppes.npcs.controllers.data.DataScript; import noppes.npcs.entity.EntityNPCInterface; @@ -36,7 +35,7 @@ public class GuiNPCEventScripts extends GuiScriptInterface { this.script = new DataScript(npc); this.handler = this.script; - Client.sendData(EnumPacketServer.EventScriptDataGet); + EventScriptPacket.Get(); } public void setGuiData(NBTTagCompound compound) { @@ -63,12 +62,12 @@ public class GuiNPCEventScripts extends GuiScriptInterface { List containers = this.script.getScripts(); for (int i = 0; i < containers.size(); i++) { ScriptContainer container = containers.get(i); - Client.sendData(EnumPacketServer.EventScriptDataSave, i, containers.size(), container.writeToNBT(new NBTTagCompound())); + EventScriptPacket.Save(i, containers.size(), container.writeToNBT(new NBTTagCompound())); } NBTTagCompound scriptData = new NBTTagCompound(); scriptData.setString("ScriptLanguage", this.script.getLanguage()); scriptData.setBoolean("ScriptEnabled", this.script.getEnabled()); scriptData.setTag("ScriptConsole", NBTTags.NBTLongStringMap(this.script.getConsoleText())); - Client.sendData(EnumPacketServer.EventScriptDataSave, -1, containers.size(), scriptData); + EventScriptPacket.Save(-1, containers.size(), scriptData); } } diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptAllNPCs.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptAllNPCs.java index 0002bc955..908d1b75a 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptAllNPCs.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptAllNPCs.java @@ -1,9 +1,10 @@ package noppes.npcs.client.gui.script; +import kamkeel.npcs.network.packets.request.script.GlobalNPCScriptPacket; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NBTTags; -import noppes.npcs.client.Client; -import noppes.npcs.constants.EnumPacketServer; + + import noppes.npcs.controllers.ScriptContainer; import noppes.npcs.controllers.data.GlobalNPCDataScript; @@ -32,7 +33,7 @@ public class GuiScriptAllNPCs extends GuiScriptInterface { hookList.add("projectileImpact"); this.handler = this.script; - Client.sendData(EnumPacketServer.ScriptGlobalNPCGet); + GlobalNPCScriptPacket.Get(); } public void setGuiData(NBTTagCompound compound) { @@ -59,12 +60,12 @@ public class GuiScriptAllNPCs extends GuiScriptInterface { List containers = this.script.getScripts(); for (int i = 0; i < containers.size(); i++) { ScriptContainer container = containers.get(i); - Client.sendData(EnumPacketServer.ScriptGlobalNPCSave, i, containers.size(), container.writeToNBT(new NBTTagCompound())); + GlobalNPCScriptPacket.Save(i, containers.size(), container.writeToNBT(new NBTTagCompound())); } NBTTagCompound scriptData = new NBTTagCompound(); scriptData.setString("ScriptLanguage", this.script.getLanguage()); scriptData.setBoolean("ScriptEnabled", this.script.getEnabled()); scriptData.setTag("ScriptConsole", NBTTags.NBTLongStringMap(this.script.getConsoleText())); - Client.sendData(EnumPacketServer.ScriptGlobalNPCSave, -1, containers.size(), scriptData); + GlobalNPCScriptPacket.Save(-1, containers.size(), scriptData); } } diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptBlock.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptBlock.java index 5a80b64af..d9cf8ff6c 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptBlock.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptBlock.java @@ -1,9 +1,10 @@ package noppes.npcs.client.gui.script; +import kamkeel.npcs.network.packets.request.script.BlockScriptPacket; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.blocks.tiles.TileScripted; -import noppes.npcs.client.Client; -import noppes.npcs.constants.EnumPacketServer; + + public class GuiScriptBlock extends GuiScriptInterface { private TileScripted tileScripted; @@ -24,7 +25,7 @@ public class GuiScriptBlock extends GuiScriptInterface { hookList.add("timer"); this.handler = this.tileScripted = (TileScripted) player.worldObj.getTileEntity(x, y, z); - Client.sendData(EnumPacketServer.ScriptBlockDataGet, tileScripted.xCoord, tileScripted.yCoord, tileScripted.zCoord); + BlockScriptPacket.Get(tileScripted.xCoord, tileScripted.yCoord, tileScripted.zCoord); } public void setGuiData(NBTTagCompound compound) { @@ -34,6 +35,6 @@ public class GuiScriptBlock extends GuiScriptInterface { public void save() { super.save(); - Client.sendData(EnumPacketServer.ScriptBlockDataSave, tileScripted.xCoord, tileScripted.yCoord, tileScripted.zCoord, this.tileScripted.getNBT(new NBTTagCompound())); + BlockScriptPacket.Save(tileScripted.xCoord, tileScripted.yCoord, tileScripted.zCoord, this.tileScripted.getNBT(new NBTTagCompound())); } -} \ No newline at end of file +} diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptForge.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptForge.java index dd84cacea..7d0ec5aee 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptForge.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptForge.java @@ -4,6 +4,7 @@ import com.google.common.reflect.ClassPath; import cpw.mods.fml.common.eventhandler.Event; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.network.FMLNetworkEvent; +import kamkeel.npcs.network.packets.request.script.ForgeScriptPacket; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.event.entity.EntityEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; @@ -12,8 +13,8 @@ import net.minecraftforge.event.world.ChunkEvent; import net.minecraftforge.event.world.ChunkWatchEvent; import net.minecraftforge.event.world.WorldEvent; import noppes.npcs.NBTTags; -import noppes.npcs.client.Client; -import noppes.npcs.constants.EnumPacketServer; + + import noppes.npcs.controllers.ScriptContainer; import noppes.npcs.controllers.data.ForgeDataScript; import org.apache.commons.lang3.StringUtils; @@ -62,7 +63,7 @@ public class GuiScriptForge extends GuiScriptInterface { hookList.add("onCNPCNaturalSpawn"); this.handler = this.script; - Client.sendData(EnumPacketServer.ScriptForgeGet); + ForgeScriptPacket.Get(); } public void setGuiData(NBTTagCompound compound) { @@ -89,12 +90,12 @@ public class GuiScriptForge extends GuiScriptInterface { List containers = this.script.getScripts(); for (int i = 0; i < containers.size(); i++) { ScriptContainer container = containers.get(i); - Client.sendData(EnumPacketServer.ScriptForgeSave, i, containers.size(), container.writeToNBT(new NBTTagCompound())); + ForgeScriptPacket.Save(i, containers.size(), container.writeToNBT(new NBTTagCompound())); } NBTTagCompound scriptData = new NBTTagCompound(); scriptData.setString("ScriptLanguage", this.script.getLanguage()); scriptData.setBoolean("ScriptEnabled", this.script.getEnabled()); scriptData.setTag("ScriptConsole", NBTTags.NBTLongStringMap(this.script.getConsoleText())); - Client.sendData(EnumPacketServer.ScriptForgeSave, -1, containers.size(), scriptData); + ForgeScriptPacket.Save(-1, containers.size(), scriptData); } } diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptGlobal.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptGlobal.java index 210806e7a..234c9b893 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptGlobal.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptGlobal.java @@ -1,14 +1,15 @@ package noppes.npcs.client.gui.script; +import kamkeel.npcs.network.packets.request.script.ScriptInfoPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; -import noppes.npcs.client.Client; + import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.IGuiData; -import noppes.npcs.constants.EnumPacketServer; + import org.lwjgl.opengl.GL11; import java.util.HashMap; @@ -35,7 +36,7 @@ public class GuiScriptGlobal extends GuiNPCInterface implements IGuiData { GuiNpcButton npcButton = new GuiNpcButton(2, this.guiLeft + 38, this.guiTop + 80, 100, 20, "All NPCs"); npcButton.setEnabled(false); this.addButton(npcButton); - Client.sendData(EnumPacketServer.ScriptGlobalGuiDataGet, new Object[0]); + ScriptInfoPacket.Get(); } public void setGuiData(NBTTagCompound compound) { diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java index 395497a77..7100b0b33 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java @@ -1,10 +1,11 @@ package noppes.npcs.client.gui.script; +import kamkeel.npcs.network.packets.request.script.ItemScriptPacket; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomItems; -import noppes.npcs.client.Client; -import noppes.npcs.constants.EnumPacketServer; + + import noppes.npcs.scripted.item.ScriptCustomItem; public class GuiScriptItem extends GuiScriptInterface { @@ -25,7 +26,7 @@ public class GuiScriptItem extends GuiScriptInterface { hookList.add("finishItem"); this.handler = this.item = new ScriptCustomItem(new ItemStack(CustomItems.scripted_item)); - Client.sendData(EnumPacketServer.ScriptItemDataGet, new Object[0]); + ItemScriptPacket.Get(); } public void setGuiData(NBTTagCompound compound) { @@ -36,6 +37,6 @@ public class GuiScriptItem extends GuiScriptInterface { public void save() { super.save(); - Client.sendData(EnumPacketServer.ScriptItemDataSave, new Object[]{this.item.getMCNbt()}); + ItemScriptPacket.Save(this.item.getMCNbt()); } } diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptPlayers.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptPlayers.java index 3f2774fe3..d047cad73 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptPlayers.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptPlayers.java @@ -1,10 +1,11 @@ package noppes.npcs.client.gui.script; +import kamkeel.npcs.network.packets.request.script.PlayerScriptPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NBTTags; -import noppes.npcs.client.Client; -import noppes.npcs.constants.EnumPacketServer; + + import noppes.npcs.controllers.ScriptContainer; import noppes.npcs.controllers.data.PlayerDataScript; @@ -75,7 +76,7 @@ public class GuiScriptPlayers extends GuiScriptInterface { hookList.add("partyDisband"); this.handler = this.script; - Client.sendData(EnumPacketServer.ScriptPlayerGet); + PlayerScriptPacket.Get(); } public void setGuiData(NBTTagCompound compound) { @@ -102,12 +103,12 @@ public class GuiScriptPlayers extends GuiScriptInterface { List containers = this.script.getScripts(); for (int i = 0; i < containers.size(); i++) { ScriptContainer container = containers.get(i); - Client.sendData(EnumPacketServer.ScriptPlayerSave, i, containers.size(), container.writeToNBT(new NBTTagCompound())); + PlayerScriptPacket.Save(i, containers.size(), container.writeToNBT(new NBTTagCompound())); } NBTTagCompound scriptData = new NBTTagCompound(); scriptData.setString("ScriptLanguage", this.script.getLanguage()); scriptData.setBoolean("ScriptEnabled", this.script.getEnabled()); scriptData.setTag("ScriptConsole", NBTTags.NBTLongStringMap(this.script.getConsoleText())); - Client.sendData(EnumPacketServer.ScriptPlayerSave, -1, containers.size(), scriptData); + PlayerScriptPacket.Save(-1, containers.size(), scriptData); } } diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java index 6649fdd7e..70492f9cb 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcMenu.java @@ -10,10 +10,10 @@ import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; import net.minecraft.util.StatCollector; import noppes.npcs.CustomNpcs; -import noppes.npcs.client.Client; + import noppes.npcs.client.NoppesUtil; import noppes.npcs.constants.EnumGuiType; -import noppes.npcs.constants.EnumPacketServer; + import noppes.npcs.entity.EntityNPCInterface; import org.lwjgl.input.Keyboard; diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java deleted file mode 100644 index cb2b83441..000000000 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ /dev/null @@ -1,47 +0,0 @@ -package noppes.npcs.constants; - -import noppes.npcs.CustomNpcsPermissions; - -public enum EnumPacketServer { - ScriptGlobalGuiDataSave(CustomNpcsPermissions.SCRIPT_GLOBAL, false), - ScriptGlobalGuiDataGet(false), - - ScriptPlayerSave(CustomNpcsPermissions.SCRIPT_PLAYER, false), - ScriptPlayerGet(false), - - ScriptForgeSave(CustomNpcsPermissions.SCRIPT_FORGE, false), - ScriptForgeGet(false), - - ScriptGlobalNPCSave(CustomNpcsPermissions.SCRIPT_GLOBAL, false), - ScriptGlobalNPCGet(false), - - ScriptItemDataSave(CustomNpcsPermissions.SCRIPT_ITEM, false), - ScriptItemDataGet(false), - - ScriptBlockDataSave(CustomNpcsPermissions.SCRIPT_BLOCK, false), - ScriptBlockDataGet(false), - - ScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), - ScriptDataGet(true), - - EventScriptDataSave(CustomNpcsPermissions.SCRIPT_NPC, true), - EventScriptDataGet(true); - - public CustomNpcsPermissions.Permission permission = null; - public boolean needsNpc = false; - - EnumPacketServer() {} - - EnumPacketServer(CustomNpcsPermissions.Permission permission, boolean npc) { - this(permission); - } - EnumPacketServer(boolean npc) { - needsNpc = npc; - } - EnumPacketServer(CustomNpcsPermissions.Permission permission) { - this.permission = permission; - } - public boolean hasPermission() { - return permission != null; - } -} From fe7c24186d115c7401f75a9cacbcd10375e2062b Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 23:18:18 -0500 Subject: [PATCH 102/157] Remove Redundant Old Packet Handlers --- src/main/java/noppes/npcs/CommonProxy.java | 5 +- src/main/java/noppes/npcs/CustomNpcs.java | 6 - .../java/noppes/npcs/NoppesUtilPlayer.java | 10 - .../java/noppes/npcs/PacketHandlerPlayer.java | 327 ------------------ .../java/noppes/npcs/PacketHandlerServer.java | 51 --- src/main/java/noppes/npcs/client/Client.java | 24 -- .../java/noppes/npcs/client/ClientProxy.java | 2 - .../npcs/client/PacketHandlerClient.java | 16 - 8 files changed, 1 insertion(+), 440 deletions(-) delete mode 100644 src/main/java/noppes/npcs/PacketHandlerPlayer.java delete mode 100644 src/main/java/noppes/npcs/PacketHandlerServer.java delete mode 100644 src/main/java/noppes/npcs/client/Client.java delete mode 100644 src/main/java/noppes/npcs/client/PacketHandlerClient.java diff --git a/src/main/java/noppes/npcs/CommonProxy.java b/src/main/java/noppes/npcs/CommonProxy.java index 54fadbdbe..a799a8938 100644 --- a/src/main/java/noppes/npcs/CommonProxy.java +++ b/src/main/java/noppes/npcs/CommonProxy.java @@ -22,10 +22,7 @@ public class CommonProxy implements IGuiHandler { public boolean newVersionAvailable = false; public int revision = 1; - public void load() { - CustomNpcs.Channel.register(new PacketHandlerServer()); - CustomNpcs.ChannelPlayer.register(new PacketHandlerPlayer()); - } + public void load() {} public PlayerData getPlayerData(EntityPlayer player) { return null; diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 873df4c6a..2f5ad1837 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -55,9 +55,6 @@ public class CustomNpcs { public static boolean FreezeNPCs = false; - public static FMLEventChannel Channel; - public static FMLEventChannel ChannelPlayer; - public static final MarkovGenerator[] MARKOV_GENERATOR = new MarkovGenerator[10]; public static boolean InitIgnore = false; @@ -87,9 +84,6 @@ public class CustomNpcs { @EventHandler public void load(FMLPreInitializationEvent ev) { - Channel = NetworkRegistry.INSTANCE.newEventDrivenChannel("CustomNPCs"); - ChannelPlayer = NetworkRegistry.INSTANCE.newEventDrivenChannel("CustomNPCsPlayer"); - PacketHandler.Instance = new PacketHandler(); MinecraftServer server = MinecraftServer.getServer(); diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index d73dc67df..2f364de8f 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -259,16 +259,6 @@ public class NoppesUtilPlayer { bankData.openBankGui(player, npc, bank.id, container.slot); } - public static void sendData(EnumPlayerPacket enu, Object... obs) { - ByteBuf buffer = Unpooled.buffer(); - try { - if(!Server.fillBuffer(buffer, enu, obs)) - return; - CustomNpcs.ChannelPlayer.sendToServer(new FMLProxyPacket(buffer,"CustomNPCsPlayer")); - } catch (IOException e) { - e.printStackTrace(); - } - } public static void dialogSelected(int dialogId, int optionId, EntityPlayerMP player, EntityNPCInterface npc) { Dialog dialog = DialogController.Instance.dialogs.get(dialogId); diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java deleted file mode 100644 index cab174763..000000000 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ /dev/null @@ -1,327 +0,0 @@ -package noppes.npcs; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent; -import io.netty.buffer.ByteBuf; -import kamkeel.npcs.network.packets.data.large.GuiDataPacket; -import kamkeel.npcs.util.ByteBufUtils; -import net.minecraft.entity.player.EntityPlayerMP; -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.network.NetHandlerPlayServer; -import net.minecraft.tileentity.TileEntity; -import noppes.npcs.blocks.tiles.TileBigSign; -import noppes.npcs.blocks.tiles.TileBook; -import noppes.npcs.constants.*; -import noppes.npcs.containers.ContainerMail; -import noppes.npcs.controllers.PartyController; -import noppes.npcs.controllers.PlayerDataController; -import noppes.npcs.controllers.PlayerQuestController; -import noppes.npcs.controllers.ScriptController; -import noppes.npcs.controllers.data.*; -import noppes.npcs.entity.EntityNPCInterface; -import noppes.npcs.roles.RoleCompanion; - -import java.io.IOException; -import java.util.Iterator; - -public class PacketHandlerPlayer{ - - @SubscribeEvent - public void onServerPacket(ServerCustomPacketEvent event) { - EntityPlayerMP player = ((NetHandlerPlayServer)event.handler).playerEntity; - ByteBuf buffer = event.packet.payload(); - try { - player(buffer, player, EnumPlayerPacket.values()[buffer.readInt()]); - } catch (IOException e) { - LogWriter.except(e); - } - } - - private void player(ByteBuf buffer, EntityPlayerMP player, EnumPlayerPacket type) throws IOException { -// if(type == EnumPlayerPacket.CompanionTalentExp){ -// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); -// if(npc == null || npc.advanced.role != EnumRoleType.Companion || player != npc.getOwner()) -// return; -// int id = buffer.readInt(); -// int exp = buffer.readInt(); -// RoleCompanion role = (RoleCompanion) npc.roleInterface; -// if(exp <= 0 || !role.canAddExp(-exp) || id < 0 || id >= EnumCompanionTalent.values().length) //should never happen unless hacking -// return; -// EnumCompanionTalent talent = EnumCompanionTalent.values()[id]; -// role.addExp(-exp); -// role.addTalentExp(talent, exp); -// } -// else if(type == EnumPlayerPacket.CompanionOpenInv){ -// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); -// if(npc == null || npc.advanced.role != EnumRoleType.Companion || player != npc.getOwner()) -// return; -// NoppesUtilServer.sendOpenGui(player, EnumGuiType.CompanionInv, npc); -// } -// else if(type == EnumPlayerPacket.KeyPressed) { -// if(ScriptController.Instance.languages.isEmpty()) { -// return; -// } -// -// int button = buffer.readInt(); -// boolean isCtrlPressed = buffer.readBoolean(); -// boolean isShiftPressed = buffer.readBoolean(); -// boolean isAltPressed = buffer.readBoolean(); -// boolean isMetaPressed = buffer.readBoolean(); -// boolean buttonDown = buffer.readBoolean(); -// -// String ints = ByteBufUtils.readString(buffer); -// String[] split = ints.split(","); -// int[] keysDown; -// -// if(ints.length() > 0) { -// keysDown = new int[split.length]; -// try { -// for (int i = 0; i < split.length; i++) { -// keysDown[i] = Integer.parseInt(split[i]); -// } -// } -// catch (NumberFormatException ignored){ -// } -// } else { -// keysDown = new int[0]; -// } -// -// EventHooks.onPlayerKeyPressed(player, button, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, buttonDown, keysDown); -// } -// else if(type == EnumPlayerPacket.MouseClicked) { -// if(ScriptController.Instance.languages.isEmpty()) { -// return; -// } -// -// int button = buffer.readInt(); -// int mouseWheel = buffer.readInt(); -// boolean buttonDown = buffer.readBoolean(); -// -// boolean isCtrlPressed = buffer.readBoolean(); -// boolean isShiftPressed = buffer.readBoolean(); -// boolean isAltPressed = buffer.readBoolean(); -// boolean isMetaPressed = buffer.readBoolean(); -// -// String ints = ByteBufUtils.readString(buffer); -// String[] split = ints.split(","); -// int[] keysDown; -// -// if(ints.length() > 0) { -// keysDown = new int[split.length]; -// try { -// for (int i = 0; i < split.length; i++) { -// keysDown[i] = Integer.parseInt(split[i]); -// } -// } -// catch (NumberFormatException ignored){ -// } -// } else { -// keysDown = new int[0]; -// } -// -// EventHooks.onPlayerMouseClicked(player, button, mouseWheel, buttonDown, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, keysDown); -// } -// else if(type == EnumPlayerPacket.FollowerHire){ -// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); -// if(npc == null || npc.advanced.role != EnumRoleType.Follower) -// return; -// NoppesUtilPlayer.hireFollower(player, npc); -// } -// else if(type == EnumPlayerPacket.FollowerExtend){ -// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); -// if(npc == null || npc.advanced.role != EnumRoleType.Follower) -// return; -// NoppesUtilPlayer.extendFollower(player, npc); -// GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); -// } -// else if(type == EnumPlayerPacket.FollowerState){ -// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); -// if(npc == null || npc.advanced.role != EnumRoleType.Follower) -// return; -// NoppesUtilPlayer.changeFollowerState(player,npc); -// GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); -// } -// if(type == EnumPlayerPacket.RoleGet){ -// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); -// if(npc == null || npc.advanced.role == EnumRoleType.None) -// return; -// GuiDataPacket.sendGuiData(player, npc.roleInterface.writeToNBT(new NBTTagCompound())); -// } -// else if(type == EnumPlayerPacket.Transport){ -// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); -// if(npc == null || npc.advanced.role != EnumRoleType.Transporter) -// return; -// NoppesUtilPlayer.transport(player, npc, ByteBufUtils.readString(buffer)); -// } -// else if(type == EnumPlayerPacket.BankUpgrade){ -// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); -// if(npc == null || npc.advanced.role != EnumRoleType.Bank) -// return; -// NoppesUtilPlayer.bankUpgrade(player, npc); -// } -// else if(type == EnumPlayerPacket.BankUnlock){ -// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); -// if(npc == null || npc.advanced.role != EnumRoleType.Bank) -// return; -// NoppesUtilPlayer.bankUnlock(player, npc); -// } -// else if(type == EnumPlayerPacket.BankSlotOpen){ -// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); -// if(npc == null || npc.advanced.role != EnumRoleType.Bank) -// return; -// int slot = buffer.readInt(); -// int bankId = buffer.readInt(); -// BankData data = PlayerDataController.Instance.getBankData(player,bankId).getBankOrDefault(bankId); -// data.openBankGui(player, npc, bankId, slot); -// } -// else if(type == EnumPlayerPacket.Dialog){ -// EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); -// if(npc == null) -// return; -// NoppesUtilPlayer.dialogSelected(buffer.readInt(), buffer.readInt(), player, npc); -// } -// else if(type == EnumPlayerPacket.CheckQuestCompletion){ -// PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); -// PlayerQuestData questData = PlayerDataController.Instance.getPlayerData(player).questData; -// Party playerParty = playerData.getPlayerParty(); -// if(playerParty != null) -// PartyController.Instance().checkQuestCompletion(playerParty, null); -// -// questData.checkQuestCompletion(playerData, null); -// } -// else if(type == EnumPlayerPacket.QuestLog){ -// NoppesUtilPlayer.sendQuestLogData(player); -// } -// else if(type == EnumPlayerPacket.TrackedQuest){ -// NoppesUtilPlayer.sendTrackedQuest(player); -// } -// else if(type == EnumPlayerPacket.FactionsGet){ -// PlayerFactionData data = PlayerDataController.Instance.getPlayerData(player).factionData; -// GuiDataPacket.sendGuiData(player, data.getPlayerGuiData()); -// } -// else if(type == EnumPlayerPacket.MailGet){ -// PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; -// GuiDataPacket.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); -// } -// else if(type == EnumPlayerPacket.MailDelete){ -// long time = buffer.readLong(); -// String username = ByteBufUtils.readString(buffer); -// PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; -// -// Iterator it = data.playermail.iterator(); -// while(it.hasNext()){ -// PlayerMail mail = it.next(); -// if(mail.time == time && mail.sender.equals(username)){ -// it.remove(); -// } -// } -// GuiDataPacket.sendGuiData(player, data.saveNBTData(new NBTTagCompound())); -// } -// else if(type == EnumPlayerPacket.MailSend){ -// if(!(player.openContainer instanceof ContainerMail)) -// return; -// String username = PlayerDataController.Instance.hasPlayer(ByteBufUtils.readString(buffer)); -// if(username.isEmpty()){ -// NoppesUtilServer.sendGuiError(player, 0); -// return; -// } -// -// PlayerMail mail = new PlayerMail(); -// //String s = player.func_145748_c_().getFormattedText(); -// String s = player.getDisplayName(); -// if(!s.equals(player.getCommandSenderName())) -// s += "(" + player.getCommandSenderName() + ")"; -// mail.readNBT(ByteBufUtils.readNBT(buffer)); -// mail.sender = s; -// mail.items = ((ContainerMail)player.openContainer).mail.items; -// -// if(mail.subject.isEmpty()){ -// NoppesUtilServer.sendGuiError(player, 1); -// return; -// } -// PlayerDataController.Instance.addPlayerMessage(username, mail); -// -// NBTTagCompound comp = new NBTTagCompound(); -// comp.setString("username", username); -// NoppesUtilServer.sendGuiClose(player, 1,comp); -// } -// else if(type == EnumPlayerPacket.MailboxOpenMail){ -// long time = buffer.readLong(); -// String username = ByteBufUtils.readString(buffer); -// player.closeContainer(); -// PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; -// -// Iterator it = data.playermail.iterator(); -// while(it.hasNext()){ -// PlayerMail mail = it.next(); -// if(mail.time == time && mail.sender.equals(username)){ -// ContainerMail.staticmail = mail; -// player.openGui(CustomNpcs.instance, EnumGuiType.PlayerMailman.ordinal(), player.worldObj, 0, 0, 0); -// break; -// } -// } -// } -// else if(type == EnumPlayerPacket.MailRead){ -// long time = buffer.readLong(); -// String username = ByteBufUtils.readString(buffer); -// PlayerMailData data = PlayerDataController.Instance.getPlayerData(player).mailData; -// -// Iterator it = data.playermail.iterator(); -// while(it.hasNext()){ -// PlayerMail mail = it.next(); -// if(mail.time == time && mail.sender.equals(username)){ -// mail.beenRead = true; -// if(mail.hasQuest()) -// PlayerQuestController.addActiveQuest(new QuestData(mail.getQuest()), player); -// } -// } -// } -// 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/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java deleted file mode 100644 index b22b650d8..000000000 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ /dev/null @@ -1,51 +0,0 @@ -package noppes.npcs; - -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent; -import cpw.mods.fml.relauncher.Side; -import io.netty.buffer.ByteBuf; -import kamkeel.npcs.network.PacketUtil; -import kamkeel.npcs.network.packets.data.large.GuiDataPacket; -import kamkeel.npcs.util.ByteBufUtils; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetHandlerPlayServer; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import noppes.npcs.blocks.tiles.TileScripted; -import noppes.npcs.config.ConfigDebug; -import noppes.npcs.config.ConfigScript; -import noppes.npcs.constants.*; -import noppes.npcs.controllers.*; -import noppes.npcs.controllers.data.*; -import noppes.npcs.entity.EntityNPCInterface; -import noppes.npcs.scripted.NpcAPI; -import noppes.npcs.scripted.item.ScriptCustomItem; - -import java.io.IOException; - -public class PacketHandlerServer{ - - @SubscribeEvent - public void onServerPacket(ServerCustomPacketEvent event) { - EntityPlayerMP player = ((NetHandlerPlayServer)event.handler).playerEntity; - ByteBuf in = event.packet.payload(); - EnumPacketServer type = null; - try { - type = EnumPacketServer.values()[in.readInt()]; - - ItemStack item = player.inventory.getCurrentItem(); - - EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); - } catch (Exception e) { - LogWriter.error("Error with EnumPacketServer." + type, e); - } - } - - private void warn(EntityPlayer player, String warning){ - MinecraftServer.getServer().logWarning(player.getCommandSenderName() + ": " + warning); - } -} diff --git a/src/main/java/noppes/npcs/client/Client.java b/src/main/java/noppes/npcs/client/Client.java deleted file mode 100644 index 2012b38b0..000000000 --- a/src/main/java/noppes/npcs/client/Client.java +++ /dev/null @@ -1,24 +0,0 @@ -package noppes.npcs.client; - -import cpw.mods.fml.common.network.internal.FMLProxyPacket; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; - - -import java.io.IOException; - -public class Client { - - public static void sendData(final EnumPacketServer enu, final Object... obs) { - ByteBuf buffer = Unpooled.buffer(); - try { - if(!Server.fillBuffer(buffer, enu, obs)) - return; - CustomNpcs.Channel.sendToServer(new FMLProxyPacket(buffer, "CustomNPCs")); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index c5da55146..85e8063c3 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -83,8 +83,6 @@ public class ClientProxy extends CommonProxy { public void load() { Font = new FontContainer(ConfigClient.FontType, ConfigClient.FontSize); createFolders(); - CustomNpcs.Channel.register(new PacketHandlerClient()); - CustomNpcs.ChannelPlayer.register(new PacketHandlerPlayer()); new MusicController(); new ScriptSoundController(); diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java deleted file mode 100644 index a9d48ce09..000000000 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ /dev/null @@ -1,16 +0,0 @@ -package noppes.npcs.client; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.network.FMLNetworkEvent; -import noppes.npcs.PacketHandlerServer; - -import java.io.IOException; - -public class PacketHandlerClient extends PacketHandlerServer { - - @SubscribeEvent - public void onPacketData(FMLNetworkEvent.ClientCustomPacketEvent event) { - // Need this here for testing and registry for now until - // conversion is done - } -} From 4ae8978399cb057d442286269dff396f9e9d9af8 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 23:23:09 -0500 Subject: [PATCH 103/157] Expand Large Packet Size to 30MB --- src/main/java/kamkeel/npcs/util/ByteBufUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/kamkeel/npcs/util/ByteBufUtils.java b/src/main/java/kamkeel/npcs/util/ByteBufUtils.java index b0b35f91b..225327935 100644 --- a/src/main/java/kamkeel/npcs/util/ByteBufUtils.java +++ b/src/main/java/kamkeel/npcs/util/ByteBufUtils.java @@ -102,7 +102,7 @@ public class ByteBufUtils extends cpw.mods.fml.common.network.ByteBufUtils { int length = buffer.readInt(); byte[] bytes = new byte[length]; buffer.readBytes(bytes); - return CompressedStreamTools.func_152457_a(bytes, new NBTSizeTracker(10485760L)); + return CompressedStreamTools.func_152457_a(bytes, new NBTSizeTracker(31457280L)); } public static void writeString(ByteBuf buffer, String s){ From e3cfdd5ee12567e83006d225f987f7d057fb4e5e Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 2 Feb 2025 23:47:41 -0500 Subject: [PATCH 104/157] Fix Some Bugs --- .../packets/data/large/ScrollGroupPacket.java | 2 +- .../npcs/network/packets/data/large/SyncPacket.java | 13 +++++++++---- .../network/packets/request/GuiRequestPacket.java | 2 +- src/main/java/kamkeel/npcs/util/ByteBufUtils.java | 2 +- src/main/java/noppes/npcs/client/NoppesUtil.java | 12 ------------ .../noppes/npcs/controllers/DialogController.java | 6 ++++++ 6 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java index 129035824..376d8be5e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/ScrollGroupPacket.java @@ -56,6 +56,6 @@ public final class ScrollGroupPacket extends LargeAbstractPacket { @Override protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { - NoppesUtil.setScrollData(data); + NoppesUtil.setScrollGroup(data); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java index 048d5be17..db7722ecb 100644 --- a/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/data/large/SyncPacket.java @@ -14,6 +14,7 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcs; +import noppes.npcs.LogWriter; import java.io.IOException; @@ -81,10 +82,14 @@ public final class SyncPacket extends LargeAbstractPacket { EnumSyncType type = EnumSyncType.values()[syncTypeOrdinal]; EnumSyncAction action = EnumSyncAction.values()[syncActionOrdinal]; - NBTTagCompound tag = ByteBufUtils.readBigNBT(data); - - // Now do your client-side logic (similar to your old clientSync() or clientSyncUpdate() approach) - handleSyncPacketClient(type, action, categoryID, tag); + try { + NBTTagCompound tag = ByteBufUtils.readBigNBT(data); + // Now do your client-side logic (similar to your old clientSync() or clientSyncUpdate() approach) + handleSyncPacketClient(type, action, categoryID, tag); + } + catch (RuntimeException e){ + LogWriter.error(String.format("Attempted to Sync %s but it was too big", type.toString())); + } } private void handleSyncPacketClient(EnumSyncType enumSyncType, EnumSyncAction enumSyncAction, int id, NBTTagCompound data) { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java index 7e9c9b68e..7a8f7af06 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java @@ -42,7 +42,7 @@ public final class GuiRequestPacket extends AbstractPacket { @Override public boolean needsNPC() { - return true; + return false; } @SideOnly(Side.CLIENT) diff --git a/src/main/java/kamkeel/npcs/util/ByteBufUtils.java b/src/main/java/kamkeel/npcs/util/ByteBufUtils.java index 225327935..f470e17c0 100644 --- a/src/main/java/kamkeel/npcs/util/ByteBufUtils.java +++ b/src/main/java/kamkeel/npcs/util/ByteBufUtils.java @@ -102,7 +102,7 @@ public class ByteBufUtils extends cpw.mods.fml.common.network.ByteBufUtils { int length = buffer.readInt(); byte[] bytes = new byte[length]; buffer.readBytes(bytes); - return CompressedStreamTools.func_152457_a(bytes, new NBTSizeTracker(31457280L)); + return CompressedStreamTools.func_152457_a(bytes, new NBTSizeTracker(15728640L)); } public static void writeString(ByteBuf buffer, String s){ diff --git a/src/main/java/noppes/npcs/client/NoppesUtil.java b/src/main/java/noppes/npcs/client/NoppesUtil.java index e9f9fce0c..2de2178d7 100644 --- a/src/main/java/noppes/npcs/client/NoppesUtil.java +++ b/src/main/java/noppes/npcs/client/NoppesUtil.java @@ -191,18 +191,6 @@ public class NoppesUtil { group = new HashMap(); } - public static void addScrollData(ByteBuf buffer) { - try { - int size = buffer.readInt(); - for(int i = 0; i < size; i++){ - int id = buffer.readInt(); - String name = ByteBufUtils.readString(buffer); - data.put(name, id); - } - } catch (Exception e) { - } - } - public static void setScrollData(ByteBuf buffer) { GuiScreen gui = Minecraft.getMinecraft().currentScreen; if(gui == null) diff --git a/src/main/java/noppes/npcs/controllers/DialogController.java b/src/main/java/noppes/npcs/controllers/DialogController.java index f87c0fe5a..a892f934c 100644 --- a/src/main/java/noppes/npcs/controllers/DialogController.java +++ b/src/main/java/noppes/npcs/controllers/DialogController.java @@ -91,6 +91,7 @@ public class DialogController implements IDialogHandler { } } } + private DialogCategory loadCategoryDir(File dir) { DialogCategory category = new DialogCategory(); category.title = dir.getName(); @@ -103,6 +104,11 @@ public class DialogController implements IDialogHandler { dialog.readNBTPartial(NBTJsonUtil.LoadFile(file)); category.dialogs.put(dialog.id, dialog); dialog.category = category; + + if (dialog.text != null && dialog.text.length() > 15000) { + LogWriter.error("Extremely big dialog loaded: [ID: " + dialog.id + "] Title: " + + dialog.title + " (Length: " + dialog.text.length() + " chars)"); + } } catch(Exception e){ LogWriter.error("Error loading: " + file.getAbsolutePath(), e); From de9b373973087abe5ab8bd3f6fddd878d99b459f Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 01:47:41 -0500 Subject: [PATCH 105/157] Duplicate Entry --- src/main/java/kamkeel/npcs/network/PacketHandler.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 394a491a4..d6d38808b 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -276,7 +276,6 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new PartyDisbandPacket()); REQUEST_PACKET.registerPacket(new PartySetLeaderPacket()); REQUEST_PACKET.registerPacket(new PartyKickPacket()); - REQUEST_PACKET.registerPacket(new PartyDisbandPacket()); REQUEST_PACKET.registerPacket(new PartyLeavePacket()); REQUEST_PACKET.registerPacket(new PartySetQuestPacket()); REQUEST_PACKET.registerPacket(new PartyInvitePacket()); From c0dc526d41b20409657e071040a8764dc2430d35 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 01:47:47 -0500 Subject: [PATCH 106/157] Resizing for Dialog Page --- .../gui/global/GuiNPCManageDialogs.java | 135 +++++++++++++++--- .../npcs/client/gui/util/GuiCustomScroll.java | 8 +- .../npcs/client/gui/util/GuiNPCInterface.java | 2 + 3 files changed, 126 insertions(+), 19 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java index 686c6326e..0dafe3325 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageDialogs.java @@ -40,6 +40,16 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou private String catSearch = ""; private String diagSearch = ""; + private boolean isResizing = false; + private int initialDragX = 0; + private int dividerOffset = 143; + + private final int dividerWidth = 5; + private final int minScrollWidth = 50; + + private int dividerLineHeight = 20; + private int dividerLineYOffset = 0; + public GuiNPCManageDialogs(EntityNPCInterface npc) { super(npc); @@ -50,32 +60,41 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou { super.initGui(); - if(catScroll == null){ - catScroll = new GuiCustomScroll(this,0, 0); - catScroll.setSize(143, 185); - } - catScroll.guiLeft = guiLeft + 64; - catScroll.guiTop = guiTop + 4; - this.addScroll(catScroll); + // Define overall horizontal region. + int regionLeft = guiLeft + 64; + int regionRight = guiLeft + 355; - if(dialogScroll == null){ - dialogScroll = new GuiCustomScroll(this,1, 0); - dialogScroll.setSize(143, 185); - } - dialogScroll.guiLeft = guiLeft + 212; - dialogScroll.guiTop = guiTop + 4; - this.addScroll(dialogScroll); + // Recalculate dividerX using the stored offset: + int dividerX = regionLeft + dividerOffset; - addTextField(new GuiNpcTextField(55, this, fontRendererObj, guiLeft + 64, guiTop + 4 + 3 + 185, 143, 20, catSearch)); + // Left scroll (catScroll) + if (catScroll == null) { + catScroll = new GuiCustomScroll(this, 0, 0); + } + catScroll.guiLeft = regionLeft; + catScroll.guiTop = guiTop + 4; + catScroll.setSize(dividerX - regionLeft, 185); + this.addScroll(catScroll); - this.addButton(new GuiNpcButton(44,guiLeft + 3, guiTop + 8, 58, 20, "gui.categories")); + // Right scroll (dialogScroll) + if (dialogScroll == null) { + dialogScroll = new GuiCustomScroll(this, 1, 0); + } + dialogScroll.guiLeft = dividerX + dividerWidth; + dialogScroll.guiTop = guiTop + 4; + dialogScroll.setSize(regionRight - (dividerX + dividerWidth), 185); + this.addScroll(dialogScroll); + + // Adjust text fields: + addTextField(new GuiNpcTextField(55, this, fontRendererObj, regionLeft, guiTop + 4 + 3 + 185, dividerX - regionLeft, 20, catSearch)); + addTextField(new GuiNpcTextField(66, this, fontRendererObj, dividerX + dividerWidth, guiTop + 4 + 3 + 185, regionRight - (dividerX + dividerWidth), 20, diagSearch)); + + this.addButton(new GuiNpcButton(44,guiLeft + 3, guiTop + 8, 58, 20, "gui.categories")); getButton(44).setEnabled(false); this.addButton(new GuiNpcButton(4,guiLeft + 3, guiTop + 38, 58, 20, "gui.add")); this.addButton(new GuiNpcButton(5,guiLeft + 3, guiTop + 61, 58, 20, "gui.remove")); this.addButton(new GuiNpcButton(6,guiLeft + 3, guiTop + 94, 58, 20, "gui.edit")); - addTextField(new GuiNpcTextField(66, this, fontRendererObj, guiLeft + 212, guiTop + 4 + 3 + 185, 143, 20, diagSearch)); - this.addButton(new GuiNpcButton(33,guiLeft + 358, guiTop + 8, 58, 20, "dialog.dialogs")); getButton(33).setEnabled(false); this.addButton(new GuiNpcButton(0,guiLeft + 358, guiTop + 94, 58, 20, "gui.edit")); @@ -93,6 +112,86 @@ public class GuiNPCManageDialogs extends GuiNPCInterface2 implements IScrollGrou updateButtons(); } + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + super.drawScreen(mouseX, mouseY, partialTicks); + if(!hasSubGui()){ + int regionLeft = guiLeft + 64; + int dividerX = regionLeft + dividerOffset; // dividerOffset remains your left-scroll width + int regionTop = guiTop + 4; + int regionHeight = 185; + // Calculate the vertical position for the handle (centered by default) + int handleTop = regionTop + (regionHeight - dividerLineHeight) / 2 + dividerLineYOffset; + drawRect(dividerX + 1, handleTop, dividerX + dividerWidth - 1, handleTop + dividerLineHeight, 0xFF707070); + } + } + + @Override + public void mouseClicked(int mouseX, int mouseY, int mouseButton) { + if(!hasSubGui()){ + int regionLeft = guiLeft + 64; + int dividerX = regionLeft + dividerOffset; + int regionTop = guiTop + 4; + int regionHeight = 185; + int handleTop = regionTop + (regionHeight - dividerLineHeight) / 2 + dividerLineYOffset; + int handleBottom = handleTop + dividerLineHeight; + if (mouseX >= dividerX && mouseX <= dividerX + dividerWidth && + mouseY >= handleTop && mouseY <= handleBottom) { + isResizing = true; + resizingActive = true; + initialDragX = mouseX; + return; + } + } + super.mouseClicked(mouseX, mouseY, mouseButton); + } + + @Override + public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { + if (isResizing) { + int dx = mouseX - initialDragX; + initialDragX = mouseX; + dividerOffset += dx; + int regionLeft = guiLeft + 64; + int regionRight = guiLeft + 355; + // Clamp dividerOffset so each scroll remains at least minScrollWidth: + int minOffset = minScrollWidth; + int maxOffset = (regionRight - regionLeft) - dividerWidth - minScrollWidth; + if (dividerOffset < minOffset) { + dividerOffset = minOffset; + } + if (dividerOffset > maxOffset) { + dividerOffset = maxOffset; + } + int dividerX = regionLeft + dividerOffset; + // Update left scroll: + catScroll.setSize(dividerX - regionLeft, 185); + // Update right scroll: + dialogScroll.guiLeft = dividerX + dividerWidth; + dialogScroll.setSize(regionRight - (dividerX + dividerWidth), 185); + // Update text fields: + if (getTextField(55) != null) { + getTextField(55).width = dividerX - regionLeft; + } + if (getTextField(66) != null) { + getTextField(66).width = regionRight - (dividerX + dividerWidth); + getTextField(66).xPosition = dividerX + dividerWidth; + } + return; + } + super.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick); + } + + @Override + protected void mouseMovedOrUp(int mouseX, int mouseY, int state) { + if (isResizing) { + isResizing = false; + resizingActive = false; + return; + } + super.mouseMovedOrUp(mouseX, mouseY, state); + } + @Override public void keyTyped(char c, int i) { diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java index ea9a1c700..61db640a1 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java @@ -4,11 +4,14 @@ import kamkeel.npcs.util.TextSplitter; import net.minecraft.client.gui.GuiScreen; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; +import noppes.npcs.client.gui.global.GuiNPCManageDialogs; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import java.util.*; +import static noppes.npcs.client.gui.util.GuiNPCInterface.resizingActive; + public class GuiCustomScroll extends GuiScreen { public static final ResourceLocation resource = new ResourceLocation("customnpcs","textures/gui/misc.png"); @@ -127,7 +130,7 @@ public class GuiCustomScroll extends GuiScreen if(scrollHeight < ySize - 8){ i -= guiLeft; j -= guiTop; - if(Mouse.isButtonDown(0)){ + if(Mouse.isButtonDown(0) && !resizingActive){ if(i >= xSize-9 && i < xSize-4 && j >= 4 && j < ySize){ isScrolling = true; } @@ -263,6 +266,9 @@ public class GuiCustomScroll extends GuiScreen public void mouseClicked(int i, int j, int k) { + if(resizingActive) + return; + if(k != 0 || hover < 0) return; if(multipleSelection) { diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java b/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java index 04cceb311..92c4e39b4 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java @@ -37,6 +37,8 @@ public abstract class GuiNPCInterface extends GuiScreen { protected HashMap extra = new HashMap(); protected HashMap scrollWindows = new HashMap<>(); + public static boolean resizingActive = false; + public String title; private ResourceLocation background = null; public boolean closeOnEsc = false; From 29c456ab4eaf6a1c80cad5a7cbfbbb5088cb9891 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 12:36:28 -0500 Subject: [PATCH 107/157] Add Search to Remote Editor --- .../packets/request/GuiRequestPacket.java | 5 -- .../request/npc/RemoteDeletePacket.java | 5 -- .../request/npc/RemoteMainMenuPacket.java | 5 +- .../request/npc/RemoteResetPacket.java | 4 +- .../request/npc/RemoteTpToNpcPacket.java | 5 -- .../npcs/client/gui/GuiNpcRemoteEditor.java | 49 ++++++++++++++++--- 6 files changed, 43 insertions(+), 30 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java index 7a8f7af06..823e86376 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/GuiRequestPacket.java @@ -40,11 +40,6 @@ public final class GuiRequestPacket extends AbstractPacket { return PacketHandler.REQUEST_PACKET; } - @Override - public boolean needsNPC() { - return false; - } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java index b07295013..98fdaebb4 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteDeletePacket.java @@ -47,11 +47,6 @@ public final class RemoteDeletePacket extends AbstractPacket { return CustomNpcsPermissions.NPC_DELETE; } - @Override - public boolean needsNPC() { - return true; - } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java index 973f1dfb9..31674ac80 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteMainMenuPacket.java @@ -48,10 +48,7 @@ public final class RemoteMainMenuPacket extends AbstractPacket { return CustomNpcsPermissions.NPC_GUI; } - @Override - public boolean needsNPC() { - return true; - } + @SideOnly(Side.CLIENT) @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java index b42dd51d2..120eb25b0 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java @@ -44,9 +44,7 @@ public final class RemoteResetPacket extends AbstractPacket { } @Override - public boolean needsNPC() { - return true; - } + @SideOnly(Side.CLIENT) @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java index 45e0d1a30..661f7d6e0 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteTpToNpcPacket.java @@ -42,11 +42,6 @@ public final class RemoteTpToNpcPacket extends AbstractPacket { return CustomNpcsPermissions.NPC_TELEPORT; } - @Override - public boolean needsNPC() { - return true; - } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java b/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java index 19133cbca..a35484e1b 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcRemoteEditor.java @@ -13,13 +13,17 @@ import noppes.npcs.client.gui.util.*; import noppes.npcs.entity.EntityNPCInterface; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Vector; public class GuiNpcRemoteEditor extends GuiNPCInterface implements IScrollData, GuiYesNoCallback{ private GuiCustomScroll scroll; private HashMap data = new HashMap(); + private String search = ""; + public GuiNpcRemoteEditor() { super(); xSize = 256; @@ -32,7 +36,7 @@ public class GuiNpcRemoteEditor extends GuiNPCInterface implements IScrollData, super.initGui(); if(scroll == null){ scroll = new GuiCustomScroll(this,0, 0); - scroll.setSize(165, 208); + scroll.setSize(165, 188); } scroll.guiLeft = guiLeft + 4; scroll.guiTop = guiTop + 4; @@ -41,6 +45,8 @@ public class GuiNpcRemoteEditor extends GuiNPCInterface implements IScrollData, String title = StatCollector.translateToLocal("remote.title"); int x = (xSize - this.fontRendererObj.getStringWidth(title)) / 2; + addTextField(new GuiNpcTextField(66, this, fontRendererObj, guiLeft + 4, guiTop + 5 + scroll.ySize, scroll.xSize, 20, search)); + this.addLabel(new GuiNpcLabel(0, title, guiLeft + x, guiTop - 8)); this.addButton(new GuiNpcButton(0, guiLeft + 170, guiTop + 6,82,20, "selectServer.edit")); @@ -110,20 +116,47 @@ public class GuiNpcRemoteEditor extends GuiNPCInterface implements IScrollData, @Override public void keyTyped(char c, int i) { - if (i == 1 || isInventoryKey(i)) + super.keyTyped(c, i); + if(getTextField(66) != null){ + if(getTextField(66).isFocused()){ + if (i == 1) + { + close(); + return; + } + if(search.equals(getTextField(66).getText())) + return; + search = getTextField(66).getText().toLowerCase(); + scroll.resetScroll(); + scroll.setList(getNPCSearch()); + } + } + if (i == 1) { close(); } } - @Override - public void save() { - // TODO Auto-generated method stub - } + private List getNPCSearch(){ + if(search.isEmpty()){ + return new ArrayList(this.data.keySet()); + } + List list = new ArrayList(); + for(String name : this.data.keySet()){ + if(name.toLowerCase().contains(search)) + list.add(name); + } + return list; + } + + @Override + public void save() {} + @Override public void setData(Vector list, HashMap data) { - scroll.setList(list); - this.data = data; + this.data = data; + scroll.resetScroll(); + scroll.setList(getNPCSearch()); } @Override public void setSelected(String selected) { From 268bd0f4565098b2b97f1d034ef17e39414ce92a Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 13:06:53 -0500 Subject: [PATCH 108/157] Remove Blank Override --- .../npcs/network/packets/request/npc/RemoteResetPacket.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java index 120eb25b0..73d34036a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/npc/RemoteResetPacket.java @@ -43,8 +43,6 @@ public final class RemoteResetPacket extends AbstractPacket { return CustomNpcsPermissions.NPC_RESET; } - @Override - @SideOnly(Side.CLIENT) @Override From e37519f4e38b759c7d7cb01160a33799cc92e117 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 13:43:38 -0500 Subject: [PATCH 109/157] Fix Tag Packets --- .../npcs/network/packets/request/tags/TagRemovePacket.java | 2 +- .../npcs/network/packets/request/tags/TagSavePacket.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java index 7e0c61deb..9e75492d2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagRemovePacket.java @@ -48,7 +48,7 @@ public final class TagRemovePacket extends AbstractPacket { @Override public boolean needsNPC() { - return true; + return false; } @SideOnly(Side.CLIENT) diff --git a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java index c2f007259..6b79c5b8b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/tags/TagSavePacket.java @@ -50,7 +50,7 @@ public final class TagSavePacket extends AbstractPacket { @Override public boolean needsNPC() { - return true; + return false; } @SideOnly(Side.CLIENT) From d28935ab58b40f114287f6619103f3c48ad08a9f Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 13:43:51 -0500 Subject: [PATCH 110/157] Resizing for Gui Quests Management --- .../client/gui/global/GuiNPCManageQuest.java | 768 ++++++++++-------- 1 file changed, 419 insertions(+), 349 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java index ecc020188..c31792185 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageQuest.java @@ -14,7 +14,6 @@ import noppes.npcs.client.gui.SubGuiEditText; import noppes.npcs.client.gui.SubGuiNpcQuest; import noppes.npcs.client.gui.util.*; -import noppes.npcs.controllers.data.Dialog; import noppes.npcs.controllers.data.Quest; import noppes.npcs.controllers.data.QuestCategory; import noppes.npcs.entity.EntityNPCInterface; @@ -24,420 +23,491 @@ import java.util.HashMap; import java.util.List; import java.util.Vector; -public class GuiNPCManageQuest extends GuiNPCInterface2 implements IScrollGroup, IScrollData, ISubGuiListener, ICustomScrollListener, IGuiData, GuiYesNoCallback -{ - private GuiCustomScroll catScroll; - public GuiCustomScroll questScroll; +public class GuiNPCManageQuest extends GuiNPCInterface2 implements IScrollGroup, IScrollData, ISubGuiListener, ICustomScrollListener, IGuiData, GuiYesNoCallback { - private String prevCatName = ""; - private String prevQuestName = ""; + private GuiCustomScroll catScroll; + public GuiCustomScroll questScroll; - public QuestCategory category = new QuestCategory(); - public static Quest quest = new Quest(); - public String nextQuestName = ""; + private String prevCatName = ""; + private String prevQuestName = ""; - private HashMap catData = new HashMap(); - public HashMap questData = new HashMap(); + public QuestCategory category = new QuestCategory(); + public static Quest quest = new Quest(); + public String nextQuestName = ""; - private String catSearch = ""; - private String questSearch = ""; + private HashMap catData = new HashMap(); + public HashMap questData = new HashMap(); - public static GuiScreen Instance; + private String catSearch = ""; + private String questSearch = ""; - public GuiNPCManageQuest(EntityNPCInterface npc) - { - super(npc); - Instance = this; - quest = new Quest(); + public static GuiScreen Instance; + + // Divider variables + private boolean isResizing = false; + private int initialDragX = 0; + private int dividerOffset = 143; + private final int dividerWidth = 5; + private final int minScrollWidth = 50; + private int dividerLineHeight = 20; + private int dividerLineYOffset = 0; + + public GuiNPCManageQuest(EntityNPCInterface npc) { + super(npc); + Instance = this; + quest = new Quest(); PacketClient.sendClient(new QuestCategoriesGetPacket()); - } + } - public void initGui() - { - super.initGui(); + public void initGui() { + super.initGui(); - if(questScroll == null){ - questScroll = new GuiCustomScroll(this,1, 0); - questScroll.setSize(143, 185); - } - questScroll.guiLeft = guiLeft + 212; - questScroll.guiTop = guiTop + 4; - this.addScroll(questScroll); + // Define overall horizontal region. + int regionLeft = guiLeft + 64; + int regionRight = guiLeft + 355; + int dividerX = regionLeft + dividerOffset; - if(catScroll == null){ - catScroll = new GuiCustomScroll(this,0, 0); - catScroll.setSize(143, 185); - } - catScroll.guiLeft = guiLeft + 64; - catScroll.guiTop = guiTop + 4; - this.addScroll(catScroll); - addTextField(new GuiNpcTextField(55, this, fontRendererObj, guiLeft + 64, guiTop + 4 + 3 + 185, 143, 20, catSearch)); + // Left scroll (catScroll) + if (catScroll == null) { + catScroll = new GuiCustomScroll(this, 0, 0); + } + catScroll.guiLeft = regionLeft; + catScroll.guiTop = guiTop + 4; + catScroll.setSize(dividerX - regionLeft, 185); + this.addScroll(catScroll); - this.addButton(new GuiNpcButton(44,guiLeft + 3, guiTop + 8, 58, 20, "gui.categories")); - getButton(44).setEnabled(false); - this.addButton(new GuiNpcButton(4,guiLeft + 3, guiTop + 38, 58, 20, "gui.add")); - this.addButton(new GuiNpcButton(5,guiLeft + 3, guiTop + 61, 58, 20, "gui.remove")); - this.addButton(new GuiNpcButton(6,guiLeft + 3, guiTop + 94, 58, 20, "gui.edit")); + // Right scroll (questScroll) + if (questScroll == null) { + questScroll = new GuiCustomScroll(this, 1, 0); + } + questScroll.guiLeft = dividerX + dividerWidth; + questScroll.guiTop = guiTop + 4; + questScroll.setSize(regionRight - (dividerX + dividerWidth), 185); + this.addScroll(questScroll); - addTextField(new GuiNpcTextField(66, this, fontRendererObj, guiLeft + 212, guiTop + 4 + 3 + 185, 143, 20, questSearch)); + // Adjust text fields: + addTextField(new GuiNpcTextField(55, this, fontRendererObj, regionLeft, guiTop + 4 + 3 + 185, dividerX - regionLeft, 20, catSearch)); + addTextField(new GuiNpcTextField(66, this, fontRendererObj, dividerX + dividerWidth, guiTop + 4 + 3 + 185, regionRight - (dividerX + dividerWidth), 20, questSearch)); - this.addButton(new GuiNpcButton(33,guiLeft + 358, guiTop + 8, 58, 20, "quest.quests")); - getButton(33).setEnabled(false); - this.addButton(new GuiNpcButton(0,guiLeft + 358, guiTop + 94, 58, 20, "gui.edit")); - this.addButton(new GuiNpcButton(1,guiLeft + 358, guiTop + 38, 58, 20, "gui.add")); - this.addButton(new GuiNpcButton(2,guiLeft + 358, guiTop + 61, 58, 20, "gui.remove")); - this.addButton(new GuiNpcButton(3,guiLeft + 358, guiTop + 117, 58, 20, "gui.copy")); + this.addButton(new GuiNpcButton(44, guiLeft + 3, guiTop + 8, 58, 20, "gui.categories")); + getButton(44).setEnabled(false); + this.addButton(new GuiNpcButton(4, guiLeft + 3, guiTop + 38, 58, 20, "gui.add")); + this.addButton(new GuiNpcButton(5, guiLeft + 3, guiTop + 61, 58, 20, "gui.remove")); + this.addButton(new GuiNpcButton(6, guiLeft + 3, guiTop + 94, 58, 20, "gui.edit")); - if(quest != null) { - if(quest.id != -1){ - addLabel(new GuiNpcLabel(0, "ID", guiLeft + 358, guiTop + 4 + 3 + 185)); - addLabel(new GuiNpcLabel(1, quest.id + "", guiLeft + 358, guiTop + 4 + 3 + 195)); - } - } + this.addButton(new GuiNpcButton(33, guiLeft + 358, guiTop + 8, 58, 20, "quest.quests")); + getButton(33).setEnabled(false); + this.addButton(new GuiNpcButton(0, guiLeft + 358, guiTop + 94, 58, 20, "gui.edit")); + this.addButton(new GuiNpcButton(1, guiLeft + 358, guiTop + 38, 58, 20, "gui.add")); + this.addButton(new GuiNpcButton(2, guiLeft + 358, guiTop + 61, 58, 20, "gui.remove")); + this.addButton(new GuiNpcButton(3, guiLeft + 358, guiTop + 117, 58, 20, "gui.copy")); - updateButtons(); - } + if (quest != null) { + if (quest.id != -1) { + addLabel(new GuiNpcLabel(0, "ID", guiLeft + 358, guiTop + 4 + 3 + 185)); + addLabel(new GuiNpcLabel(1, quest.id + "", guiLeft + 358, guiTop + 4 + 3 + 195)); + } + } - @Override - public void keyTyped(char c, int i) - { - super.keyTyped(c, i); - if(getTextField(55) != null){ - if(getTextField(55).isFocused()){ - if(catSearch.equals(getTextField(55).getText())) - return; - catSearch = getTextField(55).getText().toLowerCase(); + updateButtons(); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + super.drawScreen(mouseX, mouseY, partialTicks); + if (!hasSubGui()) { + int regionLeft = guiLeft + 64; + int dividerX = regionLeft + dividerOffset; + int regionTop = guiTop + 4; + int regionHeight = 185; + int handleTop = regionTop + (regionHeight - dividerLineHeight) / 2 + dividerLineYOffset; + drawRect(dividerX + 1, handleTop, dividerX + dividerWidth - 1, handleTop + dividerLineHeight, 0xFF707070); + } + } + + @Override + public void mouseClicked(int mouseX, int mouseY, int mouseButton) { + if (!hasSubGui()) { + int regionLeft = guiLeft + 64; + int dividerX = regionLeft + dividerOffset; + int regionTop = guiTop + 4; + int regionHeight = 185; + int handleTop = regionTop + (regionHeight - dividerLineHeight) / 2 + dividerLineYOffset; + int handleBottom = handleTop + dividerLineHeight; + if (mouseX >= dividerX && mouseX <= dividerX + dividerWidth && + mouseY >= handleTop && mouseY <= handleBottom) { + isResizing = true; + resizingActive = true; + initialDragX = mouseX; + return; + } + } + super.mouseClicked(mouseX, mouseY, mouseButton); + } + + @Override + public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { + if (isResizing) { + int dx = mouseX - initialDragX; + initialDragX = mouseX; + dividerOffset += dx; + int regionLeft = guiLeft + 64; + int regionRight = guiLeft + 355; + int minOffset = minScrollWidth; + int maxOffset = (regionRight - regionLeft) - dividerWidth - minScrollWidth; + if (dividerOffset < minOffset) { + dividerOffset = minOffset; + } + if (dividerOffset > maxOffset) { + dividerOffset = maxOffset; + } + int dividerX = regionLeft + dividerOffset; + catScroll.setSize(dividerX - regionLeft, 185); + questScroll.guiLeft = dividerX + dividerWidth; + questScroll.setSize(regionRight - (dividerX + dividerWidth), 185); + if (getTextField(55) != null) { + getTextField(55).width = dividerX - regionLeft; + } + if (getTextField(66) != null) { + getTextField(66).width = regionRight - (dividerX + dividerWidth); + getTextField(66).xPosition = dividerX + dividerWidth; + } + return; + } + super.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick); + } + + @Override + protected void mouseMovedOrUp(int mouseX, int mouseY, int state) { + if (isResizing) { + isResizing = false; + resizingActive = false; + return; + } + super.mouseMovedOrUp(mouseX, mouseY, state); + } + + @Override + public void keyTyped(char c, int i) { + super.keyTyped(c, i); + if (getTextField(55) != null) { + if (getTextField(55).isFocused()) { + if (catSearch.equals(getTextField(55).getText())) + return; + catSearch = getTextField(55).getText().toLowerCase(); catScroll.resetScroll(); - catScroll.setList(getCatSearch()); - } - } - if(getTextField(66) != null){ - if(getTextField(66).isFocused()){ - if(questSearch.equals(getTextField(66).getText())) - return; - questSearch = getTextField(66).getText().toLowerCase(); + catScroll.setList(getCatSearch()); + } + } + if (getTextField(66) != null) { + if (getTextField(66).isFocused()) { + if (questSearch.equals(getTextField(66).getText())) + return; + questSearch = getTextField(66).getText().toLowerCase(); questScroll.resetScroll(); - questScroll.setList(getQuestSearch()); - } - } - } + questScroll.setList(getQuestSearch()); + } + } + } - public void resetQuestList(){ - if(questScroll != null){ - questSearch = ""; - if(getTextField(66) != null){ - getTextField(66).setText(""); - } - questScroll.setList(getQuestSearch()); - } - } + public void resetQuestList() { + if (questScroll != null) { + questSearch = ""; + if (getTextField(66) != null) { + getTextField(66).setText(""); + } + questScroll.setList(getQuestSearch()); + } + } - private List getCatSearch(){ - if(catSearch.isEmpty()){ - return new ArrayList(this.catData.keySet()); - } - List list = new ArrayList(); - for(String name : this.catData.keySet()){ - if(name.toLowerCase().contains(catSearch)) - list.add(name); - } - return list; - } + private List getCatSearch() { + if (catSearch.isEmpty()) { + return new ArrayList(this.catData.keySet()); + } + List list = new ArrayList(); + for (String name : this.catData.keySet()) { + if (name.toLowerCase().contains(catSearch)) + list.add(name); + } + return list; + } - private List getQuestSearch(){ - if(category != null){ - if(category.id < 0){ - return new ArrayList(); - } - } - else { - return new ArrayList(); - } + private List getQuestSearch() { + if (category != null) { + if (category.id < 0) { + return new ArrayList(); + } + } else { + return new ArrayList(); + } + if (questSearch.isEmpty()) { + return new ArrayList(this.questData.keySet()); + } + List list = new ArrayList(); + for (String name : this.questData.keySet()) { + if (name.toLowerCase().contains(questSearch)) + list.add(name); + } + return list; + } - if(questSearch.isEmpty()){ - return new ArrayList(this.questData.keySet()); - } - List list = new ArrayList(); - for(String name : this.questData.keySet()){ - if(name.toLowerCase().contains(questSearch)) - list.add(name); - } - return list; - } - - public void buttonEvent(GuiButton guibutton) - { - int id = guibutton.id; - // Edit Cat - if(id == 6){ - if(category != null && category.id > -1){ - setSubGui(new SubGuiEditText(category.title)); - } - else { - getCategory(false); - } - } - // Add Cat - if(id == 4){ - String name = "New"; - while(catData.containsKey(name)) - name += "_"; - - if(catScroll != null){ - setPrevCatName(name); - } - QuestCategory category = new QuestCategory(); - category.title = name; + public void buttonEvent(GuiButton guibutton) { + int id = guibutton.id; + // Edit Category + if (id == 6) { + if (category != null && category.id > -1) { + setSubGui(new SubGuiEditText(category.title)); + } else { + getCategory(false); + } + } + // Add Category + if (id == 4) { + String name = "New"; + while (catData.containsKey(name)) + name += "_"; + if (catScroll != null) { + setPrevCatName(name); + } + QuestCategory category = new QuestCategory(); + category.title = name; PacketClient.sendClient(new QuestCategorySavePacket(category.writeNBT(new NBTTagCompound()))); - } - // Remove Cat - if(id == 5){ - if(catData.containsKey(catScroll.getSelected())) { + } + // Remove Category + if (id == 5) { + if (catData.containsKey(catScroll.getSelected())) { GuiYesNo guiyesno = new GuiYesNo(this, catScroll.getSelected(), StatCollector.translateToLocal("gui.delete"), 5); displayGuiScreen(guiyesno); - } - } - if(category != null && category.id >= 0){ - // Add Quest - if(id == 1){ - String name = "New"; - while(questData.containsKey(name)) - name += "_"; - - if(questScroll != null){ - setPrevQuestName(name); - } - Quest quest = new Quest(); - quest.title = name; + } + } + if (category != null && category.id >= 0) { + // Add Quest + if (id == 1) { + String name = "New"; + while (questData.containsKey(name)) + name += "_"; + if (questScroll != null) { + setPrevQuestName(name); + } + Quest quest = new Quest(); + quest.title = name; PacketClient.sendClient(new QuestSavePacket(category.id, quest.writeToNBT(new NBTTagCompound()), true)); } - // Remove Quest - if(id == 2) { - if (questData.containsKey(questScroll.getSelected())) { + // Remove Quest + if (id == 2) { + if (questData.containsKey(questScroll.getSelected())) { GuiYesNo guiyesno = new GuiYesNo(this, questScroll.getSelected(), StatCollector.translateToLocal("gui.delete"), 2); displayGuiScreen(guiyesno); - } - } - // Edit Quest - if(id == 0) { - if (questData.containsKey(questScroll.getSelected()) && quest != null && quest.id >= 0) { - setSubGui(new SubGuiNpcQuest(this, quest, category.id)); - } - } - // Clone Quest - if(id == 3) { - if (questData.containsKey(questScroll.getSelected()) && quest != null && quest.id >= 0) { - String name = quest.title; - while(questData.containsKey(name)) - name += "_"; - - if(questScroll != null){ - setPrevQuestName(name); - } - - Quest quest = new Quest(); - quest.readNBTPartial(this.quest.writeToNBT(new NBTTagCompound())); - quest.title = name; + } + } + // Edit Quest + if (id == 0) { + if (questData.containsKey(questScroll.getSelected()) && quest != null && quest.id >= 0) { + setSubGui(new SubGuiNpcQuest(this, quest, category.id)); + } + } + // Clone Quest + if (id == 3) { + if (questData.containsKey(questScroll.getSelected()) && quest != null && quest.id >= 0) { + String name = quest.title; + while (questData.containsKey(name)) + name += "_"; + if (questScroll != null) { + setPrevQuestName(name); + } + Quest quest = new Quest(); + quest.readNBTPartial(this.quest.writeToNBT(new NBTTagCompound())); + quest.title = name; PacketClient.sendClient(new QuestSavePacket(category.id, quest.writeToNBT(new NBTTagCompound()), true)); } - } - } - updateButtons(); - } + } + } + updateButtons(); + } - public void updateButtons(){ - boolean enabled = category != null; - if(enabled){ - if(!(category.id >= 0)){ - enabled = false; - } - } + public void updateButtons() { + boolean enabled = category != null; + if (enabled) { + if (!(category.id >= 0)) { + enabled = false; + } + } + boolean questEnabled = questData != null; + if (questEnabled) { + if (quest == null || !(quest.id >= 0)) { + questEnabled = false; + } + } + getButton(6).setEnabled(enabled); + getButton(1).setEnabled(enabled); + getButton(2).setEnabled(enabled); + getButton(0).setEnabled(enabled && questEnabled); + getButton(3).setEnabled(enabled && questEnabled); + } - boolean questEnabled = questData != null; - if(questEnabled){ - if(quest == null || !(quest.id >= 0)){ - questEnabled = false; - } - } - getButton(6).setEnabled(enabled); - - getButton(1).setEnabled(enabled); - getButton(2).setEnabled(enabled); - - getButton(0).setEnabled(enabled && questEnabled); - getButton(3).setEnabled(enabled && questEnabled); - } - - @Override - public void setGuiData(NBTTagCompound compound) { - if(compound.hasKey("NextQuestId")){ - quest.readNBT(compound); - setPrevQuestName(quest.title); - if(compound.hasKey("NextQuestTitle")){ - nextQuestName = compound.getString("NextQuestTitle"); - } - else { - nextQuestName = ""; - } - } - else { - category.readNBT(compound); - setPrevCatName(category.title); + @Override + public void setGuiData(NBTTagCompound compound) { + if (compound.hasKey("NextQuestId")) { + quest.readNBT(compound); + setPrevQuestName(quest.title); + if (compound.hasKey("NextQuestTitle")) { + nextQuestName = compound.getString("NextQuestTitle"); + } else { + nextQuestName = ""; + } + } else { + category.readNBT(compound); + setPrevCatName(category.title); PacketClient.sendClient(new QuestsGetPacket(category.id, true)); - resetQuestList(); - } - initGui(); - } + resetQuestList(); + } + initGui(); + } - @Override - public void subGuiClosed(SubGuiInterface subgui){ - if(subgui instanceof SubGuiEditText){ - if(!((SubGuiEditText)subgui).cancelled){ - if(category != null && category.id > -1){ - String name = ((SubGuiEditText)subgui).text; - if(name != null && !name.equalsIgnoreCase(category.title)){ - if(!(name.isEmpty() || catData.containsKey(name))){ - String old = category.title; - catData.remove(category.title); - category.title = name; - catData.put(category.title, category.id); - catScroll.replace(old,category.title); - } + @Override + public void subGuiClosed(SubGuiInterface subgui) { + if (subgui instanceof SubGuiEditText) { + if (!((SubGuiEditText) subgui).cancelled) { + if (category != null && category.id > -1) { + String name = ((SubGuiEditText) subgui).text; + if (name != null && !name.equalsIgnoreCase(category.title)) { + if (!(name.isEmpty() || catData.containsKey(name))) { + String old = category.title; + catData.remove(category.title); + category.title = name; + catData.put(category.title, category.id); + catScroll.replace(old, category.title); + } saveType(false); - } - } - } - clearCategory(); - } - if(subgui instanceof SubGuiNpcQuest){ - saveType(true); - } - } + } + } + } + clearCategory(); + } + if (subgui instanceof SubGuiNpcQuest) { + saveType(true); + } + } - public void setPrevCatName(String selectedCat){ - prevCatName = selectedCat; - this.catScroll.setSelected(prevCatName); - } + public void setPrevCatName(String selectedCat) { + prevCatName = selectedCat; + this.catScroll.setSelected(prevCatName); + } - public void setPrevQuestName(String selectedCat){ - prevQuestName = selectedCat; - this.questScroll.setSelected(prevQuestName); - } + public void setPrevQuestName(String selectedQuest) { + prevQuestName = selectedQuest; + this.questScroll.setSelected(prevQuestName); + } - @Override - public void customScrollClicked(int i, int j, int k, GuiCustomScroll guiCustomScroll) { - if(guiCustomScroll.id == 0) - { - getCategory(false); - } - if(guiCustomScroll.id == 1) - { - getQuest(false); - } - } - - public void getCategory(boolean override){ - if(catScroll.selected != -1){ - String selected = catScroll.getSelected(); - if(!selected.equals(prevCatName) || override){ - category = new QuestCategory(); + @Override + public void customScrollClicked(int i, int j, int k, GuiCustomScroll guiCustomScroll) { + if (guiCustomScroll.id == 0) { + getCategory(false); + } + if (guiCustomScroll.id == 1) { + getQuest(false); + } + } + public void getCategory(boolean override) { + if (catScroll.selected != -1) { + String selected = catScroll.getSelected(); + if (!selected.equals(prevCatName) || override) { + category = new QuestCategory(); questScroll.selected = -1; questScroll.resetScroll(); questSearch = ""; quest = null; getTextField(66).setText(""); - PacketClient.sendClient(new QuestCategoryGetPacket(catData.get(selected))); - setPrevCatName(selected); - } - } - } + setPrevCatName(selected); + } + } + } - public void getQuest(boolean override){ - if(questScroll.selected != -1){ - String selected = questScroll.getSelected(); - if(!selected.equals(prevQuestName) || override){ - quest = new Quest(); + public void getQuest(boolean override) { + if (questScroll.selected != -1) { + String selected = questScroll.getSelected(); + if (!selected.equals(prevQuestName) || override) { + quest = new Quest(); QuestGetPacket.getQuest(questData.get(selected)); - setPrevQuestName(selected); - } - } - } + setPrevQuestName(selected); + } + } + } - public void clearCategory(){ - catScroll.setList(getCatSearch()); - catScroll.selected = -1; - prevCatName = ""; - category = new QuestCategory(); - this.questData.clear(); - resetQuestList(); - } + public void clearCategory() { + catScroll.setList(getCatSearch()); + catScroll.selected = -1; + prevCatName = ""; + category = new QuestCategory(); + this.questData.clear(); + resetQuestList(); + } - public void saveType(boolean saveQuest){ - if(saveQuest){ - if(questScroll.selected != -1 && quest.id >= 0){ - if(catScroll.selected != -1 && category.id >= 0){ + public void saveType(boolean saveQuest) { + if (saveQuest) { + if (questScroll.selected != -1 && quest.id >= 0) { + if (catScroll.selected != -1 && category.id >= 0) { PacketClient.sendClient(new QuestSavePacket(category.id, quest.writeToNBT(new NBTTagCompound()), true)); - } - } - } - else{ - if(catScroll.selected != -1 && category.id >= 0) + } + } + } else { + if (catScroll.selected != -1 && category.id >= 0) PacketClient.sendClient(new QuestCategorySavePacket(category.writeNBT(new NBTTagCompound()))); - } - } + } + } - public void save() {} + public void save() {} - @Override - public void setData(Vector list, HashMap data) { - String name = catScroll.getSelected(); - this.catData = data; - catScroll.setList(getCatSearch()); - if(name != null){ - catScroll.setSelected(name); - getCategory(false); - } else { - catScroll.setSelected(prevCatName); - getCategory(true); - } - initGui(); - } + @Override + public void setData(Vector list, HashMap data) { + String name = catScroll.getSelected(); + this.catData = data; + catScroll.setList(getCatSearch()); + if (name != null) { + catScroll.setSelected(name); + getCategory(false); + } else { + catScroll.setSelected(prevCatName); + getCategory(true); + } + initGui(); + } - @Override - public void setSelected(String selected) {} + @Override + public void setSelected(String selected) {} - @Override - public void setScrollGroup(Vector list, HashMap data) { - String name = questScroll.getSelected(); - this.questData = data; - questScroll.setList(getQuestSearch()); - if(name != null){ - questScroll.setSelected(name); - getQuest(false); - } else { - questScroll.setSelected(prevQuestName); - getQuest(true); - } - initGui(); - } + @Override + public void setScrollGroup(Vector list, HashMap data) { + String name = questScroll.getSelected(); + this.questData = data; + questScroll.setList(getQuestSearch()); + if (name != null) { + questScroll.setSelected(name); + getQuest(false); + } else { + questScroll.setSelected(prevQuestName); + getQuest(true); + } + initGui(); + } - @Override - public void setSelectedGroup(String selected) {} + @Override + public void setSelectedGroup(String selected) {} @Override public void confirmClicked(boolean result, int id) { NoppesUtil.openGUI(player, this); - if(!result) + if (!result) return; - if(id == 5) { - if(catData.containsKey(catScroll.getSelected())) { + if (id == 5) { + if (catData.containsKey(catScroll.getSelected())) { PacketClient.sendClient(new QuestCategoryRemovePacket(category.id)); clearCategory(); } } - if(id == 2) { + if (id == 2) { PacketClient.sendClient(new QuestRemovePacket(quest.id, true)); quest = new Quest(); questData.clear(); From 50c6ab644bc26b0afac398caebc9a276dd92be02 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 16:59:06 -0500 Subject: [PATCH 111/157] Semi Functioning Magic Map System --- src/main/java/noppes/npcs/CustomNpcs.java | 2 + .../java/noppes/npcs/client/ClientProxy.java | 3 +- .../npcs/client/gui/global/GuiMagicMap.java | 413 +++++++++++++ .../client/gui/global/GuiNPCManageMagic.java | 71 +++ .../client/gui/util/GuiNPCInterface2.java | 7 + .../npcs/controllers/MagicController.java | 541 ++++++++++++------ .../noppes/npcs/controllers/data/Magic.java | 148 +++-- 7 files changed, 988 insertions(+), 197 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java create mode 100644 src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 2f5ad1837..aa7838e1b 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -199,6 +199,8 @@ public class CustomNpcs { ChunkController.Instance.clear(); FactionController.getInstance().load(); // VisibilityController.instance = new VisibilityController(); + new MagicController(); + MagicController.getInstance().load(); new PlayerDataController(); new TagController(); new TransportController(); diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index 85e8063c3..5e91116ba 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -243,7 +243,8 @@ public class ClientProxy extends CommonProxy { return new GuiNpcPather(npc); else if (gui == EnumGuiType.ManageFactions) - return new GuiNPCManageFactions(npc); + return new GuiNPCManageMagic(npc); + // return new GuiNPCManageFactions(npc); else if (gui == EnumGuiType.ManageCustomForms) return DBCClient.Instance.manageCustomForms(npc); diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java new file mode 100644 index 000000000..9e9888adf --- /dev/null +++ b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java @@ -0,0 +1,413 @@ +package noppes.npcs.client.gui.global; + +import java.awt.Point; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; + +import noppes.npcs.client.gui.util.GuiNPCInterface2; +import noppes.npcs.controllers.MagicController; +import noppes.npcs.controllers.data.Magic; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.input.Mouse; +import org.lwjgl.opengl.GL11; + +public class GuiMagicMap extends Gui { + + private final GuiScreen parent; + private final int x, y, width, height; + private final int iconSize = 16; + private final int slotPadding = 4; // extra pixels for the slot background + private final int slotSize = iconSize + slotPadding; // e.g., 20 + private float panX = 0, panY = 0; + private int lastDragX, lastDragY; + private boolean dragging = false; + + private float zoom = 1.0f; // Zoom factor + + // Build our own list from the controller's map. + private List magics; + private Map positions = new HashMap<>(); + + public GuiMagicMap(GuiScreen parent, int x, int y, int width, int height) { + this.parent = parent; + this.x = x; + this.y = y; + this.width = width; + this.height = height; + magics = new ArrayList(); + for (Magic magic : MagicController.getInstance().magics.values()) { + magics.add(magic); + } + calculatePositions(); + } + + // Call this from your scroll wheel event: + public void handleMouseScroll(int scrollDelta) { + zoom += scrollDelta * 0.0009f; + if (zoom < 0.5f) zoom = 0.5f; + if (zoom > 2.0f) zoom = 2.0f; + } + + // Lay out icons evenly in a circle. + private void calculatePositions() { + int count = magics.size(); + int centerX = x + width / 2; + int centerY = y + height / 2; + int radius = Math.min(width, height) / 2 - iconSize - 10; + for (int i = 0; i < count; i++) { + double angle = 2 * Math.PI * i / count; + int posX = (int) (centerX + radius * Math.cos(angle)); + int posY = (int) (centerY + radius * Math.sin(angle)); + positions.put(magics.get(i).id, new Point(posX, posY)); + } + } + + // Helper: distance from point (px,py) to line segment (x1,y1)-(x2,y2) + private double pointLineDistance(double px, double py, double x1, double y1, double x2, double y2) { + double A = px - x1, B = py - y1, C = x2 - x1, D = y2 - y1; + double dot = A * C + B * D; + double lenSq = C * C + D * D; + double param = (lenSq != 0) ? (dot / lenSq) : -1; + double xx, yy; + if (param < 0) { xx = x1; yy = y1; } + else if (param > 1) { xx = x2; yy = y2; } + else { xx = x1 + param * C; yy = y1 + param * D; } + double dx = px - xx, dy = py - yy; + return Math.sqrt(dx * dx + dy * dy); + } + + // Returns an ARGB color for an arrow based on the weakness percentage. + private int getArrowColor(float percent) { + if (percent <= 0.10f) return 0xFF80FF80; // light green + else if (percent <= 0.40f) return 0xFFCCFF66; // green-yellow + else if (percent <= 0.50f) return 0xFFFFA500; // orange + else { + float ratio = (percent - 0.50f) / 0.50f; + ratio = Math.min(1.0f, Math.max(0.0f, ratio)); + int r1 = 0xFF, g1 = 0xA5, b1 = 0x00; + int r2 = 0xFF, g2 = 0x00, b2 = 0x00; + int r = r1 + (int)((r2 - r1) * ratio); + int g = g1 + (int)((g2 - g1) * ratio); + int b = b1 + (int)((b2 - b1) * ratio); + return (0xFF << 24) | (r << 16) | (g << 8) | b; + } + } + + // Main draw method. + public void drawMap(int mouseX, int mouseY) { + // Call this once per draw; adjust if needed. + handleMouseScroll(Mouse.getDWheel()); + + Minecraft mc = Minecraft.getMinecraft(); + ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); + int factor = sr.getScaleFactor(); + + // Recalculate positions. + calculatePositions(); + + // Compute transformed mouse coordinates for hit testing. + int centerX = x + width / 2, centerY = y + height / 2; + int tMouseX = centerX + (int)((mouseX - centerX) / zoom); + int tMouseY = centerY + (int)((mouseY - centerY) / zoom); + + // --- Determine selection state --- + Integer hoveredIconID = null; + int selectedArrowAttacker = -1, selectedArrowDefender = -1; + HashSet selectedIconIDs = new HashSet<>(); + // Check icons first. + for (Magic magic : magics) { + Point pos = positions.get(magic.id); + if (pos == null) continue; + int slotX = pos.x + (int)panX - slotSize / 2; + int slotY = pos.y + (int)panY - slotSize / 2; + if (tMouseX >= slotX && tMouseX < slotX + slotSize && + tMouseY >= slotY && tMouseY < slotY + slotSize) { + hoveredIconID = magic.id; + break; + } + } + if (hoveredIconID != null) { + selectedIconIDs.add(hoveredIconID); + Magic hoveredMagic = null; + for (Magic magic : magics) { + if (magic.id == hoveredIconID) { + hoveredMagic = magic; + break; + } + } + if (hoveredMagic != null) { + // Add connected icons. + for (Magic magic : magics) { + if (magic.weaknesses.containsKey(hoveredIconID)) { + selectedIconIDs.add(magic.id); + } + } + for (Integer otherId : hoveredMagic.weaknesses.keySet()) { + selectedIconIDs.add(otherId); + } + } + } else { + // Otherwise, check for arrow hover. + final double threshold = 5.0; + outer: for (Magic defMagic : magics) { + Point defPos = positions.get(defMagic.id); + if (defPos == null) continue; + for (Integer attackerId : defMagic.weaknesses.keySet()) { + Point attPos = positions.get(attackerId); + if (attPos == null) continue; + double x1 = attPos.x + panX, y1 = attPos.y + panY; + double x2 = defPos.x + panX, y2 = defPos.y + panY; + double dist = pointLineDistance(tMouseX, tMouseY, x1, y1, x2, y2); + if (dist < threshold) { + selectedArrowAttacker = attackerId; + selectedArrowDefender = defMagic.id; + selectedIconIDs.add(attackerId); + selectedIconIDs.add(defMagic.id); + break outer; + } + } + } + } + + // --- Set scissor rectangle (in original coords) --- + GL11.glEnable(GL11.GL_SCISSOR_TEST); + GL11.glScissor(x * factor, (sr.getScaledHeight() - (y + height)) * factor, width * factor, height * factor); + + // --- Draw dark background BEFORE zoom --- + parent.drawRect(x, y, x + width, y + height, 0xFF333333); + + // --- Begin zoom transformation --- + GL11.glPushMatrix(); + GL11.glTranslatef(centerX, centerY, 0); + GL11.glScalef(zoom, zoom, 1.0f); + GL11.glTranslatef(-centerX, -centerY, 0); + + // --- Draw arrow lines first --- + for (Magic defMagic : magics) { + Point defPos = positions.get(defMagic.id); + if (defPos == null) continue; + for (Integer attackerId : defMagic.weaknesses.keySet()) { + Point attPos = positions.get(attackerId); + if (attPos == null) continue; + float percent = defMagic.weaknesses.get(attackerId); + int ax = attPos.x + (int)panX; + int ay = attPos.y + (int)panY; + int dx = defPos.x + (int)panX; + int dy = defPos.y + (int)panY; + boolean dim = false; + if (!selectedIconIDs.isEmpty() && !(selectedIconIDs.contains(attackerId) && selectedIconIDs.contains(defMagic.id))) { + dim = true; + } + drawArrowLine(ax, ay, dx, dy, percent, dim); + } + } + + // --- Draw icons (with larger slot backgrounds) --- + RenderHelper.enableGUIStandardItemLighting(); + RenderItem renderItem = new RenderItem(); + FontRenderer fontRenderer = mc.fontRenderer; + TextureManager textureManager = mc.getTextureManager(); + for (Magic magic : magics) { + Point pos = positions.get(magic.id); + if (pos == null) continue; + int slotX = pos.x + (int)panX - slotSize / 2; + int slotY = pos.y + (int)panY - slotSize / 2; + boolean iconDim = (!selectedIconIDs.isEmpty() && !selectedIconIDs.contains(magic.id)); + if (iconDim) { + GL11.glColor4f(0.4f, 0.4f, 0.4f, 1f); + } + parent.drawRect(slotX, slotY, slotX + slotSize, slotY + slotSize, 0xFF999999); + drawHorizontalLine(slotX, slotX + slotSize, slotY, 0xFF555555); + drawHorizontalLine(slotX, slotX + slotSize, slotY + slotSize - 1, 0xFF555555); + drawVerticalLine(slotX, slotY, slotY + slotSize, 0xFF555555); + drawVerticalLine(slotX + slotSize - 1, slotY, slotY + slotSize, 0xFF555555); + int iconX = pos.x + (int)panX - iconSize / 2; + int iconY = pos.y + (int)panY - iconSize / 2; + if (magic.iconItem != null) { + renderItem.renderItemAndEffectIntoGUI(fontRenderer, textureManager, magic.iconItem, iconX, iconY); + } else if (magic.iconTexture != null && !magic.iconTexture.isEmpty()) { + textureManager.bindTexture(new ResourceLocation(magic.iconTexture)); + parent.drawTexturedModalRect(iconX, iconY, 0, 0, iconSize, iconSize); + } else { + ItemStack sword = new ItemStack(Items.iron_sword); + renderItem.renderItemAndEffectIntoGUI(fontRenderer, textureManager, sword, iconX, iconY); + } + if (iconDim) { + GL11.glColor4f(1f, 1f, 1f, 1f); + } + } + RenderHelper.disableStandardItemLighting(); + GL11.glPopMatrix(); + + // --- Draw arrow heads (on top) using the same zoom transformation --- + GL11.glPushMatrix(); + GL11.glTranslatef(centerX, centerY, 0); + GL11.glScalef(zoom, zoom, 1.0f); + GL11.glTranslatef(-centerX, -centerY, 0); + for (Magic defMagic : magics) { + Point defPos = positions.get(defMagic.id); + if (defPos == null) continue; + for (Integer attackerId : defMagic.weaknesses.keySet()) { + Point attPos = positions.get(attackerId); + if (attPos == null) continue; + float percent = defMagic.weaknesses.get(attackerId); + int ax = attPos.x + (int)panX; + int ay = attPos.y + (int)panY; + int dx = defPos.x + (int)panX; + int dy = defPos.y + (int)panY; + boolean dim = false; + if (!selectedIconIDs.isEmpty() && !(selectedIconIDs.contains(attackerId) && selectedIconIDs.contains(defMagic.id))) { + dim = true; + } + drawArrowHead(ax, ay, dx, dy, percent, dim); + } + } + GL11.glPopMatrix(); + + GL11.glDisable(GL11.GL_SCISSOR_TEST); + + // --- Draw tooltips outside of the zoom transformation --- + if (hoveredIconID != null) { + for (Magic magic : magics) { + if (magic.id == hoveredIconID) { + List tooltip = new ArrayList<>(); + tooltip.add(magic.getName()); + if (parent instanceof GuiNPCInterface2) { + ((GuiNPCInterface2) parent).renderHoveringText(tooltip, mouseX, mouseY, fontRenderer); + } + return; + } + } + } else { + final double threshold = 5.0; + for (Magic defMagic : magics) { + Point defPos = positions.get(defMagic.id); + if (defPos == null) continue; + for (Integer attackerId : defMagic.weaknesses.keySet()) { + Point attPos = positions.get(attackerId); + if (attPos == null) continue; + double x1 = attPos.x + panX, y1 = attPos.y + panY; + double x2 = defPos.x + panX, y2 = defPos.y + panY; + double dist = pointLineDistance(tMouseX, tMouseY, x1, y1, x2, y2); + if (dist < threshold) { + float percent = defMagic.weaknesses.get(attackerId); + List tooltip = new ArrayList<>(); + tooltip.add("+" + (int)(percent * 100) + "%"); + if (parent instanceof GuiNPCInterface2) { + ((GuiNPCInterface2) parent).renderHoveringText(tooltip, mouseX, mouseY, fontRenderer); + } + return; + } + } + } + } + } + + // Draw only the arrow line (without arrow head). + private void drawArrowLine(int x1, int y1, int x2, int y2, float percent, boolean dim) { + int arrowColor = getArrowColor(percent); + GL11.glPushAttrib(GL11.GL_ENABLE_BIT); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glLineWidth(2.0F); + float r = ((arrowColor >> 16) & 0xFF) / 255.0F; + float g = ((arrowColor >> 8) & 0xFF) / 255.0F; + float b = (arrowColor & 0xFF) / 255.0F; + if (dim) { r *= 0.4f; g *= 0.4f; b *= 0.4f; } + GL11.glColor4f(r, g, b, 1f); + GL11.glBegin(GL11.GL_LINES); + GL11.glVertex2f(x1, y1); + GL11.glVertex2f(x2, y2); + GL11.glEnd(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopAttrib(); + } + + // Draw the arrow head so that its tip connects at the defender icon edge. + private void drawArrowHead(int x1, int y1, int x2, int y2, float percent, boolean dim) { + // x1,y1 and x2,y2 are the centers (after pan) of the attacker and defender icons. + float dx = x2 - x1; + float dy = y2 - y1; + float len = (float)Math.sqrt(dx * dx + dy * dy); + if(len == 0) return; + // Compute unit vector from attacker to defender. + float ux = dx / len, uy = dy / len; + // Offset defender center by half the slot size to get the edge. + float defenderEdgeX = x2 - ux * (slotSize / 2f); + float defenderEdgeY = y2 - uy * (slotSize / 2f); + + // For testing, try a larger arrow size. + int arrowSize = 5; // adjust as needed + + // Compute the angle from attacker to defender. + double angle = Math.atan2(uy, ux); + // Compute left and right points of the arrow head. + float leftX = (float)(defenderEdgeX - arrowSize * Math.cos(angle - Math.PI / 6)); + float leftY = (float)(defenderEdgeY - arrowSize * Math.sin(angle - Math.PI / 6)); + float rightX = (float)(defenderEdgeX - arrowSize * Math.cos(angle + Math.PI / 6)); + float rightY = (float)(defenderEdgeY - arrowSize * Math.sin(angle + Math.PI / 6)); + + int arrowColor = getArrowColor(percent); + GL11.glPushAttrib(GL11.GL_ENABLE_BIT); + GL11.glDisable(GL11.GL_TEXTURE_2D); + float r = ((arrowColor >> 16) & 0xFF) / 255.0F; + float g = ((arrowColor >> 8) & 0xFF) / 255.0F; + float b = (arrowColor & 0xFF) / 255.0F; + if(dim) { r *= 0.4f; g *= 0.4f; b *= 0.4f; } + GL11.glColor4f(r, g, b, 1f); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glBegin(GL11.GL_TRIANGLES); + GL11.glVertex2f(defenderEdgeX, defenderEdgeY); + GL11.glVertex2f(leftX, leftY); + GL11.glVertex2f(rightX, rightY); + GL11.glEnd(); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopAttrib(); + } + + // --- Mouse handling methods --- + public boolean mouseClicked(int mouseX, int mouseY, int mouseButton) { + if (mouseButton == 0 && isWithin(mouseX, mouseY)) { + dragging = true; + lastDragX = mouseX; + lastDragY = mouseY; + return true; + } + return false; + } + + public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { + if (dragging) { + int dx = mouseX - lastDragX; + int dy = mouseY - lastDragY; + // Adjust panning speed by zoom so dragging "feels" the same. + panX += dx / zoom * 0.7f; + panY += dy / zoom * 0.7f; + lastDragX = mouseX; + lastDragY = mouseY; + } + } + + public void mouseReleased(int mouseX, int mouseY, int state) { + dragging = false; + } + + private boolean isWithin(int mouseX, int mouseY) { + return mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height; + } +} diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java new file mode 100644 index 000000000..bfb7df78a --- /dev/null +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java @@ -0,0 +1,71 @@ +package noppes.npcs.client.gui.global; + +import noppes.npcs.client.gui.util.GuiNPCInterface2; +import noppes.npcs.entity.EntityNPCInterface; + +public class GuiNPCManageMagic extends GuiNPCInterface2 { + + private GuiMagicMap magicMap; + + public GuiNPCManageMagic(EntityNPCInterface npc) { + super(npc); + } + + @Override + public void initGui() { + super.initGui(); + // Position the map in a designated area (e.g., right panel) + int mapX = guiLeft + xSize - 230 + 10; + int mapY = guiTop + 10; + int mapWidth = 210; + int mapHeight = 200; + magicMap = new GuiMagicMap(this, mapX, mapY, mapWidth, mapHeight); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + super.drawScreen(mouseX, mouseY, partialTicks); + if (magicMap != null) { + magicMap.drawMap(mouseX, mouseY); + } + } + + @Override + public void mouseClicked(int mouseX, int mouseY, int mouseButton) { + if (magicMap != null && magicMap.mouseClicked(mouseX, mouseY, mouseButton)) { + return; + } + super.mouseClicked(mouseX, mouseY, mouseButton); + } + + @Override + protected void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { + if (magicMap != null) { + magicMap.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick); + } + super.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick); + } + + @Override + protected void mouseMovedOrUp(int mouseX, int mouseY, int state) { + if (magicMap != null) { + magicMap.mouseReleased(mouseX, mouseY, state); + } + super.mouseMovedOrUp(mouseX, mouseY, state); + } + + @Override + protected void actionPerformed(net.minecraft.client.gui.GuiButton button) { + // your existing action handling + } + + @Override + public void keyTyped(char c, int i) { + super.keyTyped(c, i); + } + + @Override + public void save() { + // your save logic + } +} diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface2.java b/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface2.java index da766c681..9e035f830 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface2.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface2.java @@ -1,9 +1,12 @@ package noppes.npcs.client.gui.util; +import net.minecraft.client.gui.FontRenderer; import net.minecraft.util.ResourceLocation; import noppes.npcs.entity.EntityNPCInterface; import org.lwjgl.opengl.GL11; +import java.util.List; + public abstract class GuiNPCInterface2 extends GuiNPCInterface { private ResourceLocation background = new ResourceLocation("customnpcs:textures/gui/menubg.png"); @@ -62,6 +65,10 @@ public abstract class GuiNPCInterface2 extends GuiNPCInterface drawTexturedModalRect(guiLeft + xSize-230, guiTop, 26, 0, 230, 220); } + public void renderHoveringText(List textLines, int x, int y, FontRenderer font) { + this.drawHoveringText(textLines, x, y, font); + } + protected GuiNpcMenu getMenu(){ return this.menu; } diff --git a/src/main/java/noppes/npcs/controllers/MagicController.java b/src/main/java/noppes/npcs/controllers/MagicController.java index a14f01384..b0343bae4 100644 --- a/src/main/java/noppes/npcs/controllers/MagicController.java +++ b/src/main/java/noppes/npcs/controllers/MagicController.java @@ -1,5 +1,6 @@ package noppes.npcs.controllers; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -9,193 +10,409 @@ import noppes.npcs.api.handler.data.IMagic; import noppes.npcs.controllers.data.Magic; import java.io.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.zip.GZIPInputStream; public class MagicController { - public HashMap magicSync = new HashMap(); - public HashMap magics; + public HashMap magicSync = new HashMap(); + public HashMap magics; - private static MagicController instance = new MagicController(); + private static MagicController instance; - private int lastUsedID = 0; + private int lastUsedID = 0; - public MagicController(){ - instance = this; - magics = new HashMap(); - } + public MagicController() { + instance = this; + magics = new HashMap(); + } - public static MagicController getInstance(){ - return instance; - } + public static MagicController getInstance() { + return instance; + } - public Magic getMagic(int magic) { - return magics.get(magic); - } + public Magic getMagic(int magic) { + return magics.get(magic); + } - public void load(){ + public void load() { magics = new HashMap(); lastUsedID = 0; - File saveDir = CustomNpcs.getWorldSaveDirectory(); - if(saveDir == null){ - return; - } - try { - File file = new File(saveDir, "magic.dat"); - if(file.exists()){ - loadMagicFile(file); - } - } catch (Exception e) { - try { - File file = new File(saveDir, "magic.dat_old"); - if(file.exists()){ - loadMagicFile(file); - } - - } catch (Exception ee) { - } - } - - if(magics.isEmpty()){ - magics.put(0,new Magic(0,"Nature", 0x00DD00)); - magics.put(1,new Magic(1,"Arcane", 0xF2DD00)); - magics.put(2,new Magic(2,"Ice", 0xDD0000)); - magics.put(3,new Magic(3,"Fire", 0xDD0000)); - magics.put(4,new Magic(4,"Dark", 0xDD0000)); - magics.put(5,new Magic(5,"Holy", 0xDD0000)); + File saveDir = CustomNpcs.getWorldSaveDirectory(); + if (saveDir == null) { + return; + } + try { + File file = new File(saveDir, "magic.dat"); + if (file.exists()) { + loadMagicFile(file); + } + } catch (Exception e) { + try { + File file = new File(saveDir, "magic.dat_old"); + if (file.exists()) { + loadMagicFile(file); + } + } catch (Exception ee) { } } - } - private void loadMagicFile(File file) throws IOException{ - DataInputStream var1 = new DataInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(file)))); - loadMagic(var1); - var1.close(); - } + if (magics.isEmpty()) { + // Create default magics + Magic nature = new Magic(0, "Nature", 0x00DD00); + Magic arcane = new Magic(1, "Arcane", 0xF2DD00); + Magic ice = new Magic(2, "Ice", 0xDD0000); + Magic fire = new Magic(3, "Fire", 0xDD0000); + Magic dark = new Magic(4, "Dark", 0xDD0000); + Magic holy = new Magic(5, "Holy", 0xDD0000); - public void loadMagic(DataInputStream stream) throws IOException{ - HashMap magic = new HashMap(); - NBTTagCompound nbttagcompound1 = CompressedStreamTools.read(stream); - lastUsedID = nbttagcompound1.getInteger("lastID"); - NBTTagList list = nbttagcompound1.getTagList("NPCMagic", 10); + // Define weaknesses (extra damage percentages as fractions) + // Cycle: Nature -> Arcane -> Fire -> Ice -> Nature + nature.weaknesses.put(1, 0.20f); // Nature is weak to Arcane (20% extra damage) + arcane.weaknesses.put(3, 0.25f); // Arcane is weak to Fire (25%) + fire.weaknesses.put(2, 0.30f); // Fire is weak to Ice (30%) + ice.weaknesses.put(0, 0.20f); // Ice is weak to Nature (20%) - if(list != null){ - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound nbttagcompound = list.getCompoundTagAt(i); - Magic loadMagic = new Magic(); - loadMagic.readNBT(nbttagcompound); - magic.put(loadMagic.id,loadMagic); - } - } - this.magics = magic; - } - public NBTTagCompound getNBT(){ - NBTTagList list = new NBTTagList(); - for(int slot : magics.keySet()){ - Magic mag = magics.get(slot); - NBTTagCompound nbtfactions = new NBTTagCompound(); - mag.writeNBT(nbtfactions); - list.appendTag(nbtfactions); - } - NBTTagCompound nbttagcompound = new NBTTagCompound(); - nbttagcompound.setInteger("lastID", lastUsedID); - nbttagcompound.setTag("NPCFactions", list); - return nbttagcompound; - } - public void saveFactions(){ - try { - File saveDir = CustomNpcs.getWorldSaveDirectory(); - File file = new File(saveDir, "magic.dat_new"); - File file1 = new File(saveDir, "magic.dat_old"); - File file2 = new File(saveDir, "magic.dat"); - CompressedStreamTools.writeCompressed(getNBT(), new FileOutputStream(file)); - if(file1.exists()) - { - file1.delete(); - } - file2.renameTo(file1); - if(file2.exists()) - { - file2.delete(); - } - file.renameTo(file2); - if(file.exists()) - { - file.delete(); - } - } catch (Exception e) { - LogWriter.except(e); - } - } + // Dark and Holy are opposites + dark.weaknesses.put(5, 0.40f); // Dark is weak to Holy (40%) + holy.weaknesses.put(4, 0.40f); // Holy is weak to Dark (40%) - public Magic get(int magicID) { - return magics.get(magicID); - } + // Add them to the registry + magics.put(nature.id, nature); + magics.put(arcane.id, arcane); + magics.put(ice.id, ice); + magics.put(fire.id, fire); + magics.put(dark.id, dark); + magics.put(holy.id, holy); + } + printAllMagicInteractions(); + } - public List list() { - return new ArrayList(this.magics.values()); - } + private void loadMagicFile(File file) throws IOException { + DataInputStream stream = new DataInputStream( + new BufferedInputStream(new GZIPInputStream(new FileInputStream(file))) + ); + loadMagic(stream); + stream.close(); + } - public void saveMagic(Magic mag) { + public void loadMagic(DataInputStream stream) throws IOException { + HashMap magic = new HashMap(); + NBTTagCompound nbttagcompound1 = CompressedStreamTools.read(stream); + lastUsedID = nbttagcompound1.getInteger("lastID"); + NBTTagList list = nbttagcompound1.getTagList("NPCMagic", 10); // using "NPCMagic" as tag - if(mag.id < 0){ - mag.id = getUnusedId(); - while(hasName(mag.name)) - mag.name += "_"; - } - else{ - Magic existing = magics.get(mag.id); - if(existing != null && !existing.name.equals(mag.name)) - while(hasName(mag.name)) - mag.name += "_"; - } - magics.remove(mag.id); - magics.put(mag.id, mag); + if (list != null) { + for (int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbttagcompound = list.getCompoundTagAt(i); + Magic loadMagic = new Magic(); + loadMagic.readNBT(nbttagcompound); + magic.put(loadMagic.id, loadMagic); + } + } + this.magics = magic; + } + + public NBTTagCompound getNBT() { + NBTTagList list = new NBTTagList(); + for (int slot : magics.keySet()) { + Magic mag = magics.get(slot); + NBTTagCompound nbtMagic = new NBTTagCompound(); + mag.writeNBT(nbtMagic); + list.appendTag(nbtMagic); + } + NBTTagCompound nbttagcompound = new NBTTagCompound(); + nbttagcompound.setInteger("lastID", lastUsedID); + nbttagcompound.setTag("NPCMagic", list); // use same tag as loadMagic + return nbttagcompound; + } + + public void saveFactions() { + try { + File saveDir = CustomNpcs.getWorldSaveDirectory(); + File file = new File(saveDir, "magic.dat_new"); + File file1 = new File(saveDir, "magic.dat_old"); + File file2 = new File(saveDir, "magic.dat"); + CompressedStreamTools.writeCompressed(getNBT(), new FileOutputStream(file)); + if (file1.exists()) { + file1.delete(); + } + file2.renameTo(file1); + if (file2.exists()) { + file2.delete(); + } + file.renameTo(file2); + if (file.exists()) { + file.delete(); + } + } catch (Exception e) { + LogWriter.except(e); + } + } + + public Magic get(int magicID) { + return magics.get(magicID); + } + + public List list() { + return new ArrayList(this.magics.values()); + } + + public void saveMagic(Magic mag) { + if (mag.id < 0) { + mag.id = getUnusedId(); + while (hasName(mag.name)) + mag.name += "_"; + } else { + Magic existing = magics.get(mag.id); + if (existing != null && !existing.name.equals(mag.name)) + while (hasName(mag.name)) + mag.name += "_"; + } + magics.remove(mag.id); + magics.put(mag.id, mag); NBTTagCompound facCompound = new NBTTagCompound(); mag.writeNBT(facCompound); // Server.sendToAll(EnumPacketClient.SYNC_UPDATE, SyncType.MAGIC, facCompound); - saveFactions(); - } + saveFactions(); + } - public int getUnusedId(){ - if(lastUsedID == 0){ - for(int catid : magics.keySet()) - if(catid > lastUsedID) - lastUsedID = catid; - } - lastUsedID++; - return lastUsedID; - } + public int getUnusedId() { + if (lastUsedID == 0) { + for (int catid : magics.keySet()) + if (catid > lastUsedID) + lastUsedID = catid; + } + lastUsedID++; + return lastUsedID; + } - public boolean hasName(String newName) { - if(newName.trim().isEmpty()) - return true; - for(Magic mag : magics.values()) - if(mag.name.equals(newName)) - return true; - return false; - } + public boolean hasName(String newName) { + if (newName.trim().isEmpty()) + return true; + for (Magic mag : magics.values()) + if (mag.name.equals(newName)) + return true; + return false; + } - public Magic getMagicFromName(String magicName){ - for (Map.Entry entryMag: MagicController.getInstance().magics.entrySet()){ - if (entryMag.getValue().name.equalsIgnoreCase(magicName)){ - return entryMag.getValue(); - } - } - return null; - } + public Magic getMagicFromName(String magicName) { + for (Map.Entry entryMag : MagicController.getInstance().magics.entrySet()) { + if (entryMag.getValue().name.equalsIgnoreCase(magicName)) { + return entryMag.getValue(); + } + } + return null; + } - public String[] getNames() { - String[] names = new String[magics.size()]; - int i = 0; - for(Magic mag : magics.values()){ - names[i] = mag.name.toLowerCase(); - i++; - } - return names; - } + public String[] getNames() { + String[] names = new String[magics.size()]; + int i = 0; + for (Magic mag : magics.values()) { + names[i] = mag.name.toLowerCase(); + i++; + } + return names; + } + + // --- New functions for applying magic NBT stats and calculating damage --- + + /** + * Applies magic-type damage to an item. A weapon/item can have multiple magic damage values. + * The damage is stored under a compound tag "MagicDamage" where each key is the magic ID. + */ + public static void addMagicDamageToItem(ItemStack item, int magicId, float damage) { + if (item == null) return; + if (item.stackTagCompound == null) + item.stackTagCompound = new NBTTagCompound(); + NBTTagCompound compound = item.stackTagCompound; + NBTTagCompound magicDamage; + if (compound.hasKey("MagicDamage")) { + magicDamage = compound.getCompoundTag("MagicDamage"); + } else { + magicDamage = new NBTTagCompound(); + } + magicDamage.setFloat(String.valueOf(magicId), damage); + compound.setTag("MagicDamage", magicDamage); + } + + /** + * Applies magic resistance to an armor piece. + * The resistance is stored under a compound tag "MagicResistances" with the magic ID as key. + */ + public static void addMagicResistanceToArmor(ItemStack armor, int magicId, float resistance) { + if (armor == null) return; + if (armor.stackTagCompound == null) + armor.stackTagCompound = new NBTTagCompound(); + NBTTagCompound compound = armor.stackTagCompound; + NBTTagCompound magicResist; + if (compound.hasKey("MagicResistances")) { + magicResist = compound.getCompoundTag("MagicResistances"); + } else { + magicResist = new NBTTagCompound(); + } + magicResist.setFloat(String.valueOf(magicId), resistance); + compound.setTag("MagicResistances", magicResist); + } + + /** + * Given a collection of armor pieces, sums the resistance value for the specified magic ID. + */ + public static float calculateTotalMagicResistance(int magicId, Iterable armors) { + float totalResistance = 0.0F; + for (ItemStack armor : armors) { + if (armor != null && armor.hasTagCompound() && armor.stackTagCompound.hasKey("MagicResistances")) { + NBTTagCompound magicResist = armor.stackTagCompound.getCompoundTag("MagicResistances"); + if (magicResist.hasKey(String.valueOf(magicId))) { + totalResistance += magicResist.getFloat(String.valueOf(magicId)); + } + } + } + return totalResistance; + } + + /** + * Calculates the final magic damage after applying armor resistances. + * For a given magic type, the resistance is applied. + * + * @param magicId the magic type + * @param baseDamage the base damage value + * @param armors an Iterable collection of armor ItemStacks + * @return the final damage after reduction + */ + public static float calculateFinalMagicDamage(int magicId, float baseDamage, Iterable armors) { + if (getInstance().getMagic(magicId) == null) { + // If the magic type is not defined, treat it as non-magical. + return baseDamage; + } + float resistance = calculateTotalMagicResistance(magicId, armors); + // Resistance is assumed to be a fractional reduction (e.g., 0.2 = 20% reduction). + return baseDamage * (1.0F - resistance); + } + + /** + * Extracts magic damage values from a weapon ItemStack. + * It looks for a compound tag "CNPCMagic" first; if not found, it falls back to "MagicDamage". + * Returns a mapping of magic ID to its damage value. + */ + public static Map getMagicDamageFromItem(ItemStack item) { + Map damageMap = new HashMap(); + if (item == null || item.stackTagCompound == null) return damageMap; + NBTTagCompound compound = item.stackTagCompound; + NBTTagCompound damageCompound = null; + if (compound.hasKey("CNPCMagic")) { + NBTTagCompound magicCompound = compound.getCompoundTag("CNPCMagic"); + if (magicCompound.hasKey("MagicDamage")) { + damageCompound = magicCompound.getCompoundTag("MagicDamage"); + } + } else if (compound.hasKey("MagicDamage")) { + damageCompound = compound.getCompoundTag("MagicDamage"); + } + if (damageCompound != null) { + Set keys = damageCompound.func_150296_c(); + for (String key : keys) { + try { + int magicId = Integer.parseInt(key); + float dmg = damageCompound.getFloat(key); + damageMap.put(magicId, dmg); + } catch (NumberFormatException e) { + // Ignore non-integer keys. + } + } + } + return damageMap; + } + + /** + * Extracts magic resistances from an armor ItemStack. + * It checks for a "CNPCMagic" container first; if not present, it falls back to "MagicResistances". + * Returns a mapping of magic ID to its resistance value. + */ + public static Map getMagicResistancesFromItem(ItemStack item) { + Map resistMap = new HashMap(); + if (item == null || item.stackTagCompound == null) return resistMap; + NBTTagCompound compound = item.stackTagCompound; + NBTTagCompound resistCompound = null; + if (compound.hasKey("CNPCMagic")) { + NBTTagCompound magicCompound = compound.getCompoundTag("CNPCMagic"); + if (magicCompound.hasKey("MagicResistances")) { + resistCompound = magicCompound.getCompoundTag("MagicResistances"); + } + } else if (compound.hasKey("MagicResistances")) { + resistCompound = compound.getCompoundTag("MagicResistances"); + } + if (resistCompound != null) { + Set keys = resistCompound.func_150296_c(); + for (String key : keys) { + try { + int magicId = Integer.parseInt(key); + float res = resistCompound.getFloat(key); + resistMap.put(magicId, res); + } catch (NumberFormatException e) { + // Ignore non-integer keys. + } + } + } + return resistMap; + } + + /** + * Validates whether an item (weapon or armor) contains any magic-related NBT. + */ + public static boolean hasMagicStats(ItemStack item) { + if (item == null || item.stackTagCompound == null) return false; + NBTTagCompound compound = item.stackTagCompound; + return compound.hasKey("CNPCMagic") || compound.hasKey("MagicDamage") || compound.hasKey("MagicResistances"); + } + + /** + * Calculates a damage breakdown for each magic type from a weapon when applied against a set of armors. + * This function will ignore any magic with ID 0 (neutral), so only magic damage is returned. + * Returns a map where keys are magic IDs (non-zero) and values are the final damage for that type. + */ + public static Map calculateDamageBreakdown(ItemStack weapon, Iterable armors) { + Map breakdown = new HashMap(); + Map weaponDamage = getMagicDamageFromItem(weapon); + for (Map.Entry entry : weaponDamage.entrySet()) { + int magicId = entry.getKey(); + // Skip magic ID 0 (neutral) + if (magicId == 0) continue; + float dmg = entry.getValue(); + float finalDmg = calculateFinalMagicDamage(magicId, dmg, armors); + breakdown.put(magicId, finalDmg); + } + return breakdown; + } + + /** + * Calculates the total final magic damage of a weapon after applying the resistances of a set of armor pieces. + * This sums only the magic interactions (magic IDs other than 0). + */ + public static float calculateTotalDamage(ItemStack weapon, Iterable armors) { + float totalDamage = 0.0F; + Map breakdown = calculateDamageBreakdown(weapon, armors); + for (Float dmg : breakdown.values()) { + totalDamage += dmg; + } + return totalDamage; + } + + /** + * Prints all magic interactions (weaknesses) in the registry. + * For each magic (defender) that has weaknesses, prints the corresponding attacker and the extra damage percentage. + * Format: "Magic ID: [attacker id], Name: "[attacker name]" does [percentage*100]% extra damage to Magic ID: [defender id], Name: "[defender name]". + */ + public static void printAllMagicInteractions() { + MagicController mc = getInstance(); + for (Magic defender : mc.magics.values()) { + for (Map.Entry entry : defender.weaknesses.entrySet()) { + int attackerId = entry.getKey(); + float percentage = entry.getValue(); + Magic attacker = mc.getMagic(attackerId); + if (attacker != null) { + System.out.println("Magic ID: " + attacker.id + ", Name: \"" + attacker.name + "\" does " + + (percentage * 100) + "% extra damage to Magic ID: " + defender.id + ", Name: \"" + defender.name + "\""); + } + } + } + } } diff --git a/src/main/java/noppes/npcs/controllers/data/Magic.java b/src/main/java/noppes/npcs/controllers/data/Magic.java index 96811f3ab..eaea2608c 100644 --- a/src/main/java/noppes/npcs/controllers/data/Magic.java +++ b/src/main/java/noppes/npcs/controllers/data/Magic.java @@ -1,54 +1,134 @@ package noppes.npcs.controllers.data; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import noppes.npcs.api.handler.data.IMagic; import noppes.npcs.controllers.MagicController; +import java.util.HashMap; +import java.util.Map; + public class Magic implements IMagic { - public String name = ""; - public int color = Integer.parseInt("FF00", 16); + public String name = ""; + public int color = Integer.parseInt("FF00", 16); + public int id = -1; - public int id = -1; + // Icon as an ItemStack or as a texture file + public ItemStack iconItem = null; + public String iconTexture = ""; - public Magic(){} + // Weaknesses mapping: key = magic ID this magic is weak against, + // value = extra damage percentage (as a fraction, e.g. 0.2 for 20% extra damage) + public Map weaknesses = new HashMap(); - public Magic(int id, String name, int color){ - this.name = name; - this.color = color; - this.id = id; - } - public static String formatName(String name){ - name = name.toLowerCase().trim(); - return name.substring(0, 1).toUpperCase() + name.substring(1); - } - public void readNBT(NBTTagCompound compound){ + public Magic() {} + + public Magic(int id, String name, int color) { + this.name = name; + this.color = color; + this.id = id; + } + + public static String formatName(String name) { + name = name.toLowerCase().trim(); + return name.substring(0, 1).toUpperCase() + name.substring(1); + } + + public void readNBT(NBTTagCompound compound) { name = compound.getString("Name"); color = compound.getInteger("Color"); id = compound.getInteger("Slot"); - } - public void writeNBT(NBTTagCompound compound){ - compound.setInteger("Slot", id); - compound.setString("Name", name); - compound.setInteger("Color", color); - } - public int getId() { - return this.id; - } + if(compound.hasKey("IconItem")){ + NBTTagCompound itemTag = compound.getCompoundTag("IconItem"); + iconItem = ItemStack.loadItemStackFromNBT(itemTag); + } + iconTexture = compound.getString("IconTexture"); - public String getName() { - return this.name; - } + // Read the weaknesses mapping from NBT. + weaknesses.clear(); + if(compound.hasKey("Weaknesses")) { + NBTTagList weaknessList = compound.getTagList("Weaknesses", 10); // compound tags + for(int i = 0; i < weaknessList.tagCount(); i++){ + NBTTagCompound weaknessTag = weaknessList.getCompoundTagAt(i); + int weakMagicId = weaknessTag.getInteger("MagicID"); + float percentage = weaknessTag.getFloat("Percentage"); + weaknesses.put(weakMagicId, percentage); + } + } + } - public void setName(String name) { this.name = name; } + public void writeNBT(NBTTagCompound compound) { + compound.setInteger("Slot", id); + compound.setString("Name", name); + compound.setInteger("Color", color); - public void setColor(int color) { this.color = color; } + if(iconItem != null) { + NBTTagCompound itemTag = new NBTTagCompound(); + iconItem.writeToNBT(itemTag); + compound.setTag("IconItem", itemTag); + } + if(iconTexture != null && !iconTexture.isEmpty()){ + compound.setString("IconTexture", iconTexture); + } - public int getColor() { - return this.color; - } + // Write the weaknesses mapping. + NBTTagList weaknessList = new NBTTagList(); + for(Map.Entry entry : weaknesses.entrySet()){ + NBTTagCompound weaknessTag = new NBTTagCompound(); + weaknessTag.setInteger("MagicID", entry.getKey()); + weaknessTag.setFloat("Percentage", entry.getValue()); + weaknessList.appendTag(weaknessTag); + } + compound.setTag("Weaknesses", weaknessList); + } - public void save() { - MagicController.getInstance().saveMagic(this); - } + public int getId() { + return this.id; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public void setColor(int color) { + this.color = color; + } + + public int getColor() { + return this.color; + } + + public void save() { + MagicController.getInstance().saveMagic(this); + } + + public void setIconItem(ItemStack item) { + this.iconItem = item; + } + + public ItemStack getIconItem() { + return this.iconItem; + } + + public void setIconTexture(String texture) { + this.iconTexture = texture; + } + + public String getIconTexture() { + return this.iconTexture; + } + + public void setWeaknesses(Map weaknesses) { + this.weaknesses = weaknesses; + } + + public Map getWeaknesses() { + return this.weaknesses; + } } From 7a0c742833ca7ae7044e1121e57c2291ea18de6a Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 17:28:03 -0500 Subject: [PATCH 112/157] GuiNPCDiagram + Magic System PRE-PUSH --- .../npcs/client/gui/global/GuiMagicMap.java | 438 +++--------- .../npcs/client/gui/global/GuiNPCDiagram.java | 625 ++++++++++++++++++ .../client/gui/global/GuiNPCManageMagic.java | 2 +- .../npcs/controllers/MagicController.java | 16 +- 4 files changed, 715 insertions(+), 366 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java index 9e9888adf..b5b247369 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java @@ -1,9 +1,6 @@ package noppes.npcs.client.gui.global; -import java.awt.Point; import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; @@ -12,402 +9,121 @@ import noppes.npcs.controllers.MagicController; import noppes.npcs.controllers.data.Magic; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.entity.RenderItem; -import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; -import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; -public class GuiMagicMap extends Gui { +/** + * Implementation of GuiNPCDiagram for displaying Magic nodes and their connections. + * Magic objects are wrapped as DiagramIcons, and each Magic's weaknesses generate connections. + */ +public class GuiMagicMap extends GuiNPCDiagram { - private final GuiScreen parent; - private final int x, y, width, height; - private final int iconSize = 16; - private final int slotPadding = 4; // extra pixels for the slot background - private final int slotSize = iconSize + slotPadding; // e.g., 20 - private float panX = 0, panY = 0; - private int lastDragX, lastDragY; - private boolean dragging = false; - - private float zoom = 1.0f; // Zoom factor - - // Build our own list from the controller's map. + private GuiScreen parent; private List magics; - private Map positions = new HashMap<>(); + // Keep one RenderItem instance. + private RenderItem renderItem = new RenderItem(); public GuiMagicMap(GuiScreen parent, int x, int y, int width, int height) { + super(x, y, width, height); this.parent = parent; - this.x = x; - this.y = y; - this.width = width; - this.height = height; - magics = new ArrayList(); + magics = new ArrayList<>(); for (Magic magic : MagicController.getInstance().magics.values()) { magics.add(magic); } - calculatePositions(); } - // Call this from your scroll wheel event: - public void handleMouseScroll(int scrollDelta) { - zoom += scrollDelta * 0.0009f; - if (zoom < 0.5f) zoom = 0.5f; - if (zoom > 2.0f) zoom = 2.0f; - } - - // Lay out icons evenly in a circle. - private void calculatePositions() { - int count = magics.size(); - int centerX = x + width / 2; - int centerY = y + height / 2; - int radius = Math.min(width, height) / 2 - iconSize - 10; - for (int i = 0; i < count; i++) { - double angle = 2 * Math.PI * i / count; - int posX = (int) (centerX + radius * Math.cos(angle)); - int posY = (int) (centerY + radius * Math.sin(angle)); - positions.put(magics.get(i).id, new Point(posX, posY)); + @Override + protected List getIcons() { + List icons = new ArrayList<>(); + for (Magic magic : magics) { + icons.add(new MagicIcon(magic)); } + return icons; } - // Helper: distance from point (px,py) to line segment (x1,y1)-(x2,y2) - private double pointLineDistance(double px, double py, double x1, double y1, double x2, double y2) { - double A = px - x1, B = py - y1, C = x2 - x1, D = y2 - y1; - double dot = A * C + B * D; - double lenSq = C * C + D * D; - double param = (lenSq != 0) ? (dot / lenSq) : -1; - double xx, yy; - if (param < 0) { xx = x1; yy = y1; } - else if (param > 1) { xx = x2; yy = y2; } - else { xx = x1 + param * C; yy = y1 + param * D; } - double dx = px - xx, dy = py - yy; - return Math.sqrt(dx * dx + dy * dy); - } - - // Returns an ARGB color for an arrow based on the weakness percentage. - private int getArrowColor(float percent) { - if (percent <= 0.10f) return 0xFF80FF80; // light green - else if (percent <= 0.40f) return 0xFFCCFF66; // green-yellow - else if (percent <= 0.50f) return 0xFFFFA500; // orange - else { - float ratio = (percent - 0.50f) / 0.50f; - ratio = Math.min(1.0f, Math.max(0.0f, ratio)); - int r1 = 0xFF, g1 = 0xA5, b1 = 0x00; - int r2 = 0xFF, g2 = 0x00, b2 = 0x00; - int r = r1 + (int)((r2 - r1) * ratio); - int g = g1 + (int)((g2 - g1) * ratio); - int b = b1 + (int)((b2 - b1) * ratio); - return (0xFF << 24) | (r << 16) | (g << 8) | b; + @Override + protected List getConnections() { + List conns = new ArrayList<>(); + // For each Magic, generate connections from each weakness (attacker) to this magic. + for (Magic magic : magics) { + if (magic.weaknesses == null) continue; + for (Map.Entry entry : magic.weaknesses.entrySet()) { + int attackerId = entry.getKey(); + float percent = entry.getValue(); + String hover = "+" + (int) (percent * 100) + "%"; + conns.add(new DiagramConnection(attackerId, magic.id, percent, hover)); + } } + return conns; } - // Main draw method. - public void drawMap(int mouseX, int mouseY) { - // Call this once per draw; adjust if needed. - handleMouseScroll(Mouse.getDWheel()); - + @Override + protected void renderIcon(DiagramIcon icon, int posX, int posY, boolean highlighted) { + // Cast to our custom wrapper class. + Magic magic = ((MagicIcon) icon).magic; Minecraft mc = Minecraft.getMinecraft(); - ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); - int factor = sr.getScaleFactor(); - - // Recalculate positions. - calculatePositions(); - - // Compute transformed mouse coordinates for hit testing. - int centerX = x + width / 2, centerY = y + height / 2; - int tMouseX = centerX + (int)((mouseX - centerX) / zoom); - int tMouseY = centerY + (int)((mouseY - centerY) / zoom); - - // --- Determine selection state --- - Integer hoveredIconID = null; - int selectedArrowAttacker = -1, selectedArrowDefender = -1; - HashSet selectedIconIDs = new HashSet<>(); - // Check icons first. - for (Magic magic : magics) { - Point pos = positions.get(magic.id); - if (pos == null) continue; - int slotX = pos.x + (int)panX - slotSize / 2; - int slotY = pos.y + (int)panY - slotSize / 2; - if (tMouseX >= slotX && tMouseX < slotX + slotSize && - tMouseY >= slotY && tMouseY < slotY + slotSize) { - hoveredIconID = magic.id; - break; - } - } - if (hoveredIconID != null) { - selectedIconIDs.add(hoveredIconID); - Magic hoveredMagic = null; - for (Magic magic : magics) { - if (magic.id == hoveredIconID) { - hoveredMagic = magic; - break; - } - } - if (hoveredMagic != null) { - // Add connected icons. - for (Magic magic : magics) { - if (magic.weaknesses.containsKey(hoveredIconID)) { - selectedIconIDs.add(magic.id); - } - } - for (Integer otherId : hoveredMagic.weaknesses.keySet()) { - selectedIconIDs.add(otherId); - } - } - } else { - // Otherwise, check for arrow hover. - final double threshold = 5.0; - outer: for (Magic defMagic : magics) { - Point defPos = positions.get(defMagic.id); - if (defPos == null) continue; - for (Integer attackerId : defMagic.weaknesses.keySet()) { - Point attPos = positions.get(attackerId); - if (attPos == null) continue; - double x1 = attPos.x + panX, y1 = attPos.y + panY; - double x2 = defPos.x + panX, y2 = defPos.y + panY; - double dist = pointLineDistance(tMouseX, tMouseY, x1, y1, x2, y2); - if (dist < threshold) { - selectedArrowAttacker = attackerId; - selectedArrowDefender = defMagic.id; - selectedIconIDs.add(attackerId); - selectedIconIDs.add(defMagic.id); - break outer; - } - } - } - } - - // --- Set scissor rectangle (in original coords) --- - GL11.glEnable(GL11.GL_SCISSOR_TEST); - GL11.glScissor(x * factor, (sr.getScaledHeight() - (y + height)) * factor, width * factor, height * factor); - - // --- Draw dark background BEFORE zoom --- - parent.drawRect(x, y, x + width, y + height, 0xFF333333); - - // --- Begin zoom transformation --- - GL11.glPushMatrix(); - GL11.glTranslatef(centerX, centerY, 0); - GL11.glScalef(zoom, zoom, 1.0f); - GL11.glTranslatef(-centerX, -centerY, 0); - - // --- Draw arrow lines first --- - for (Magic defMagic : magics) { - Point defPos = positions.get(defMagic.id); - if (defPos == null) continue; - for (Integer attackerId : defMagic.weaknesses.keySet()) { - Point attPos = positions.get(attackerId); - if (attPos == null) continue; - float percent = defMagic.weaknesses.get(attackerId); - int ax = attPos.x + (int)panX; - int ay = attPos.y + (int)panY; - int dx = defPos.x + (int)panX; - int dy = defPos.y + (int)panY; - boolean dim = false; - if (!selectedIconIDs.isEmpty() && !(selectedIconIDs.contains(attackerId) && selectedIconIDs.contains(defMagic.id))) { - dim = true; - } - drawArrowLine(ax, ay, dx, dy, percent, dim); - } - } - - // --- Draw icons (with larger slot backgrounds) --- - RenderHelper.enableGUIStandardItemLighting(); - RenderItem renderItem = new RenderItem(); FontRenderer fontRenderer = mc.fontRenderer; - TextureManager textureManager = mc.getTextureManager(); - for (Magic magic : magics) { - Point pos = positions.get(magic.id); - if (pos == null) continue; - int slotX = pos.x + (int)panX - slotSize / 2; - int slotY = pos.y + (int)panY - slotSize / 2; - boolean iconDim = (!selectedIconIDs.isEmpty() && !selectedIconIDs.contains(magic.id)); - if (iconDim) { - GL11.glColor4f(0.4f, 0.4f, 0.4f, 1f); - } - parent.drawRect(slotX, slotY, slotX + slotSize, slotY + slotSize, 0xFF999999); - drawHorizontalLine(slotX, slotX + slotSize, slotY, 0xFF555555); - drawHorizontalLine(slotX, slotX + slotSize, slotY + slotSize - 1, 0xFF555555); - drawVerticalLine(slotX, slotY, slotY + slotSize, 0xFF555555); - drawVerticalLine(slotX + slotSize - 1, slotY, slotY + slotSize, 0xFF555555); - int iconX = pos.x + (int)panX - iconSize / 2; - int iconY = pos.y + (int)panY - iconSize / 2; - if (magic.iconItem != null) { - renderItem.renderItemAndEffectIntoGUI(fontRenderer, textureManager, magic.iconItem, iconX, iconY); - } else if (magic.iconTexture != null && !magic.iconTexture.isEmpty()) { - textureManager.bindTexture(new ResourceLocation(magic.iconTexture)); - parent.drawTexturedModalRect(iconX, iconY, 0, 0, iconSize, iconSize); - } else { - ItemStack sword = new ItemStack(Items.iron_sword); - renderItem.renderItemAndEffectIntoGUI(fontRenderer, textureManager, sword, iconX, iconY); - } - if (iconDim) { - GL11.glColor4f(1f, 1f, 1f, 1f); - } + int iconSize = this.iconSize; + int iconX = posX - iconSize / 2; + int iconY = posY - iconSize / 2; + + if (!highlighted) { + GL11.glColor4f(0.4f, 0.4f, 0.4f, 1f); + } + + // Use standard item lighting. + RenderHelper.enableGUIStandardItemLighting(); + if (magic.iconItem != null) { + renderItem.renderItemAndEffectIntoGUI(fontRenderer, mc.getTextureManager(), magic.iconItem, iconX, iconY); + } else if (magic.iconTexture != null && !magic.iconTexture.isEmpty()) { + mc.getTextureManager().bindTexture(new ResourceLocation(magic.iconTexture)); + this.drawTexturedModalRect(iconX, iconY, 0, 0, iconSize, iconSize); + } else { + ItemStack sword = new ItemStack(Items.iron_sword); + renderItem.renderItemAndEffectIntoGUI(fontRenderer, mc.getTextureManager(), sword, iconX, iconY); } RenderHelper.disableStandardItemLighting(); - GL11.glPopMatrix(); - // --- Draw arrow heads (on top) using the same zoom transformation --- - GL11.glPushMatrix(); - GL11.glTranslatef(centerX, centerY, 0); - GL11.glScalef(zoom, zoom, 1.0f); - GL11.glTranslatef(-centerX, -centerY, 0); - for (Magic defMagic : magics) { - Point defPos = positions.get(defMagic.id); - if (defPos == null) continue; - for (Integer attackerId : defMagic.weaknesses.keySet()) { - Point attPos = positions.get(attackerId); - if (attPos == null) continue; - float percent = defMagic.weaknesses.get(attackerId); - int ax = attPos.x + (int)panX; - int ay = attPos.y + (int)panY; - int dx = defPos.x + (int)panX; - int dy = defPos.y + (int)panY; - boolean dim = false; - if (!selectedIconIDs.isEmpty() && !(selectedIconIDs.contains(attackerId) && selectedIconIDs.contains(defMagic.id))) { - dim = true; - } - drawArrowHead(ax, ay, dx, dy, percent, dim); - } - } - GL11.glPopMatrix(); - - GL11.glDisable(GL11.GL_SCISSOR_TEST); - - // --- Draw tooltips outside of the zoom transformation --- - if (hoveredIconID != null) { - for (Magic magic : magics) { - if (magic.id == hoveredIconID) { - List tooltip = new ArrayList<>(); - tooltip.add(magic.getName()); - if (parent instanceof GuiNPCInterface2) { - ((GuiNPCInterface2) parent).renderHoveringText(tooltip, mouseX, mouseY, fontRenderer); - } - return; - } - } - } else { - final double threshold = 5.0; - for (Magic defMagic : magics) { - Point defPos = positions.get(defMagic.id); - if (defPos == null) continue; - for (Integer attackerId : defMagic.weaknesses.keySet()) { - Point attPos = positions.get(attackerId); - if (attPos == null) continue; - double x1 = attPos.x + panX, y1 = attPos.y + panY; - double x2 = defPos.x + panX, y2 = defPos.y + panY; - double dist = pointLineDistance(tMouseX, tMouseY, x1, y1, x2, y2); - if (dist < threshold) { - float percent = defMagic.weaknesses.get(attackerId); - List tooltip = new ArrayList<>(); - tooltip.add("+" + (int)(percent * 100) + "%"); - if (parent instanceof GuiNPCInterface2) { - ((GuiNPCInterface2) parent).renderHoveringText(tooltip, mouseX, mouseY, fontRenderer); - } - return; - } - } - } + if (!highlighted) { + GL11.glColor4f(1f, 1f, 1f, 1f); } } - // Draw only the arrow line (without arrow head). - private void drawArrowLine(int x1, int y1, int x2, int y2, float percent, boolean dim) { - int arrowColor = getArrowColor(percent); - GL11.glPushAttrib(GL11.GL_ENABLE_BIT); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glLineWidth(2.0F); - float r = ((arrowColor >> 16) & 0xFF) / 255.0F; - float g = ((arrowColor >> 8) & 0xFF) / 255.0F; - float b = (arrowColor & 0xFF) / 255.0F; - if (dim) { r *= 0.4f; g *= 0.4f; b *= 0.4f; } - GL11.glColor4f(r, g, b, 1f); - GL11.glBegin(GL11.GL_LINES); - GL11.glVertex2f(x1, y1); - GL11.glVertex2f(x2, y2); - GL11.glEnd(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopAttrib(); + @Override + protected List getIconTooltip(DiagramIcon icon) { + Magic magic = ((MagicIcon) icon).magic; + List tooltip = new ArrayList<>(); + tooltip.add(magic.getName()); + return tooltip; } - // Draw the arrow head so that its tip connects at the defender icon edge. - private void drawArrowHead(int x1, int y1, int x2, int y2, float percent, boolean dim) { - // x1,y1 and x2,y2 are the centers (after pan) of the attacker and defender icons. - float dx = x2 - x1; - float dy = y2 - y1; - float len = (float)Math.sqrt(dx * dx + dy * dy); - if(len == 0) return; - // Compute unit vector from attacker to defender. - float ux = dx / len, uy = dy / len; - // Offset defender center by half the slot size to get the edge. - float defenderEdgeX = x2 - ux * (slotSize / 2f); - float defenderEdgeY = y2 - uy * (slotSize / 2f); - - // For testing, try a larger arrow size. - int arrowSize = 5; // adjust as needed - - // Compute the angle from attacker to defender. - double angle = Math.atan2(uy, ux); - // Compute left and right points of the arrow head. - float leftX = (float)(defenderEdgeX - arrowSize * Math.cos(angle - Math.PI / 6)); - float leftY = (float)(defenderEdgeY - arrowSize * Math.sin(angle - Math.PI / 6)); - float rightX = (float)(defenderEdgeX - arrowSize * Math.cos(angle + Math.PI / 6)); - float rightY = (float)(defenderEdgeY - arrowSize * Math.sin(angle + Math.PI / 6)); - - int arrowColor = getArrowColor(percent); - GL11.glPushAttrib(GL11.GL_ENABLE_BIT); - GL11.glDisable(GL11.GL_TEXTURE_2D); - float r = ((arrowColor >> 16) & 0xFF) / 255.0F; - float g = ((arrowColor >> 8) & 0xFF) / 255.0F; - float b = (arrowColor & 0xFF) / 255.0F; - if(dim) { r *= 0.4f; g *= 0.4f; b *= 0.4f; } - GL11.glColor4f(r, g, b, 1f); - - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glBegin(GL11.GL_TRIANGLES); - GL11.glVertex2f(defenderEdgeX, defenderEdgeY); - GL11.glVertex2f(leftX, leftY); - GL11.glVertex2f(rightX, rightY); - GL11.glEnd(); - GL11.glEnable(GL11.GL_CULL_FACE); - - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopAttrib(); - } - - // --- Mouse handling methods --- - public boolean mouseClicked(int mouseX, int mouseY, int mouseButton) { - if (mouseButton == 0 && isWithin(mouseX, mouseY)) { - dragging = true; - lastDragX = mouseX; - lastDragY = mouseY; - return true; - } - return false; - } - - public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - if (dragging) { - int dx = mouseX - lastDragX; - int dy = mouseY - lastDragY; - // Adjust panning speed by zoom so dragging "feels" the same. - panX += dx / zoom * 0.7f; - panY += dy / zoom * 0.7f; - lastDragX = mouseX; - lastDragY = mouseY; + @Override + protected void drawHoveringText(List text, int mouseX, int mouseY, FontRenderer fontRenderer) { + if (parent instanceof GuiNPCInterface2) { + ((GuiNPCInterface2) parent).renderHoveringText(text, mouseX, mouseY, fontRenderer); } } - public void mouseReleased(int mouseX, int mouseY, int state) { - dragging = false; + /** + * Override getIconName so that connection tooltips can show Magic names. + */ + @Override + protected String getIconName(DiagramIcon icon) { + Magic magic = ((MagicIcon) icon).magic; + return magic.getName(); } - private boolean isWithin(int mouseX, int mouseY) { - return mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height; + // Wrap a Magic object as a DiagramIcon. + private class MagicIcon extends DiagramIcon { + public Magic magic; + public MagicIcon(Magic magic) { + super(magic.id); + this.magic = magic; + } } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java new file mode 100644 index 000000000..5b15a04b3 --- /dev/null +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java @@ -0,0 +1,625 @@ +package noppes.npcs.client.gui.global; + +import java.awt.Point; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.ScaledResolution; +import org.lwjgl.input.Mouse; +import org.lwjgl.opengl.GL11; + +/** + * Abstract GUI class for drawing diagrams that consist of icons (nodes) and connections (arrows). + * + * This class provides: + * - A standard circular layout of nodes. + * - Panning and zooming functionality. + * - Standard drawing of a node's "box": a background and border that can be customized. + * - Connection drawing (including arrow heads). + * - Highlighting logic: when hovering over an icon, its connections and related icons are highlighted. + * - Tooltip support for nodes and connections. + * + * IMPORTANT: Child classes must implement the data provider methods to supply the list of icons and connections, + * and implement how an icon’s image is rendered (renderIcon). + */ +public abstract class GuiNPCDiagram extends Gui { + + // The area where the diagram is drawn. + protected int x, y, width, height; + // Panning offsets. + protected float panX = 0, panY = 0; + // Zoom factor. + protected float zoom = 1.0f; + // For mouse dragging. + protected boolean dragging = false; + protected int lastDragX, lastDragY; + + // The size of the icon image (e.g. 16 pixels square). + protected int iconSize = 16; + // Extra padding for the node background (box). + protected int slotPadding = 4; + // The overall size of the node's box (icon plus padding). + protected int slotSize = iconSize + slotPadding; + + // Standard colors for the node background and border. + protected int iconBackgroundColor = 0xFF999999; + protected int iconBorderColor = 0xFF555555; + // Thickness of the border (in pixels). We draw the border lines inside the box so nothing clips. + protected int iconBorderThickness = 1; + + // Flags for drawing arrow heads and using color scaling on connections. + protected boolean showArrowHeads = true; + protected boolean useColorScaling = true; + + public GuiNPCDiagram(int x, int y, int width, int height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + + // ------------- + // Data Providers + // ------------- + /** + * Must return the list of icons (nodes) to be drawn. + */ + protected abstract List getIcons(); + + /** + * Must return the list of connections (arrows) between nodes. + */ + protected abstract List getConnections(); + + /** + * Subclass must implement rendering of the icon image itself (without drawing the background box). + * + * @param icon The icon data. + * @param posX The center X position where the icon is drawn. + * @param posY The center Y position. + * @param highlighted Whether this node is currently highlighted. + */ + protected abstract void renderIcon(DiagramIcon icon, int posX, int posY, boolean highlighted); + + /** + * Optionally supply tooltip text for an icon. + */ + protected List getIconTooltip(DiagramIcon icon) { + return null; + } + + /** + * Default tooltip for a connection is based on its hoverText. + *

+ * Also, if a reciprocal connection exists (i.e. A→B and B→A) then the tooltip will include two lines. + * For example: + *

+     *   A --> Hover Text
+     *   B --> Hover Text
+     * 
+ * To display the names of the endpoints, getIconName() is used. + */ + protected List getConnectionTooltip(DiagramConnection conn) { + List tooltip = new ArrayList<>(); + // Get the display names for the endpoints. + DiagramIcon iconFrom = getIconById(conn.idFrom); + DiagramIcon iconTo = getIconById(conn.idTo); + String nameFrom = iconFrom != null ? getIconName(iconFrom) : "Unknown"; + String nameTo = iconTo != null ? getIconName(iconTo) : "Unknown"; + // Add tooltip for the current connection. + tooltip.add(nameFrom + " > " + nameTo + ":"); + tooltip.add(conn.hoverText); + // Check if there is a reciprocal connection (B→A). + DiagramConnection reverse = getConnectionByIds(conn.idTo, conn.idFrom); + if (reverse != null) { + tooltip.add(nameTo + " > " + nameFrom + ":"); + tooltip.add(reverse.hoverText); + } + return tooltip; + } + + /** + * Returns a display name for the given icon. + * Child classes may override this method to provide a more meaningful name. + * By default, it returns "Icon ". + */ + protected String getIconName(DiagramIcon icon) { + return "Icon " + icon.id; + } + + // ------------- + // Layout Calculation + // ------------- + /** + * Arranges icons in a circle centered in the diagram area. + * Returns a mapping from an icon’s id to its (x,y) center position. + */ + protected Map calculatePositions() { + List icons = getIcons(); + Map positions = new HashMap<>(); + int count = icons.size(); + // Calculate the center of the diagram area. + int centerX = x + width / 2; + int centerY = y + height / 2; + // Determine the radius of the circle, leaving room for icons. + int radius = Math.min(width, height) / 2 - iconSize - 10; + for (int i = 0; i < count; i++) { + // Angle for this icon in radians. + double angle = 2 * Math.PI * i / count; + int posX = centerX + (int) (radius * Math.cos(angle)); + int posY = centerY + (int) (radius * Math.sin(angle)); + positions.put(icons.get(i).id, new Point(posX, posY)); + } + return positions; + } + + // ------------- + // Standard Icon Box (Background and Border) + // ------------- + /** + * Draws the background box (with optional highlighting) and border for an icon. + * The box is drawn at (slotX, slotY) with the given slotSize. + * + * @param slotX The top-left x-coordinate of the box. + * @param slotY The top-left y-coordinate of the box. + * @param slotSize The width/height of the box. + * @param highlighted Whether the box should appear highlighted. + */ + protected void drawIconBox(int slotX, int slotY, int slotSize, boolean highlighted) { + // If highlighted, mix the background color with white a little. + int bg = highlighted ? mixColors(iconBackgroundColor, 0xFFFFFFFF, 0.2f) : iconBackgroundColor; + // Draw the box background. + drawRect(slotX, slotY, slotX + slotSize, slotY + slotSize, bg); + // Draw the border lines inside the box. + for (int i = 0; i < iconBorderThickness; i++) { + // Draw horizontal top and bottom borders. + drawHorizontalLine(slotX + i, slotX + slotSize - i, slotY + i, iconBorderColor); + drawHorizontalLine(slotX + i, slotX + slotSize - i, slotY + slotSize - 1 - i, iconBorderColor); + // Draw vertical left and right borders. + drawVerticalLine(slotX + i, slotY + i, slotY + slotSize - i, iconBorderColor); + drawVerticalLine(slotX + slotSize - 1 - i, slotY + i, slotY + slotSize - i, iconBorderColor); + } + } + + /** + * Helper to mix two ARGB colors by a given ratio. + * If ratio is 0, returns color1; if 1, returns color2. + */ + protected int mixColors(int color1, int color2, float ratio) { + int a1 = (color1 >> 24) & 0xFF, r1 = (color1 >> 16) & 0xFF, g1 = (color1 >> 8) & 0xFF, b1 = color1 & 0xFF; + int a2 = (color2 >> 24) & 0xFF, r2 = (color2 >> 16) & 0xFF, g2 = (color2 >> 8) & 0xFF, b2 = color2 & 0xFF; + int a = (int) (a1 + (a2 - a1) * ratio); + int r = (int) (r1 + (r2 - r1) * ratio); + int g = (int) (g1 + (g2 - g1) * ratio); + int b = (int) (b1 + (b2 - b1) * ratio); + return (a << 24) | (r << 16) | (g << 8) | b; + } + + // ------------- + // Main Draw Method + // ------------- + /** + * Draws the entire diagram: nodes (with their standard boxes) and connections (with arrow heads). + * Also performs hit testing to determine which icon or connection is being hovered, + * so that appropriate highlighting and tooltips can be shown. + * + * @param mouseX The current mouse x-coordinate. + * @param mouseY The current mouse y-coordinate. + */ + public void drawDiagram(int mouseX, int mouseY) { + // Handle zoom changes from the scroll wheel. + handleMouseScroll(Mouse.getDWheel()); + + Minecraft mc = Minecraft.getMinecraft(); + ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); + int factor = sr.getScaleFactor(); + + // Calculate positions for all icons. + Map positions = calculatePositions(); + // Determine the center of the diagram. + int centerX = x + width / 2, centerY = y + height / 2; + // Transform mouse coordinates to account for zoom (for hit testing). + int tMouseX = centerX + (int) ((mouseX - centerX) / zoom); + int tMouseY = centerY + (int) ((mouseY - centerY) / zoom); + + // ------------- + // Hit Testing & Selection + // ------------- + Integer hoveredIconId = null; + int hoveredConnFrom = -1, hoveredConnTo = -1; + // This set will contain IDs of icons that should be drawn highlighted. + HashSet selectedIconIds = new HashSet<>(); + + // Check if the mouse is over any icon. + for (DiagramIcon icon : getIcons()) { + Point pos = positions.get(icon.id); + if (pos == null) continue; + // Calculate the top-left corner of the icon box. + int slotX = pos.x + (int) panX - slotSize / 2; + int slotY = pos.y + (int) panY - slotSize / 2; + // If the transformed mouse is within the box... + if (tMouseX >= slotX && tMouseX < slotX + slotSize && + tMouseY >= slotY && tMouseY < slotY + slotSize) { + hoveredIconId = icon.id; + selectedIconIds.add(icon.id); + break; + } + } + // If an icon is hovered, also mark all icons connected to it. + if (hoveredIconId != null) { + for (DiagramConnection conn : getConnections()) { + if (conn.idFrom == hoveredIconId || conn.idTo == hoveredIconId) { + selectedIconIds.add(conn.idFrom); + selectedIconIds.add(conn.idTo); + } + } + } else { + // If no icon is hovered, check if the mouse is near any connection line. + final double threshold = 5.0; + outer: + for (DiagramConnection conn : getConnections()) { + Point pFrom = positions.get(conn.idFrom); + Point pTo = positions.get(conn.idTo); + if (pFrom == null || pTo == null) continue; + double dist = pointLineDistance(tMouseX, tMouseY, + pFrom.x + panX, pFrom.y + panY, pTo.x + panX, pTo.y + panY); + if (dist < threshold) { + hoveredConnFrom = conn.idFrom; + hoveredConnTo = conn.idTo; + selectedIconIds.add(conn.idFrom); + selectedIconIds.add(conn.idTo); + break outer; + } + } + } + + // ------------- + // Clipping & Background + // ------------- + GL11.glEnable(GL11.GL_SCISSOR_TEST); + // Set the scissor rectangle to the diagram area. + GL11.glScissor(x * factor, (sr.getScaledHeight() - (y + height)) * factor, width * factor, height * factor); + // Draw the overall diagram background. + drawRect(x, y, x + width, y + height, 0xFF333333); + + // ------------- + // Zoom Transformation + // ------------- + GL11.glPushMatrix(); + GL11.glTranslatef(centerX, centerY, 0); + GL11.glScalef(zoom, zoom, 1.0f); + GL11.glTranslatef(-centerX, -centerY, 0); + + // ------------- + // Draw Connections (Arrows) + // ------------- + for (DiagramConnection conn : getConnections()) { + Point pFrom = positions.get(conn.idFrom); + Point pTo = positions.get(conn.idTo); + if (pFrom == null || pTo == null) continue; + int ax = pFrom.x + (int) panX; + int ay = pFrom.y + (int) panY; + int bx = pTo.x + (int) panX; + int by = pTo.y + (int) panY; + // Dim the connection if both endpoints are not selected. + boolean dim = !selectedIconIds.isEmpty() && + !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); + drawConnectionLine(ax, ay, bx, by, conn, dim); + } + + // ------------- + // Draw Icons (Nodes) + // ------------- + for (DiagramIcon icon : getIcons()) { + Point pos = positions.get(icon.id); + if (pos == null) continue; + int slotX = pos.x + (int) panX - slotSize / 2; + int slotY = pos.y + (int) panY - slotSize / 2; + // If this icon's id is in the selected set, consider it highlighted. + boolean highlighted = !selectedIconIds.isEmpty() && selectedIconIds.contains(icon.id); + // First draw the standardized icon box (background and border). + drawIconBox(slotX, slotY, slotSize, highlighted); + // Then let the subclass render the icon image. + renderIcon(icon, pos.x + (int) panX, pos.y + (int) panY, highlighted); + } + GL11.glPopMatrix(); + + // ------------- + // Draw Arrow Heads (if enabled) + // ------------- + if (showArrowHeads) { + GL11.glPushMatrix(); + GL11.glTranslatef(centerX, centerY, 0); + GL11.glScalef(zoom, zoom, 1.0f); + GL11.glTranslatef(-centerX, -centerY, 0); + for (DiagramConnection conn : getConnections()) { + Point pFrom = positions.get(conn.idFrom); + Point pTo = positions.get(conn.idTo); + if (pFrom == null || pTo == null) continue; + int ax = pFrom.x + (int) panX; + int ay = pFrom.y + (int) panY; + int bx = pTo.x + (int) panX; + int by = pTo.y + (int) panY; + boolean dim = !selectedIconIds.isEmpty() && + !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); + drawArrowHead(ax, ay, bx, by, conn, dim); + } + GL11.glPopMatrix(); + } + + GL11.glDisable(GL11.GL_SCISSOR_TEST); + + // ------------- + // Draw Tooltips + // ------------- + if (hoveredIconId != null) { + DiagramIcon icon = getIconById(hoveredIconId); + List tooltip = getIconTooltip(icon); + if (tooltip != null && !tooltip.isEmpty()) { + drawHoveringText(tooltip, mouseX, mouseY, mc.fontRenderer); + } + } else if (hoveredConnFrom != -1 && hoveredConnTo != -1) { + DiagramConnection conn = getConnectionByIds(hoveredConnFrom, hoveredConnTo); + List tooltip = getConnectionTooltip(conn); + if (tooltip != null && !tooltip.isEmpty()) { + drawHoveringText(tooltip, mouseX, mouseY, mc.fontRenderer); + } + } + } + + // ------------- + // Helper Methods for Hit Testing & Drawing + // ------------- + /** + * Returns the DiagramIcon with the given id, or null if not found. + */ + protected DiagramIcon getIconById(int id) { + for (DiagramIcon icon : getIcons()) { + if (icon.id == id) + return icon; + } + return null; + } + + /** + * Returns the DiagramConnection connecting idFrom to idTo, or null if not found. + */ + protected DiagramConnection getConnectionByIds(int idFrom, int idTo) { + for (DiagramConnection conn : getConnections()) { + if (conn.idFrom == idFrom && conn.idTo == idTo) + return conn; + } + return null; + } + + /** + * Draws a connection line between two points. + * + * @param x1 Source x-coordinate. + * @param y1 Source y-coordinate. + * @param x2 Target x-coordinate. + * @param y2 Target y-coordinate. + * @param conn The connection data. + * @param dim Whether to draw a dimmed (less bright) version. + */ + protected void drawConnectionLine(int x1, int y1, int x2, int y2, DiagramConnection conn, boolean dim) { + int color = getConnectionColor(conn); + if (!useColorScaling) { + color = 0xFFFFFFFF; + } + GL11.glPushAttrib(GL11.GL_ENABLE_BIT); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glLineWidth(2.0F); + float r = ((color >> 16) & 0xFF) / 255f; + float g = ((color >> 8) & 0xFF) / 255f; + float b = (color & 0xFF) / 255f; + if (dim) { + r *= 0.4f; + g *= 0.4f; + b *= 0.4f; + } + GL11.glColor4f(r, g, b, 1f); + GL11.glBegin(GL11.GL_LINES); + GL11.glVertex2f(x1, y1); + GL11.glVertex2f(x2, y2); + GL11.glEnd(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopAttrib(); + } + + /** + * Draws an arrow head at the target end of a connection. + * + * @param x1 Source x-coordinate. + * @param y1 Source y-coordinate. + * @param x2 Target x-coordinate. + * @param y2 Target y-coordinate. + * @param conn The connection data. + * @param dim Whether to draw a dimmed version. + */ + protected void drawArrowHead(int x1, int y1, int x2, int y2, DiagramConnection conn, boolean dim) { + float dx = x2 - x1; + float dy = y2 - y1; + float len = (float) Math.sqrt(dx * dx + dy * dy); + if (len == 0) return; + // Compute the unit vector from source to target. + float ux = dx / len, uy = dy / len; + // Offset from target center by half the slot size to get the edge of the icon box. + float defenderEdgeX = x2 - ux * (slotSize / 2f); + float defenderEdgeY = y2 - uy * (slotSize / 2f); + + int arrowSize = 6; // Adjustable arrow size. + double angle = Math.atan2(uy, ux); + // Calculate the left and right vertices of the arrow head triangle. + float leftX = (float) (defenderEdgeX - arrowSize * Math.cos(angle - Math.PI / 6)); + float leftY = (float) (defenderEdgeY - arrowSize * Math.sin(angle - Math.PI / 6)); + float rightX = (float) (defenderEdgeX - arrowSize * Math.cos(angle + Math.PI / 6)); + float rightY = (float) (defenderEdgeY - arrowSize * Math.sin(angle + Math.PI / 6)); + + int color = getConnectionColor(conn); + if (!useColorScaling) { + color = 0xFFFFFFFF; + } + GL11.glPushAttrib(GL11.GL_ENABLE_BIT); + GL11.glDisable(GL11.GL_TEXTURE_2D); + float r = ((color >> 16) & 0xFF) / 255f; + float g = ((color >> 8) & 0xFF) / 255f; + float b = (color & 0xFF) / 255f; + if (dim) { + r *= 0.4f; + g *= 0.4f; + b *= 0.4f; + } + GL11.glColor4f(r, g, b, 1f); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glBegin(GL11.GL_TRIANGLES); + GL11.glVertex2f(defenderEdgeX, defenderEdgeY); + GL11.glVertex2f(leftX, leftY); + GL11.glVertex2f(rightX, rightY); + GL11.glEnd(); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopAttrib(); + } + + /** + * Computes a color for a connection based on its percentage value. + * Uses different thresholds to return a base color, and interpolates for higher percentages. + */ + protected int getConnectionColor(DiagramConnection conn) { + float percent = conn.percent; + if (percent <= 0.10f) return 0xFF80FF80; // light green + else if (percent <= 0.40f) return 0xFFCCFF66; // green-yellow + else if (percent <= 0.50f) return 0xFFFFA500; // orange + else { + float ratio = (percent - 0.50f) / 0.50f; + ratio = Math.min(1f, Math.max(0f, ratio)); + int r1 = 0xFF, g1 = 0xA5, b1 = 0x00; + int r2 = 0xFF, g2 = 0x00, b2 = 0x00; + int r = r1 + (int) ((r2 - r1) * ratio); + int g = g1 + (int) ((g2 - g1) * ratio); + int b = b1 + (int) ((b2 - b1) * ratio); + return (0xFF << 24) | (r << 16) | (g << 8) | b; + } + } + + /** + * Utility method: returns the shortest distance from a point (px,py) to the line segment defined by (x1,y1)-(x2,y2). + */ + private double pointLineDistance(double px, double py, double x1, double y1, double x2, double y2) { + double A = px - x1, B = py - y1, C = x2 - x1, D = y2 - y1; + double dot = A * C + B * D; + double lenSq = C * C + D * D; + double param = (lenSq != 0) ? (dot / lenSq) : -1; + double xx, yy; + if (param < 0) { + xx = x1; + yy = y1; + } else if (param > 1) { + xx = x2; + yy = y2; + } else { + xx = x1 + param * C; + yy = y1 + param * D; + } + double dx = px - xx, dy = py - yy; + return Math.sqrt(dx * dx + dy * dy); + } + + // ------------- + // Mouse Handling + // ------------- + public boolean mouseClicked(int mouseX, int mouseY, int mouseButton) { + if (mouseButton == 0 && isWithin(mouseX, mouseY)) { + dragging = true; + lastDragX = mouseX; + lastDragY = mouseY; + return true; + } + return false; + } + + public void mouseClickMove(int mouseX, int mouseY, int mouseButton, long timeSinceLastClick) { + if (dragging) { + int dx = mouseX - lastDragX; + int dy = mouseY - lastDragY; + // Adjust panning speed relative to zoom. + panX += dx / zoom * 0.7f; + panY += dy / zoom * 0.7f; + lastDragX = mouseX; + lastDragY = mouseY; + } + } + + public void mouseReleased(int mouseX, int mouseY, int state) { + dragging = false; + } + + protected boolean isWithin(int mouseX, int mouseY) { + return mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height; + } + + /** + * Handles mouse wheel scrolling for zooming in/out. + */ + public void handleMouseScroll(int scrollDelta) { + zoom += scrollDelta * 0.0009f; + if (zoom < 0.5f) zoom = 0.5f; + if (zoom > 2.0f) zoom = 2.0f; + } + + /** + * Override this method if you want to render tooltips differently. + * By default, it does nothing. + */ + protected void drawHoveringText(List text, int mouseX, int mouseY, FontRenderer fontRenderer) { + // Default implementation is empty. + } + + // ------------- + // Flag Setters + // ------------- + public void setShowArrowHeads(boolean showArrowHeads) { + this.showArrowHeads = showArrowHeads; + } + + public void setUseColorScaling(boolean useColorScaling) { + this.useColorScaling = useColorScaling; + } + + // ------------- + // Inner Classes for Data Wrapping + // ------------- + /** + * A simple wrapper class for a node/icon. + */ + public static class DiagramIcon { + public int id; + public DiagramIcon(int id) { + this.id = id; + } + } + + /** + * A simple wrapper class for a connection (arrow) between nodes. + * Contains the source node id (idFrom), target node id (idTo), a percentage value (for color scaling), + * and a hover text. + */ + public static class DiagramConnection { + public int idFrom, idTo; + public float percent; + public String hoverText; + public DiagramConnection(int idFrom, int idTo, float percent, String hoverText) { + this.idFrom = idFrom; + this.idTo = idTo; + this.percent = percent; + this.hoverText = hoverText; + } + } +} diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java index bfb7df78a..911893d8a 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java @@ -26,7 +26,7 @@ public class GuiNPCManageMagic extends GuiNPCInterface2 { public void drawScreen(int mouseX, int mouseY, float partialTicks) { super.drawScreen(mouseX, mouseY, partialTicks); if (magicMap != null) { - magicMap.drawMap(mouseX, mouseY); + magicMap.drawDiagram(mouseX, mouseY); } } diff --git a/src/main/java/noppes/npcs/controllers/MagicController.java b/src/main/java/noppes/npcs/controllers/MagicController.java index b0343bae4..81b507e4c 100644 --- a/src/main/java/noppes/npcs/controllers/MagicController.java +++ b/src/main/java/noppes/npcs/controllers/MagicController.java @@ -4,6 +4,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import noppes.npcs.CustomItems; import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; import noppes.npcs.api.handler.data.IMagic; @@ -64,16 +65,23 @@ public class MagicController { Magic dark = new Magic(4, "Dark", 0xDD0000); Magic holy = new Magic(5, "Holy", 0xDD0000); + nature.setIconItem(new ItemStack(CustomItems.spellNature)); + arcane.setIconItem(new ItemStack(CustomItems.spellArcane)); + ice.setIconItem(new ItemStack(CustomItems.spellIce)); + fire.setIconItem(new ItemStack(CustomItems.spellFire)); + dark.setIconItem(new ItemStack(CustomItems.spellDark)); + holy.setIconItem(new ItemStack(CustomItems.spellHoly)); + // Define weaknesses (extra damage percentages as fractions) // Cycle: Nature -> Arcane -> Fire -> Ice -> Nature - nature.weaknesses.put(1, 0.20f); // Nature is weak to Arcane (20% extra damage) - arcane.weaknesses.put(3, 0.25f); // Arcane is weak to Fire (25%) + nature.weaknesses.put(1, 0.10f); // Nature is weak to Arcane (20% extra damage) + arcane.weaknesses.put(3, 0.55f); // Arcane is weak to Fire (25%) fire.weaknesses.put(2, 0.30f); // Fire is weak to Ice (30%) ice.weaknesses.put(0, 0.20f); // Ice is weak to Nature (20%) // Dark and Holy are opposites - dark.weaknesses.put(5, 0.40f); // Dark is weak to Holy (40%) - holy.weaknesses.put(4, 0.40f); // Holy is weak to Dark (40%) + dark.weaknesses.put(5, 0.70f); // Dark is weak to Holy (40%) + holy.weaknesses.put(4, 0.70f); // Holy is weak to Dark (40%) // Add them to the registry magics.put(nature.id, nature); From 334eca1b403b0089e483ca9bebaf100febd393ec Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 18:15:43 -0500 Subject: [PATCH 113/157] Circular Magic Map --- .../npcs/client/gui/global/GuiMagicMap.java | 5 +- .../npcs/client/gui/global/GuiNPCDiagram.java | 599 +++++++++--------- 2 files changed, 304 insertions(+), 300 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java index b5b247369..a356892a4 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java @@ -17,10 +17,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; -/** - * Implementation of GuiNPCDiagram for displaying Magic nodes and their connections. - * Magic objects are wrapped as DiagramIcons, and each Magic's weaknesses generate connections. - */ public class GuiMagicMap extends GuiNPCDiagram { private GuiScreen parent; @@ -35,6 +31,7 @@ public class GuiMagicMap extends GuiNPCDiagram { for (Magic magic : MagicController.getInstance().magics.values()) { magics.add(magic); } + setLayout(DiagramLayout.CIRCULAR); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java index 5b15a04b3..5513febe1 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java @@ -6,6 +6,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Random; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -18,7 +19,7 @@ import org.lwjgl.opengl.GL11; * Abstract GUI class for drawing diagrams that consist of icons (nodes) and connections (arrows). * * This class provides: - * - A standard circular layout of nodes. + * - Multiple layout algorithms for positioning nodes (Circular, Square, Tree, Generated). * - Panning and zooming functionality. * - Standard drawing of a node's "box": a background and border that can be customized. * - Connection drawing (including arrow heads). @@ -30,33 +31,66 @@ import org.lwjgl.opengl.GL11; */ public abstract class GuiNPCDiagram extends Gui { - // The area where the diagram is drawn. - protected int x, y, width, height; - // Panning offsets. - protected float panX = 0, panY = 0; - // Zoom factor. - protected float zoom = 1.0f; - // For mouse dragging. - protected boolean dragging = false; - protected int lastDragX, lastDragY; + // --------------- + // Diagram Area & Controls + // --------------- + protected int x, y, width, height; // The drawing area. + protected float panX = 0, panY = 0; // Panning offsets. + protected float zoom = 1.0f; // Zoom factor. + protected boolean dragging = false; // Drag flag. + protected int lastDragX, lastDragY; // Last mouse positions. - // The size of the icon image (e.g. 16 pixels square). - protected int iconSize = 16; - // Extra padding for the node background (box). - protected int slotPadding = 4; - // The overall size of the node's box (icon plus padding). - protected int slotSize = iconSize + slotPadding; + // --------------- + // Node (Icon) Sizing + // --------------- + protected int iconSize = 16; // Icon image size (square). + protected int slotPadding = 4; // Extra padding for the node's box. + protected int slotSize = iconSize + slotPadding; // Overall size of the node box. - // Standard colors for the node background and border. - protected int iconBackgroundColor = 0xFF999999; - protected int iconBorderColor = 0xFF555555; - // Thickness of the border (in pixels). We draw the border lines inside the box so nothing clips. - protected int iconBorderThickness = 1; + // --------------- + // Node Box Appearance + // --------------- + protected int iconBackgroundColor = 0xFF999999; // Background color. + protected int iconBorderColor = 0xFF555555; // Border color. + protected int iconBorderThickness = 1; // Border thickness in pixels. - // Flags for drawing arrow heads and using color scaling on connections. - protected boolean showArrowHeads = true; - protected boolean useColorScaling = true; + // --------------- + // Connection Options + // --------------- + protected boolean showArrowHeads = true; // Whether to draw arrow heads. + protected boolean useColorScaling = true; // Whether to scale connection color based on a percentage. + // --------------- + // Layout Options + // --------------- + public enum DiagramLayout { CIRCULAR, SQUARE, TREE, GENERATED } + protected DiagramLayout layout = DiagramLayout.CIRCULAR; // Default layout. + + /** + * Allows setting the desired layout type. + * This will invalidate the cached positions. + */ + public void setLayout(DiagramLayout layout) { + this.layout = layout; + invalidateCache(); + } + + // --------------- + // Caching + // --------------- + // Cache for positions (computed once for any given icon set & layout). + protected Map cachedPositions = null; + + /** + * Clears the cached positions. + */ + public void invalidateCache() { + cachedPositions = null; + } + + // --------------- + // Constructor + // --------------- public GuiNPCDiagram(int x, int y, int width, int height) { this.x = x; this.y = y; @@ -64,58 +98,21 @@ public abstract class GuiNPCDiagram extends Gui { this.height = height; } - // ------------- - // Data Providers - // ------------- - /** - * Must return the list of icons (nodes) to be drawn. - */ + // --------------- + // Data Providers (abstract methods to be implemented by child classes) + // --------------- protected abstract List getIcons(); - - /** - * Must return the list of connections (arrows) between nodes. - */ protected abstract List getConnections(); - - /** - * Subclass must implement rendering of the icon image itself (without drawing the background box). - * - * @param icon The icon data. - * @param posX The center X position where the icon is drawn. - * @param posY The center Y position. - * @param highlighted Whether this node is currently highlighted. - */ protected abstract void renderIcon(DiagramIcon icon, int posX, int posY, boolean highlighted); - - /** - * Optionally supply tooltip text for an icon. - */ - protected List getIconTooltip(DiagramIcon icon) { - return null; - } - - /** - * Default tooltip for a connection is based on its hoverText. - *

- * Also, if a reciprocal connection exists (i.e. A→B and B→A) then the tooltip will include two lines. - * For example: - *

-     *   A --> Hover Text
-     *   B --> Hover Text
-     * 
- * To display the names of the endpoints, getIconName() is used. - */ + protected List getIconTooltip(DiagramIcon icon) { return null; } protected List getConnectionTooltip(DiagramConnection conn) { List tooltip = new ArrayList<>(); - // Get the display names for the endpoints. DiagramIcon iconFrom = getIconById(conn.idFrom); DiagramIcon iconTo = getIconById(conn.idTo); String nameFrom = iconFrom != null ? getIconName(iconFrom) : "Unknown"; String nameTo = iconTo != null ? getIconName(iconTo) : "Unknown"; - // Add tooltip for the current connection. tooltip.add(nameFrom + " > " + nameTo + ":"); tooltip.add(conn.hoverText); - // Check if there is a reciprocal connection (B→A). DiagramConnection reverse = getConnectionByIds(conn.idTo, conn.idFrom); if (reverse != null) { tooltip.add(nameTo + " > " + nameFrom + ":"); @@ -123,127 +120,237 @@ public abstract class GuiNPCDiagram extends Gui { } return tooltip; } + protected String getIconName(DiagramIcon icon) { return "Icon " + icon.id; } + // --------------- + // Layout Calculation – choose algorithm based on layout type. + // --------------- /** - * Returns a display name for the given icon. - * Child classes may override this method to provide a more meaningful name. - * By default, it returns "Icon ". - */ - protected String getIconName(DiagramIcon icon) { - return "Icon " + icon.id; - } - - // ------------- - // Layout Calculation - // ------------- - /** - * Arranges icons in a circle centered in the diagram area. - * Returns a mapping from an icon’s id to its (x,y) center position. + * Returns a mapping from each icon's id to its (x,y) center position. + * Uses caching so that positions are computed only once (unless invalidated). */ protected Map calculatePositions() { + if (cachedPositions != null) { + return cachedPositions; + } + switch (layout) { + case CIRCULAR: + cachedPositions = calculateCircularPositions(); + break; + case SQUARE: + cachedPositions = calculateSquarePositions(); + break; + case TREE: + cachedPositions = calculateTreePositions(); + break; + case GENERATED: + cachedPositions = calculateGeneratedPositions(); + break; + default: + cachedPositions = calculateCircularPositions(); + break; + } + return cachedPositions; + } + + protected Map calculateCircularPositions() { List icons = getIcons(); Map positions = new HashMap<>(); int count = icons.size(); - // Calculate the center of the diagram area. int centerX = x + width / 2; int centerY = y + height / 2; - // Determine the radius of the circle, leaving room for icons. int radius = Math.min(width, height) / 2 - iconSize - 10; for (int i = 0; i < count; i++) { - // Angle for this icon in radians. double angle = 2 * Math.PI * i / count; - int posX = centerX + (int) (radius * Math.cos(angle)); - int posY = centerY + (int) (radius * Math.sin(angle)); + int posX = centerX + (int)(radius * Math.cos(angle)); + int posY = centerY + (int)(radius * Math.sin(angle)); positions.put(icons.get(i).id, new Point(posX, posY)); } return positions; } - // ------------- - // Standard Icon Box (Background and Border) - // ------------- + protected Map calculateSquarePositions() { + List icons = getIcons(); + Map positions = new HashMap<>(); + int count = icons.size(); + int n = (int)Math.ceil(Math.sqrt(count)); + int gridWidth = width - 20; + int gridHeight = height - 20; + int cellWidth = gridWidth / n; + int cellHeight = gridHeight / n; + int startX = x + (width - gridWidth) / 2; + int startY = y + (height - gridHeight) / 2; + for (int i = 0; i < count; i++) { + int row = i / n; + int col = i % n; + int posX = startX + col * cellWidth + cellWidth / 2; + int posY = startY + row * cellHeight + cellHeight / 2; + positions.put(icons.get(i).id, new Point(posX, posY)); + } + return positions; + } + + protected Map calculateTreePositions() { + List icons = getIcons(); + Map positions = new HashMap<>(); + int count = icons.size(); + int levels = (int)Math.ceil(Math.log(count + 1) / Math.log(2)); + int levelHeight = height / (levels + 1); + int index = 0; + for (int level = 0; level < levels && index < count; level++) { + int nodesThisLevel = (int)Math.min(Math.pow(2, level), count - index); + int levelWidth = width - 20; + int cellWidth = levelWidth / nodesThisLevel; + for (int i = 0; i < nodesThisLevel && index < count; i++, index++) { + int posX = x + 10 + i * cellWidth + cellWidth / 2; + int posY = y + (level + 1) * levelHeight; + positions.put(icons.get(index).id, new Point(posX, posY)); + } + } + return positions; + } + /** - * Draws the background box (with optional highlighting) and border for an icon. - * The box is drawn at (slotX, slotY) with the given slotSize. - * - * @param slotX The top-left x-coordinate of the box. - * @param slotY The top-left y-coordinate of the box. - * @param slotSize The width/height of the box. - * @param highlighted Whether the box should appear highlighted. + * Generated layout: uses a force-directed algorithm to position nodes. + * Computed only once using a fixed seed for determinism. */ + protected Map calculateGeneratedPositions() { + List icons = getIcons(); + Map positions = new HashMap<>(); + int count = icons.size(); + int margin = 20; // margin inside diagram area + + // Fixed seed for deterministic initial placement. + Random rand = new Random(100); + // Initialize nodes at random positions (with margin). + for (DiagramIcon icon : icons) { + int posX = x + margin + rand.nextInt(Math.max(1, width - 2 * margin)); + int posY = y + margin + rand.nextInt(Math.max(1, height - 2 * margin)); + positions.put(icon.id, new Point(posX, posY)); + } + + // Fruchterman–Reingold parameters. + double area = width * height; + // Ideal distance between nodes. + double k = Math.sqrt(area / (double) count); + int iterations = 100; + double temperature = width / 10.0; // initial max displacement + double cooling = temperature / (iterations + 1); + double minDistance = iconSize + slotPadding; // enforce minimal separation + + // Get the list of connections (only actual edges). + List connections = getConnections(); + + for (int iter = 0; iter < iterations; iter++) { + // Initialize displacement for each node. + Map disp = new HashMap<>(); + for (DiagramIcon v : icons) { + disp.put(v.id, new double[] {0.0, 0.0}); + } + + // Repulsive forces: for every pair of nodes. + for (int i = 0; i < icons.size(); i++) { + DiagramIcon v = icons.get(i); + Point posV = positions.get(v.id); + for (int j = i + 1; j < icons.size(); j++) { + DiagramIcon u = icons.get(j); + Point posU = positions.get(u.id); + double dx = posV.x - posU.x; + double dy = posV.y - posU.y; + double distance = Math.sqrt(dx * dx + dy * dy); + if (distance < minDistance) distance = minDistance; + double repForce = (k * k) / distance; + double[] dispV = disp.get(v.id); + double[] dispU = disp.get(u.id); + dispV[0] += (dx / distance) * repForce; + dispV[1] += (dy / distance) * repForce; + dispU[0] -= (dx / distance) * repForce; + dispU[1] -= (dy / distance) * repForce; + } + } + + // Attractive forces: only for nodes that are connected. + for (DiagramConnection conn : connections) { + Point posV = positions.get(conn.idFrom); + Point posU = positions.get(conn.idTo); + double dx = posV.x - posU.x; + double dy = posV.y - posU.y; + double distance = Math.sqrt(dx * dx + dy * dy); + if (distance < 0.01) distance = 0.01; + double attrForce = (distance * distance) / k; + double[] dispV = disp.get(conn.idFrom); + double[] dispU = disp.get(conn.idTo); + dispV[0] -= (dx / distance) * attrForce; + dispV[1] -= (dy / distance) * attrForce; + dispU[0] += (dx / distance) * attrForce; + dispU[1] += (dy / distance) * attrForce; + } + + // Update positions based on displacement vectors. + for (DiagramIcon v : icons) { + double[] d = disp.get(v.id); + double dispLength = Math.sqrt(d[0] * d[0] + d[1] * d[1]); + if (dispLength < 0.01) dispLength = 0.01; + int newX = positions.get(v.id).x + (int)((d[0] / dispLength) * Math.min(dispLength, temperature)); + int newY = positions.get(v.id).y + (int)((d[1] / dispLength) * Math.min(dispLength, temperature)); + newX = Math.max(x + margin, Math.min(x + width - margin, newX)); + newY = Math.max(y + margin, Math.min(y + height - margin, newY)); + positions.get(v.id).x = newX; + positions.get(v.id).y = newY; + } + temperature -= cooling; + } + return positions; + } + + // --------------- + // Standard Icon Box Drawing (Background + Border) + // --------------- protected void drawIconBox(int slotX, int slotY, int slotSize, boolean highlighted) { - // If highlighted, mix the background color with white a little. int bg = highlighted ? mixColors(iconBackgroundColor, 0xFFFFFFFF, 0.2f) : iconBackgroundColor; - // Draw the box background. drawRect(slotX, slotY, slotX + slotSize, slotY + slotSize, bg); - // Draw the border lines inside the box. for (int i = 0; i < iconBorderThickness; i++) { - // Draw horizontal top and bottom borders. drawHorizontalLine(slotX + i, slotX + slotSize - i, slotY + i, iconBorderColor); drawHorizontalLine(slotX + i, slotX + slotSize - i, slotY + slotSize - 1 - i, iconBorderColor); - // Draw vertical left and right borders. drawVerticalLine(slotX + i, slotY + i, slotY + slotSize - i, iconBorderColor); drawVerticalLine(slotX + slotSize - 1 - i, slotY + i, slotY + slotSize - i, iconBorderColor); } } - /** - * Helper to mix two ARGB colors by a given ratio. - * If ratio is 0, returns color1; if 1, returns color2. - */ protected int mixColors(int color1, int color2, float ratio) { int a1 = (color1 >> 24) & 0xFF, r1 = (color1 >> 16) & 0xFF, g1 = (color1 >> 8) & 0xFF, b1 = color1 & 0xFF; int a2 = (color2 >> 24) & 0xFF, r2 = (color2 >> 16) & 0xFF, g2 = (color2 >> 8) & 0xFF, b2 = color2 & 0xFF; - int a = (int) (a1 + (a2 - a1) * ratio); - int r = (int) (r1 + (r2 - r1) * ratio); - int g = (int) (g1 + (g2 - g1) * ratio); - int b = (int) (b1 + (b2 - b1) * ratio); + int a = (int)(a1 + (a2 - a1) * ratio); + int r = (int)(r1 + (r2 - r1) * ratio); + int g = (int)(g1 + (g2 - g1) * ratio); + int b = (int)(b1 + (b2 - b1) * ratio); return (a << 24) | (r << 16) | (g << 8) | b; } - // ------------- + // --------------- // Main Draw Method - // ------------- - /** - * Draws the entire diagram: nodes (with their standard boxes) and connections (with arrow heads). - * Also performs hit testing to determine which icon or connection is being hovered, - * so that appropriate highlighting and tooltips can be shown. - * - * @param mouseX The current mouse x-coordinate. - * @param mouseY The current mouse y-coordinate. - */ + // --------------- public void drawDiagram(int mouseX, int mouseY) { - // Handle zoom changes from the scroll wheel. handleMouseScroll(Mouse.getDWheel()); Minecraft mc = Minecraft.getMinecraft(); ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); int factor = sr.getScaleFactor(); - // Calculate positions for all icons. Map positions = calculatePositions(); - // Determine the center of the diagram. int centerX = x + width / 2, centerY = y + height / 2; - // Transform mouse coordinates to account for zoom (for hit testing). - int tMouseX = centerX + (int) ((mouseX - centerX) / zoom); - int tMouseY = centerY + (int) ((mouseY - centerY) / zoom); + int tMouseX = centerX + (int)((mouseX - centerX) / zoom); + int tMouseY = centerY + (int)((mouseY - centerY) / zoom); - // ------------- - // Hit Testing & Selection - // ------------- Integer hoveredIconId = null; int hoveredConnFrom = -1, hoveredConnTo = -1; - // This set will contain IDs of icons that should be drawn highlighted. HashSet selectedIconIds = new HashSet<>(); - // Check if the mouse is over any icon. for (DiagramIcon icon : getIcons()) { Point pos = positions.get(icon.id); if (pos == null) continue; - // Calculate the top-left corner of the icon box. - int slotX = pos.x + (int) panX - slotSize / 2; - int slotY = pos.y + (int) panY - slotSize / 2; - // If the transformed mouse is within the box... + int slotX = pos.x + (int)panX - slotSize / 2; + int slotY = pos.y + (int)panY - slotSize / 2; if (tMouseX >= slotX && tMouseX < slotX + slotSize && tMouseY >= slotY && tMouseY < slotY + slotSize) { hoveredIconId = icon.id; @@ -251,7 +358,6 @@ public abstract class GuiNPCDiagram extends Gui { break; } } - // If an icon is hovered, also mark all icons connected to it. if (hoveredIconId != null) { for (DiagramConnection conn : getConnections()) { if (conn.idFrom == hoveredIconId || conn.idTo == hoveredIconId) { @@ -260,7 +366,6 @@ public abstract class GuiNPCDiagram extends Gui { } } } else { - // If no icon is hovered, check if the mouse is near any connection line. final double threshold = 5.0; outer: for (DiagramConnection conn : getConnections()) { @@ -279,60 +384,39 @@ public abstract class GuiNPCDiagram extends Gui { } } - // ------------- - // Clipping & Background - // ------------- GL11.glEnable(GL11.GL_SCISSOR_TEST); - // Set the scissor rectangle to the diagram area. GL11.glScissor(x * factor, (sr.getScaledHeight() - (y + height)) * factor, width * factor, height * factor); - // Draw the overall diagram background. drawRect(x, y, x + width, y + height, 0xFF333333); - // ------------- - // Zoom Transformation - // ------------- GL11.glPushMatrix(); GL11.glTranslatef(centerX, centerY, 0); GL11.glScalef(zoom, zoom, 1.0f); GL11.glTranslatef(-centerX, -centerY, 0); - // ------------- - // Draw Connections (Arrows) - // ------------- for (DiagramConnection conn : getConnections()) { Point pFrom = positions.get(conn.idFrom); Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; - int ax = pFrom.x + (int) panX; - int ay = pFrom.y + (int) panY; - int bx = pTo.x + (int) panX; - int by = pTo.y + (int) panY; - // Dim the connection if both endpoints are not selected. + int ax = pFrom.x + (int)panX; + int ay = pFrom.y + (int)panY; + int bx = pTo.x + (int)panX; + int by = pTo.y + (int)panY; boolean dim = !selectedIconIds.isEmpty() && !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); drawConnectionLine(ax, ay, bx, by, conn, dim); } - // ------------- - // Draw Icons (Nodes) - // ------------- for (DiagramIcon icon : getIcons()) { Point pos = positions.get(icon.id); if (pos == null) continue; - int slotX = pos.x + (int) panX - slotSize / 2; - int slotY = pos.y + (int) panY - slotSize / 2; - // If this icon's id is in the selected set, consider it highlighted. + int slotX = pos.x + (int)panX - slotSize / 2; + int slotY = pos.y + (int)panY - slotSize / 2; boolean highlighted = !selectedIconIds.isEmpty() && selectedIconIds.contains(icon.id); - // First draw the standardized icon box (background and border). drawIconBox(slotX, slotY, slotSize, highlighted); - // Then let the subclass render the icon image. - renderIcon(icon, pos.x + (int) panX, pos.y + (int) panY, highlighted); + renderIcon(icon, pos.x + (int)panX, pos.y + (int)panY, highlighted); } GL11.glPopMatrix(); - // ------------- - // Draw Arrow Heads (if enabled) - // ------------- if (showArrowHeads) { GL11.glPushMatrix(); GL11.glTranslatef(centerX, centerY, 0); @@ -342,22 +426,18 @@ public abstract class GuiNPCDiagram extends Gui { Point pFrom = positions.get(conn.idFrom); Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; - int ax = pFrom.x + (int) panX; - int ay = pFrom.y + (int) panY; - int bx = pTo.x + (int) panX; - int by = pTo.y + (int) panY; + int ax = pFrom.x + (int)panX; + int ay = pFrom.y + (int)panY; + int bx = pTo.x + (int)panX; + int by = pTo.y + (int)panY; boolean dim = !selectedIconIds.isEmpty() && !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); drawArrowHead(ax, ay, bx, by, conn, dim); } GL11.glPopMatrix(); } - GL11.glDisable(GL11.GL_SCISSOR_TEST); - // ------------- - // Draw Tooltips - // ------------- if (hoveredIconId != null) { DiagramIcon icon = getIconById(hoveredIconId); List tooltip = getIconTooltip(icon); @@ -373,12 +453,6 @@ public abstract class GuiNPCDiagram extends Gui { } } - // ------------- - // Helper Methods for Hit Testing & Drawing - // ------------- - /** - * Returns the DiagramIcon with the given id, or null if not found. - */ protected DiagramIcon getIconById(int id) { for (DiagramIcon icon : getIcons()) { if (icon.id == id) @@ -387,9 +461,6 @@ public abstract class GuiNPCDiagram extends Gui { return null; } - /** - * Returns the DiagramConnection connecting idFrom to idTo, or null if not found. - */ protected DiagramConnection getConnectionByIds(int idFrom, int idTo) { for (DiagramConnection conn : getConnections()) { if (conn.idFrom == idFrom && conn.idTo == idTo) @@ -398,32 +469,16 @@ public abstract class GuiNPCDiagram extends Gui { return null; } - /** - * Draws a connection line between two points. - * - * @param x1 Source x-coordinate. - * @param y1 Source y-coordinate. - * @param x2 Target x-coordinate. - * @param y2 Target y-coordinate. - * @param conn The connection data. - * @param dim Whether to draw a dimmed (less bright) version. - */ protected void drawConnectionLine(int x1, int y1, int x2, int y2, DiagramConnection conn, boolean dim) { int color = getConnectionColor(conn); - if (!useColorScaling) { - color = 0xFFFFFFFF; - } + if (!useColorScaling) { color = 0xFFFFFFFF; } GL11.glPushAttrib(GL11.GL_ENABLE_BIT); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glLineWidth(2.0F); - float r = ((color >> 16) & 0xFF) / 255f; - float g = ((color >> 8) & 0xFF) / 255f; - float b = (color & 0xFF) / 255f; - if (dim) { - r *= 0.4f; - g *= 0.4f; - b *= 0.4f; - } + float r = ((color >> 16)&0xFF)/255f; + float g = ((color >> 8)&0xFF)/255f; + float b = (color&0xFF)/255f; + if (dim) { r*=0.4f; g*=0.4f; b*=0.4f; } GL11.glColor4f(r, g, b, 1f); GL11.glBegin(GL11.GL_LINES); GL11.glVertex2f(x1, y1); @@ -433,49 +488,27 @@ public abstract class GuiNPCDiagram extends Gui { GL11.glPopAttrib(); } - /** - * Draws an arrow head at the target end of a connection. - * - * @param x1 Source x-coordinate. - * @param y1 Source y-coordinate. - * @param x2 Target x-coordinate. - * @param y2 Target y-coordinate. - * @param conn The connection data. - * @param dim Whether to draw a dimmed version. - */ protected void drawArrowHead(int x1, int y1, int x2, int y2, DiagramConnection conn, boolean dim) { - float dx = x2 - x1; - float dy = y2 - y1; - float len = (float) Math.sqrt(dx * dx + dy * dy); - if (len == 0) return; - // Compute the unit vector from source to target. - float ux = dx / len, uy = dy / len; - // Offset from target center by half the slot size to get the edge of the icon box. - float defenderEdgeX = x2 - ux * (slotSize / 2f); - float defenderEdgeY = y2 - uy * (slotSize / 2f); - - int arrowSize = 6; // Adjustable arrow size. - double angle = Math.atan2(uy, ux); - // Calculate the left and right vertices of the arrow head triangle. - float leftX = (float) (defenderEdgeX - arrowSize * Math.cos(angle - Math.PI / 6)); - float leftY = (float) (defenderEdgeY - arrowSize * Math.sin(angle - Math.PI / 6)); - float rightX = (float) (defenderEdgeX - arrowSize * Math.cos(angle + Math.PI / 6)); - float rightY = (float) (defenderEdgeY - arrowSize * Math.sin(angle + Math.PI / 6)); - + float dx = x2 - x1, dy = y2 - y1; + float len = (float)Math.sqrt(dx*dx+dy*dy); + if (len==0)return; + float ux = dx/len, uy = dy/len; + float defenderEdgeX = x2 - ux*(slotSize/2f); + float defenderEdgeY = y2 - uy*(slotSize/2f); + int arrowSize = 6; + double angle = Math.atan2(uy,ux); + float leftX = (float)(defenderEdgeX - arrowSize * Math.cos(angle - Math.PI/6)); + float leftY = (float)(defenderEdgeY - arrowSize * Math.sin(angle - Math.PI/6)); + float rightX = (float)(defenderEdgeX - arrowSize * Math.cos(angle + Math.PI/6)); + float rightY = (float)(defenderEdgeY - arrowSize * Math.sin(angle + Math.PI/6)); int color = getConnectionColor(conn); - if (!useColorScaling) { - color = 0xFFFFFFFF; - } + if (!useColorScaling) { color = 0xFFFFFFFF; } GL11.glPushAttrib(GL11.GL_ENABLE_BIT); GL11.glDisable(GL11.GL_TEXTURE_2D); - float r = ((color >> 16) & 0xFF) / 255f; - float g = ((color >> 8) & 0xFF) / 255f; - float b = (color & 0xFF) / 255f; - if (dim) { - r *= 0.4f; - g *= 0.4f; - b *= 0.4f; - } + float r = ((color >> 16)&0xFF)/255f; + float g = ((color >> 8)&0xFF)/255f; + float b = (color&0xFF)/255f; + if(dim){ r*=0.4f; g*=0.4f; b*=0.4f; } GL11.glColor4f(r, g, b, 1f); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glBegin(GL11.GL_TRIANGLES); @@ -488,55 +521,41 @@ public abstract class GuiNPCDiagram extends Gui { GL11.glPopAttrib(); } - /** - * Computes a color for a connection based on its percentage value. - * Uses different thresholds to return a base color, and interpolates for higher percentages. - */ protected int getConnectionColor(DiagramConnection conn) { float percent = conn.percent; - if (percent <= 0.10f) return 0xFF80FF80; // light green - else if (percent <= 0.40f) return 0xFFCCFF66; // green-yellow - else if (percent <= 0.50f) return 0xFFFFA500; // orange + if (percent<=0.10f)return 0xFF80FF80; + else if (percent<=0.40f)return 0xFFCCFF66; + else if (percent<=0.50f)return 0xFFFFA500; else { - float ratio = (percent - 0.50f) / 0.50f; + float ratio = (percent-0.50f)/0.50f; ratio = Math.min(1f, Math.max(0f, ratio)); int r1 = 0xFF, g1 = 0xA5, b1 = 0x00; int r2 = 0xFF, g2 = 0x00, b2 = 0x00; - int r = r1 + (int) ((r2 - r1) * ratio); - int g = g1 + (int) ((g2 - g1) * ratio); - int b = b1 + (int) ((b2 - b1) * ratio); + int r = r1 + (int)((r2-r1)*ratio); + int g = g1 + (int)((g2-g1)*ratio); + int b = b1 + (int)((b2-b1)*ratio); return (0xFF << 24) | (r << 16) | (g << 8) | b; } } - /** - * Utility method: returns the shortest distance from a point (px,py) to the line segment defined by (x1,y1)-(x2,y2). - */ private double pointLineDistance(double px, double py, double x1, double y1, double x2, double y2) { double A = px - x1, B = py - y1, C = x2 - x1, D = y2 - y1; double dot = A * C + B * D; double lenSq = C * C + D * D; - double param = (lenSq != 0) ? (dot / lenSq) : -1; + double param = (lenSq!=0)?(dot/lenSq):-1; double xx, yy; - if (param < 0) { - xx = x1; - yy = y1; - } else if (param > 1) { - xx = x2; - yy = y2; - } else { - xx = x1 + param * C; - yy = y1 + param * D; - } - double dx = px - xx, dy = py - yy; - return Math.sqrt(dx * dx + dy * dy); + if(param<0){ xx = x1; yy = y1; } + else if(param>1){ xx = x2; yy = y2; } + else { xx = x1+param*C; yy = y1+param*D; } + double dx = px-xx, dy = py-yy; + return Math.sqrt(dx*dx+dy*dy); } - // ------------- + // --------------- // Mouse Handling - // ------------- + // --------------- public boolean mouseClicked(int mouseX, int mouseY, int mouseButton) { - if (mouseButton == 0 && isWithin(mouseX, mouseY)) { + if (mouseButton==0 && isWithin(mouseX, mouseY)) { dragging = true; lastDragX = mouseX; lastDragY = mouseY; @@ -546,12 +565,11 @@ public abstract class GuiNPCDiagram extends Gui { } public void mouseClickMove(int mouseX, int mouseY, int mouseButton, long timeSinceLastClick) { - if (dragging) { - int dx = mouseX - lastDragX; - int dy = mouseY - lastDragY; - // Adjust panning speed relative to zoom. - panX += dx / zoom * 0.7f; - panY += dy / zoom * 0.7f; + if(dragging){ + int dx = mouseX-lastDragX; + int dy = mouseY-lastDragY; + panX += dx/zoom*0.7f; + panY += dy/zoom*0.7f; lastDragX = mouseX; lastDragY = mouseY; } @@ -562,29 +580,28 @@ public abstract class GuiNPCDiagram extends Gui { } protected boolean isWithin(int mouseX, int mouseY) { - return mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height; + return mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height; } /** - * Handles mouse wheel scrolling for zooming in/out. + * Handles zoom in/out based on mouse wheel scrolling. */ public void handleMouseScroll(int scrollDelta) { zoom += scrollDelta * 0.0009f; - if (zoom < 0.5f) zoom = 0.5f; - if (zoom > 2.0f) zoom = 2.0f; + if(zoom<0.5f) zoom = 0.5f; + if(zoom>2.0f) zoom = 2.0f; } /** - * Override this method if you want to render tooltips differently. - * By default, it does nothing. + * Override this method if you wish to render tooltips differently. */ protected void drawHoveringText(List text, int mouseX, int mouseY, FontRenderer fontRenderer) { // Default implementation is empty. } - // ------------- + // --------------- // Flag Setters - // ------------- + // --------------- public void setShowArrowHeads(boolean showArrowHeads) { this.showArrowHeads = showArrowHeads; } @@ -593,24 +610,14 @@ public abstract class GuiNPCDiagram extends Gui { this.useColorScaling = useColorScaling; } - // ------------- + // --------------- // Inner Classes for Data Wrapping - // ------------- - /** - * A simple wrapper class for a node/icon. - */ + // --------------- public static class DiagramIcon { public int id; - public DiagramIcon(int id) { - this.id = id; - } + public DiagramIcon(int id) { this.id = id; } } - /** - * A simple wrapper class for a connection (arrow) between nodes. - * Contains the source node id (idFrom), target node id (idTo), a percentage value (for color scaling), - * and a hover text. - */ public static class DiagramConnection { public int idFrom, idTo; public float percent; From 64b033da650502df96d57379e4a87493f4f09faf Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 19:53:30 -0500 Subject: [PATCH 114/157] Button Icons --- .../client/gui/mainmenu/GuiNpcDisplay.java | 3 + .../npcs/client/gui/util/GuiNpcButton.java | 200 ++++++++++-------- 2 files changed, 118 insertions(+), 85 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java index 6c138b25c..b035b84be 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java @@ -7,6 +7,7 @@ import kamkeel.npcs.network.packets.request.mainmenu.MainmenuDisplayGetPacket; import kamkeel.npcs.network.packets.request.mainmenu.MainmenuDisplaySavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; import noppes.npcs.DataDisplay; import noppes.npcs.client.NoppesUtil; @@ -41,6 +42,8 @@ public class GuiNpcDisplay extends GuiNPCInterface2 implements ITextfieldListene this.addButton(new GuiNpcButton(0, guiLeft + 253+52, y , 110, 20, new String[]{"display.show","display.hide","display.showAttacking"} ,display.showName)); this.addButton(new GuiNpcButton(14, guiLeft + 259, y , 20, 20, Character.toString('\u21bb'))); + getButton(14).setIconTexture(new ResourceLocation("customnpcs", "textures/gui/slot.png")); + this.addButton(new GuiNpcButton(15, guiLeft + 259 + 22, y , 20, 20, Character.toString('\u22EE'))); y+=23; diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java index bd3e3b8f0..dc568c1e5 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java @@ -4,6 +4,7 @@ import kamkeel.npcs.util.TextSplitter; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -12,97 +13,141 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -public class GuiNpcButton extends GuiButton{ +public class GuiNpcButton extends GuiButton { - protected String[] display; - private int displayValue = 0; - public int id; + protected String[] display; + private int displayValue = 0; + public int id; public String hoverableText = ""; public int oldHover; public int hoverCount = 0; boolean hasSubGUI = false; - public GuiNpcButton(int i, int j, int k, String s) { - super(i, j, k, StatCollector.translateToLocal(s)); - id = i; - } - public GuiNpcButton(int i, int j, int k, String[] display, int val) { - this(i, j, k, display[val]); - this.display = display; - this.displayValue = val; - } - public GuiNpcButton(int i, int j, int k, int l, int m, String string) { - super(i, j, k, l, m, StatCollector.translateToLocal(string)); - id = i; - } - public GuiNpcButton(int i, int j, int k, int l, int m, String[] display, - int val) { - this(i, j, k, l, m, display.length == 0?"":display[val % display.length]); - this.display = display; - this.displayValue = display.length == 0?0:val % display.length; - } + // Fields for icon texture and its dimensions. + private ResourceLocation iconTexture = null; + private int iconWidth = 16; + private int iconHeight = 16; - public GuiNpcButton(int i, int j, int k, int l, int m, Enum[] displayEnums, - int val) { + public GuiNpcButton(int i, int j, int k, String s) { + super(i, j, k, StatCollector.translateToLocal(s)); + id = i; + } + + public GuiNpcButton(int i, int j, int k, String[] display, int val) { + this(i, j, k, display[val]); + this.display = display; + this.displayValue = val; + } + + public GuiNpcButton(int i, int j, int k, int l, int m, String string) { + super(i, j, k, l, m, StatCollector.translateToLocal(string)); + id = i; + } + + public GuiNpcButton(int i, int j, int k, int l, int m, String[] display, int val) { + this(i, j, k, l, m, display.length == 0 ? "" : display[val % display.length]); + this.display = display; + this.displayValue = display.length == 0 ? 0 : val % display.length; + } + + public GuiNpcButton(int i, int j, int k, int l, int m, Enum[] displayEnums, int val) { this(i, j, k, l, m, displayEnums.length == 0 ? "" : displayEnums[val % displayEnums.length].toString()); - ArrayList strings = new ArrayList<>(); for (Enum e : displayEnums) { strings.add(e.toString()); } - this.display = strings.toArray(new String[0]); - this.displayValue = display.length == 0?0:val % display.length; + this.displayValue = display.length == 0 ? 0 : val % display.length; } - public void setDisplayText(String text){ - this.displayString = StatCollector.translateToLocal(text); - } - public void setHoverText(String text){ + public void setDisplayText(String text) { + this.displayString = StatCollector.translateToLocal(text); + } + + public void setHoverText(String text) { this.hoverableText = StatCollector.translateToLocal(text); } - public int getValue(){ - return displayValue; - } - public void setEnabled(boolean bo){ - this.enabled = bo; - } - public void setVisible(boolean b) { - this.visible = b; - } - public boolean getVisible() { - return visible; - } - - public void setDisplay(int value){ - this.displayValue = value; - this.setDisplayText(display[value]); + public int getValue() { + return displayValue; } - public void setTextColor(int color){ - this.packedFGColour = color; + public void setEnabled(boolean bo) { + this.enabled = bo; + } + + public void setVisible(boolean b) { + this.visible = b; + } + + public boolean getVisible() { + return visible; + } + + public void setDisplay(int value) { + this.displayValue = value; + this.setDisplayText(display[value]); + } + + public void setTextColor(int color) { + this.packedFGColour = color; + } + + /** + * Sets the icon texture for this button. + * The texture should be 16x16 by default, unless you adjust the icon dimensions. + */ + public void setIconTexture(ResourceLocation texture) { + this.iconTexture = texture; + } + + /** + * Sets the icon dimensions. + */ + public void setIconSize(int width, int height) { + this.iconWidth = width; + this.iconHeight = height; } @Override - public boolean mousePressed(Minecraft minecraft, int i, int j) - { - boolean bo = super.mousePressed(minecraft, i, j); - if(bo && display != null && display.length != 0){ - displayValue = (displayValue+1) % display.length; - this.setDisplayText(display[displayValue]); - } - return bo; + public boolean mousePressed(Minecraft minecraft, int i, int j) { + boolean bo = super.mousePressed(minecraft, i, j); + if (bo && display != null && display.length != 0) { + displayValue = (displayValue + 1) % display.length; + this.setDisplayText(display[displayValue]); + } + return bo; } - public int getWidth() { - return width; - } + public int getWidth() { + return width; + } + + @Override + public void drawButton(Minecraft mc, int mouseX, int mouseY) { + if (!this.visible) + return; + // First, draw the button normally using the superclass method. + super.drawButton(mc, mouseX, mouseY); + // Then, if an icon texture is set, draw it. + if (iconTexture != null) { + mc.getTextureManager().bindTexture(iconTexture); + GL11.glPushMatrix(); + RenderHelper.enableGUIStandardItemLighting(); + // Calculate the icon position so that it's centered in the button. + // (Assumes the button's (xPosition,yPosition) is its top left.) + int iconX = this.xPosition + (this.width - iconWidth) / 2; + int iconY = this.yPosition + (this.height - iconHeight) / 2; + // Draw the texture; we assume texture coordinates start at (0,0) with the desired size. + this.drawTexturedModalRect(iconX, iconY, 0, 0, iconWidth, iconHeight); + RenderHelper.disableStandardItemLighting(); + GL11.glPopMatrix(); + } + } public void drawHover(int i, int j, boolean hasSubGui) { if (hasSubGui || !visible || hoverableText.isEmpty()) return; - int hoverState = this.getHoverState(this.field_146123_n); if (oldHover != hoverState) { oldHover = hoverState; @@ -111,7 +156,6 @@ public class GuiNpcButton extends GuiButton{ if (hoverCount < 110) hoverCount++; } - if (hoverState == 2 && hoverCount > 100) { GL11.glPushMatrix(); Minecraft mc = Minecraft.getMinecraft(); @@ -127,7 +171,6 @@ public class GuiNpcButton extends GuiButton{ protected void drawHoveringText(List textLines, int x, int y, Minecraft mc) { if (mc.fontRenderer == null || textLines.isEmpty()) return; - GL11.glDisable(GL12.GL_RESCALE_NORMAL); RenderHelper.disableStandardItemLighting(); GL11.glDisable(GL11.GL_LIGHTING); @@ -151,26 +194,21 @@ public class GuiNpcButton extends GuiButton{ maxHeight += 2 + (textLines.size() - 1) * 10; } - // Calculate the maximum x-coordinate to ensure the tooltip stays within the game window int gameWidth = mc.displayWidth; - int maxTooltipX = gameWidth - maxWidth - 4; // Subtract the tooltip width + int maxTooltipX = gameWidth - maxWidth - 4; - // Adjust tooltip position if it goes off the screen to the right if (j2 > maxTooltipX) { int diff = j2 - maxTooltipX; - j2 -= diff; // Shift tooltip to the left - GL11.glTranslatef(-300, 0, 0); // Apply translation + j2 -= diff; + GL11.glTranslatef(-300, 0, 0); } if (k2 + maxHeight + 6 > mc.displayHeight) { k2 = mc.displayHeight - maxHeight - 6; } - // Draw the tooltip this.zLevel = 300.0F; int j1 = -267386864; - // Draw the gradient background - // (Ensure to adjust the coordinates according to the translation) this.drawGradientRect(j2 - 3, k2 - 4, j2 + maxWidth + 3, k2 - 3, j1, j1); this.drawGradientRect(j2 - 3, k2 + maxHeight + 3, j2 + maxWidth + 3, k2 + maxHeight + 4, j1, j1); this.drawGradientRect(j2 - 3, k2 - 3, j2 + maxWidth + 3, k2 + maxHeight + 3, j1, j1); @@ -183,7 +221,6 @@ public class GuiNpcButton extends GuiButton{ this.drawGradientRect(j2 - 3, k2 - 3, j2 + maxWidth + 3, k2 - 3 + 1, k1, k1); this.drawGradientRect(j2 - 3, k2 + maxHeight + 2, j2 + maxWidth + 3, k2 + maxHeight + 3, l1, l1); - // Draw the text lines for (int i2 = 0; i2 < textLines.size(); ++i2) { String s1 = (String) textLines.get(i2); mc.fontRenderer.drawStringWithShadow(s1, j2, k2, -1); @@ -201,28 +238,21 @@ public class GuiNpcButton extends GuiButton{ } @Override - public int getHoverState(boolean mouseOver) - { + public int getHoverState(boolean mouseOver) { byte b0 = 1; - if (!this.enabled) - { + if (!this.enabled) { b0 = 0; - } - else if (mouseOver && !this.hasSubGUI) - { + } else if (mouseOver && !this.hasSubGUI) { b0 = 2; } - return b0; } - public void updateSubGUI(boolean hasSubGUI) - { + public void updateSubGUI(boolean hasSubGUI) { this.hasSubGUI = hasSubGUI; } - public boolean getHasSubGUI() - { + public boolean getHasSubGUI() { return this.hasSubGUI; } } From d84092eeaf1ff2d80506a93ad9a4f5d75fa11bef Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 20:22:16 -0500 Subject: [PATCH 115/157] Add a Highlighting, Not Highlighted and Default State + Fix Panning and Hovering Positioning --- .../npcs/client/gui/global/GuiMagicMap.java | 26 +++---- .../npcs/client/gui/global/GuiNPCDiagram.java | 68 ++++++++++++------- 2 files changed, 57 insertions(+), 37 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java index a356892a4..063819dad 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java @@ -60,35 +60,35 @@ public class GuiMagicMap extends GuiNPCDiagram { } @Override - protected void renderIcon(DiagramIcon icon, int posX, int posY, boolean highlighted) { - // Cast to our custom wrapper class. + protected void renderIcon(DiagramIcon icon, int posX, int posY, IconRenderState state) { Magic magic = ((MagicIcon) icon).magic; Minecraft mc = Minecraft.getMinecraft(); FontRenderer fontRenderer = mc.fontRenderer; - int iconSize = this.iconSize; - int iconX = posX - iconSize / 2; - int iconY = posY - iconSize / 2; + int size = this.iconSize; + int iconX = posX - size / 2; + int iconY = posY - size / 2; - if (!highlighted) { - GL11.glColor4f(0.4f, 0.4f, 0.4f, 1f); - } - - // Use standard item lighting. RenderHelper.enableGUIStandardItemLighting(); + + // Render the icon. if (magic.iconItem != null) { renderItem.renderItemAndEffectIntoGUI(fontRenderer, mc.getTextureManager(), magic.iconItem, iconX, iconY); } else if (magic.iconTexture != null && !magic.iconTexture.isEmpty()) { mc.getTextureManager().bindTexture(new ResourceLocation(magic.iconTexture)); - this.drawTexturedModalRect(iconX, iconY, 0, 0, iconSize, iconSize); + this.drawTexturedModalRect(iconX, iconY, 0, 0, size, size); } else { ItemStack sword = new ItemStack(Items.iron_sword); renderItem.renderItemAndEffectIntoGUI(fontRenderer, mc.getTextureManager(), sword, iconX, iconY); } RenderHelper.disableStandardItemLighting(); - if (!highlighted) { - GL11.glColor4f(1f, 1f, 1f, 1f); + // If not highlighted, overlay a translucent black rectangle to simulate dimming. + if (state == IconRenderState.NOT_HIGHLIGHTED) { + drawRect(iconX, iconY, iconX + size, iconY + size, 0x80202020); } + + // Reset color. + GL11.glColor4f(1f, 1f, 1f, 1f); } @Override diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java index 5513febe1..0527e365e 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java @@ -103,7 +103,7 @@ public abstract class GuiNPCDiagram extends Gui { // --------------- protected abstract List getIcons(); protected abstract List getConnections(); - protected abstract void renderIcon(DiagramIcon icon, int posX, int posY, boolean highlighted); + protected abstract void renderIcon(DiagramIcon icon, int posX, int posY, IconRenderState state); protected List getIconTooltip(DiagramIcon icon) { return null; } protected List getConnectionTooltip(DiagramConnection conn) { List tooltip = new ArrayList<>(); @@ -331,28 +331,35 @@ public abstract class GuiNPCDiagram extends Gui { // Main Draw Method // --------------- public void drawDiagram(int mouseX, int mouseY) { + // Update zoom based on mouse scroll. handleMouseScroll(Mouse.getDWheel()); Minecraft mc = Minecraft.getMinecraft(); ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); int factor = sr.getScaleFactor(); + // Retrieve (cached) positions. Map positions = calculatePositions(); - int centerX = x + width / 2, centerY = y + height / 2; - int tMouseX = centerX + (int)((mouseX - centerX) / zoom); - int tMouseY = centerY + (int)((mouseY - centerY) / zoom); + int centerX = x + width / 2; + int centerY = y + height / 2; + // Calculate effective mouse coordinates (in diagram coordinate space) + int effectiveMouseX = (int)(((float)mouseX - (centerX + panX)) / zoom + centerX); + int effectiveMouseY = (int)(((float)mouseY - (centerY + panY)) / zoom + centerY); + + // Hit testing & selection: Integer hoveredIconId = null; int hoveredConnFrom = -1, hoveredConnTo = -1; HashSet selectedIconIds = new HashSet<>(); + // Check for icon hover using effective coordinates. for (DiagramIcon icon : getIcons()) { Point pos = positions.get(icon.id); if (pos == null) continue; - int slotX = pos.x + (int)panX - slotSize / 2; - int slotY = pos.y + (int)panY - slotSize / 2; - if (tMouseX >= slotX && tMouseX < slotX + slotSize && - tMouseY >= slotY && tMouseY < slotY + slotSize) { + int slotX = pos.x - slotSize / 2; + int slotY = pos.y - slotSize / 2; + if (effectiveMouseX >= slotX && effectiveMouseX < slotX + slotSize && + effectiveMouseY >= slotY && effectiveMouseY < slotY + slotSize) { hoveredIconId = icon.id; selectedIconIds.add(icon.id); break; @@ -366,14 +373,14 @@ public abstract class GuiNPCDiagram extends Gui { } } } else { + // If no icon is hovered, check for connection hover. final double threshold = 5.0; outer: for (DiagramConnection conn : getConnections()) { Point pFrom = positions.get(conn.idFrom); Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; - double dist = pointLineDistance(tMouseX, tMouseY, - pFrom.x + panX, pFrom.y + panY, pTo.x + panX, pTo.y + panY); + double dist = pointLineDistance(effectiveMouseX, effectiveMouseY, pFrom.x, pFrom.y, pTo.x, pTo.y); if (dist < threshold) { hoveredConnFrom = conn.idFrom; hoveredConnTo = conn.idTo; @@ -388,48 +395,53 @@ public abstract class GuiNPCDiagram extends Gui { GL11.glScissor(x * factor, (sr.getScaledHeight() - (y + height)) * factor, width * factor, height * factor); drawRect(x, y, x + width, y + height, 0xFF333333); + // Apply the same pan and zoom transformation for both arrows and icons. GL11.glPushMatrix(); - GL11.glTranslatef(centerX, centerY, 0); + GL11.glTranslatef(centerX + panX, centerY + panY, 0); GL11.glScalef(zoom, zoom, 1.0f); GL11.glTranslatef(-centerX, -centerY, 0); + // Draw connections (arrows). for (DiagramConnection conn : getConnections()) { Point pFrom = positions.get(conn.idFrom); Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; - int ax = pFrom.x + (int)panX; - int ay = pFrom.y + (int)panY; - int bx = pTo.x + (int)panX; - int by = pTo.y + (int)panY; + int ax = pFrom.x; + int ay = pFrom.y; + int bx = pTo.x; + int by = pTo.y; boolean dim = !selectedIconIds.isEmpty() && !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); drawConnectionLine(ax, ay, bx, by, conn, dim); } + // Draw icons. for (DiagramIcon icon : getIcons()) { Point pos = positions.get(icon.id); if (pos == null) continue; - int slotX = pos.x + (int)panX - slotSize / 2; - int slotY = pos.y + (int)panY - slotSize / 2; - boolean highlighted = !selectedIconIds.isEmpty() && selectedIconIds.contains(icon.id); + int slotX = pos.x - slotSize / 2; + int slotY = pos.y - slotSize / 2; + boolean highlighted = selectedIconIds.isEmpty() || selectedIconIds.contains(icon.id); drawIconBox(slotX, slotY, slotSize, highlighted); - renderIcon(icon, pos.x + (int)panX, pos.y + (int)panY, highlighted); + IconRenderState state = highlighted ? IconRenderState.HIGHLIGHTED : IconRenderState.NOT_HIGHLIGHTED; + renderIcon(icon, pos.x, pos.y, state); } GL11.glPopMatrix(); + // Draw arrow heads. if (showArrowHeads) { GL11.glPushMatrix(); - GL11.glTranslatef(centerX, centerY, 0); + GL11.glTranslatef(centerX + panX, centerY + panY, 0); GL11.glScalef(zoom, zoom, 1.0f); GL11.glTranslatef(-centerX, -centerY, 0); for (DiagramConnection conn : getConnections()) { Point pFrom = positions.get(conn.idFrom); Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; - int ax = pFrom.x + (int)panX; - int ay = pFrom.y + (int)panY; - int bx = pTo.x + (int)panX; - int by = pTo.y + (int)panY; + int ax = pFrom.x; + int ay = pFrom.y; + int bx = pTo.x; + int by = pTo.y; boolean dim = !selectedIconIds.isEmpty() && !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); drawArrowHead(ax, ay, bx, by, conn, dim); @@ -438,6 +450,7 @@ public abstract class GuiNPCDiagram extends Gui { } GL11.glDisable(GL11.GL_SCISSOR_TEST); + // Use original mouseX and mouseY (screen coordinates) for tooltips. if (hoveredIconId != null) { DiagramIcon icon = getIconById(hoveredIconId); List tooltip = getIconTooltip(icon); @@ -453,6 +466,7 @@ public abstract class GuiNPCDiagram extends Gui { } } + protected DiagramIcon getIconById(int id) { for (DiagramIcon icon : getIcons()) { if (icon.id == id) @@ -610,6 +624,12 @@ public abstract class GuiNPCDiagram extends Gui { this.useColorScaling = useColorScaling; } + public enum IconRenderState { + DEFAULT, + HIGHLIGHTED, + NOT_HIGHLIGHTED; + } + // --------------- // Inner Classes for Data Wrapping // --------------- From a0ace95d3591db0d338428d2af7689469d9fd802 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 20:32:02 -0500 Subject: [PATCH 116/157] Only input scroll wheel if we're within it --- src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java index 0527e365e..2eb91940a 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java @@ -332,7 +332,8 @@ public abstract class GuiNPCDiagram extends Gui { // --------------- public void drawDiagram(int mouseX, int mouseY) { // Update zoom based on mouse scroll. - handleMouseScroll(Mouse.getDWheel()); + if(isWithin(mouseX, mouseY)) + handleMouseScroll(Mouse.getDWheel()); Minecraft mc = Minecraft.getMinecraft(); ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); From fc7b7f627d8338e8ba08510773146e5e698d2d5b Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 3 Feb 2025 21:18:45 -0500 Subject: [PATCH 117/157] Diagram Completed --- .../{GuiNPCDiagram.java => GuiDiagram.java} | 237 +++++++++++++----- .../npcs/client/gui/global/GuiMagicMap.java | 36 +-- .../client/gui/global/GuiNPCManageMagic.java | 23 +- .../npcs/client/gui/util/GuiNPCInterface.java | 43 +++- .../client/gui/util/GuiNPCInterface2.java | 4 - 5 files changed, 239 insertions(+), 104 deletions(-) rename src/main/java/noppes/npcs/client/gui/global/{GuiNPCDiagram.java => GuiDiagram.java} (75%) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java b/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java similarity index 75% rename from src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java rename to src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java index 2eb91940a..4f1bd7060 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCDiagram.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java @@ -2,12 +2,14 @@ package noppes.npcs.client.gui.global; import java.awt.Point; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.HashMap; import java.util.Random; +import java.util.Set; +import noppes.npcs.client.gui.util.GuiNPCInterface; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.Gui; @@ -17,19 +19,17 @@ import org.lwjgl.opengl.GL11; /** * Abstract GUI class for drawing diagrams that consist of icons (nodes) and connections (arrows). - * - * This class provides: - * - Multiple layout algorithms for positioning nodes (Circular, Square, Tree, Generated). - * - Panning and zooming functionality. - * - Standard drawing of a node's "box": a background and border that can be customized. - * - Connection drawing (including arrow heads). - * - Highlighting logic: when hovering over an icon, its connections and related icons are highlighted. - * - Tooltip support for nodes and connections. - * - * IMPORTANT: Child classes must implement the data provider methods to supply the list of icons and connections, - * and implement how an icon’s image is rendered (renderIcon). + *

+ * This version adds: + * - A parent GuiNPCInterface (passed in the constructor) so that if the parent has a subgui, no + * mouse interactions are processed. + * - Caching for icons and connections. The abstract methods createIcons() and createConnections() are + * called only once (or when cache is invalidated). + * - DiagramIcon now has fields for enabled and pressable. Disabled icons are not rendered or used in + * connection validation. + * - Basic mouse-event callbacks for pressable icons: click, held and released. */ -public abstract class GuiNPCDiagram extends Gui { +public abstract class GuiDiagram extends Gui { // --------------- // Diagram Area & Controls @@ -68,7 +68,7 @@ public abstract class GuiNPCDiagram extends Gui { /** * Allows setting the desired layout type. - * This will invalidate the cached positions. + * This will invalidate the cached positions and cached icons/connections. */ public void setLayout(DiagramLayout layout) { this.layout = layout; @@ -80,18 +80,29 @@ public abstract class GuiNPCDiagram extends Gui { // --------------- // Cache for positions (computed once for any given icon set & layout). protected Map cachedPositions = null; + // Cache for icons and connections. + protected List iconsCache = null; + protected List connectionsCache = null; /** - * Clears the cached positions. + * Clears all caches: positions, icons, and connections. */ public void invalidateCache() { cachedPositions = null; + iconsCache = null; + connectionsCache = null; } + // --------------- + // Parent Reference + // --------------- + protected GuiNPCInterface parent; + // --------------- // Constructor // --------------- - public GuiNPCDiagram(int x, int y, int width, int height) { + public GuiDiagram(GuiNPCInterface parent, int x, int y, int width, int height) { + this.parent = parent; this.x = x; this.y = y; this.width = width; @@ -99,12 +110,50 @@ public abstract class GuiNPCDiagram extends Gui { } // --------------- - // Data Providers (abstract methods to be implemented by child classes) + // Data Providers (subclasses must implement the creation methods) // --------------- - protected abstract List getIcons(); - protected abstract List getConnections(); + /** + * Subclasses should override this method to create and return the list of DiagramIcons. + * Note: the returned icons will be cached. + */ + protected abstract List createIcons(); + + /** + * Subclasses should override this method to create and return the list of DiagramConnections. + * Note: the returned connections will be cached. + */ + protected abstract List createConnections(); + + /** + * Returns the cached icons. + */ + protected final List getIcons() { + if (iconsCache == null) { + iconsCache = createIcons(); + } + return iconsCache; + } + + /** + * Returns the cached connections. + */ + protected final List getConnections() { + if (connectionsCache == null) { + connectionsCache = createConnections(); + } + return connectionsCache; + } + + /** + * Subclasses must implement how an icon’s image is rendered. + */ protected abstract void renderIcon(DiagramIcon icon, int posX, int posY, IconRenderState state); + + /** + * Return a tooltip for an icon. + */ protected List getIconTooltip(DiagramIcon icon) { return null; } + protected List getConnectionTooltip(DiagramConnection conn) { List tooltip = new ArrayList<>(); DiagramIcon iconFrom = getIconById(conn.idFrom); @@ -120,6 +169,7 @@ public abstract class GuiNPCDiagram extends Gui { } return tooltip; } + protected String getIconName(DiagramIcon icon) { return "Icon " + icon.id; } // --------------- @@ -222,33 +272,28 @@ public abstract class GuiNPCDiagram extends Gui { // Fixed seed for deterministic initial placement. Random rand = new Random(100); - // Initialize nodes at random positions (with margin). for (DiagramIcon icon : icons) { int posX = x + margin + rand.nextInt(Math.max(1, width - 2 * margin)); int posY = y + margin + rand.nextInt(Math.max(1, height - 2 * margin)); positions.put(icon.id, new Point(posX, posY)); } - // Fruchterman–Reingold parameters. double area = width * height; - // Ideal distance between nodes. double k = Math.sqrt(area / (double) count); int iterations = 100; - double temperature = width / 10.0; // initial max displacement + double temperature = width / 10.0; double cooling = temperature / (iterations + 1); - double minDistance = iconSize + slotPadding; // enforce minimal separation + double minDistance = iconSize + slotPadding; - // Get the list of connections (only actual edges). List connections = getConnections(); for (int iter = 0; iter < iterations; iter++) { - // Initialize displacement for each node. Map disp = new HashMap<>(); for (DiagramIcon v : icons) { disp.put(v.id, new double[] {0.0, 0.0}); } - // Repulsive forces: for every pair of nodes. + // Repulsive forces. for (int i = 0; i < icons.size(); i++) { DiagramIcon v = icons.get(i); Point posV = positions.get(v.id); @@ -269,7 +314,7 @@ public abstract class GuiNPCDiagram extends Gui { } } - // Attractive forces: only for nodes that are connected. + // Attractive forces. for (DiagramConnection conn : connections) { Point posV = positions.get(conn.idFrom); Point posU = positions.get(conn.idTo); @@ -286,7 +331,7 @@ public abstract class GuiNPCDiagram extends Gui { dispU[1] += (dy / distance) * attrForce; } - // Update positions based on displacement vectors. + // Update positions. for (DiagramIcon v : icons) { double[] d = disp.get(v.id); double dispLength = Math.sqrt(d[0] * d[0] + d[1] * d[1]); @@ -330,31 +375,32 @@ public abstract class GuiNPCDiagram extends Gui { // --------------- // Main Draw Method // --------------- - public void drawDiagram(int mouseX, int mouseY) { - // Update zoom based on mouse scroll. - if(isWithin(mouseX, mouseY)) + public void drawDiagram(int mouseX, int mouseY, boolean subGui) { + // Only allow mouse interaction if parent's not showing a subgui. + boolean allowInput = (parent == null || !parent.hasSubGui()); + // Update zoom based on mouse scroll if allowed. + if (allowInput && isWithin(mouseX, mouseY) && !subGui) { handleMouseScroll(Mouse.getDWheel()); + } Minecraft mc = Minecraft.getMinecraft(); ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); int factor = sr.getScaleFactor(); - // Retrieve (cached) positions. Map positions = calculatePositions(); int centerX = x + width / 2; int centerY = y + height / 2; - // Calculate effective mouse coordinates (in diagram coordinate space) int effectiveMouseX = (int)(((float)mouseX - (centerX + panX)) / zoom + centerX); int effectiveMouseY = (int)(((float)mouseY - (centerY + panY)) / zoom + centerY); - // Hit testing & selection: Integer hoveredIconId = null; int hoveredConnFrom = -1, hoveredConnTo = -1; - HashSet selectedIconIds = new HashSet<>(); + Set selectedIconIds = new HashSet<>(); - // Check for icon hover using effective coordinates. + // Hit testing for icons (only consider enabled icons) for (DiagramIcon icon : getIcons()) { + if (!icon.enabled) continue; Point pos = positions.get(icon.id); if (pos == null) continue; int slotX = pos.x - slotSize / 2; @@ -368,16 +414,24 @@ public abstract class GuiNPCDiagram extends Gui { } if (hoveredIconId != null) { for (DiagramConnection conn : getConnections()) { + // Validate connection: both endpoints must exist and be enabled. + DiagramIcon iconFrom = getIconById(conn.idFrom); + DiagramIcon iconTo = getIconById(conn.idTo); + if (iconFrom == null || iconTo == null || !iconFrom.enabled || !iconTo.enabled) + continue; if (conn.idFrom == hoveredIconId || conn.idTo == hoveredIconId) { selectedIconIds.add(conn.idFrom); selectedIconIds.add(conn.idTo); } } } else { - // If no icon is hovered, check for connection hover. final double threshold = 5.0; outer: for (DiagramConnection conn : getConnections()) { + DiagramIcon iconFrom = getIconById(conn.idFrom); + DiagramIcon iconTo = getIconById(conn.idTo); + if (iconFrom == null || iconTo == null || !iconFrom.enabled || !iconTo.enabled) + continue; Point pFrom = positions.get(conn.idFrom); Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; @@ -396,14 +450,17 @@ public abstract class GuiNPCDiagram extends Gui { GL11.glScissor(x * factor, (sr.getScaledHeight() - (y + height)) * factor, width * factor, height * factor); drawRect(x, y, x + width, y + height, 0xFF333333); - // Apply the same pan and zoom transformation for both arrows and icons. GL11.glPushMatrix(); GL11.glTranslatef(centerX + panX, centerY + panY, 0); GL11.glScalef(zoom, zoom, 1.0f); GL11.glTranslatef(-centerX, -centerY, 0); - // Draw connections (arrows). + // Draw connections (only for endpoints that are enabled). for (DiagramConnection conn : getConnections()) { + DiagramIcon iconFrom = getIconById(conn.idFrom); + DiagramIcon iconTo = getIconById(conn.idTo); + if (iconFrom == null || iconTo == null || !iconFrom.enabled || !iconTo.enabled) + continue; Point pFrom = positions.get(conn.idFrom); Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; @@ -418,6 +475,7 @@ public abstract class GuiNPCDiagram extends Gui { // Draw icons. for (DiagramIcon icon : getIcons()) { + if (!icon.enabled) continue; Point pos = positions.get(icon.id); if (pos == null) continue; int slotX = pos.x - slotSize / 2; @@ -436,6 +494,10 @@ public abstract class GuiNPCDiagram extends Gui { GL11.glScalef(zoom, zoom, 1.0f); GL11.glTranslatef(-centerX, -centerY, 0); for (DiagramConnection conn : getConnections()) { + DiagramIcon iconFrom = getIconById(conn.idFrom); + DiagramIcon iconTo = getIconById(conn.idTo); + if (iconFrom == null || iconTo == null || !iconFrom.enabled || !iconTo.enabled) + continue; Point pFrom = positions.get(conn.idFrom); Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; @@ -451,7 +513,7 @@ public abstract class GuiNPCDiagram extends Gui { } GL11.glDisable(GL11.GL_SCISSOR_TEST); - // Use original mouseX and mouseY (screen coordinates) for tooltips. + // Tooltips. if (hoveredIconId != null) { DiagramIcon icon = getIconById(hoveredIconId); List tooltip = getIconTooltip(icon); @@ -467,7 +529,6 @@ public abstract class GuiNPCDiagram extends Gui { } } - protected DiagramIcon getIconById(int id) { for (DiagramIcon icon : getIcons()) { if (icon.id == id) @@ -570,31 +631,71 @@ public abstract class GuiNPCDiagram extends Gui { // Mouse Handling // --------------- public boolean mouseClicked(int mouseX, int mouseY, int mouseButton) { - if (mouseButton==0 && isWithin(mouseX, mouseY)) { - dragging = true; - lastDragX = mouseX; - lastDragY = mouseY; - return true; + // Do not process if parent's subgui is active. + if (parent != null && parent.hasSubGui()) return false; + // If left mouse button: + if (mouseButton == 0) { + // First, try to dispatch icon events for pressable icons. + for (DiagramIcon icon : getIcons()) { + if (!icon.enabled || !icon.pressable) + continue; + Point pos = calculatePositions().get(icon.id); + if (pos == null) continue; + int centerX = x + width / 2; + int centerY = y + height / 2; + int effectiveX = (int)(((float)mouseX - (centerX + panX)) / zoom + centerX); + int effectiveY = (int)(((float)mouseY - (centerY + panY)) / zoom + centerY); + int slotX = pos.x - slotSize / 2; + int slotY = pos.y - slotSize / 2; + if (effectiveX >= slotX && effectiveX < slotX + slotSize && + effectiveY >= slotY && effectiveY < slotY + slotSize) { + onIconClick(icon); + // Mark as pressed for held/release events. + currentlyPressedIcon = icon; + return true; + } + } + // Otherwise, start dragging for panning. + if (isWithin(mouseX, mouseY)) { + dragging = true; + lastDragX = mouseX; + lastDragY = mouseY; + return true; + } } return false; } + protected DiagramIcon currentlyPressedIcon = null; + public void mouseClickMove(int mouseX, int mouseY, int mouseButton, long timeSinceLastClick) { - if(dragging){ - int dx = mouseX-lastDragX; - int dy = mouseY-lastDragY; - panX += dx/zoom*0.7f; - panY += dy/zoom*0.7f; + if (parent != null && parent.hasSubGui()) return; + if (dragging) { + int dx = mouseX - lastDragX; + int dy = mouseY - lastDragY; + panX += dx / zoom * 0.7f; + panY += dy / zoom * 0.7f; lastDragX = mouseX; lastDragY = mouseY; } + // If an icon is pressed, dispatch held event. + if (currentlyPressedIcon != null) { + onIconHeld(currentlyPressedIcon); + } } public void mouseReleased(int mouseX, int mouseY, int state) { + if (parent != null && parent.hasSubGui()) return; + if (currentlyPressedIcon != null) { + onIconRelease(currentlyPressedIcon); + currentlyPressedIcon = null; + } dragging = false; } - protected boolean isWithin(int mouseX, int mouseY) { + public boolean isWithin(int mouseX, int mouseY) { + if(parent.hasSubGui()) + return false; return mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height; } @@ -603,8 +704,8 @@ public abstract class GuiNPCDiagram extends Gui { */ public void handleMouseScroll(int scrollDelta) { zoom += scrollDelta * 0.0009f; - if(zoom<0.5f) zoom = 0.5f; - if(zoom>2.0f) zoom = 2.0f; + if(zoom < 0.5f) zoom = 0.5f; + if(zoom > 2.0f) zoom = 2.0f; } /** @@ -636,7 +737,11 @@ public abstract class GuiNPCDiagram extends Gui { // --------------- public static class DiagramIcon { public int id; - public DiagramIcon(int id) { this.id = id; } + public boolean enabled = true; // If false, the icon is not rendered. + public boolean pressable = false; // If true, it will receive mouse events. + public DiagramIcon(int id) { + this.id = id; + } } public static class DiagramConnection { @@ -650,4 +755,24 @@ public abstract class GuiNPCDiagram extends Gui { this.hoverText = hoverText; } } + + // --------------- + // Icon Event Callbacks (override these in subclasses as needed) + // --------------- + protected void onIconClick(DiagramIcon icon) { + // Called when a pressable icon is clicked. + System.out.println("Icon " + icon.id + " clicked."); + } + + protected void onIconHeld(DiagramIcon icon) { + // Called repeatedly if an icon remains pressed. + // (You can add timing logic to fire this only after a threshold.) + // For now, we simply print once. + System.out.println("Icon " + icon.id + " held."); + } + + protected void onIconRelease(DiagramIcon icon) { + // Called when a pressable icon is released. + System.out.println("Icon " + icon.id + " released."); + } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java index 063819dad..2176c798d 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java @@ -4,12 +4,11 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import noppes.npcs.client.gui.util.GuiNPCInterface2; +import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.controllers.MagicController; import noppes.npcs.controllers.data.Magic; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.init.Items; @@ -17,17 +16,18 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; -public class GuiMagicMap extends GuiNPCDiagram { +public class GuiMagicMap extends GuiDiagram { - private GuiScreen parent; private List magics; - // Keep one RenderItem instance. + + // Single RenderItem instance for efficiency. private RenderItem renderItem = new RenderItem(); - public GuiMagicMap(GuiScreen parent, int x, int y, int width, int height) { - super(x, y, width, height); - this.parent = parent; + public GuiMagicMap(GuiNPCInterface parent, int x, int y, int width, int height) { + super(parent, x, y, width, height); magics = new ArrayList<>(); + + // Cache all magics from the MagicController. for (Magic magic : MagicController.getInstance().magics.values()) { magics.add(magic); } @@ -35,20 +35,25 @@ public class GuiMagicMap extends GuiNPCDiagram { } @Override - protected List getIcons() { + protected List createIcons() { List icons = new ArrayList<>(); for (Magic magic : magics) { - icons.add(new MagicIcon(magic)); + MagicIcon icon = new MagicIcon(magic); + // Set your desired flags (for example, enabled and pressable). + icon.enabled = true; + icon.pressable = true; + icons.add(icon); } return icons; } @Override - protected List getConnections() { + protected List createConnections() { List conns = new ArrayList<>(); // For each Magic, generate connections from each weakness (attacker) to this magic. for (Magic magic : magics) { - if (magic.weaknesses == null) continue; + if (magic.weaknesses == null) + continue; for (Map.Entry entry : magic.weaknesses.entrySet()) { int attackerId = entry.getKey(); float percent = entry.getValue(); @@ -70,7 +75,6 @@ public class GuiMagicMap extends GuiNPCDiagram { RenderHelper.enableGUIStandardItemLighting(); - // Render the icon. if (magic.iconItem != null) { renderItem.renderItemAndEffectIntoGUI(fontRenderer, mc.getTextureManager(), magic.iconItem, iconX, iconY); } else if (magic.iconTexture != null && !magic.iconTexture.isEmpty()) { @@ -82,7 +86,7 @@ public class GuiMagicMap extends GuiNPCDiagram { } RenderHelper.disableStandardItemLighting(); - // If not highlighted, overlay a translucent black rectangle to simulate dimming. + // If the icon is not highlighted, draw a translucent overlay. if (state == IconRenderState.NOT_HIGHLIGHTED) { drawRect(iconX, iconY, iconX + size, iconY + size, 0x80202020); } @@ -101,9 +105,7 @@ public class GuiMagicMap extends GuiNPCDiagram { @Override protected void drawHoveringText(List text, int mouseX, int mouseY, FontRenderer fontRenderer) { - if (parent instanceof GuiNPCInterface2) { - ((GuiNPCInterface2) parent).renderHoveringText(text, mouseX, mouseY, fontRenderer); - } + parent.renderHoveringText(text, mouseX, mouseY, fontRenderer); } /** diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java index 911893d8a..720b12d6b 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java @@ -19,23 +19,9 @@ public class GuiNPCManageMagic extends GuiNPCInterface2 { int mapY = guiTop + 10; int mapWidth = 210; int mapHeight = 200; + magicMap = new GuiMagicMap(this, mapX, mapY, mapWidth, mapHeight); - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - super.drawScreen(mouseX, mouseY, partialTicks); - if (magicMap != null) { - magicMap.drawDiagram(mouseX, mouseY); - } - } - - @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) { - if (magicMap != null && magicMap.mouseClicked(mouseX, mouseY, mouseButton)) { - return; - } - super.mouseClicked(mouseX, mouseY, mouseButton); + addDiagram(0, magicMap); } @Override @@ -59,11 +45,6 @@ public class GuiNPCManageMagic extends GuiNPCInterface2 { // your existing action handling } - @Override - public void keyTyped(char c, int i) { - super.keyTyped(c, i); - } - @Override public void save() { // your save logic diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java b/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java index 92c4e39b4..67bb96ad1 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java @@ -13,6 +13,7 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import noppes.npcs.client.CustomNpcResourceListener; import noppes.npcs.client.TextBlockClient; +import noppes.npcs.client.gui.global.GuiDiagram; import noppes.npcs.entity.EntityNPCInterface; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; @@ -22,6 +23,7 @@ import org.lwjgl.opengl.GL12; import java.net.URI; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; public abstract class GuiNPCInterface extends GuiScreen { public EntityClientPlayerMP player; @@ -36,6 +38,7 @@ public abstract class GuiNPCInterface extends GuiScreen { protected HashMap sliders = new HashMap(); protected HashMap extra = new HashMap(); protected HashMap scrollWindows = new HashMap<>(); + protected HashMap diagrams = new HashMap<>(); public static boolean resizingActive = false; @@ -90,6 +93,7 @@ public abstract class GuiNPCInterface extends GuiScreen { scrolls.clear(); sliders.clear(); scrollWindows.clear(); + diagrams.clear(); Keyboard.enableRepeatEvents(true); } @@ -106,7 +110,6 @@ public abstract class GuiNPCInterface extends GuiScreen { } } - public void addExtra(GuiHoverText gui) { gui.setWorldAndResolution(mc, 350, 250); extra.put(gui.id, gui); @@ -118,6 +121,19 @@ public abstract class GuiNPCInterface extends GuiScreen { scrollWindows.put(id, gui); } + /** + * Adds a GuiDiagram to the interface. + * The diagram is initialized with the current resolution and cached. + */ + public void addDiagram(int id, GuiDiagram diagram) { + diagram.invalidateCache(); + diagrams.put(id, diagram); + } + + public GuiDiagram getDiagram(int id) { + return diagrams.get(id); + } + public void mouseClicked(int i, int j, int k) { if (subgui != null) subgui.mouseClicked(i, j, k); @@ -136,6 +152,13 @@ public abstract class GuiNPCInterface extends GuiScreen { scroll.mouseClicked(i, j, k); } } + // Process diagram mouse clicks + for (GuiDiagram diagram : diagrams.values()) { + if (diagram.isWithin(i, j)) { + if (diagram.mouseClicked(i, j, k)) + return; + } + } mouseEvent(i, j, k); super.mouseClicked(i, j, k); } @@ -165,7 +188,7 @@ public abstract class GuiNPCInterface extends GuiScreen { guiScrollableComponent.keyTyped(c, i); } - //Fixes closing sub with escape closes all of it's parents + // Fixes closing sub with escape closes all of its parents boolean enoughTimeSinceSubClosed = Minecraft.getSystemTime() - timeClosedSubGui > 50; if (closeOnEsc && enoughTimeSinceSubClosed && (i == 1 || !GuiNpcTextField.isFieldActive() && isInventoryKey(i))) { @@ -275,6 +298,13 @@ public abstract class GuiNPCInterface extends GuiScreen { } for (GuiScreen gui : extra.values()) gui.drawScreen(i, j, f); + // Draw scrollable windows. + for (GuiScrollWindow guiScrollableComponent : scrollWindows.values()) { + guiScrollableComponent.drawScreen(i, j, f, !subGui && guiScrollableComponent.isMouseOver(i, j) ? Mouse.getDWheel() : 0); + } + for (GuiDiagram diagram : diagrams.values()) { + diagram.drawDiagram(i, j, subGui); + } super.drawScreen(i, j, f); for (GuiCustomScroll scroll : scrolls.values()) if (scroll.hoverableText) { @@ -286,9 +316,6 @@ public abstract class GuiNPCInterface extends GuiScreen { button.drawHover(i, j, subGui); } } - for (GuiScrollWindow guiScrollableComponent : scrollWindows.values()) { - guiScrollableComponent.drawScreen(i, j, f, !subGui && guiScrollableComponent.isMouseOver(i, j) ? Mouse.getDWheel() : 0); - } if (subgui != null) { subgui.drawScreen(i, j, f); @@ -335,7 +362,7 @@ public abstract class GuiNPCInterface extends GuiScreen { } public boolean isInventoryKey(int i) { - return i == mc.gameSettings.keyBindInventory.getKeyCode(); //inventory key + return i == mc.gameSettings.keyBindInventory.getKeyCode(); // inventory key } @Override @@ -432,6 +459,10 @@ public abstract class GuiNPCInterface extends GuiScreen { OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit); } + public void renderHoveringText(List textLines, int x, int y, FontRenderer font) { + this.drawHoveringText(textLines, x, y, font); + } + public void openLink(String link) { try { Class oclass = Class.forName("java.awt.Desktop"); diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface2.java b/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface2.java index 9e035f830..a987fe826 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface2.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface2.java @@ -65,10 +65,6 @@ public abstract class GuiNPCInterface2 extends GuiNPCInterface drawTexturedModalRect(guiLeft + xSize-230, guiTop, 26, 0, 230, 220); } - public void renderHoveringText(List textLines, int x, int y, FontRenderer font) { - this.drawHoveringText(textLines, x, y, font); - } - protected GuiNpcMenu getMenu(){ return this.menu; } From 1be707ce475f10a1f23b9272ac652ecfa7fb1591 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 4 Feb 2025 00:29:18 -0500 Subject: [PATCH 118/157] Better Magic Graph Generation + Defaults --- src/main/java/noppes/npcs/CustomItems.java | 13 +- .../npcs/client/gui/global/GuiDiagram.java | 308 +++++++++++++++--- .../npcs/client/gui/global/GuiMagicMap.java | 2 +- .../npcs/controllers/MagicController.java | 65 ++-- 4 files changed, 323 insertions(+), 65 deletions(-) diff --git a/src/main/java/noppes/npcs/CustomItems.java b/src/main/java/noppes/npcs/CustomItems.java index 3c0da19e2..0ac849fc9 100644 --- a/src/main/java/noppes/npcs/CustomItems.java +++ b/src/main/java/noppes/npcs/CustomItems.java @@ -123,6 +123,11 @@ public class CustomItems { public static Item spellDark; public static Item spellHoly; + public static Item earthElement; + public static Item fireElement; + public static Item waterElement; + public static Item airElement; + public static Item staffWood; public static Item staffStone; public static Item staffIron; @@ -743,10 +748,10 @@ public class CustomItems { quest = new ItemNpcArmor(26957,ArmorMaterial.IRON,0,"mask").setMaxStackSize(64).setUnlocalizedName("npcBanditMask").setCreativeTab(CustomItems.tabArmor).setTextureName("customnpcs:npcBanditMask"); quest = new ItemNpcInterface(26958).setUnlocalizedName("npcBrokenArrow").setCreativeTab(CustomItems.tabMisc).setTextureName("customnpcs:npcBrokenArrow"); - quest = new ItemNpcInterface(26959).setUnlocalizedName("npcEarthElement").setCreativeTab(CustomItems.tabMisc).setTextureName("customnpcs:npcEarthElement"); - quest = new ItemNpcInterface(26960).setUnlocalizedName("npcWaterElement").setCreativeTab(CustomItems.tabMisc).setTextureName("customnpcs:npcWaterElement"); - quest = new ItemNpcInterface(26961).setUnlocalizedName("npcFireElement").setCreativeTab(CustomItems.tabMisc).setTextureName("customnpcs:npcFireElement"); - quest = new ItemNpcInterface(26962).setUnlocalizedName("npcAirElement").setCreativeTab(CustomItems.tabMisc).setTextureName("customnpcs:npcAirElement"); + earthElement = new ItemNpcInterface(26959).setUnlocalizedName("npcEarthElement").setCreativeTab(CustomItems.tabMisc).setTextureName("customnpcs:npcEarthElement"); + waterElement = new ItemNpcInterface(26960).setUnlocalizedName("npcWaterElement").setCreativeTab(CustomItems.tabMisc).setTextureName("customnpcs:npcWaterElement"); + fireElement = new ItemNpcInterface(26961).setUnlocalizedName("npcFireElement").setCreativeTab(CustomItems.tabMisc).setTextureName("customnpcs:npcFireElement"); + airElement = new ItemNpcInterface(26962).setUnlocalizedName("npcAirElement").setCreativeTab(CustomItems.tabMisc).setTextureName("customnpcs:npcAirElement"); quest = new ItemNpcInterface(26963).setUnlocalizedName("npcCarKey").setCreativeTab(CustomItems.tabMisc).setTextureName("customnpcs:npcCarKey"); quest = new ItemNpcInterface(26964).setUnlocalizedName("npcKey").setCreativeTab(CustomItems.tabMisc).setTextureName("customnpcs:npcKey"); diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java b/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java index 4f1bd7060..60b5def7b 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java @@ -1,13 +1,7 @@ package noppes.npcs.client.gui.global; import java.awt.Point; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.HashMap; -import java.util.Random; -import java.util.Set; +import java.util.*; import noppes.npcs.client.gui.util.GuiNPCInterface; import net.minecraft.client.Minecraft; @@ -266,47 +260,280 @@ public abstract class GuiDiagram extends Gui { */ protected Map calculateGeneratedPositions() { List icons = getIcons(); - Map positions = new HashMap<>(); - int count = icons.size(); - int margin = 20; // margin inside diagram area + List connections = getConnections(); - // Fixed seed for deterministic initial placement. - Random rand = new Random(100); - for (DiagramIcon icon : icons) { - int posX = x + margin + rand.nextInt(Math.max(1, width - 2 * margin)); - int posY = y + margin + rand.nextInt(Math.max(1, height - 2 * margin)); - positions.put(icon.id, new Point(posX, posY)); + // Build a complete undirected graph from icons & connections. + Map> graph = buildGraph(icons, connections); + + // Partition the graph into clusters (connected components). + List> clusters = getConnectedComponents(graph); + + // Arrange clusters into a global layout. We’ll place each cluster + // in its own bounding box on a grid. + int clusterCount = clusters.size(); + int gridCols = (int) Math.ceil(Math.sqrt(clusterCount)); + int gridRows = (int) Math.ceil((double) clusterCount / gridCols); + int clusterMargin = 20; + int compWidth = (width - (gridCols + 1) * clusterMargin) / gridCols; + int compHeight = (height - (gridRows + 1) * clusterMargin) / gridRows; + + Map globalPositions = new HashMap<>(); + int clusterIndex = 0; + for (Set cluster : clusters) { + int col = clusterIndex % gridCols; + int row = clusterIndex / gridCols; + int compX = x + clusterMargin + col * (compWidth + clusterMargin); + int compY = y + clusterMargin + row * (compHeight + clusterMargin); + + // Look for a pattern in the cluster. + Map compPositions; + if (isCycle(cluster, graph)) { + // Layout nodes evenly on a circle. + compPositions = layoutCycle(cluster, compX, compY, compWidth, compHeight); + } else if (isTree(cluster, graph)) { + // Layout nodes in a tree, minimizing edge crossings. + compPositions = layoutTree(cluster, compX, compY, compWidth, compHeight, graph); + } else if (isSquare(cluster)) { + // If the number of nodes is a perfect square (or near enough) + // you might try a grid layout. + compPositions = layoutSquare(cluster, compX, compY, compWidth, compHeight); + } else { + // Otherwise, use a force-directed layout optimized for minimal overlap. + compPositions = layoutForceDirected(cluster, compX, compY, compWidth, compHeight, connections); + } + globalPositions.putAll(compPositions); + clusterIndex++; } - double area = width * height; - double k = Math.sqrt(area / (double) count); + return globalPositions; + } + + // Build an undirected graph from icons and connections. + private Map> buildGraph(List icons, List connections) { + Map> graph = new HashMap<>(); + for (DiagramIcon icon : icons) { + graph.put(icon.id, new ArrayList<>()); + } + for (DiagramConnection conn : connections) { + if (graph.containsKey(conn.idFrom) && graph.containsKey(conn.idTo)) { + graph.get(conn.idFrom).add(conn.idTo); + graph.get(conn.idTo).add(conn.idFrom); + } + } + return graph; + } + + // Extract connected components using DFS. + private List> getConnectedComponents(Map> graph) { + Set visited = new HashSet<>(); + List> components = new ArrayList<>(); + for (Integer node : graph.keySet()) { + if (!visited.contains(node)) { + Set comp = new HashSet<>(); + dfsComponent(node, graph, visited, comp); + components.add(comp); + } + } + return components; + } + + private void dfsComponent(Integer current, Map> graph, + Set visited, Set comp) { + visited.add(current); + comp.add(current); + for (Integer neighbor : graph.get(current)) { + if (!visited.contains(neighbor)) { + dfsComponent(neighbor, graph, visited, comp); + } + } + } + + // Pattern detection helpers: + + // A cluster is considered a cycle if each node has exactly 2 neighbors (within the cluster) + // and there are at least 3 nodes. + private boolean isCycle(Set cluster, Map> graph) { + if (cluster.size() < 3) return false; + for (Integer node : cluster) { + int degree = 0; + for (Integer neighbor : graph.get(node)) { + if (cluster.contains(neighbor)) degree++; + } + if (degree != 2) return false; + } + return true; + } + + // A cluster is considered a tree if the number of edges equals nodes-1. + private boolean isTree(Set cluster, Map> graph) { + int edgeCount = 0; + for (Integer node : cluster) { + for (Integer neighbor : graph.get(node)) { + if (cluster.contains(neighbor)) edgeCount++; + } + } + edgeCount /= 2; // each edge counted twice. + return edgeCount == cluster.size() - 1; + } + + // A simple heuristic: if the cluster size is a perfect square or nearly so, treat it as a square. + private boolean isSquare(Set cluster) { + int n = cluster.size(); + int sqrt = (int) Math.round(Math.sqrt(n)); + return sqrt * sqrt == n; + } + +// Layout algorithms: + + // Circular layout for cycles. + private Map layoutCycle(Set cluster, int compX, int compY, int compWidth, int compHeight) { + Map positions = new HashMap<>(); + int centerX = compX + compWidth / 2; + int centerY = compY + compHeight / 2; + int radius = Math.min(compWidth, compHeight) / 3; + int i = 0; + for (Integer id : cluster) { + double angle = 2 * Math.PI * i / cluster.size(); + int posX = centerX + (int)(radius * Math.cos(angle)); + int posY = centerY + (int)(radius * Math.sin(angle)); + positions.put(id, new Point(posX, posY)); + i++; + } + return positions; + } + + // A simple top-down tree layout using BFS. + private Map layoutTree(Set cluster, int compX, int compY, int compWidth, int compHeight, + Map> fullGraph) { + Map positions = new HashMap<>(); + + // Build subgraph for the cluster. + Map> subgraph = new HashMap<>(); + for (Integer id : cluster) { + List neighbors = new ArrayList<>(); + for (Integer neighbor : fullGraph.get(id)) { + if (cluster.contains(neighbor)) + neighbors.add(neighbor); + } + subgraph.put(id, neighbors); + } + + // Choose a root (for example, the node with the smallest id). + Integer root = cluster.iterator().next(); + for (Integer id : cluster) { + if (id < root) + root = id; + } + + // BFS to determine levels. + Map levelMap = new HashMap<>(); + Map> levels = new HashMap<>(); + Queue queue = new LinkedList<>(); + Set visited = new HashSet<>(); + queue.add(root); + visited.add(root); + levelMap.put(root, 0); + + while (!queue.isEmpty()) { + Integer curr = queue.poll(); + int lvl = levelMap.get(curr); + levels.computeIfAbsent(lvl, k -> new ArrayList<>()).add(curr); + for (Integer neighbor : subgraph.get(curr)) { + if (!visited.contains(neighbor)) { + visited.add(neighbor); + levelMap.put(neighbor, lvl + 1); + queue.add(neighbor); + } + } + } + + // Calculate vertical spacing. + int maxLevel = levels.keySet().stream().max(Integer::compare).orElse(0); + double levelHeight = compHeight / (maxLevel + 1.0); + + // For each level, assign horizontal positions evenly. + for (Map.Entry> entry : levels.entrySet()) { + int lvl = entry.getKey(); + List nodesAtLevel = entry.getValue(); + double horizontalSpacing = compWidth / (nodesAtLevel.size() + 1.0); + for (int i = 0; i < nodesAtLevel.size(); i++) { + int id = nodesAtLevel.get(i); + int posX = compX + (int)((i + 1) * horizontalSpacing); + int posY = compY + (int)(lvl * levelHeight + levelHeight / 2); + positions.put(id, new Point(posX, posY)); + } + } + + return positions; + } + + // Grid layout for square-like clusters. + private Map layoutSquare(Set cluster, int compX, int compY, int compWidth, int compHeight) { + Map positions = new HashMap<>(); + int n = (int) Math.round(Math.sqrt(cluster.size())); + int gridCellWidth = compWidth / n; + int gridCellHeight = compHeight / n; + int index = 0; + List nodes = new ArrayList<>(cluster); + for (int row = 0; row < n; row++) { + for (int col = 0; col < n; col++) { + if (index >= nodes.size()) break; + int posX = compX + col * gridCellWidth + gridCellWidth / 2; + int posY = compY + row * gridCellHeight + gridCellHeight / 2; + positions.put(nodes.get(index), new Point(posX, posY)); + index++; + } + } + return positions; + } + + // Force-directed layout for generic clusters. + private Map layoutForceDirected(Set cluster, int compX, int compY, int compWidth, int compHeight, + List connections) { + Map positions = new HashMap<>(); + Random rand = new Random(100); + for (Integer id : cluster) { + int posX = compX + rand.nextInt(compWidth); + int posY = compY + rand.nextInt(compHeight); + positions.put(id, new Point(posX, posY)); + } + + double area = compWidth * compHeight; + double k = Math.sqrt(area / cluster.size()); int iterations = 100; - double temperature = width / 10.0; + double temperature = compWidth / 10.0; double cooling = temperature / (iterations + 1); double minDistance = iconSize + slotPadding; - List connections = getConnections(); + // Consider only connections within the cluster. + List compConnections = new ArrayList<>(); + for (DiagramConnection conn : connections) { + if (cluster.contains(conn.idFrom) && cluster.contains(conn.idTo)) { + compConnections.add(conn); + } + } for (int iter = 0; iter < iterations; iter++) { Map disp = new HashMap<>(); - for (DiagramIcon v : icons) { - disp.put(v.id, new double[] {0.0, 0.0}); + for (Integer id : cluster) { + disp.put(id, new double[] {0.0, 0.0}); } // Repulsive forces. - for (int i = 0; i < icons.size(); i++) { - DiagramIcon v = icons.get(i); - Point posV = positions.get(v.id); - for (int j = i + 1; j < icons.size(); j++) { - DiagramIcon u = icons.get(j); - Point posU = positions.get(u.id); + List nodes = new ArrayList<>(cluster); + for (int i = 0; i < nodes.size(); i++) { + Integer v = nodes.get(i); + Point posV = positions.get(v); + for (int j = i + 1; j < nodes.size(); j++) { + Integer u = nodes.get(j); + Point posU = positions.get(u); double dx = posV.x - posU.x; double dy = posV.y - posU.y; double distance = Math.sqrt(dx * dx + dy * dy); if (distance < minDistance) distance = minDistance; double repForce = (k * k) / distance; - double[] dispV = disp.get(v.id); - double[] dispU = disp.get(u.id); + double[] dispV = disp.get(v); + double[] dispU = disp.get(u); dispV[0] += (dx / distance) * repForce; dispV[1] += (dy / distance) * repForce; dispU[0] -= (dx / distance) * repForce; @@ -315,7 +542,7 @@ public abstract class GuiDiagram extends Gui { } // Attractive forces. - for (DiagramConnection conn : connections) { + for (DiagramConnection conn : compConnections) { Point posV = positions.get(conn.idFrom); Point posU = positions.get(conn.idTo); double dx = posV.x - posU.x; @@ -332,22 +559,25 @@ public abstract class GuiDiagram extends Gui { } // Update positions. - for (DiagramIcon v : icons) { - double[] d = disp.get(v.id); + for (Integer id : cluster) { + double[] d = disp.get(id); double dispLength = Math.sqrt(d[0] * d[0] + d[1] * d[1]); if (dispLength < 0.01) dispLength = 0.01; - int newX = positions.get(v.id).x + (int)((d[0] / dispLength) * Math.min(dispLength, temperature)); - int newY = positions.get(v.id).y + (int)((d[1] / dispLength) * Math.min(dispLength, temperature)); - newX = Math.max(x + margin, Math.min(x + width - margin, newX)); - newY = Math.max(y + margin, Math.min(y + height - margin, newY)); - positions.get(v.id).x = newX; - positions.get(v.id).y = newY; + int newX = positions.get(id).x + (int)((d[0] / dispLength) * Math.min(dispLength, temperature)); + int newY = positions.get(id).y + (int)((d[1] / dispLength) * Math.min(dispLength, temperature)); + newX = Math.max(compX, Math.min(compX + compWidth, newX)); + newY = Math.max(compY, Math.min(compY + compHeight, newY)); + positions.get(id).x = newX; + positions.get(id).y = newY; } + temperature -= cooling; } + return positions; } + // --------------- // Standard Icon Box Drawing (Background + Border) // --------------- diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java index 2176c798d..da8ac8217 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java @@ -31,7 +31,7 @@ public class GuiMagicMap extends GuiDiagram { for (Magic magic : MagicController.getInstance().magics.values()) { magics.add(magic); } - setLayout(DiagramLayout.CIRCULAR); + setLayout(DiagramLayout.GENERATED); } @Override diff --git a/src/main/java/noppes/npcs/controllers/MagicController.java b/src/main/java/noppes/npcs/controllers/MagicController.java index 81b507e4c..9aafa1820 100644 --- a/src/main/java/noppes/npcs/controllers/MagicController.java +++ b/src/main/java/noppes/npcs/controllers/MagicController.java @@ -58,38 +58,61 @@ public class MagicController { if (magics.isEmpty()) { // Create default magics - Magic nature = new Magic(0, "Nature", 0x00DD00); - Magic arcane = new Magic(1, "Arcane", 0xF2DD00); - Magic ice = new Magic(2, "Ice", 0xDD0000); - Magic fire = new Magic(3, "Fire", 0xDD0000); - Magic dark = new Magic(4, "Dark", 0xDD0000); - Magic holy = new Magic(5, "Holy", 0xDD0000); + Magic earth = new Magic(0, "Earth", 0x00DD00); + earth.setIconItem(new ItemStack(CustomItems.earthElement)); - nature.setIconItem(new ItemStack(CustomItems.spellNature)); - arcane.setIconItem(new ItemStack(CustomItems.spellArcane)); - ice.setIconItem(new ItemStack(CustomItems.spellIce)); + Magic water = new Magic(1, "Water", 0xF2DD00); + water.setIconItem(new ItemStack(CustomItems.waterElement)); + + Magic fire = new Magic(2, "Fire", 0xDD0000); fire.setIconItem(new ItemStack(CustomItems.spellFire)); + + Magic air = new Magic(3, "Air", 0xDD0000); + air.setIconItem(new ItemStack(CustomItems.airElement)); + + Magic dark = new Magic(4, "Dark", 0xDD0000); dark.setIconItem(new ItemStack(CustomItems.spellDark)); + + Magic holy = new Magic(5, "Holy", 0xDD0000); holy.setIconItem(new ItemStack(CustomItems.spellHoly)); - // Define weaknesses (extra damage percentages as fractions) - // Cycle: Nature -> Arcane -> Fire -> Ice -> Nature - nature.weaknesses.put(1, 0.10f); // Nature is weak to Arcane (20% extra damage) - arcane.weaknesses.put(3, 0.55f); // Arcane is weak to Fire (25%) - fire.weaknesses.put(2, 0.30f); // Fire is weak to Ice (30%) - ice.weaknesses.put(0, 0.20f); // Ice is weak to Nature (20%) + Magic nature = new Magic(6, "Nature", 0xDD0000); + nature.setIconItem(new ItemStack(CustomItems.spellNature)); - // Dark and Holy are opposites - dark.weaknesses.put(5, 0.70f); // Dark is weak to Holy (40%) - holy.weaknesses.put(4, 0.70f); // Holy is weak to Dark (40%) + Magic arcane = new Magic(7, "Arcane", 0xDD0000); + arcane.setIconItem(new ItemStack(CustomItems.spellArcane)); + + // Insiders + earth.weaknesses.put(air.id, 0.60f); + water.weaknesses.put(earth.id, 0.60f); + fire.weaknesses.put(water.id, 0.60f); + air.weaknesses.put(fire.id, 0.60f); + + // Outsiders + dark.weaknesses.put(nature.id, 0.60f); + nature.weaknesses.put(holy.id, 0.60f); + holy.weaknesses.put(arcane.id, 0.60f); + arcane.weaknesses.put(dark.id, 0.60f); + + // Cross Interactions + earth.weaknesses.put(nature.id, 0.30f); + water.weaknesses.put(holy.id, 0.30f); + fire.weaknesses.put(arcane.id, 0.30f); + air.weaknesses.put(dark.id, 0.30f); + dark.weaknesses.put(fire.id, 0.30f); + nature.weaknesses.put(air.id, 0.30f); + holy.weaknesses.put(earth.id, 0.30f); + arcane.weaknesses.put(water.id, 0.30f); // Add them to the registry - magics.put(nature.id, nature); - magics.put(arcane.id, arcane); - magics.put(ice.id, ice); + magics.put(earth.id, earth); + magics.put(water.id, water); magics.put(fire.id, fire); + magics.put(air.id, air); magics.put(dark.id, dark); magics.put(holy.id, holy); + magics.put(nature.id, nature); + magics.put(arcane.id, arcane); } printAllMagicInteractions(); } From 4f52e2674bc82793c63e482e07a0247771bd13d3 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 4 Feb 2025 02:19:51 -0500 Subject: [PATCH 119/157] Fix Campfire Bug --- .../noppes/npcs/blocks/BlockCampfire.java | 3 +- .../noppes/npcs/blocks/BlockLightable.java | 36 +++++++++++++------ .../npcs/blocks/tiles/TileCampfire.java | 6 +++- .../blocks/BlockCampfireRenderer.java | 2 +- 4 files changed, 33 insertions(+), 14 deletions(-) diff --git a/src/main/java/noppes/npcs/blocks/BlockCampfire.java b/src/main/java/noppes/npcs/blocks/BlockCampfire.java index b995bf1f2..56d718863 100644 --- a/src/main/java/noppes/npcs/blocks/BlockCampfire.java +++ b/src/main/java/noppes/npcs/blocks/BlockCampfire.java @@ -41,8 +41,7 @@ public class BlockCampfire extends BlockLightable{ int meta = world.getBlockMetadata(x, y, z); if((item.getItem() == Items.flint || item.getItem() == Items.flint_and_steel) && unlitBlock() == this){ - if(world.rand.nextInt(3) == 0 && !world.isRemote) - super.onBlockActivated(world, x, y, z, player, par6, par7, par8, par9); + super.onBlockActivated(world, x, y, z, player, par6, par7, par8, par9); CustomNpcs.proxy.spawnParticle("largesmoke", x + 0.5f, y + 0.5f, z + 0.5f, 0.0D, 0.0D, 0.0D, 2); if(item.getItem() == Items.flint) NoppesUtilServer.consumeItemStack(1, player); diff --git a/src/main/java/noppes/npcs/blocks/BlockLightable.java b/src/main/java/noppes/npcs/blocks/BlockLightable.java index b0e8383e2..7c478b300 100644 --- a/src/main/java/noppes/npcs/blocks/BlockLightable.java +++ b/src/main/java/noppes/npcs/blocks/BlockLightable.java @@ -6,33 +6,49 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import java.util.Random; -public abstract class BlockLightable extends BlockRotated{ +public abstract class BlockLightable extends BlockRotated { protected BlockLightable(Block block, boolean lit) { super(block); - + if (lit) this.setLightLevel(1.0F); } public abstract Block unlitBlock(); public abstract Block litBlock(); - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9){ - TileEntity tile = world.getTileEntity(x, y, z); - if(litBlock() == this) - world.setBlock(x, y, z, unlitBlock(), world.getBlockMetadata(x, y, z), 2); - else - world.setBlock(x, y, z, litBlock(), world.getBlockMetadata(x, y, z), 2); - tile.validate(); - world.setTileEntity(x, y, z, tile); + // Get the current tile entity and store its NBT + TileEntity oldTile = world.getTileEntity(x, y, z); + NBTTagCompound compound = new NBTTagCompound(); + oldTile.writeToNBT(compound); + + // Determine which block to set (lit/unlit) based on the current one + Block newBlock = (litBlock() == this ? unlitBlock() : litBlock()); + int meta = world.getBlockMetadata(x, y, z); + + // Change the block; this creates a new tile entity instance + world.setBlock(x, y, z, newBlock, meta, 2); + + // Get the new tile and load the stored NBT + TileEntity newTile = world.getTileEntity(x, y, z); + if(newTile != null){ + newTile.readFromNBT(compound); + newTile.markDirty(); + } + + world.markBlockForUpdate(x, y, z); + world.notifyBlockOfNeighborChange(x, y, z, newBlock); + return true; } diff --git a/src/main/java/noppes/npcs/blocks/tiles/TileCampfire.java b/src/main/java/noppes/npcs/blocks/tiles/TileCampfire.java index e0e50f6ba..17871fef0 100644 --- a/src/main/java/noppes/npcs/blocks/tiles/TileCampfire.java +++ b/src/main/java/noppes/npcs/blocks/tiles/TileCampfire.java @@ -1,6 +1,9 @@ package noppes.npcs.blocks.tiles; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import noppes.npcs.CustomItems; import noppes.npcs.CustomNpcs; import java.util.Random; @@ -53,6 +56,7 @@ public class TileCampfire extends TileColorable { public boolean isLit() { - return this.getBlockMetadata() == 0; + Block block = this.getBlockType(); + return block == CustomItems.campfire; } } diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java index 9b98638d1..a1b2328fd 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCampfireRenderer.java @@ -19,7 +19,7 @@ import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; -public class BlockCampfireRenderer extends BlockRendererInterface{ +public class BlockCampfireRenderer extends BlockRendererInterface { // Legacy private final ModelCampfire legacy_model = new ModelCampfire(); From ee727146a99c6d4e0d1e9f0a1a3a7d5a9fc0e2ec Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 4 Feb 2025 03:48:25 -0500 Subject: [PATCH 120/157] Huge PUSH to Types of Diagram Generation --- .../npcs/client/gui/global/GuiDiagram.java | 774 +++++++++--------- .../npcs/client/gui/global/GuiMagicMap.java | 6 +- .../npcs/controllers/MagicController.java | 167 +++- .../noppes/npcs/controllers/data/Magic.java | 31 + 4 files changed, 581 insertions(+), 397 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java b/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java index 60b5def7b..2c0ee2fac 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java @@ -12,74 +12,73 @@ import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; /** - * Abstract GUI class for drawing diagrams that consist of icons (nodes) and connections (arrows). - *

- * This version adds: - * - A parent GuiNPCInterface (passed in the constructor) so that if the parent has a subgui, no - * mouse interactions are processed. - * - Caching for icons and connections. The abstract methods createIcons() and createConnections() are - * called only once (or when cache is invalidated). - * - DiagramIcon now has fields for enabled and pressable. Disabled icons are not rendered or used in - * connection validation. - * - Basic mouse-event callbacks for pressable icons: click, held and released. + * Abstract GUI class for drawing diagrams with icons (nodes) and connections (arrows). + * + * Features: + * - Uses a parent GuiNPCInterface to disable mouse interaction when a subgui is active. + * - Caches icons and connections (subclasses must implement createIcons() and createConnections()). + * - DiagramIcon now has an index (for ring, row, or level) and a priority (for ordering). + * - New manual layout types (CIRCULAR_MANUAL, SQUARE_MANUAL, TREE_MANUAL) use index and priority + * to order nodes. + * - Arrow-drawing options: curvedArrows (if false, straight lines) and curveAngle (in degrees). + * - For curved arrows, hit-detection is done by approximating the quadratic Bezier with 20 segments. */ public abstract class GuiDiagram extends Gui { - // --------------- // Diagram Area & Controls - // --------------- - protected int x, y, width, height; // The drawing area. - protected float panX = 0, panY = 0; // Panning offsets. - protected float zoom = 1.0f; // Zoom factor. - protected boolean dragging = false; // Drag flag. - protected int lastDragX, lastDragY; // Last mouse positions. + protected int x, y, width, height; + protected float panX = 0, panY = 0; + protected float zoom = 1.0f; + protected boolean dragging = false; + protected int lastDragX, lastDragY; - // --------------- // Node (Icon) Sizing - // --------------- - protected int iconSize = 16; // Icon image size (square). - protected int slotPadding = 4; // Extra padding for the node's box. - protected int slotSize = iconSize + slotPadding; // Overall size of the node box. + protected int iconSize = 16; + protected int slotPadding = 4; + protected int slotSize = iconSize + slotPadding; - // --------------- // Node Box Appearance - // --------------- - protected int iconBackgroundColor = 0xFF999999; // Background color. - protected int iconBorderColor = 0xFF555555; // Border color. - protected int iconBorderThickness = 1; // Border thickness in pixels. + protected int iconBackgroundColor = 0xFF999999; + protected int iconBorderColor = 0xFF555555; + protected int iconBorderThickness = 1; - // --------------- // Connection Options - // --------------- - protected boolean showArrowHeads = true; // Whether to draw arrow heads. - protected boolean useColorScaling = true; // Whether to scale connection color based on a percentage. + protected boolean showArrowHeads = true; + protected boolean useColorScaling = true; - // --------------- // Layout Options - // --------------- - public enum DiagramLayout { CIRCULAR, SQUARE, TREE, GENERATED } - protected DiagramLayout layout = DiagramLayout.CIRCULAR; // Default layout. + public enum DiagramLayout { + CIRCULAR, SQUARE, TREE, GENERATED, + CIRCULAR_MANUAL, SQUARE_MANUAL, TREE_MANUAL + } + protected DiagramLayout layout = DiagramLayout.CIRCULAR; /** - * Allows setting the desired layout type. - * This will invalidate the cached positions and cached icons/connections. + * Sets the layout and invalidates caches. */ public void setLayout(DiagramLayout layout) { this.layout = layout; invalidateCache(); } - // --------------- - // Caching - // --------------- - // Cache for positions (computed once for any given icon set & layout). + // Arrow Drawing Options + protected boolean curvedArrows = true; // if false, straight lines are drawn. + protected int curveAngle = 15; // in degrees; adjust for "hardness" of curve. + + public void setCurvedArrows(boolean curved) { + this.curvedArrows = curved; + } + public void setCurveAngle(int angle) { + this.curveAngle = angle; + } + + // Caching for positions and for icons/connections. protected Map cachedPositions = null; - // Cache for icons and connections. protected List iconsCache = null; protected List connectionsCache = null; /** - * Clears all caches: positions, icons, and connections. + * Clears all caches. */ public void invalidateCache() { cachedPositions = null; @@ -87,14 +86,10 @@ public abstract class GuiDiagram extends Gui { connectionsCache = null; } - // --------------- // Parent Reference - // --------------- protected GuiNPCInterface parent; - // --------------- // Constructor - // --------------- public GuiDiagram(GuiNPCInterface parent, int x, int y, int width, int height) { this.parent = parent; this.x = x; @@ -103,34 +98,16 @@ public abstract class GuiDiagram extends Gui { this.height = height; } - // --------------- - // Data Providers (subclasses must implement the creation methods) - // --------------- - /** - * Subclasses should override this method to create and return the list of DiagramIcons. - * Note: the returned icons will be cached. - */ + // Data Providers – Subclasses must implement these. protected abstract List createIcons(); - - /** - * Subclasses should override this method to create and return the list of DiagramConnections. - * Note: the returned connections will be cached. - */ protected abstract List createConnections(); - /** - * Returns the cached icons. - */ protected final List getIcons() { if (iconsCache == null) { iconsCache = createIcons(); } return iconsCache; } - - /** - * Returns the cached connections. - */ protected final List getConnections() { if (connectionsCache == null) { connectionsCache = createConnections(); @@ -139,15 +116,11 @@ public abstract class GuiDiagram extends Gui { } /** - * Subclasses must implement how an icon’s image is rendered. + * Subclasses must implement how an icon is rendered. */ protected abstract void renderIcon(DiagramIcon icon, int posX, int posY, IconRenderState state); - /** - * Return a tooltip for an icon. - */ protected List getIconTooltip(DiagramIcon icon) { return null; } - protected List getConnectionTooltip(DiagramConnection conn) { List tooltip = new ArrayList<>(); DiagramIcon iconFrom = getIconById(conn.idFrom); @@ -163,51 +136,35 @@ public abstract class GuiDiagram extends Gui { } return tooltip; } - protected String getIconName(DiagramIcon icon) { return "Icon " + icon.id; } - // --------------- - // Layout Calculation – choose algorithm based on layout type. - // --------------- - /** - * Returns a mapping from each icon's id to its (x,y) center position. - * Uses caching so that positions are computed only once (unless invalidated). - */ + // Layout Calculation – Chooses algorithm based on layout type. protected Map calculatePositions() { - if (cachedPositions != null) { - return cachedPositions; - } + if (cachedPositions != null) return cachedPositions; switch (layout) { - case CIRCULAR: - cachedPositions = calculateCircularPositions(); - break; - case SQUARE: - cachedPositions = calculateSquarePositions(); - break; - case TREE: - cachedPositions = calculateTreePositions(); - break; - case GENERATED: - cachedPositions = calculateGeneratedPositions(); - break; - default: - cachedPositions = calculateCircularPositions(); - break; + case CIRCULAR: cachedPositions = calculateCircularPositions(); break; + case SQUARE: cachedPositions = calculateSquarePositions(); break; + case TREE: cachedPositions = calculateTreePositions(); break; + case GENERATED: cachedPositions = calculateGeneratedPositions(); break; + case CIRCULAR_MANUAL: cachedPositions = calculateCircularManualPositions(); break; + case SQUARE_MANUAL: cachedPositions = calculateSquareManualPositions(); break; + case TREE_MANUAL: cachedPositions = calculateTreeManualPositions(); break; + default: cachedPositions = calculateCircularPositions(); break; } return cachedPositions; } + // Standard Layouts: protected Map calculateCircularPositions() { List icons = getIcons(); Map positions = new HashMap<>(); int count = icons.size(); - int centerX = x + width / 2; - int centerY = y + height / 2; + int centerX = x + width / 2, centerY = y + height / 2; int radius = Math.min(width, height) / 2 - iconSize - 10; for (int i = 0; i < count; i++) { double angle = 2 * Math.PI * i / count; - int posX = centerX + (int)(radius * Math.cos(angle)); - int posY = centerY + (int)(radius * Math.sin(angle)); + int posX = centerX + (int) (radius * Math.cos(angle)); + int posY = centerY + (int) (radius * Math.sin(angle)); positions.put(icons.get(i).id, new Point(posX, posY)); } return positions; @@ -217,16 +174,12 @@ public abstract class GuiDiagram extends Gui { List icons = getIcons(); Map positions = new HashMap<>(); int count = icons.size(); - int n = (int)Math.ceil(Math.sqrt(count)); - int gridWidth = width - 20; - int gridHeight = height - 20; - int cellWidth = gridWidth / n; - int cellHeight = gridHeight / n; - int startX = x + (width - gridWidth) / 2; - int startY = y + (height - gridHeight) / 2; + int n = (int) Math.ceil(Math.sqrt(count)); + int gridWidth = width - 20, gridHeight = height - 20; + int cellWidth = gridWidth / n, cellHeight = gridHeight / n; + int startX = x + (width - gridWidth) / 2, startY = y + (height - gridHeight) / 2; for (int i = 0; i < count; i++) { - int row = i / n; - int col = i % n; + int row = i / n, col = i % n; int posX = startX + col * cellWidth + cellWidth / 2; int posY = startY + row * cellHeight + cellHeight / 2; positions.put(icons.get(i).id, new Point(posX, posY)); @@ -238,11 +191,11 @@ public abstract class GuiDiagram extends Gui { List icons = getIcons(); Map positions = new HashMap<>(); int count = icons.size(); - int levels = (int)Math.ceil(Math.log(count + 1) / Math.log(2)); + int levels = (int) Math.ceil(Math.log(count + 1) / Math.log(2)); int levelHeight = height / (levels + 1); int index = 0; for (int level = 0; level < levels && index < count; level++) { - int nodesThisLevel = (int)Math.min(Math.pow(2, level), count - index); + int nodesThisLevel = (int) Math.min(Math.pow(2, level), count - index); int levelWidth = width - 20; int cellWidth = levelWidth / nodesThisLevel; for (int i = 0; i < nodesThisLevel && index < count; i++, index++) { @@ -254,29 +207,17 @@ public abstract class GuiDiagram extends Gui { return positions; } - /** - * Generated layout: uses a force-directed algorithm to position nodes. - * Computed only once using a fixed seed for determinism. - */ protected Map calculateGeneratedPositions() { List icons = getIcons(); List connections = getConnections(); - - // Build a complete undirected graph from icons & connections. Map> graph = buildGraph(icons, connections); - - // Partition the graph into clusters (connected components). List> clusters = getConnectedComponents(graph); - - // Arrange clusters into a global layout. We’ll place each cluster - // in its own bounding box on a grid. int clusterCount = clusters.size(); int gridCols = (int) Math.ceil(Math.sqrt(clusterCount)); int gridRows = (int) Math.ceil((double) clusterCount / gridCols); int clusterMargin = 20; int compWidth = (width - (gridCols + 1) * clusterMargin) / gridCols; int compHeight = (height - (gridRows + 1) * clusterMargin) / gridRows; - Map globalPositions = new HashMap<>(); int clusterIndex = 0; for (Set cluster : clusters) { @@ -284,31 +225,22 @@ public abstract class GuiDiagram extends Gui { int row = clusterIndex / gridCols; int compX = x + clusterMargin + col * (compWidth + clusterMargin); int compY = y + clusterMargin + row * (compHeight + clusterMargin); - - // Look for a pattern in the cluster. Map compPositions; - if (isCycle(cluster, graph)) { - // Layout nodes evenly on a circle. + if (isCycle(cluster, graph)) compPositions = layoutCycle(cluster, compX, compY, compWidth, compHeight); - } else if (isTree(cluster, graph)) { - // Layout nodes in a tree, minimizing edge crossings. + else if (isTree(cluster, graph)) compPositions = layoutTree(cluster, compX, compY, compWidth, compHeight, graph); - } else if (isSquare(cluster)) { - // If the number of nodes is a perfect square (or near enough) - // you might try a grid layout. + else if (isSquare(cluster)) compPositions = layoutSquare(cluster, compX, compY, compWidth, compHeight); - } else { - // Otherwise, use a force-directed layout optimized for minimal overlap. + else compPositions = layoutForceDirected(cluster, compX, compY, compWidth, compHeight, connections); - } globalPositions.putAll(compPositions); clusterIndex++; } - return globalPositions; } - // Build an undirected graph from icons and connections. + // Helpers for generated layout. private Map> buildGraph(List icons, List connections) { Map> graph = new HashMap<>(); for (DiagramIcon icon : icons) { @@ -322,8 +254,6 @@ public abstract class GuiDiagram extends Gui { } return graph; } - - // Extract connected components using DFS. private List> getConnectedComponents(Map> graph) { Set visited = new HashSet<>(); List> components = new ArrayList<>(); @@ -336,9 +266,7 @@ public abstract class GuiDiagram extends Gui { } return components; } - - private void dfsComponent(Integer current, Map> graph, - Set visited, Set comp) { + private void dfsComponent(Integer current, Map> graph, Set visited, Set comp) { visited.add(current); comp.add(current); for (Integer neighbor : graph.get(current)) { @@ -347,11 +275,6 @@ public abstract class GuiDiagram extends Gui { } } } - - // Pattern detection helpers: - - // A cluster is considered a cycle if each node has exactly 2 neighbors (within the cluster) - // and there are at least 3 nodes. private boolean isCycle(Set cluster, Map> graph) { if (cluster.size() < 3) return false; for (Integer node : cluster) { @@ -363,8 +286,6 @@ public abstract class GuiDiagram extends Gui { } return true; } - - // A cluster is considered a tree if the number of edges equals nodes-1. private boolean isTree(Set cluster, Map> graph) { int edgeCount = 0; for (Integer node : cluster) { @@ -372,42 +293,34 @@ public abstract class GuiDiagram extends Gui { if (cluster.contains(neighbor)) edgeCount++; } } - edgeCount /= 2; // each edge counted twice. + edgeCount /= 2; return edgeCount == cluster.size() - 1; } - - // A simple heuristic: if the cluster size is a perfect square or nearly so, treat it as a square. private boolean isSquare(Set cluster) { int n = cluster.size(); int sqrt = (int) Math.round(Math.sqrt(n)); return sqrt * sqrt == n; } -// Layout algorithms: - - // Circular layout for cycles. + // Layout algorithms for clusters: private Map layoutCycle(Set cluster, int compX, int compY, int compWidth, int compHeight) { Map positions = new HashMap<>(); - int centerX = compX + compWidth / 2; - int centerY = compY + compHeight / 2; + int centerX = compX + compWidth / 2, centerY = compY + compHeight / 2; int radius = Math.min(compWidth, compHeight) / 3; int i = 0; for (Integer id : cluster) { double angle = 2 * Math.PI * i / cluster.size(); - int posX = centerX + (int)(radius * Math.cos(angle)); - int posY = centerY + (int)(radius * Math.sin(angle)); + int posX = centerX + (int) (radius * Math.cos(angle)); + int posY = centerY + (int) (radius * Math.sin(angle)); positions.put(id, new Point(posX, posY)); i++; } return positions; } - // A simple top-down tree layout using BFS. private Map layoutTree(Set cluster, int compX, int compY, int compWidth, int compHeight, Map> fullGraph) { Map positions = new HashMap<>(); - - // Build subgraph for the cluster. Map> subgraph = new HashMap<>(); for (Integer id : cluster) { List neighbors = new ArrayList<>(); @@ -417,15 +330,10 @@ public abstract class GuiDiagram extends Gui { } subgraph.put(id, neighbors); } - - // Choose a root (for example, the node with the smallest id). Integer root = cluster.iterator().next(); for (Integer id : cluster) { - if (id < root) - root = id; + if (id < root) root = id; } - - // BFS to determine levels. Map levelMap = new HashMap<>(); Map> levels = new HashMap<>(); Queue queue = new LinkedList<>(); @@ -433,7 +341,6 @@ public abstract class GuiDiagram extends Gui { queue.add(root); visited.add(root); levelMap.put(root, 0); - while (!queue.isEmpty()) { Integer curr = queue.poll(); int lvl = levelMap.get(curr); @@ -446,35 +353,30 @@ public abstract class GuiDiagram extends Gui { } } } - - // Calculate vertical spacing. int maxLevel = levels.keySet().stream().max(Integer::compare).orElse(0); double levelHeight = compHeight / (maxLevel + 1.0); - - // For each level, assign horizontal positions evenly. for (Map.Entry> entry : levels.entrySet()) { int lvl = entry.getKey(); List nodesAtLevel = entry.getValue(); - double horizontalSpacing = compWidth / (nodesAtLevel.size() + 1.0); + nodesAtLevel.sort(Comparator.comparingInt(a -> getIconById(a).priority)); + double spacing = compWidth / (nodesAtLevel.size() + 1.0); for (int i = 0; i < nodesAtLevel.size(); i++) { int id = nodesAtLevel.get(i); - int posX = compX + (int)((i + 1) * horizontalSpacing); - int posY = compY + (int)(lvl * levelHeight + levelHeight / 2); + int posX = compX + (int) ((i + 1) * spacing); + int posY = compY + (int) (lvl * levelHeight + levelHeight / 2); positions.put(id, new Point(posX, posY)); } } - return positions; } - // Grid layout for square-like clusters. private Map layoutSquare(Set cluster, int compX, int compY, int compWidth, int compHeight) { Map positions = new HashMap<>(); int n = (int) Math.round(Math.sqrt(cluster.size())); - int gridCellWidth = compWidth / n; - int gridCellHeight = compHeight / n; + int gridCellWidth = compWidth / n, gridCellHeight = compHeight / n; int index = 0; List nodes = new ArrayList<>(cluster); + nodes.sort(Comparator.comparingInt(a -> getIconById(a).priority)); for (int row = 0; row < n; row++) { for (int col = 0; col < n; col++) { if (index >= nodes.size()) break; @@ -487,7 +389,6 @@ public abstract class GuiDiagram extends Gui { return positions; } - // Force-directed layout for generic clusters. private Map layoutForceDirected(Set cluster, int compX, int compY, int compWidth, int compHeight, List connections) { Map positions = new HashMap<>(); @@ -497,29 +398,22 @@ public abstract class GuiDiagram extends Gui { int posY = compY + rand.nextInt(compHeight); positions.put(id, new Point(posX, posY)); } - double area = compWidth * compHeight; double k = Math.sqrt(area / cluster.size()); int iterations = 100; double temperature = compWidth / 10.0; double cooling = temperature / (iterations + 1); double minDistance = iconSize + slotPadding; - - // Consider only connections within the cluster. List compConnections = new ArrayList<>(); for (DiagramConnection conn : connections) { - if (cluster.contains(conn.idFrom) && cluster.contains(conn.idTo)) { + if (cluster.contains(conn.idFrom) && cluster.contains(conn.idTo)) compConnections.add(conn); - } } - for (int iter = 0; iter < iterations; iter++) { Map disp = new HashMap<>(); for (Integer id : cluster) { - disp.put(id, new double[] {0.0, 0.0}); + disp.put(id, new double[]{0.0, 0.0}); } - - // Repulsive forces. List nodes = new ArrayList<>(cluster); for (int i = 0; i < nodes.size(); i++) { Integer v = nodes.get(i); @@ -527,8 +421,7 @@ public abstract class GuiDiagram extends Gui { for (int j = i + 1; j < nodes.size(); j++) { Integer u = nodes.get(j); Point posU = positions.get(u); - double dx = posV.x - posU.x; - double dy = posV.y - posU.y; + double dx = posV.x - posU.x, dy = posV.y - posU.y; double distance = Math.sqrt(dx * dx + dy * dy); if (distance < minDistance) distance = minDistance; double repForce = (k * k) / distance; @@ -540,13 +433,10 @@ public abstract class GuiDiagram extends Gui { dispU[1] -= (dy / distance) * repForce; } } - - // Attractive forces. for (DiagramConnection conn : compConnections) { Point posV = positions.get(conn.idFrom); Point posU = positions.get(conn.idTo); - double dx = posV.x - posU.x; - double dy = posV.y - posU.y; + double dx = posV.x - posU.x, dy = posV.y - posU.y; double distance = Math.sqrt(dx * dx + dy * dy); if (distance < 0.01) distance = 0.01; double attrForce = (distance * distance) / k; @@ -557,8 +447,6 @@ public abstract class GuiDiagram extends Gui { dispU[0] += (dx / distance) * attrForce; dispU[1] += (dy / distance) * attrForce; } - - // Update positions. for (Integer id : cluster) { double[] d = disp.get(id); double dispLength = Math.sqrt(d[0] * d[0] + d[1] * d[1]); @@ -570,17 +458,214 @@ public abstract class GuiDiagram extends Gui { positions.get(id).x = newX; positions.get(id).y = newY; } - temperature -= cooling; } - return positions; } + // Manual Layouts – using index (ring) and priority. + private Map calculateCircularManualPositions() { + List icons = getIcons(); + Map> groups = new TreeMap<>(); + for (DiagramIcon icon : icons) { + groups.computeIfAbsent(icon.index, k -> new ArrayList<>()).add(icon); + } + Map positions = new HashMap<>(); + int centerX = x + width / 2, centerY = y + height / 2; + int maxRing = groups.isEmpty() ? 0 : Collections.max(groups.keySet()); + int maxRadius = Math.min(width, height) / 2 - iconSize - 10; + double ringSpacing = (maxRing + 1) > 0 ? (double) maxRadius / (maxRing + 1) : 0; + // For each ring, sort by priority. For ring 0, start at -90° (top); for higher rings, start at -135°. + for (Map.Entry> entry : groups.entrySet()) { + int ring = entry.getKey(); + List groupIcons = entry.getValue(); + groupIcons.sort(Comparator.comparingInt(icon -> icon.priority)); + double radius = ringSpacing * (ring + 1); + int count = groupIcons.size(); + double startAngle = (ring == 0) ? -Math.PI / 2 : -3 * Math.PI / 4; + for (int i = 0; i < count; i++) { + double angle = startAngle + 2 * Math.PI * i / count; + int posX = centerX + (int) (radius * Math.cos(angle)); + int posY = centerY + (int) (radius * Math.sin(angle)); + positions.put(groupIcons.get(i).id, new Point(posX, posY)); + } + } + return positions; + } - // --------------- - // Standard Icon Box Drawing (Background + Border) - // --------------- + private Map calculateSquareManualPositions() { + List icons = getIcons(); + Map> groups = new TreeMap<>(); + for (DiagramIcon icon : icons) { + groups.computeIfAbsent(icon.index, k -> new ArrayList<>()).add(icon); + } + Map positions = new HashMap<>(); + int centerX = x + width / 2, centerY = y + height / 2; + int maxRing = groups.isEmpty() ? 0 : Collections.max(groups.keySet()); + int halfSide = Math.min(width, height) / 2 - iconSize - 10; + double ringSpacing = (maxRing + 1) > 0 ? (double) halfSide / (maxRing + 1) : 0; + // Distribute each ring's icons along the square perimeter. + for (Map.Entry> entry : groups.entrySet()) { + int ring = entry.getKey(); + List groupIcons = entry.getValue(); + groupIcons.sort(Comparator.comparingInt(icon -> icon.priority)); + double offset = ringSpacing * (ring + 1); + int count = groupIcons.size(); + double perimeter = 8 * offset; + for (int i = 0; i < count; i++) { + double posAlong = (perimeter * i) / count; + int posX, posY; + if (posAlong < 2 * offset) { + posX = centerX - (int) offset + (int) posAlong; + posY = centerY - (int) offset; + } else if (posAlong < 4 * offset) { + posX = centerX + (int) offset; + posY = centerY - (int) offset + (int) (posAlong - 2 * offset); + } else if (posAlong < 6 * offset) { + posX = centerX + (int) offset - (int) (posAlong - 4 * offset); + posY = centerY + (int) offset; + } else { + posX = centerX - (int) offset; + posY = centerY + (int) offset - (int) (posAlong - 6 * offset); + } + positions.put(groupIcons.get(i).id, new Point(posX, posY)); + } + } + return positions; + } + + private Map calculateTreeManualPositions() { + List icons = getIcons(); + Map> levels = new TreeMap<>(); + for (DiagramIcon icon : icons) { + levels.computeIfAbsent(icon.index, k -> new ArrayList<>()).add(icon); + } + Map positions = new HashMap<>(); + int maxLevel = levels.isEmpty() ? 0 : Collections.max(levels.keySet()); + int levelHeight = height / (maxLevel + 2); + for (Map.Entry> entry : levels.entrySet()) { + int level = entry.getKey(); + List levelIcons = entry.getValue(); + levelIcons.sort(Comparator.comparingInt(icon -> icon.priority)); + int count = levelIcons.size(); + int horizontalSpacing = (width - 40) / (count + 1); + for (int i = 0; i < count; i++) { + int posX = x + 20 + (i + 1) * horizontalSpacing; + int posY = y + levelHeight * (level + 1); + positions.put(levelIcons.get(i).id, new Point(posX, posY)); + } + } + return positions; + } + + // Arrow Drawing: + /** + * Draws a connection line. + * If curvedArrows is false, draws a straight line. + * Otherwise draws a quadratic Bezier curve using curveAngle for offset. + */ + protected void drawConnectionLine(int x1, int y1, int x2, int y2, DiagramConnection conn, boolean dim) { + int color = getConnectionColor(conn); + if (!useColorScaling) color = 0xFFFFFFFF; + if (!curvedArrows) { + GL11.glPushAttrib(GL11.GL_ENABLE_BIT); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glLineWidth(2.0F); + float r = ((color >> 16) & 0xFF) / 255f; + float g = ((color >> 8) & 0xFF) / 255f; + float b = (color & 0xFF) / 255f; + if (dim) { r *= 0.4f; g *= 0.4f; b *= 0.4f; } + GL11.glColor4f(r, g, b, 1f); + GL11.glBegin(GL11.GL_LINES); + GL11.glVertex2i(x1, y1); + GL11.glVertex2i(x2, y2); + GL11.glEnd(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopAttrib(); + } else { + Point start = new Point(x1, y1); + Point end = new Point(x2, y2); + double dx = x2 - x1, dy = y2 - y1; + double len = Math.sqrt(dx * dx + dy * dy); + if (len == 0) len = 1; + double angleRad = Math.toRadians(curveAngle); + double offset = len * Math.tan(angleRad) / 2; + double perpX = -dy / len, perpY = dx / len; + Point control = new Point((x1 + x2) / 2 + (int)(perpX * offset), + (y1 + y2) / 2 + (int)(perpY * offset)); + int segments = 300; + GL11.glPushAttrib(GL11.GL_ENABLE_BIT); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glLineWidth(2.0F); + float rr = ((color >> 16) & 0xFF) / 255f; + float gg = ((color >> 8) & 0xFF) / 255f; + float bb = (color & 0xFF) / 255f; + if (dim) { rr *= 0.4f; gg *= 0.4f; bb *= 0.4f; } + GL11.glColor4f(rr, gg, bb, 1f); + GL11.glBegin(GL11.GL_LINE_STRIP); + for (int i = 0; i <= segments; i++) { + double t = (double)i / segments; + int bx = (int)((1 - t) * (1 - t) * start.x + 2 * (1 - t) * t * control.x + t * t * end.x); + int by = (int)((1 - t) * (1 - t) * start.y + 2 * (1 - t) * t * control.y + t * t * end.y); + GL11.glVertex2i(bx, by); + } + GL11.glEnd(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopAttrib(); + } + } + + /** + * Draws the arrow head. + * For curved arrows, the head is aligned with the derivative at t=0.95. + */ + protected void drawArrowHead(int x1, int y1, int x2, int y2, DiagramConnection conn, boolean dim) { + int color = getConnectionColor(conn); + if (!useColorScaling) color = 0xFFFFFFFF; + double angle; + if (!curvedArrows) { + angle = Math.atan2(y2 - y1, x2 - x1); + } else { + double dx = x2 - x1, dy = y2 - y1; + double len = Math.sqrt(dx * dx + dy * dy); + if (len == 0) len = 1; + double offset = len * Math.tan(Math.toRadians(curveAngle)) / 2; + double perpX = -dy / len, perpY = dx / len; + int cx = (x1 + x2) / 2 + (int)(perpX * offset); + int cy = (y1 + y2) / 2 + (int)(perpY * offset); + double t = 0.95; + double bx = (1 - t) * (1 - t) * x1 + 2 * (1 - t) * t * cx + t * t * x2; + double by = (1 - t) * (1 - t) * y1 + 2 * (1 - t) * t * cy + t * t * y2; + double dBx = 2 * (1 - t) * (cx - x1) + 2 * t * (x2 - cx); + double dBy = 2 * (1 - t) * (cy - y1) + 2 * t * (y2 - cy); + angle = Math.atan2(dBy, dBx); + } + float defenderEdgeX = x2 - (slotSize / 2f) * (float)Math.cos(angle); + float defenderEdgeY = y2 - (slotSize / 2f) * (float)Math.sin(angle); + int arrowSize = 6; + float leftX = (float)(defenderEdgeX - arrowSize * Math.cos(angle - Math.PI/6)); + float leftY = (float)(defenderEdgeY - arrowSize * Math.sin(angle - Math.PI/6)); + float rightX = (float)(defenderEdgeX - arrowSize * Math.cos(angle + Math.PI/6)); + float rightY = (float)(defenderEdgeY - arrowSize * Math.sin(angle + Math.PI/6)); + GL11.glPushAttrib(GL11.GL_ENABLE_BIT); + GL11.glDisable(GL11.GL_TEXTURE_2D); + float rr = ((color >> 16)&0xFF)/255f; + float gg = ((color >> 8)&0xFF)/255f; + float bb = (color&0xFF)/255f; + if(dim){ rr*=0.4f; gg*=0.4f; bb*=0.4f; } + GL11.glColor4f(rr, gg, bb, 1f); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glBegin(GL11.GL_TRIANGLES); + GL11.glVertex2f(defenderEdgeX, defenderEdgeY); + GL11.glVertex2f(leftX, leftY); + GL11.glVertex2f(rightX, rightY); + GL11.glEnd(); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopAttrib(); + } + + // Standard Icon Box Drawing protected void drawIconBox(int slotX, int slotY, int slotSize, boolean highlighted) { int bg = highlighted ? mixColors(iconBackgroundColor, 0xFFFFFFFF, 0.2f) : iconBackgroundColor; drawRect(slotX, slotY, slotX + slotSize, slotY + slotSize, bg); @@ -591,7 +676,6 @@ public abstract class GuiDiagram extends Gui { drawVerticalLine(slotX + slotSize - 1 - i, slotY + i, slotY + slotSize - i, iconBorderColor); } } - protected int mixColors(int color1, int color2, float ratio) { int a1 = (color1 >> 24) & 0xFF, r1 = (color1 >> 16) & 0xFF, g1 = (color1 >> 8) & 0xFF, b1 = color1 & 0xFF; int a2 = (color2 >> 24) & 0xFF, r2 = (color2 >> 16) & 0xFF, g2 = (color2 >> 8) & 0xFF, b2 = color2 & 0xFF; @@ -602,39 +686,57 @@ public abstract class GuiDiagram extends Gui { return (a << 24) | (r << 16) | (g << 8) | b; } - // --------------- - // Main Draw Method - // --------------- - public void drawDiagram(int mouseX, int mouseY, boolean subGui) { - // Only allow mouse interaction if parent's not showing a subgui. - boolean allowInput = (parent == null || !parent.hasSubGui()); - // Update zoom based on mouse scroll if allowed. - if (allowInput && isWithin(mouseX, mouseY) && !subGui) { - handleMouseScroll(Mouse.getDWheel()); + // Hit-detection helper for curved arrows. + private double distanceToBezier(Point start, Point control, Point end, int segments, int px, int py) { + double minDist = Double.MAX_VALUE; + Point prev = null; + for (int i = 0; i <= segments; i++) { + double t = (double)i / segments; + int x = (int)((1 - t) * (1 - t) * start.x + 2 * (1 - t) * t * control.x + t * t * end.x); + int y = (int)((1 - t) * (1 - t) * start.y + 2 * (1 - t) * t * control.y + t * t * end.y); + Point curr = new Point(x, y); + if (prev != null) { + double d = distancePointToSegment(px, py, prev, curr); + if (d < minDist) minDist = d; + } + prev = curr; } + return minDist; + } + private double distancePointToSegment(int px, int py, Point a, Point b) { + double A = px - a.x, B = py - a.y; + double C = b.x - a.x, D = b.y - a.y; + double dot = A * C + B * D; + double lenSq = C * C + D * D; + double param = (lenSq != 0) ? (dot / lenSq) : -1; + double xx, yy; + if (param < 0) { xx = a.x; yy = a.y; } + else if (param > 1) { xx = b.x; yy = b.y; } + else { xx = a.x + param * C; yy = a.y + param * D; } + double dx = px - xx, dy = py - yy; + return Math.sqrt(dx * dx + dy * dy); + } + // Main Draw Method + public void drawDiagram(int mouseX, int mouseY, boolean subGui) { + boolean allowInput = (parent == null || !parent.hasSubGui()); + if (allowInput && isWithin(mouseX, mouseY) && !subGui) + handleMouseScroll(Mouse.getDWheel()); Minecraft mc = Minecraft.getMinecraft(); ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); int factor = sr.getScaleFactor(); - Map positions = calculatePositions(); - int centerX = x + width / 2; - int centerY = y + height / 2; - + int centerX = x + width / 2, centerY = y + height / 2; int effectiveMouseX = (int)(((float)mouseX - (centerX + panX)) / zoom + centerX); int effectiveMouseY = (int)(((float)mouseY - (centerY + panY)) / zoom + centerY); - Integer hoveredIconId = null; int hoveredConnFrom = -1, hoveredConnTo = -1; Set selectedIconIds = new HashSet<>(); - - // Hit testing for icons (only consider enabled icons) for (DiagramIcon icon : getIcons()) { if (!icon.enabled) continue; Point pos = positions.get(icon.id); if (pos == null) continue; - int slotX = pos.x - slotSize / 2; - int slotY = pos.y - slotSize / 2; + int slotX = pos.x - slotSize / 2, slotY = pos.y - slotSize / 2; if (effectiveMouseX >= slotX && effectiveMouseX < slotX + slotSize && effectiveMouseY >= slotY && effectiveMouseY < slotY + slotSize) { hoveredIconId = icon.id; @@ -644,7 +746,6 @@ public abstract class GuiDiagram extends Gui { } if (hoveredIconId != null) { for (DiagramConnection conn : getConnections()) { - // Validate connection: both endpoints must exist and be enabled. DiagramIcon iconFrom = getIconById(conn.idFrom); DiagramIcon iconTo = getIconById(conn.idTo); if (iconFrom == null || iconTo == null || !iconFrom.enabled || !iconTo.enabled) @@ -665,7 +766,20 @@ public abstract class GuiDiagram extends Gui { Point pFrom = positions.get(conn.idFrom); Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; - double dist = pointLineDistance(effectiveMouseX, effectiveMouseY, pFrom.x, pFrom.y, pTo.x, pTo.y); + double dist; + if (curvedArrows) { + double dx = pTo.x - pFrom.x, dy = pTo.y - pFrom.y; + double len = Math.sqrt(dx * dx + dy * dy); + if (len == 0) len = 1; + double angleRad = Math.toRadians(curveAngle); + double offset = len * Math.tan(angleRad) / 2; + double perpX = -dy / len, perpY = dx / len; + Point control = new Point((pFrom.x+pTo.x)/2 + (int)(perpX*offset), + (pFrom.y+pTo.y)/2 + (int)(perpY*offset)); + dist = distanceToBezier(pFrom, control, pTo, 20, effectiveMouseX, effectiveMouseY); + } else { + dist = pointLineDistance(effectiveMouseX, effectiveMouseY, pFrom.x, pFrom.y, pTo.x, pTo.y); + } if (dist < threshold) { hoveredConnFrom = conn.idFrom; hoveredConnTo = conn.idTo; @@ -675,17 +789,13 @@ public abstract class GuiDiagram extends Gui { } } } - GL11.glEnable(GL11.GL_SCISSOR_TEST); GL11.glScissor(x * factor, (sr.getScaledHeight() - (y + height)) * factor, width * factor, height * factor); drawRect(x, y, x + width, y + height, 0xFF333333); - GL11.glPushMatrix(); GL11.glTranslatef(centerX + panX, centerY + panY, 0); GL11.glScalef(zoom, zoom, 1.0f); GL11.glTranslatef(-centerX, -centerY, 0); - - // Draw connections (only for endpoints that are enabled). for (DiagramConnection conn : getConnections()) { DiagramIcon iconFrom = getIconById(conn.idFrom); DiagramIcon iconTo = getIconById(conn.idTo); @@ -694,30 +804,21 @@ public abstract class GuiDiagram extends Gui { Point pFrom = positions.get(conn.idFrom); Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; - int ax = pFrom.x; - int ay = pFrom.y; - int bx = pTo.x; - int by = pTo.y; - boolean dim = !selectedIconIds.isEmpty() && - !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); + int ax = pFrom.x, ay = pFrom.y, bx = pTo.x, by = pTo.y; + boolean dim = !selectedIconIds.isEmpty() && !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); drawConnectionLine(ax, ay, bx, by, conn, dim); } - - // Draw icons. for (DiagramIcon icon : getIcons()) { if (!icon.enabled) continue; Point pos = positions.get(icon.id); if (pos == null) continue; - int slotX = pos.x - slotSize / 2; - int slotY = pos.y - slotSize / 2; + int slotX = pos.x - slotSize / 2, slotY = pos.y - slotSize / 2; boolean highlighted = selectedIconIds.isEmpty() || selectedIconIds.contains(icon.id); drawIconBox(slotX, slotY, slotSize, highlighted); IconRenderState state = highlighted ? IconRenderState.HIGHLIGHTED : IconRenderState.NOT_HIGHLIGHTED; renderIcon(icon, pos.x, pos.y, state); } GL11.glPopMatrix(); - - // Draw arrow heads. if (showArrowHeads) { GL11.glPushMatrix(); GL11.glTranslatef(centerX + panX, centerY + panY, 0); @@ -731,161 +832,86 @@ public abstract class GuiDiagram extends Gui { Point pFrom = positions.get(conn.idFrom); Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; - int ax = pFrom.x; - int ay = pFrom.y; - int bx = pTo.x; - int by = pTo.y; - boolean dim = !selectedIconIds.isEmpty() && - !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); + int ax = pFrom.x, ay = pFrom.y, bx = pTo.x, by = pTo.y; + boolean dim = !selectedIconIds.isEmpty() && !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); drawArrowHead(ax, ay, bx, by, conn, dim); } GL11.glPopMatrix(); } GL11.glDisable(GL11.GL_SCISSOR_TEST); - - // Tooltips. if (hoveredIconId != null) { DiagramIcon icon = getIconById(hoveredIconId); List tooltip = getIconTooltip(icon); - if (tooltip != null && !tooltip.isEmpty()) { + if (tooltip != null && !tooltip.isEmpty()) drawHoveringText(tooltip, mouseX, mouseY, mc.fontRenderer); - } } else if (hoveredConnFrom != -1 && hoveredConnTo != -1) { DiagramConnection conn = getConnectionByIds(hoveredConnFrom, hoveredConnTo); List tooltip = getConnectionTooltip(conn); - if (tooltip != null && !tooltip.isEmpty()) { + if (tooltip != null && !tooltip.isEmpty()) drawHoveringText(tooltip, mouseX, mouseY, mc.fontRenderer); - } } } protected DiagramIcon getIconById(int id) { for (DiagramIcon icon : getIcons()) { - if (icon.id == id) - return icon; + if (icon.id == id) return icon; } return null; } - protected DiagramConnection getConnectionByIds(int idFrom, int idTo) { for (DiagramConnection conn : getConnections()) { - if (conn.idFrom == idFrom && conn.idTo == idTo) - return conn; + if (conn.idFrom == idFrom && conn.idTo == idTo) return conn; } return null; } - - protected void drawConnectionLine(int x1, int y1, int x2, int y2, DiagramConnection conn, boolean dim) { - int color = getConnectionColor(conn); - if (!useColorScaling) { color = 0xFFFFFFFF; } - GL11.glPushAttrib(GL11.GL_ENABLE_BIT); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glLineWidth(2.0F); - float r = ((color >> 16)&0xFF)/255f; - float g = ((color >> 8)&0xFF)/255f; - float b = (color&0xFF)/255f; - if (dim) { r*=0.4f; g*=0.4f; b*=0.4f; } - GL11.glColor4f(r, g, b, 1f); - GL11.glBegin(GL11.GL_LINES); - GL11.glVertex2f(x1, y1); - GL11.glVertex2f(x2, y2); - GL11.glEnd(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopAttrib(); - } - - protected void drawArrowHead(int x1, int y1, int x2, int y2, DiagramConnection conn, boolean dim) { - float dx = x2 - x1, dy = y2 - y1; - float len = (float)Math.sqrt(dx*dx+dy*dy); - if (len==0)return; - float ux = dx/len, uy = dy/len; - float defenderEdgeX = x2 - ux*(slotSize/2f); - float defenderEdgeY = y2 - uy*(slotSize/2f); - int arrowSize = 6; - double angle = Math.atan2(uy,ux); - float leftX = (float)(defenderEdgeX - arrowSize * Math.cos(angle - Math.PI/6)); - float leftY = (float)(defenderEdgeY - arrowSize * Math.sin(angle - Math.PI/6)); - float rightX = (float)(defenderEdgeX - arrowSize * Math.cos(angle + Math.PI/6)); - float rightY = (float)(defenderEdgeY - arrowSize * Math.sin(angle + Math.PI/6)); - int color = getConnectionColor(conn); - if (!useColorScaling) { color = 0xFFFFFFFF; } - GL11.glPushAttrib(GL11.GL_ENABLE_BIT); - GL11.glDisable(GL11.GL_TEXTURE_2D); - float r = ((color >> 16)&0xFF)/255f; - float g = ((color >> 8)&0xFF)/255f; - float b = (color&0xFF)/255f; - if(dim){ r*=0.4f; g*=0.4f; b*=0.4f; } - GL11.glColor4f(r, g, b, 1f); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glBegin(GL11.GL_TRIANGLES); - GL11.glVertex2f(defenderEdgeX, defenderEdgeY); - GL11.glVertex2f(leftX, leftY); - GL11.glVertex2f(rightX, rightY); - GL11.glEnd(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopAttrib(); - } - protected int getConnectionColor(DiagramConnection conn) { float percent = conn.percent; - if (percent<=0.10f)return 0xFF80FF80; - else if (percent<=0.40f)return 0xFFCCFF66; - else if (percent<=0.50f)return 0xFFFFA500; + if (percent <= 0.10f) return 0xFF80FF80; + else if (percent <= 0.40f) return 0xFFCCFF66; + else if (percent <= 0.50f) return 0xFFFFA500; else { - float ratio = (percent-0.50f)/0.50f; + float ratio = (percent - 0.50f) / 0.50f; ratio = Math.min(1f, Math.max(0f, ratio)); int r1 = 0xFF, g1 = 0xA5, b1 = 0x00; int r2 = 0xFF, g2 = 0x00, b2 = 0x00; - int r = r1 + (int)((r2-r1)*ratio); - int g = g1 + (int)((g2-g1)*ratio); - int b = b1 + (int)((b2-b1)*ratio); + int r = r1 + (int)((r2 - r1) * ratio); + int g = g1 + (int)((g2 - g1) * ratio); + int b = b1 + (int)((b2 - b1) * ratio); return (0xFF << 24) | (r << 16) | (g << 8) | b; } } - - private double pointLineDistance(double px, double py, double x1, double y1, double x2, double y2) { + private double pointLineDistance(int px, int py, int x1, int y1, int x2, int y2) { double A = px - x1, B = py - y1, C = x2 - x1, D = y2 - y1; double dot = A * C + B * D; double lenSq = C * C + D * D; - double param = (lenSq!=0)?(dot/lenSq):-1; + double param = (lenSq != 0) ? (dot / lenSq) : -1; double xx, yy; - if(param<0){ xx = x1; yy = y1; } - else if(param>1){ xx = x2; yy = y2; } - else { xx = x1+param*C; yy = y1+param*D; } - double dx = px-xx, dy = py-yy; - return Math.sqrt(dx*dx+dy*dy); + if (param < 0) { xx = x1; yy = y1; } + else if (param > 1) { xx = x2; yy = y2; } + else { xx = x1 + param * C; yy = y1 + param * D; } + double dx = px - xx, dy = py - yy; + return Math.sqrt(dx * dx + dy * dy); } - // --------------- // Mouse Handling - // --------------- public boolean mouseClicked(int mouseX, int mouseY, int mouseButton) { - // Do not process if parent's subgui is active. if (parent != null && parent.hasSubGui()) return false; - // If left mouse button: if (mouseButton == 0) { - // First, try to dispatch icon events for pressable icons. for (DiagramIcon icon : getIcons()) { - if (!icon.enabled || !icon.pressable) - continue; + if (!icon.enabled || !icon.pressable) continue; Point pos = calculatePositions().get(icon.id); if (pos == null) continue; - int centerX = x + width / 2; - int centerY = y + height / 2; - int effectiveX = (int)(((float)mouseX - (centerX + panX)) / zoom + centerX); - int effectiveY = (int)(((float)mouseY - (centerY + panY)) / zoom + centerY); - int slotX = pos.x - slotSize / 2; - int slotY = pos.y - slotSize / 2; - if (effectiveX >= slotX && effectiveX < slotX + slotSize && - effectiveY >= slotY && effectiveY < slotY + slotSize) { + int centerX = x + width/2, centerY = y + height/2; + int effectiveX = (int)(((float)mouseX - (centerX+panX))/zoom+centerX); + int effectiveY = (int)(((float)mouseY - (centerY+panY))/zoom+centerY); + int slotX = pos.x - slotSize/2, slotY = pos.y - slotSize/2; + if (effectiveX >= slotX && effectiveX < slotX+slotSize && + effectiveY >= slotY && effectiveY < slotY+slotSize) { onIconClick(icon); - // Mark as pressed for held/release events. currentlyPressedIcon = icon; return true; } } - // Otherwise, start dragging for panning. if (isWithin(mouseX, mouseY)) { dragging = true; lastDragX = mouseX; @@ -895,25 +921,18 @@ public abstract class GuiDiagram extends Gui { } return false; } - protected DiagramIcon currentlyPressedIcon = null; - public void mouseClickMove(int mouseX, int mouseY, int mouseButton, long timeSinceLastClick) { if (parent != null && parent.hasSubGui()) return; if (dragging) { - int dx = mouseX - lastDragX; - int dy = mouseY - lastDragY; - panX += dx / zoom * 0.7f; - panY += dy / zoom * 0.7f; + int dx = mouseX - lastDragX, dy = mouseY - lastDragY; + panX += dx/zoom*0.7f; + panY += dy/zoom*0.7f; lastDragX = mouseX; lastDragY = mouseY; } - // If an icon is pressed, dispatch held event. - if (currentlyPressedIcon != null) { - onIconHeld(currentlyPressedIcon); - } + if (currentlyPressedIcon != null) onIconHeld(currentlyPressedIcon); } - public void mouseReleased(int mouseX, int mouseY, int state) { if (parent != null && parent.hasSubGui()) return; if (currentlyPressedIcon != null) { @@ -922,58 +941,51 @@ public abstract class GuiDiagram extends Gui { } dragging = false; } - public boolean isWithin(int mouseX, int mouseY) { - if(parent.hasSubGui()) + if (parent.hasSubGui()) return false; return mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height; } - /** - * Handles zoom in/out based on mouse wheel scrolling. + * Handles zoom based on mouse wheel scrolling. */ public void handleMouseScroll(int scrollDelta) { zoom += scrollDelta * 0.0009f; - if(zoom < 0.5f) zoom = 0.5f; - if(zoom > 2.0f) zoom = 2.0f; + if (zoom < 0.5f) zoom = 0.5f; + if (zoom > 2.0f) zoom = 2.0f; } - /** - * Override this method if you wish to render tooltips differently. + * Override to render tooltips. */ protected void drawHoveringText(List text, int mouseX, int mouseY, FontRenderer fontRenderer) { // Default implementation is empty. } - - // --------------- // Flag Setters - // --------------- public void setShowArrowHeads(boolean showArrowHeads) { this.showArrowHeads = showArrowHeads; } - public void setUseColorScaling(boolean useColorScaling) { this.useColorScaling = useColorScaling; } - public enum IconRenderState { DEFAULT, HIGHLIGHTED, NOT_HIGHLIGHTED; } - - // --------------- - // Inner Classes for Data Wrapping - // --------------- + // Inner Classes public static class DiagramIcon { public int id; - public boolean enabled = true; // If false, the icon is not rendered. - public boolean pressable = false; // If true, it will receive mouse events. - public DiagramIcon(int id) { + public boolean enabled = true; + public boolean pressable = false; + public int index = 0; // For row, ring, or level. + public int priority = 0; // For ordering. + public DiagramIcon(int id) { this.id = id; } + public DiagramIcon(int id, int index, int priority) { this.id = id; + this.index = index; + this.priority = priority; } } - public static class DiagramConnection { public int idFrom, idTo; public float percent; @@ -985,24 +997,14 @@ public abstract class GuiDiagram extends Gui { this.hoverText = hoverText; } } - - // --------------- - // Icon Event Callbacks (override these in subclasses as needed) - // --------------- + // Icon Event Callbacks protected void onIconClick(DiagramIcon icon) { - // Called when a pressable icon is clicked. System.out.println("Icon " + icon.id + " clicked."); } - protected void onIconHeld(DiagramIcon icon) { - // Called repeatedly if an icon remains pressed. - // (You can add timing logic to fire this only after a threshold.) - // For now, we simply print once. System.out.println("Icon " + icon.id + " held."); } - protected void onIconRelease(DiagramIcon icon) { - // Called when a pressable icon is released. System.out.println("Icon " + icon.id + " released."); } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java index da8ac8217..7954d5f56 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java @@ -31,7 +31,9 @@ public class GuiMagicMap extends GuiDiagram { for (Magic magic : MagicController.getInstance().magics.values()) { magics.add(magic); } - setLayout(DiagramLayout.GENERATED); + setLayout(DiagramLayout.CIRCULAR_MANUAL); + this.setCurvedArrows(true); + this.setCurveAngle(25); } @Override @@ -121,7 +123,7 @@ public class GuiMagicMap extends GuiDiagram { private class MagicIcon extends DiagramIcon { public Magic magic; public MagicIcon(Magic magic) { - super(magic.id); + super(magic.id, magic.index, magic.priority); this.magic = magic; } } diff --git a/src/main/java/noppes/npcs/controllers/MagicController.java b/src/main/java/noppes/npcs/controllers/MagicController.java index 9aafa1820..b2c6385af 100644 --- a/src/main/java/noppes/npcs/controllers/MagicController.java +++ b/src/main/java/noppes/npcs/controllers/MagicController.java @@ -1,5 +1,6 @@ package noppes.npcs.controllers; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; @@ -55,31 +56,179 @@ public class MagicController { } } catch (Exception ee) { } } + magics.clear(); + if (false) { + // Create default Pokémon types + Magic normal = new Magic(0, "Normal", 0xA8A878); + normal.setIconItem(new ItemStack(net.minecraft.init.Items.paper)); // using paper for Normal - if (magics.isEmpty()) { + Magic fire = new Magic(1, "Fire", 0xF08030); + fire.setIconItem(new ItemStack(net.minecraft.init.Items.flint)); // flint for Fire + + Magic water = new Magic(2, "Water", 0x6890F0); + water.setIconItem(new ItemStack(net.minecraft.init.Items.water_bucket)); // water bucket + + Magic electric = new Magic(3, "Electric", 0xF8D030); + electric.setIconItem(new ItemStack(net.minecraft.init.Items.redstone)); // redstone + + Magic grass = new Magic(4, "Grass", 0x78C850); + grass.setIconItem(new ItemStack(net.minecraft.init.Items.wheat_seeds)); // wheat seeds + + Magic ice = new Magic(5, "Ice", 0x98D8D8); + ice.setIconItem(new ItemStack(net.minecraft.init.Items.snowball)); // snowball for Ice + + Magic fighting = new Magic(6, "Fighting", 0xC03028); + fighting.setIconItem(new ItemStack(net.minecraft.init.Items.iron_sword)); // sword for Fighting + + Magic poison = new Magic(7, "Poison", 0xA040A0); + poison.setIconItem(new ItemStack(net.minecraft.init.Items.potionitem)); // potion item for Poison + + Magic ground = new Magic(8, "Ground", 0xE0C068); + ground.setIconItem(new ItemStack(Blocks.dirt)); // dirt for Ground + + Magic flying = new Magic(9, "Flying", 0xA890F0); + flying.setIconItem(new ItemStack(net.minecraft.init.Items.feather)); // feather for Flying + + Magic psychic = new Magic(10, "Psychic", 0xF85888); + psychic.setIconItem(new ItemStack(net.minecraft.init.Items.ender_pearl)); // ender pearl for Psychic + + Magic bug = new Magic(11, "Bug", 0xA8B820); + bug.setIconItem(new ItemStack(net.minecraft.init.Items.spider_eye)); // spider eye for Bug + + Magic rock = new Magic(12, "Rock", 0xB8A038); + rock.setIconItem(new ItemStack(Blocks.cobblestone)); // cobblestone for Rock + + Magic ghost = new Magic(13, "Ghost", 0x705898); + ghost.setIconItem(new ItemStack(net.minecraft.init.Items.skull)); // skull for Ghost + + Magic dragon = new Magic(14, "Dragon", 0x7038F8); + dragon.setIconItem(new ItemStack(Blocks.dragon_egg)); // dragon egg + + Magic dark = new Magic(15, "Dark", 0x705848); + dark.setIconItem(new ItemStack(net.minecraft.init.Items.coal)); // coal for Dark + + Magic steel = new Magic(16, "Steel", 0xB8B8D0); + steel.setIconItem(new ItemStack(net.minecraft.init.Items.iron_ingot)); // iron ingot for Steel + + Magic fairy = new Magic(17, "Fairy", 0xEE99AC); + fairy.setIconItem(new ItemStack(net.minecraft.init.Items.sugar)); // sugar for Fairy + + // Now set weaknesses (using a multiplier of 2.0f to indicate “double damage”). + // The following is based on a common Pokémon type chart. + normal.weaknesses.put(fighting.id, 2.0f); + + fire.weaknesses.put(water.id, 2.0f); + fire.weaknesses.put(ground.id, 2.0f); + fire.weaknesses.put(rock.id, 2.0f); + + water.weaknesses.put(electric.id, 2.0f); + water.weaknesses.put(grass.id, 2.0f); + + electric.weaknesses.put(ground.id, 2.0f); + + grass.weaknesses.put(fire.id, 2.0f); + grass.weaknesses.put(ice.id, 2.0f); + grass.weaknesses.put(poison.id, 2.0f); + grass.weaknesses.put(flying.id, 2.0f); + grass.weaknesses.put(bug.id, 2.0f); + + ice.weaknesses.put(fire.id, 2.0f); + ice.weaknesses.put(fighting.id, 2.0f); + ice.weaknesses.put(rock.id, 2.0f); + ice.weaknesses.put(steel.id, 2.0f); + + fighting.weaknesses.put(flying.id, 2.0f); + fighting.weaknesses.put(psychic.id, 2.0f); + fighting.weaknesses.put(fairy.id, 2.0f); + + poison.weaknesses.put(ground.id, 2.0f); + poison.weaknesses.put(psychic.id, 2.0f); + + ground.weaknesses.put(water.id, 2.0f); + ground.weaknesses.put(grass.id, 2.0f); + ground.weaknesses.put(ice.id, 2.0f); + + flying.weaknesses.put(electric.id, 2.0f); + flying.weaknesses.put(ice.id, 2.0f); + flying.weaknesses.put(rock.id, 2.0f); + + psychic.weaknesses.put(bug.id, 2.0f); + psychic.weaknesses.put(ghost.id, 2.0f); + psychic.weaknesses.put(dark.id, 2.0f); + + bug.weaknesses.put(fire.id, 2.0f); + bug.weaknesses.put(flying.id, 2.0f); + bug.weaknesses.put(rock.id, 2.0f); + + rock.weaknesses.put(water.id, 2.0f); + rock.weaknesses.put(grass.id, 2.0f); + rock.weaknesses.put(fighting.id, 2.0f); + rock.weaknesses.put(ground.id, 2.0f); + rock.weaknesses.put(steel.id, 2.0f); + + ghost.weaknesses.put(ghost.id, 2.0f); + ghost.weaknesses.put(dark.id, 2.0f); + + dragon.weaknesses.put(ice.id, 2.0f); + dragon.weaknesses.put(dragon.id, 2.0f); + dragon.weaknesses.put(fairy.id, 2.0f); + + dark.weaknesses.put(fighting.id, 2.0f); + dark.weaknesses.put(bug.id, 2.0f); + dark.weaknesses.put(fairy.id, 2.0f); + + steel.weaknesses.put(fire.id, 2.0f); + steel.weaknesses.put(fighting.id, 2.0f); + steel.weaknesses.put(ground.id, 2.0f); + + fairy.weaknesses.put(poison.id, 2.0f); + fairy.weaknesses.put(steel.id, 2.0f); + + // Register the types. + magics.put(normal.id, normal); + magics.put(fire.id, fire); + magics.put(water.id, water); + magics.put(electric.id, electric); + magics.put(grass.id, grass); + magics.put(ice.id, ice); + magics.put(fighting.id, fighting); + magics.put(poison.id, poison); + magics.put(ground.id, ground); + magics.put(flying.id, flying); + magics.put(psychic.id, psychic); + magics.put(bug.id, bug); + magics.put(rock.id, rock); + magics.put(ghost.id, ghost); + magics.put(dragon.id, dragon); + magics.put(dark.id, dark); + magics.put(steel.id, steel); + magics.put(fairy.id, fairy); + } + + if (true || magics.isEmpty()) { // Create default magics - Magic earth = new Magic(0, "Earth", 0x00DD00); + Magic earth = new Magic(0, "Earth", 0x00DD00, 0, 0); earth.setIconItem(new ItemStack(CustomItems.earthElement)); - Magic water = new Magic(1, "Water", 0xF2DD00); + Magic water = new Magic(1, "Water", 0xF2DD00, 0, 1); water.setIconItem(new ItemStack(CustomItems.waterElement)); - Magic fire = new Magic(2, "Fire", 0xDD0000); + Magic fire = new Magic(2, "Fire", 0xDD0000, 0, 2); fire.setIconItem(new ItemStack(CustomItems.spellFire)); - Magic air = new Magic(3, "Air", 0xDD0000); + Magic air = new Magic(3, "Air", 0xDD0000, 0, 3); air.setIconItem(new ItemStack(CustomItems.airElement)); - Magic dark = new Magic(4, "Dark", 0xDD0000); + Magic dark = new Magic(4, "Dark", 0xDD0000, 1, 3); dark.setIconItem(new ItemStack(CustomItems.spellDark)); - Magic holy = new Magic(5, "Holy", 0xDD0000); + Magic holy = new Magic(5, "Holy", 0xDD0000, 1, 1); holy.setIconItem(new ItemStack(CustomItems.spellHoly)); - Magic nature = new Magic(6, "Nature", 0xDD0000); + Magic nature = new Magic(6, "Nature", 0xDD0000, 1, 0); nature.setIconItem(new ItemStack(CustomItems.spellNature)); - Magic arcane = new Magic(7, "Arcane", 0xDD0000); + Magic arcane = new Magic(7, "Arcane", 0xDD0000, 1, 2); arcane.setIconItem(new ItemStack(CustomItems.spellArcane)); // Insiders diff --git a/src/main/java/noppes/npcs/controllers/data/Magic.java b/src/main/java/noppes/npcs/controllers/data/Magic.java index eaea2608c..1b5636bc1 100644 --- a/src/main/java/noppes/npcs/controllers/data/Magic.java +++ b/src/main/java/noppes/npcs/controllers/data/Magic.java @@ -14,6 +14,9 @@ public class Magic implements IMagic { public int color = Integer.parseInt("FF00", 16); public int id = -1; + public int index; + public int priority; + // Icon as an ItemStack or as a texture file public ItemStack iconItem = null; public String iconTexture = ""; @@ -30,6 +33,14 @@ public class Magic implements IMagic { this.id = id; } + public Magic(int id, String name, int color, int index, int priority) { + this.name = name; + this.color = color; + this.id = id; + this.index = index; + this.priority = priority; + } + public static String formatName(String name) { name = name.toLowerCase().trim(); return name.substring(0, 1).toUpperCase() + name.substring(1); @@ -39,6 +50,8 @@ public class Magic implements IMagic { name = compound.getString("Name"); color = compound.getInteger("Color"); id = compound.getInteger("Slot"); + index = compound.getInteger("Index"); + priority = compound.getInteger("Priority"); if(compound.hasKey("IconItem")){ NBTTagCompound itemTag = compound.getCompoundTag("IconItem"); @@ -63,6 +76,8 @@ public class Magic implements IMagic { compound.setInteger("Slot", id); compound.setString("Name", name); compound.setInteger("Color", color); + compound.setInteger("Index", index); + compound.setInteger("Priority", priority); if(iconItem != null) { NBTTagCompound itemTag = new NBTTagCompound(); @@ -96,6 +111,22 @@ public class Magic implements IMagic { this.name = name; } + public int getPriority() { + return priority; + } + + public void setPriority(int priority) { + this.priority = priority; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + public void setColor(int color) { this.color = color; } From a973eca54cdb42db402abc99cae01ab63eee92c5 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 4 Feb 2025 14:38:13 -0500 Subject: [PATCH 121/157] Huge Chart Implementation --- .../npcs/client/gui/global/GuiDiagram.java | 713 ++++++++++++------ .../npcs/client/gui/global/GuiMagicMap.java | 4 +- .../npcs/controllers/MagicController.java | 20 +- 3 files changed, 511 insertions(+), 226 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java b/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java index 2c0ee2fac..404e3628d 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java @@ -14,56 +14,63 @@ import org.lwjgl.opengl.GL11; /** * Abstract GUI class for drawing diagrams with icons (nodes) and connections (arrows). * - * Features: - * - Uses a parent GuiNPCInterface to disable mouse interaction when a subgui is active. - * - Caches icons and connections (subclasses must implement createIcons() and createConnections()). - * - DiagramIcon now has an index (for ring, row, or level) and a priority (for ordering). - * - New manual layout types (CIRCULAR_MANUAL, SQUARE_MANUAL, TREE_MANUAL) use index and priority - * to order nodes. - * - Arrow-drawing options: curvedArrows (if false, straight lines) and curveAngle (in degrees). - * - For curved arrows, hit-detection is done by approximating the quadratic Bezier with 20 segments. + * Features include: + *

    + *
  • Parent reference to disable mouse interaction when a subGUI is active.
  • + *
  • Caching for icons and connections (subclasses must implement createIcons() and createConnections()).
  • + *
  • Support for different layout types (circular, square, tree, generated, and manual versions) + * plus a CHART layout.
  • + *
  • Drawing of connections as either straight or curved arrows (with hit‐detection improved for curves).
  • + *
  • Chart layout: a grid with header icons and inner cells that show connection colors. + * When hovering over a header or cell, only the corresponding row/column (or cell and its two icons) are highlighted + * while all non‑relevant cells are dimmed. Also, cells with no connection are drawn with a darker gray. + *
  • + *
  • Zooming and panning controls apply to both chart and non‑chart layouts.
  • + *
  • Callbacks for icon and connection interactions including click, held, release and hover events.
  • + *
*/ public abstract class GuiDiagram extends Gui { - // Diagram Area & Controls - protected int x, y, width, height; - protected float panX = 0, panY = 0; - protected float zoom = 1.0f; - protected boolean dragging = false; - protected int lastDragX, lastDragY; + // --- Diagram Area & Controls --- + protected int x, y, width, height; // Drawing area for the diagram + protected float panX = 0, panY = 0; // Panning offsets + protected float zoom = 1.0f; // Zoom factor + protected boolean dragging = false; // Flag indicating active panning + protected int lastDragX, lastDragY; // Last mouse positions used for panning - // Node (Icon) Sizing - protected int iconSize = 16; - protected int slotPadding = 4; - protected int slotSize = iconSize + slotPadding; + // --- Node (Icon) Sizing --- + protected int iconSize = 16; // Icon image size (square) + protected int slotPadding = 4; // Padding around icons + protected int slotSize = iconSize + slotPadding; // Total size of the icon box - // Node Box Appearance - protected int iconBackgroundColor = 0xFF999999; - protected int iconBorderColor = 0xFF555555; - protected int iconBorderThickness = 1; + // --- Icon Box Appearance --- + protected int iconBackgroundColor = 0xFF999999; // Background color for icon boxes + protected int iconBorderColor = 0xFF555555; // Border color for icon boxes + protected int iconBorderThickness = 1; // Border thickness in pixels - // Connection Options - protected boolean showArrowHeads = true; - protected boolean useColorScaling = true; + // --- Connection Options --- + protected boolean showArrowHeads = true; // Whether to draw arrow heads + protected boolean useColorScaling = true; // Scale connection color based on a percentage - // Layout Options + // --- Layout Options --- public enum DiagramLayout { CIRCULAR, SQUARE, TREE, GENERATED, - CIRCULAR_MANUAL, SQUARE_MANUAL, TREE_MANUAL + CIRCULAR_MANUAL, SQUARE_MANUAL, TREE_MANUAL, + CHART } - protected DiagramLayout layout = DiagramLayout.CIRCULAR; + protected DiagramLayout layout = DiagramLayout.CIRCULAR; // Default layout /** - * Sets the layout and invalidates caches. + * Sets the layout type and invalidates caches. */ public void setLayout(DiagramLayout layout) { this.layout = layout; invalidateCache(); } - // Arrow Drawing Options - protected boolean curvedArrows = true; // if false, straight lines are drawn. - protected int curveAngle = 15; // in degrees; adjust for "hardness" of curve. + // --- Arrow Drawing Options --- + protected boolean curvedArrows = true; // If false, draw straight connection lines + protected int curveAngle = 15; // Curvature angle in degrees public void setCurvedArrows(boolean curved) { this.curvedArrows = curved; @@ -72,13 +79,13 @@ public abstract class GuiDiagram extends Gui { this.curveAngle = angle; } - // Caching for positions and for icons/connections. - protected Map cachedPositions = null; - protected List iconsCache = null; - protected List connectionsCache = null; + // --- Caching for icons and connections --- + protected Map cachedPositions = null; // Cached positions for nodes (non-CHART) + protected List iconsCache = null; // Cached list of icons + protected List connectionsCache = null; // Cached list of connections /** - * Clears all caches. + * Clears cached layout information. */ public void invalidateCache() { cachedPositions = null; @@ -86,10 +93,10 @@ public abstract class GuiDiagram extends Gui { connectionsCache = null; } - // Parent Reference + // --- Parent reference --- protected GuiNPCInterface parent; - // Constructor + // --- Constructor --- public GuiDiagram(GuiNPCInterface parent, int x, int y, int width, int height) { this.parent = parent; this.x = x; @@ -98,7 +105,7 @@ public abstract class GuiDiagram extends Gui { this.height = height; } - // Data Providers – Subclasses must implement these. + // --- Data Providers (Subclasses must implement these) --- protected abstract List createIcons(); protected abstract List createConnections(); @@ -120,7 +127,14 @@ public abstract class GuiDiagram extends Gui { */ protected abstract void renderIcon(DiagramIcon icon, int posX, int posY, IconRenderState state); + /** + * Returns the tooltip text lines for an icon. + */ protected List getIconTooltip(DiagramIcon icon) { return null; } + + /** + * Returns the tooltip text lines for a connection. + */ protected List getConnectionTooltip(DiagramConnection conn) { List tooltip = new ArrayList<>(); DiagramIcon iconFrom = getIconById(conn.idFrom); @@ -138,33 +152,41 @@ public abstract class GuiDiagram extends Gui { } protected String getIconName(DiagramIcon icon) { return "Icon " + icon.id; } - // Layout Calculation – Chooses algorithm based on layout type. + // --- Layout Calculation --- + /** + * For non‑CHART layouts, returns the mapping from node ID to (x,y) position. + * CHART layout is drawn directly. + */ protected Map calculatePositions() { if (cachedPositions != null) return cachedPositions; + if (layout == DiagramLayout.CHART) { + return new HashMap<>(); + } switch (layout) { - case CIRCULAR: cachedPositions = calculateCircularPositions(); break; - case SQUARE: cachedPositions = calculateSquarePositions(); break; - case TREE: cachedPositions = calculateTreePositions(); break; - case GENERATED: cachedPositions = calculateGeneratedPositions(); break; - case CIRCULAR_MANUAL: cachedPositions = calculateCircularManualPositions(); break; - case SQUARE_MANUAL: cachedPositions = calculateSquareManualPositions(); break; - case TREE_MANUAL: cachedPositions = calculateTreeManualPositions(); break; - default: cachedPositions = calculateCircularPositions(); break; + case CIRCULAR: cachedPositions = calculateCircularPositions(); break; + case SQUARE: cachedPositions = calculateSquarePositions(); break; + case TREE: cachedPositions = calculateTreePositions(); break; + case GENERATED: cachedPositions = calculateGeneratedPositions(); break; + case CIRCULAR_MANUAL: cachedPositions = calculateCircularManualPositions(); break; + case SQUARE_MANUAL: cachedPositions = calculateSquareManualPositions(); break; + case TREE_MANUAL: cachedPositions = calculateTreeManualPositions(); break; + default: cachedPositions = calculateCircularPositions(); break; } return cachedPositions; } - // Standard Layouts: + // --- Standard Layout Methods --- + protected Map calculateCircularPositions() { List icons = getIcons(); Map positions = new HashMap<>(); int count = icons.size(); - int centerX = x + width / 2, centerY = y + height / 2; - int radius = Math.min(width, height) / 2 - iconSize - 10; + int centerX = x + width/2, centerY = y + height/2; + int radius = Math.min(width, height)/2 - iconSize - 10; for (int i = 0; i < count; i++) { double angle = 2 * Math.PI * i / count; - int posX = centerX + (int) (radius * Math.cos(angle)); - int posY = centerY + (int) (radius * Math.sin(angle)); + int posX = centerX + (int)(radius * Math.cos(angle)); + int posY = centerY + (int)(radius * Math.sin(angle)); positions.put(icons.get(i).id, new Point(posX, posY)); } return positions; @@ -174,14 +196,14 @@ public abstract class GuiDiagram extends Gui { List icons = getIcons(); Map positions = new HashMap<>(); int count = icons.size(); - int n = (int) Math.ceil(Math.sqrt(count)); + int n = (int)Math.ceil(Math.sqrt(count)); int gridWidth = width - 20, gridHeight = height - 20; int cellWidth = gridWidth / n, cellHeight = gridHeight / n; - int startX = x + (width - gridWidth) / 2, startY = y + (height - gridHeight) / 2; + int startX = x + (width - gridWidth)/2, startY = y + (height - gridHeight)/2; for (int i = 0; i < count; i++) { int row = i / n, col = i % n; - int posX = startX + col * cellWidth + cellWidth / 2; - int posY = startY + row * cellHeight + cellHeight / 2; + int posX = startX + col * cellWidth + cellWidth/2; + int posY = startY + row * cellHeight + cellHeight/2; positions.put(icons.get(i).id, new Point(posX, posY)); } return positions; @@ -191,15 +213,15 @@ public abstract class GuiDiagram extends Gui { List icons = getIcons(); Map positions = new HashMap<>(); int count = icons.size(); - int levels = (int) Math.ceil(Math.log(count + 1) / Math.log(2)); + int levels = (int)Math.ceil(Math.log(count + 1) / Math.log(2)); int levelHeight = height / (levels + 1); int index = 0; for (int level = 0; level < levels && index < count; level++) { - int nodesThisLevel = (int) Math.min(Math.pow(2, level), count - index); + int nodesThisLevel = (int)Math.min(Math.pow(2, level), count - index); int levelWidth = width - 20; int cellWidth = levelWidth / nodesThisLevel; for (int i = 0; i < nodesThisLevel && index < count; i++, index++) { - int posX = x + 10 + i * cellWidth + cellWidth / 2; + int posX = x + 10 + i * cellWidth + cellWidth/2; int posY = y + (level + 1) * levelHeight; positions.put(icons.get(index).id, new Point(posX, posY)); } @@ -213,8 +235,8 @@ public abstract class GuiDiagram extends Gui { Map> graph = buildGraph(icons, connections); List> clusters = getConnectedComponents(graph); int clusterCount = clusters.size(); - int gridCols = (int) Math.ceil(Math.sqrt(clusterCount)); - int gridRows = (int) Math.ceil((double) clusterCount / gridCols); + int gridCols = (int)Math.ceil(Math.sqrt(clusterCount)); + int gridRows = (int)Math.ceil((double)clusterCount / gridCols); int clusterMargin = 20; int compWidth = (width - (gridCols + 1) * clusterMargin) / gridCols; int compHeight = (height - (gridRows + 1) * clusterMargin) / gridRows; @@ -240,7 +262,7 @@ public abstract class GuiDiagram extends Gui { return globalPositions; } - // Helpers for generated layout. + // --- Helpers for Generated Layout --- private Map> buildGraph(List icons, List connections) { Map> graph = new HashMap<>(); for (DiagramIcon icon : icons) { @@ -270,9 +292,8 @@ public abstract class GuiDiagram extends Gui { visited.add(current); comp.add(current); for (Integer neighbor : graph.get(current)) { - if (!visited.contains(neighbor)) { + if (!visited.contains(neighbor)) dfsComponent(neighbor, graph, visited, comp); - } } } private boolean isCycle(Set cluster, Map> graph) { @@ -298,11 +319,11 @@ public abstract class GuiDiagram extends Gui { } private boolean isSquare(Set cluster) { int n = cluster.size(); - int sqrt = (int) Math.round(Math.sqrt(n)); + int sqrt = (int)Math.round(Math.sqrt(n)); return sqrt * sqrt == n; } - // Layout algorithms for clusters: + // --- Layout Algorithms for Clusters --- private Map layoutCycle(Set cluster, int compX, int compY, int compWidth, int compHeight) { Map positions = new HashMap<>(); int centerX = compX + compWidth / 2, centerY = compY + compHeight / 2; @@ -310,8 +331,8 @@ public abstract class GuiDiagram extends Gui { int i = 0; for (Integer id : cluster) { double angle = 2 * Math.PI * i / cluster.size(); - int posX = centerX + (int) (radius * Math.cos(angle)); - int posY = centerY + (int) (radius * Math.sin(angle)); + int posX = centerX + (int)(radius * Math.cos(angle)); + int posY = centerY + (int)(radius * Math.sin(angle)); positions.put(id, new Point(posX, posY)); i++; } @@ -362,8 +383,8 @@ public abstract class GuiDiagram extends Gui { double spacing = compWidth / (nodesAtLevel.size() + 1.0); for (int i = 0; i < nodesAtLevel.size(); i++) { int id = nodesAtLevel.get(i); - int posX = compX + (int) ((i + 1) * spacing); - int posY = compY + (int) (lvl * levelHeight + levelHeight / 2); + int posX = compX + (int)((i + 1) * spacing); + int posY = compY + (int)(lvl * levelHeight + levelHeight / 2); positions.put(id, new Point(posX, posY)); } } @@ -372,7 +393,7 @@ public abstract class GuiDiagram extends Gui { private Map layoutSquare(Set cluster, int compX, int compY, int compWidth, int compHeight) { Map positions = new HashMap<>(); - int n = (int) Math.round(Math.sqrt(cluster.size())); + int n = (int)Math.round(Math.sqrt(cluster.size())); int gridCellWidth = compWidth / n, gridCellHeight = compHeight / n; int index = 0; List nodes = new ArrayList<>(cluster); @@ -463,7 +484,8 @@ public abstract class GuiDiagram extends Gui { return positions; } - // Manual Layouts – using index (ring) and priority. + // --- Manual Layouts --- + // Manual layouts use the icon index (e.g. ring number, row, level) and the priority for ordering. private Map calculateCircularManualPositions() { List icons = getIcons(); Map> groups = new TreeMap<>(); @@ -471,22 +493,21 @@ public abstract class GuiDiagram extends Gui { groups.computeIfAbsent(icon.index, k -> new ArrayList<>()).add(icon); } Map positions = new HashMap<>(); - int centerX = x + width / 2, centerY = y + height / 2; + int centerX = x + width/2, centerY = y + height/2; int maxRing = groups.isEmpty() ? 0 : Collections.max(groups.keySet()); - int maxRadius = Math.min(width, height) / 2 - iconSize - 10; - double ringSpacing = (maxRing + 1) > 0 ? (double) maxRadius / (maxRing + 1) : 0; - // For each ring, sort by priority. For ring 0, start at -90° (top); for higher rings, start at -135°. + int maxRadius = Math.min(width, height)/2 - iconSize - 10; + double ringSpacing = (maxRing + 1) > 0 ? (double)maxRadius/(maxRing + 1) : 0; for (Map.Entry> entry : groups.entrySet()) { int ring = entry.getKey(); List groupIcons = entry.getValue(); groupIcons.sort(Comparator.comparingInt(icon -> icon.priority)); double radius = ringSpacing * (ring + 1); int count = groupIcons.size(); - double startAngle = (ring == 0) ? -Math.PI / 2 : -3 * Math.PI / 4; + double startAngle = (ring == 0) ? -Math.PI/2 : -3 * Math.PI/4; for (int i = 0; i < count; i++) { double angle = startAngle + 2 * Math.PI * i / count; - int posX = centerX + (int) (radius * Math.cos(angle)); - int posY = centerY + (int) (radius * Math.sin(angle)); + int posX = centerX + (int)(radius * Math.cos(angle)); + int posY = centerY + (int)(radius * Math.sin(angle)); positions.put(groupIcons.get(i).id, new Point(posX, posY)); } } @@ -500,11 +521,10 @@ public abstract class GuiDiagram extends Gui { groups.computeIfAbsent(icon.index, k -> new ArrayList<>()).add(icon); } Map positions = new HashMap<>(); - int centerX = x + width / 2, centerY = y + height / 2; + int centerX = x + width/2, centerY = y + height/2; int maxRing = groups.isEmpty() ? 0 : Collections.max(groups.keySet()); - int halfSide = Math.min(width, height) / 2 - iconSize - 10; - double ringSpacing = (maxRing + 1) > 0 ? (double) halfSide / (maxRing + 1) : 0; - // Distribute each ring's icons along the square perimeter. + int halfSide = Math.min(width, height)/2 - iconSize - 10; + double ringSpacing = (maxRing + 1) > 0 ? (double)halfSide/(maxRing + 1) : 0; for (Map.Entry> entry : groups.entrySet()) { int ring = entry.getKey(); List groupIcons = entry.getValue(); @@ -516,17 +536,17 @@ public abstract class GuiDiagram extends Gui { double posAlong = (perimeter * i) / count; int posX, posY; if (posAlong < 2 * offset) { - posX = centerX - (int) offset + (int) posAlong; - posY = centerY - (int) offset; + posX = centerX - (int)offset + (int)posAlong; + posY = centerY - (int)offset; } else if (posAlong < 4 * offset) { - posX = centerX + (int) offset; - posY = centerY - (int) offset + (int) (posAlong - 2 * offset); + posX = centerX + (int)offset; + posY = centerY - (int)offset + (int)(posAlong - 2 * offset); } else if (posAlong < 6 * offset) { - posX = centerX + (int) offset - (int) (posAlong - 4 * offset); - posY = centerY + (int) offset; + posX = centerX + (int)offset - (int)(posAlong - 4 * offset); + posY = centerY + (int)offset; } else { - posX = centerX - (int) offset; - posY = centerY + (int) offset - (int) (posAlong - 6 * offset); + posX = centerX - (int)offset; + posY = centerY + (int)offset - (int)(posAlong - 6 * offset); } positions.put(groupIcons.get(i).id, new Point(posX, posY)); } @@ -558,11 +578,10 @@ public abstract class GuiDiagram extends Gui { return positions; } - // Arrow Drawing: + // --- Arrow Drawing Methods --- /** - * Draws a connection line. - * If curvedArrows is false, draws a straight line. - * Otherwise draws a quadratic Bezier curve using curveAngle for offset. + * Draws a connection line between two points. + * If curvedArrows is enabled, draws a quadratic Bezier curve. */ protected void drawConnectionLine(int x1, int y1, int x2, int y2, DiagramConnection conn, boolean dim) { int color = getConnectionColor(conn); @@ -593,7 +612,7 @@ public abstract class GuiDiagram extends Gui { double perpX = -dy / len, perpY = dx / len; Point control = new Point((x1 + x2) / 2 + (int)(perpX * offset), (y1 + y2) / 2 + (int)(perpY * offset)); - int segments = 300; + int segments = 100; GL11.glPushAttrib(GL11.GL_ENABLE_BIT); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glLineWidth(2.0F); @@ -616,8 +635,7 @@ public abstract class GuiDiagram extends Gui { } /** - * Draws the arrow head. - * For curved arrows, the head is aligned with the derivative at t=0.95. + * Draws the arrow head at the end of a connection. */ protected void drawArrowHead(int x1, int y1, int x2, int y2, DiagramConnection conn, boolean dim) { int color = getConnectionColor(conn); @@ -643,16 +661,16 @@ public abstract class GuiDiagram extends Gui { float defenderEdgeX = x2 - (slotSize / 2f) * (float)Math.cos(angle); float defenderEdgeY = y2 - (slotSize / 2f) * (float)Math.sin(angle); int arrowSize = 6; - float leftX = (float)(defenderEdgeX - arrowSize * Math.cos(angle - Math.PI/6)); - float leftY = (float)(defenderEdgeY - arrowSize * Math.sin(angle - Math.PI/6)); - float rightX = (float)(defenderEdgeX - arrowSize * Math.cos(angle + Math.PI/6)); - float rightY = (float)(defenderEdgeY - arrowSize * Math.sin(angle + Math.PI/6)); + float leftX = defenderEdgeX - arrowSize * (float)Math.cos(angle - Math.PI / 6); + float leftY = defenderEdgeY - arrowSize * (float)Math.sin(angle - Math.PI / 6); + float rightX = defenderEdgeX - arrowSize * (float)Math.cos(angle + Math.PI / 6); + float rightY = defenderEdgeY - arrowSize * (float)Math.sin(angle + Math.PI / 6); GL11.glPushAttrib(GL11.GL_ENABLE_BIT); GL11.glDisable(GL11.GL_TEXTURE_2D); - float rr = ((color >> 16)&0xFF)/255f; - float gg = ((color >> 8)&0xFF)/255f; - float bb = (color&0xFF)/255f; - if(dim){ rr*=0.4f; gg*=0.4f; bb*=0.4f; } + float rr = ((color >> 16) & 0xFF) / 255f; + float gg = ((color >> 8) & 0xFF) / 255f; + float bb = (color & 0xFF) / 255f; + if(dim){ rr *= 0.4f; gg *= 0.4f; bb *= 0.4f; } GL11.glColor4f(rr, gg, bb, 1f); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glBegin(GL11.GL_TRIANGLES); @@ -665,7 +683,7 @@ public abstract class GuiDiagram extends Gui { GL11.glPopAttrib(); } - // Standard Icon Box Drawing + // --- Standard Icon Box Drawing --- protected void drawIconBox(int slotX, int slotY, int slotSize, boolean highlighted) { int bg = highlighted ? mixColors(iconBackgroundColor, 0xFFFFFFFF, 0.2f) : iconBackgroundColor; drawRect(slotX, slotY, slotX + slotSize, slotY + slotSize, bg); @@ -686,7 +704,7 @@ public abstract class GuiDiagram extends Gui { return (a << 24) | (r << 16) | (g << 8) | b; } - // Hit-detection helper for curved arrows. + // --- Hit-detection helpers --- private double distanceToBezier(Point start, Point control, Point end, int segments, int px, int py) { double minDist = Double.MAX_VALUE; Point prev = null; @@ -697,7 +715,7 @@ public abstract class GuiDiagram extends Gui { Point curr = new Point(x, y); if (prev != null) { double d = distancePointToSegment(px, py, prev, curr); - if (d < minDist) minDist = d; + if(d < minDist) minDist = d; } prev = curr; } @@ -710,18 +728,245 @@ public abstract class GuiDiagram extends Gui { double lenSq = C * C + D * D; double param = (lenSq != 0) ? (dot / lenSq) : -1; double xx, yy; - if (param < 0) { xx = a.x; yy = a.y; } - else if (param > 1) { xx = b.x; yy = b.y; } + if(param < 0){ xx = a.x; yy = a.y; } + else if(param > 1){ xx = b.x; yy = b.y; } else { xx = a.x + param * C; yy = a.y + param * D; } double dx = px - xx, dy = py - yy; return Math.sqrt(dx * dx + dy * dy); } - // Main Draw Method + // --- CHART Layout Drawing --- + /** + * Draws the CHART layout. + *
    + *
  • The grid has (n+1) columns and rows, where n is the number of icons.
  • + *
  • The top row and left column show header icons.
  • + *
  • Each inner cell is filled with the connection color (if one exists) or a darker gray otherwise.
  • + *
  • Hovering over a header or inner cell highlights the corresponding column/row or cell (and its two header icons), + * while dimming non-relevant cells.
  • + *
  • Zoom and pan are applied to the entire chart.
  • + *
+ */ + private void drawChartDiagram(int mouseX, int mouseY, boolean subGui) { + Minecraft mc = Minecraft.getMinecraft(); + ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); + int factor = sr.getScaleFactor(); + + // 1. Draw the static background for the entire diagram. + drawRect(x, y, x + width, y + height, 0xFF333333); + + // 2. Setup scissor to clip drawing to the diagram area. + GL11.glEnable(GL11.GL_SCISSOR_TEST); + GL11.glScissor(x * factor, (sr.getScaledHeight() - (y + height)) * factor, width * factor, height * factor); + + // 3. Push a matrix and apply pan/zoom for grid, icons, and overlays. + GL11.glPushMatrix(); + int centerX = x + width / 2; + int centerY = y + height / 2; + GL11.glTranslatef(centerX + panX, centerY + panY, 0); + GL11.glScalef(zoom, zoom, 1.0f); + GL11.glTranslatef(-centerX, -centerY, 0); + + // 4. Compute grid parameters. + List icons = getIcons(); + int n = icons.size(); + int cols = n + 1, rows = n + 1; + int cellSize = Math.min(width / cols, height / rows); + int gridWidth = cellSize * cols; + int gridHeight = cellSize * rows; + int startX = x + (width - gridWidth) / 2; + int startY = y + (height - gridHeight) / 2; + + // 5. Draw grid cells. + for (int row = 0; row < rows; row++) { + for (int col = 0; col < cols; col++) { + int cellX = startX + col * cellSize; + int cellY = startY + row * cellSize; + int fillColor = 0xFFCCCCCC; // Default for header cells. + if (row > 0 && col > 0) { // inner cell: use connection color (or darker gray) + DiagramIcon leftIcon = icons.get(row - 1); + DiagramIcon topIcon = icons.get(col - 1); + DiagramConnection conn = getConnectionByIds(leftIcon.id, topIcon.id); + fillColor = (conn != null) ? getConnectionColor(conn) : 0xFF777777; + } + drawRect(cellX, cellY, cellX + cellSize, cellY + cellSize, fillColor); + } + } + + // 6. Draw grid lines. + GL11.glPushAttrib(GL11.GL_ENABLE_BIT); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor4f(0, 0, 0, 1); + GL11.glLineWidth(1.0f); + GL11.glBegin(GL11.GL_LINES); + for (int col = 0; col <= cols; col++) { + int xLine = startX + col * cellSize; + GL11.glVertex2i(xLine, startY); + GL11.glVertex2i(xLine, startY + gridHeight); + } + for (int row = 0; row <= rows; row++) { + int yLine = startY + row * cellSize; + GL11.glVertex2i(startX, yLine); + GL11.glVertex2i(startX + gridWidth, yLine); + } + GL11.glEnd(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopAttrib(); + + // 7. Draw header icons (top and left) scaled to fit within each cell. + float iconMargin = 1f; // margin in pixels inside the cell. + float iconScale = (cellSize - iconMargin) / (float)iconSize; + for (int i = 0; i < n; i++) { + // Top header icon: + int topHeaderCenterX = startX + (i + 1) * cellSize + cellSize / 2; + int topHeaderCenterY = startY + cellSize / 2; + GL11.glPushMatrix(); + GL11.glTranslatef(topHeaderCenterX, topHeaderCenterY, 0); + GL11.glScalef(iconScale, iconScale, 1); + // renderIcon should draw centered at (0,0) + renderIcon(icons.get(i), 0, 0, IconRenderState.DEFAULT); + GL11.glPopMatrix(); + + // Left header icon: + int leftHeaderCenterX = startX + cellSize / 2; + int leftHeaderCenterY = startY + (i + 1) * cellSize + cellSize / 2; + GL11.glPushMatrix(); + GL11.glTranslatef(leftHeaderCenterX, leftHeaderCenterY, 0); + GL11.glScalef(iconScale, iconScale, 1); + renderIcon(icons.get(i), 0, 0, IconRenderState.DEFAULT); + GL11.glPopMatrix(); + } + + // 8. Compute effective mouse coordinates (reverse pan/zoom). + int effectiveMouseX = (int)(((float)mouseX - (centerX + panX)) / zoom + centerX); + int effectiveMouseY = (int)(((float)mouseY - (centerY + panY)) / zoom + centerY); + + // 9. Determine hover state on the grid. + boolean hoverInGrid = (effectiveMouseX >= startX && effectiveMouseX < startX + gridWidth && + effectiveMouseY >= startY && effectiveMouseY < startY + gridHeight); + int hoveredRow = -1, hoveredCol = -1; + Set highlightTop = new HashSet<>(); + Set highlightLeft = new HashSet<>(); + List tooltipToShow = null; + if (hoverInGrid) { + int colIndex = (effectiveMouseX - startX) / cellSize; + int rowIndex = (effectiveMouseY - startY) / cellSize; + // If hovering over a top header cell. + if (rowIndex == 0 && colIndex >= 1) { + highlightTop.add(colIndex - 1); + tooltipToShow = getIconTooltip(icons.get(colIndex - 1)); + onIconHover(icons.get(colIndex - 1)); + } + // If hovering over a left header cell. + else if (colIndex == 0 && rowIndex >= 1) { + highlightLeft.add(rowIndex - 1); + tooltipToShow = getIconTooltip(icons.get(rowIndex - 1)); + onIconHover(icons.get(rowIndex - 1)); + } + // Else, hovering over an inner cell. + else if (rowIndex >= 1 && colIndex >= 1) { + hoveredRow = rowIndex - 1; + hoveredCol = colIndex - 1; + highlightTop.add(hoveredCol); + highlightLeft.add(hoveredRow); + DiagramIcon leftIcon = icons.get(hoveredRow); + DiagramIcon topIcon = icons.get(hoveredCol); + DiagramConnection conn = getConnectionByIds(leftIcon.id, topIcon.id); + if (conn != null) { + tooltipToShow = getConnectionTooltip(conn); + onConnectionHover(conn); + } + } + } + + // 10. Draw hover overlay: + // Dim all inner cells (row>=1 & col>=1) not in highlighted row/column. + GL11.glPushAttrib(GL11.GL_ENABLE_BIT); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor4f(0, 0, 0, 0.5f); + GL11.glBegin(GL11.GL_QUADS); + for (int r = 1; r < rows; r++) { + for (int c = 1; c < cols; c++) { + boolean keepBright = false; + if (!highlightTop.isEmpty() && highlightTop.contains(c - 1)) + keepBright = true; + if (!highlightLeft.isEmpty() && highlightLeft.contains(r - 1)) + keepBright = true; + // Also, if a specific cell is hovered, its entire row/column is bright. + if (hoveredRow != -1 && hoveredCol != -1) { + if (r - 1 == hoveredRow || c - 1 == hoveredCol) + keepBright = true; + } + if (!keepBright) { + int cellX = startX + c * cellSize; + int cellY = startY + r * cellSize; + GL11.glVertex2i(cellX, cellY); + GL11.glVertex2i(cellX + cellSize, cellY); + GL11.glVertex2i(cellX + cellSize, cellY + cellSize); + GL11.glVertex2i(cellX, cellY + cellSize); + } + } + } + GL11.glEnd(); + // Then draw a white overlay on the highlighted headers/inner cell. + GL11.glColor4f(1, 1, 1, 0.3f); + GL11.glBegin(GL11.GL_QUADS); + for (int i = 0; i < n; i++) { + if (highlightTop.contains(i)) { + int hx = startX + (i + 1) * cellSize; + int hy = startY; + GL11.glVertex2i(hx, hy); + GL11.glVertex2i(hx + cellSize, hy); + GL11.glVertex2i(hx + cellSize, hy + cellSize); + GL11.glVertex2i(hx, hy + cellSize); + } + if (highlightLeft.contains(i)) { + int hx = startX; + int hy = startY + (i + 1) * cellSize; + GL11.glVertex2i(hx, hy); + GL11.glVertex2i(hx + cellSize, hy); + GL11.glVertex2i(hx + cellSize, hy + cellSize); + GL11.glVertex2i(hx, hy + cellSize); + } + } + if (hoveredRow != -1 && hoveredCol != -1) { + int cellX = startX + (hoveredCol + 1) * cellSize; + int cellY = startY + (hoveredRow + 1) * cellSize; + GL11.glVertex2i(cellX, cellY); + GL11.glVertex2i(cellX + cellSize, cellY); + GL11.glVertex2i(cellX + cellSize, cellY + cellSize); + GL11.glVertex2i(cellX, cellY + cellSize); + } + GL11.glEnd(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopAttrib(); + + // End pan/zoom block. + GL11.glPopMatrix(); + GL11.glDisable(GL11.GL_SCISSOR_TEST); + + // 11. Draw tooltip (using raw screen coordinates). + if (tooltipToShow != null && !tooltipToShow.isEmpty()) { + drawHoveringText(tooltipToShow, mouseX, mouseY, mc.fontRenderer); + } + } + + + + /** + * Main method for drawing the diagram. + * If layout == CHART, delegates to drawChartDiagram(). + * Otherwise, applies pan/zoom, draws connections (with hit-detection fixed for curves) + * and icons, and shows tooltips and hover events. + */ public void drawDiagram(int mouseX, int mouseY, boolean subGui) { boolean allowInput = (parent == null || !parent.hasSubGui()); if (allowInput && isWithin(mouseX, mouseY) && !subGui) handleMouseScroll(Mouse.getDWheel()); + if (layout == DiagramLayout.CHART) { + drawChartDiagram(mouseX, mouseY, subGui); + return; + } Minecraft mc = Minecraft.getMinecraft(); ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); int factor = sr.getScaleFactor(); @@ -732,6 +977,7 @@ public abstract class GuiDiagram extends Gui { Integer hoveredIconId = null; int hoveredConnFrom = -1, hoveredConnTo = -1; Set selectedIconIds = new HashSet<>(); + // Check if mouse is over an icon. for (DiagramIcon icon : getIcons()) { if (!icon.enabled) continue; Point pos = positions.get(icon.id); @@ -741,21 +987,12 @@ public abstract class GuiDiagram extends Gui { effectiveMouseY >= slotY && effectiveMouseY < slotY + slotSize) { hoveredIconId = icon.id; selectedIconIds.add(icon.id); + onIconHover(icon); break; } } - if (hoveredIconId != null) { - for (DiagramConnection conn : getConnections()) { - DiagramIcon iconFrom = getIconById(conn.idFrom); - DiagramIcon iconTo = getIconById(conn.idTo); - if (iconFrom == null || iconTo == null || !iconFrom.enabled || !iconTo.enabled) - continue; - if (conn.idFrom == hoveredIconId || conn.idTo == hoveredIconId) { - selectedIconIds.add(conn.idFrom); - selectedIconIds.add(conn.idTo); - } - } - } else { + // If no icon was hovered, check connections. + if (hoveredIconId == null) { final double threshold = 5.0; outer: for (DiagramConnection conn : getConnections()) { @@ -771,12 +1008,11 @@ public abstract class GuiDiagram extends Gui { double dx = pTo.x - pFrom.x, dy = pTo.y - pFrom.y; double len = Math.sqrt(dx * dx + dy * dy); if (len == 0) len = 1; - double angleRad = Math.toRadians(curveAngle); - double offset = len * Math.tan(angleRad) / 2; + double offset = len * Math.tan(Math.toRadians(curveAngle)) / 2; double perpX = -dy / len, perpY = dx / len; - Point control = new Point((pFrom.x+pTo.x)/2 + (int)(perpX*offset), - (pFrom.y+pTo.y)/2 + (int)(perpY*offset)); - dist = distanceToBezier(pFrom, control, pTo, 20, effectiveMouseX, effectiveMouseY); + Point control = new Point((pFrom.x + pTo.x) / 2 + (int)(perpX * offset), + (pFrom.y + pTo.y) / 2 + (int)(perpY * offset)); + dist = distanceToBezier(pFrom, control, pTo, 200, effectiveMouseX, effectiveMouseY); } else { dist = pointLineDistance(effectiveMouseX, effectiveMouseY, pFrom.x, pFrom.y, pTo.x, pTo.y); } @@ -785,10 +1021,12 @@ public abstract class GuiDiagram extends Gui { hoveredConnTo = conn.idTo; selectedIconIds.add(conn.idFrom); selectedIconIds.add(conn.idTo); + onConnectionHover(conn); break outer; } } } + // Setup scissor. GL11.glEnable(GL11.GL_SCISSOR_TEST); GL11.glScissor(x * factor, (sr.getScaledHeight() - (y + height)) * factor, width * factor, height * factor); drawRect(x, y, x + width, y + height, 0xFF333333); @@ -796,6 +1034,7 @@ public abstract class GuiDiagram extends Gui { GL11.glTranslatef(centerX + panX, centerY + panY, 0); GL11.glScalef(zoom, zoom, 1.0f); GL11.glTranslatef(-centerX, -centerY, 0); + // Draw connections. for (DiagramConnection conn : getConnections()) { DiagramIcon iconFrom = getIconById(conn.idFrom); DiagramIcon iconTo = getIconById(conn.idTo); @@ -805,9 +1044,11 @@ public abstract class GuiDiagram extends Gui { Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; int ax = pFrom.x, ay = pFrom.y, bx = pTo.x, by = pTo.y; - boolean dim = !selectedIconIds.isEmpty() && !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); + boolean dim = !selectedIconIds.isEmpty() && + !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); drawConnectionLine(ax, ay, bx, by, conn, dim); } + // Draw icons. for (DiagramIcon icon : getIcons()) { if (!icon.enabled) continue; Point pos = positions.get(icon.id); @@ -819,6 +1060,7 @@ public abstract class GuiDiagram extends Gui { renderIcon(icon, pos.x, pos.y, state); } GL11.glPopMatrix(); + // Draw arrow heads. if (showArrowHeads) { GL11.glPushMatrix(); GL11.glTranslatef(centerX + panX, centerY + panY, 0); @@ -833,12 +1075,14 @@ public abstract class GuiDiagram extends Gui { Point pTo = positions.get(conn.idTo); if (pFrom == null || pTo == null) continue; int ax = pFrom.x, ay = pFrom.y, bx = pTo.x, by = pTo.y; - boolean dim = !selectedIconIds.isEmpty() && !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); + boolean dim = !selectedIconIds.isEmpty() && + !(selectedIconIds.contains(conn.idFrom) && selectedIconIds.contains(conn.idTo)); drawArrowHead(ax, ay, bx, by, conn, dim); } GL11.glPopMatrix(); } GL11.glDisable(GL11.GL_SCISSOR_TEST); + // Show tooltips if an icon or connection was hovered. if (hoveredIconId != null) { DiagramIcon icon = getIconById(hoveredIconId); List tooltip = getIconTooltip(icon); @@ -852,6 +1096,7 @@ public abstract class GuiDiagram extends Gui { } } + // --- Utility Methods --- protected DiagramIcon getIconById(int id) { for (DiagramIcon icon : getIcons()) { if (icon.id == id) return icon; @@ -893,86 +1138,7 @@ public abstract class GuiDiagram extends Gui { return Math.sqrt(dx * dx + dy * dy); } - // Mouse Handling - public boolean mouseClicked(int mouseX, int mouseY, int mouseButton) { - if (parent != null && parent.hasSubGui()) return false; - if (mouseButton == 0) { - for (DiagramIcon icon : getIcons()) { - if (!icon.enabled || !icon.pressable) continue; - Point pos = calculatePositions().get(icon.id); - if (pos == null) continue; - int centerX = x + width/2, centerY = y + height/2; - int effectiveX = (int)(((float)mouseX - (centerX+panX))/zoom+centerX); - int effectiveY = (int)(((float)mouseY - (centerY+panY))/zoom+centerY); - int slotX = pos.x - slotSize/2, slotY = pos.y - slotSize/2; - if (effectiveX >= slotX && effectiveX < slotX+slotSize && - effectiveY >= slotY && effectiveY < slotY+slotSize) { - onIconClick(icon); - currentlyPressedIcon = icon; - return true; - } - } - if (isWithin(mouseX, mouseY)) { - dragging = true; - lastDragX = mouseX; - lastDragY = mouseY; - return true; - } - } - return false; - } - protected DiagramIcon currentlyPressedIcon = null; - public void mouseClickMove(int mouseX, int mouseY, int mouseButton, long timeSinceLastClick) { - if (parent != null && parent.hasSubGui()) return; - if (dragging) { - int dx = mouseX - lastDragX, dy = mouseY - lastDragY; - panX += dx/zoom*0.7f; - panY += dy/zoom*0.7f; - lastDragX = mouseX; - lastDragY = mouseY; - } - if (currentlyPressedIcon != null) onIconHeld(currentlyPressedIcon); - } - public void mouseReleased(int mouseX, int mouseY, int state) { - if (parent != null && parent.hasSubGui()) return; - if (currentlyPressedIcon != null) { - onIconRelease(currentlyPressedIcon); - currentlyPressedIcon = null; - } - dragging = false; - } - public boolean isWithin(int mouseX, int mouseY) { - if (parent.hasSubGui()) - return false; - return mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height; - } - /** - * Handles zoom based on mouse wheel scrolling. - */ - public void handleMouseScroll(int scrollDelta) { - zoom += scrollDelta * 0.0009f; - if (zoom < 0.5f) zoom = 0.5f; - if (zoom > 2.0f) zoom = 2.0f; - } - /** - * Override to render tooltips. - */ - protected void drawHoveringText(List text, int mouseX, int mouseY, FontRenderer fontRenderer) { - // Default implementation is empty. - } - // Flag Setters - public void setShowArrowHeads(boolean showArrowHeads) { - this.showArrowHeads = showArrowHeads; - } - public void setUseColorScaling(boolean useColorScaling) { - this.useColorScaling = useColorScaling; - } - public enum IconRenderState { - DEFAULT, - HIGHLIGHTED, - NOT_HIGHLIGHTED; - } - // Inner Classes + // --- Inner Helper Classes --- public static class DiagramIcon { public int id; public boolean enabled = true; @@ -997,14 +1163,133 @@ public abstract class GuiDiagram extends Gui { this.hoverText = hoverText; } } - // Icon Event Callbacks + // Used by the CHART layout to represent an inner cell. + private static class ConnectionCell { + int x, y, size; + DiagramConnection conn; + ConnectionCell(int x, int y, int size, DiagramConnection conn) { + this.x = x; this.y = y; this.size = size; this.conn = conn; + } + } + // Simple helper class for rectangles. + private static class Rectangle { + int x, y, width, height; + Rectangle(int x, int y, int width, int height) { + this.x = x; this.y = y; this.width = width; this.height = height; + } + int centerX() { return x + width / 2; } + int centerY() { return y + height / 2; } + } + + public enum IconRenderState { + DEFAULT, + HIGHLIGHTED, + NOT_HIGHLIGHTED; + } + + // --- Mouse Handling --- + public boolean mouseClicked(int mouseX, int mouseY, int mouseButton) { + if (parent != null && parent.hasSubGui()) return false; + if (mouseButton == 0) { + for (DiagramIcon icon : getIcons()) { + if (!icon.enabled || !icon.pressable) continue; + Point pos = calculatePositions().get(icon.id); + if (pos == null) continue; + int centerX = x + width / 2, centerY = y + height / 2; + int effectiveX = (int)(((float)mouseX - (centerX + panX)) / zoom + centerX); + int effectiveY = (int)(((float)mouseY - (centerY + panY)) / zoom + centerY); + int slotX = pos.x - slotSize / 2, slotY = pos.y - slotSize / 2; + if (effectiveX >= slotX && effectiveX < slotX + slotSize && + effectiveY >= slotY && effectiveY < slotY + slotSize) { + onIconClick(icon); + currentlyPressedIcon = icon; + return true; + } + } + if (isWithin(mouseX, mouseY)) { + dragging = true; + lastDragX = mouseX; + lastDragY = mouseY; + return true; + } + } + return false; + } + protected DiagramIcon currentlyPressedIcon = null; + public void mouseClickMove(int mouseX, int mouseY, int mouseButton, long timeSinceLastClick) { + if (parent != null && parent.hasSubGui()) return; + if (dragging) { + int dx = mouseX - lastDragX, dy = mouseY - lastDragY; + panX += dx / zoom * 0.7f; + panY += dy / zoom * 0.7f; + lastDragX = mouseX; + lastDragY = mouseY; + } + if (currentlyPressedIcon != null) onIconHeld(currentlyPressedIcon); + } + public void mouseReleased(int mouseX, int mouseY, int state) { + if (parent != null && parent.hasSubGui()) return; + if (currentlyPressedIcon != null) { + onIconRelease(currentlyPressedIcon); + currentlyPressedIcon = null; + } + dragging = false; + } + public boolean isWithin(int mouseX, int mouseY) { + if (parent.hasSubGui()) + return false; + return mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height; + } + /** + * Handles zooming based on mouse wheel scrolling. + */ + public void handleMouseScroll(int scrollDelta) { + zoom += scrollDelta * 0.0009f; + if (zoom < 0.5f) zoom = 0.5f; + if (zoom > 2.0f) zoom = 2.0f; + } + /** + * Override to render tooltips. + */ + protected void drawHoveringText(List text, int mouseX, int mouseY, FontRenderer fontRenderer) {} + + // --- Flag Setters --- + public void setShowArrowHeads(boolean showArrowHeads) { + this.showArrowHeads = showArrowHeads; + } + public void setUseColorScaling(boolean useColorScaling) { + this.useColorScaling = useColorScaling; + } + + // --- Icon and Connection Event Callbacks --- + /** + * Called when an icon is clicked. + */ protected void onIconClick(DiagramIcon icon) { System.out.println("Icon " + icon.id + " clicked."); } + /** + * Called when an icon is held. + */ protected void onIconHeld(DiagramIcon icon) { System.out.println("Icon " + icon.id + " held."); } + /** + * Called when an icon is released. + */ protected void onIconRelease(DiagramIcon icon) { System.out.println("Icon " + icon.id + " released."); } + /** + * Called when an icon is hovered over. + */ + protected void onIconHover(DiagramIcon icon) { + // Override to handle icon hovering events. + } + /** + * Called when a connection is hovered over. + */ + protected void onConnectionHover(DiagramConnection conn) { + // Override to handle connection hovering events. + } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java index 7954d5f56..01b9ef562 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java @@ -31,9 +31,9 @@ public class GuiMagicMap extends GuiDiagram { for (Magic magic : MagicController.getInstance().magics.values()) { magics.add(magic); } - setLayout(DiagramLayout.CIRCULAR_MANUAL); + setLayout(DiagramLayout.CHART); this.setCurvedArrows(true); - this.setCurveAngle(25); + this.setCurveAngle(-20); } @Override diff --git a/src/main/java/noppes/npcs/controllers/MagicController.java b/src/main/java/noppes/npcs/controllers/MagicController.java index b2c6385af..da72e80a2 100644 --- a/src/main/java/noppes/npcs/controllers/MagicController.java +++ b/src/main/java/noppes/npcs/controllers/MagicController.java @@ -57,7 +57,7 @@ public class MagicController { } catch (Exception ee) { } } magics.clear(); - if (false) { + if (true) { // Create default Pokémon types Magic normal = new Magic(0, "Normal", 0xA8A878); normal.setIconItem(new ItemStack(net.minecraft.init.Items.paper)); // using paper for Normal @@ -205,30 +205,30 @@ public class MagicController { magics.put(fairy.id, fairy); } - if (true || magics.isEmpty()) { + if (false) { // Create default magics - Magic earth = new Magic(0, "Earth", 0x00DD00, 0, 0); + Magic earth = new Magic(0, "Earth", 0x00DD00, 1, 1); earth.setIconItem(new ItemStack(CustomItems.earthElement)); - Magic water = new Magic(1, "Water", 0xF2DD00, 0, 1); + Magic water = new Magic(1, "Water", 0xF2DD00, 1, 2); water.setIconItem(new ItemStack(CustomItems.waterElement)); - Magic fire = new Magic(2, "Fire", 0xDD0000, 0, 2); + Magic fire = new Magic(2, "Fire", 0xDD0000, 1, 3); fire.setIconItem(new ItemStack(CustomItems.spellFire)); - Magic air = new Magic(3, "Air", 0xDD0000, 0, 3); + Magic air = new Magic(3, "Air", 0xDD0000, 1, 0); air.setIconItem(new ItemStack(CustomItems.airElement)); - Magic dark = new Magic(4, "Dark", 0xDD0000, 1, 3); + Magic dark = new Magic(4, "Dark", 0xDD0000, 0, 3); dark.setIconItem(new ItemStack(CustomItems.spellDark)); - Magic holy = new Magic(5, "Holy", 0xDD0000, 1, 1); + Magic holy = new Magic(5, "Holy", 0xDD0000, 0, 1); holy.setIconItem(new ItemStack(CustomItems.spellHoly)); - Magic nature = new Magic(6, "Nature", 0xDD0000, 1, 0); + Magic nature = new Magic(6, "Nature", 0xDD0000, 0, 0); nature.setIconItem(new ItemStack(CustomItems.spellNature)); - Magic arcane = new Magic(7, "Arcane", 0xDD0000, 1, 2); + Magic arcane = new Magic(7, "Arcane", 0xDD0000, 0, 2); arcane.setIconItem(new ItemStack(CustomItems.spellArcane)); // Insiders From dfb4c511ccee767672b3f3c0aa5f973a5a35668d Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 4 Feb 2025 15:39:25 -0500 Subject: [PATCH 122/157] Revamped Model Table --- .../npcs/client/model/blocks/ModelTable.java | 105 ++++++++++++------ .../model/blocks/legacy/ModelLegacyTable.java | 53 +++++++++ .../renderer/blocks/BlockTableRenderer.java | 99 ++++++++++++----- .../java/noppes/npcs/config/ConfigClient.java | 2 + .../textures/models/table/acacia.png | Bin 0 -> 986 bytes .../textures/models/table/birch.png | Bin 0 -> 1064 bytes .../textures/models/table/dark_oak.png | Bin 0 -> 840 bytes .../textures/models/table/jungle.png | Bin 0 -> 1379 bytes .../customnpcs/textures/models/table/oak.png | Bin 0 -> 1015 bytes .../textures/models/table/spruce.png | Bin 0 -> 961 bytes 10 files changed, 197 insertions(+), 62 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyTable.java create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/acacia.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/birch.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/dark_oak.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/jungle.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/oak.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/spruce.png diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelTable.java b/src/main/java/noppes/npcs/client/model/blocks/ModelTable.java index df4b79fef..e44916856 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelTable.java +++ b/src/main/java/noppes/npcs/client/model/blocks/ModelTable.java @@ -1,53 +1,86 @@ package noppes.npcs.client.model.blocks; import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelTable extends ModelBase { - public ModelRenderer Shape1; - public ModelRenderer Table; - public ModelRenderer Shape3; - public ModelRenderer Shape4; - public ModelRenderer Shape5; + public final ModelRenderer Shape1; + private final ModelRenderer cube_r1; + private final ModelRenderer cube_r2; + public final ModelRenderer Shape3; + public final ModelRenderer Shape4; + private final ModelRenderer cube_r3; + public final ModelRenderer Shape2; + private final ModelRenderer cube_r4; + public final ModelRenderer Table; public ModelTable() { - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.mirror = true; - Shape1.addBox(-1F, 0F, -1F, 2, 14, 2); - Shape1.setRotationPoint(-6F, 10F, 6F); - - Table = new ModelRenderer(this, 0, 0); - Table.addBox(0F, -2F, 0F, 16, 2, 16); - Table.setRotationPoint(-8F, 10F, -8F); - - Shape3 = new ModelRenderer(this, 0, 0); - Shape3.addBox(-1F, 0F, -1F, 2, 14, 2); - Shape3.setRotationPoint(6F, 10F, -6F); - - Shape4 = new ModelRenderer(this, 0, 0); - Shape4.addBox(-1F, 0F, -1F, 2, 14, 2); - Shape4.setRotationPoint(6F, 10F, 6F); - - Shape5 = new ModelRenderer(this, 0, 0); - Shape5.mirror = true; - Shape5.addBox(-1F, 0F, -1F, 2, 14, 2); - Shape5.setRotationPoint(-6F, 10F, -6F); + textureWidth = 64; + textureHeight = 64; + + Shape1 = new ModelRenderer(this); + Shape1.setRotationPoint(-4.8333F, 14.8333F, 4.8333F); + Shape1.cubeList.add(new ModelBox(Shape1, 0, 19, -2.1667F, -3.8333F, 0.1667F, 2, 13, 2, 0.0F)); + + cube_r1 = new ModelRenderer(this); + cube_r1.setRotationPoint(-1.1667F, -1.3333F, -2.3333F); + Shape1.addChild(cube_r1); + setRotationAngle(cube_r1, 0.0F, 3.1416F, 0.0F); + cube_r1.cubeList.add(new ModelBox(cube_r1, 8, 14, 0.0F, -2.5F, -2.5F, 0, 5, 5, 0.0F)); + + cube_r2 = new ModelRenderer(this); + cube_r2.setRotationPoint(2.3333F, -1.3333F, 1.1667F); + Shape1.addChild(cube_r2); + setRotationAngle(cube_r2, 0.0F, 3.1416F, 0.0F); + cube_r2.cubeList.add(new ModelBox(cube_r2, 8, 19, -2.5F, -2.5F, 0.0F, 5, 5, 0, 0.0F)); + + Shape3 = new ModelRenderer(this); + Shape3.setRotationPoint(-6.0F, 24.0F, 6.0F); + Shape3.cubeList.add(new ModelBox(Shape3, 8, 19, 6.0F, -13.0F, -12.0F, 5, 5, 0, 0.0F)); + Shape3.cubeList.add(new ModelBox(Shape3, 0, 19, 11.0F, -13.0F, -13.0F, 2, 13, 2, 0.0F)); + Shape3.cubeList.add(new ModelBox(Shape3, 8, 14, 12.0F, -13.0F, -11.0F, 0, 5, 5, 0.0F)); + + Shape4 = new ModelRenderer(this); + Shape4.setRotationPoint(-6.0F, 24.0F, 6.0F); + Shape4.cubeList.add(new ModelBox(Shape4, 8, 19, 6.0F, -13.0F, 0.0F, 5, 5, 0, 0.0F)); + Shape4.cubeList.add(new ModelBox(Shape4, 0, 19, 11.0F, -13.0F, -1.0F, 2, 13, 2, 0.0F)); + + cube_r3 = new ModelRenderer(this); + cube_r3.setRotationPoint(12.0F, -10.5F, -3.5F); + Shape4.addChild(cube_r3); + setRotationAngle(cube_r3, 0.0F, 3.1416F, 0.0F); + cube_r3.cubeList.add(new ModelBox(cube_r3, 8, 14, 0.0F, -2.5F, -2.5F, 0, 5, 5, 0.0F)); + + Shape2 = new ModelRenderer(this); + Shape2.setRotationPoint(0.0F, 24.0F, 6.0F); + Shape2.cubeList.add(new ModelBox(Shape2, 0, 19, -7.0F, -13.0F, -13.0F, 2, 13, 2, 0.0F)); + Shape2.cubeList.add(new ModelBox(Shape2, 8, 14, -6.0F, -13.0F, -11.0F, 0, 5, 5, 0.0F)); + + cube_r4 = new ModelRenderer(this); + cube_r4.setRotationPoint(-2.5F, -10.5F, -12.0F); + Shape2.addChild(cube_r4); + setRotationAngle(cube_r4, 0.0F, 3.1416F, 0.0F); + cube_r4.cubeList.add(new ModelBox(cube_r4, 8, 19, -2.5F, -2.5F, 0.0F, 5, 5, 0, 0.0F)); + + Table = new ModelRenderer(this); + Table.setRotationPoint(0.0F, 24.0F, 6.0F); + Table.cubeList.add(new ModelBox(Table, 0, 0, -8.0F, -16.0F, -14.0F, 16, 3, 16, 0.0F)); } - public void render(Entity entity, float f, float f1, float f2, float f3, - float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - Shape1.render(f5); + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + Shape1.render(f5); Shape3.render(f5); Shape4.render(f5); - Shape5.render(f5); + Shape2.render(f5); } - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; } - } diff --git a/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyTable.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyTable.java new file mode 100644 index 000000000..2bd7aa165 --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyTable.java @@ -0,0 +1,53 @@ +package noppes.npcs.client.model.blocks.legacy; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelLegacyTable extends ModelBase { + public ModelRenderer Shape1; + public ModelRenderer Table; + public ModelRenderer Shape3; + public ModelRenderer Shape4; + public ModelRenderer Shape5; + + public ModelLegacyTable() { + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.mirror = true; + Shape1.addBox(-1F, 0F, -1F, 2, 14, 2); + Shape1.setRotationPoint(-6F, 10F, 6F); + + Table = new ModelRenderer(this, 0, 0); + Table.addBox(0F, -2F, 0F, 16, 2, 16); + Table.setRotationPoint(-8F, 10F, -8F); + + Shape3 = new ModelRenderer(this, 0, 0); + Shape3.addBox(-1F, 0F, -1F, 2, 14, 2); + Shape3.setRotationPoint(6F, 10F, -6F); + + Shape4 = new ModelRenderer(this, 0, 0); + Shape4.addBox(-1F, 0F, -1F, 2, 14, 2); + Shape4.setRotationPoint(6F, 10F, 6F); + + Shape5 = new ModelRenderer(this, 0, 0); + Shape5.mirror = true; + Shape5.addBox(-1F, 0F, -1F, 2, 14, 2); + Shape5.setRotationPoint(-6F, 10F, -6F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, + float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + Shape1.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + +} diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockTableRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockTableRenderer.java index 9a492bf4c..9cc53b0da 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockTableRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockTableRenderer.java @@ -2,25 +2,31 @@ package noppes.npcs.client.renderer.blocks; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockTable; import noppes.npcs.blocks.tiles.TileColorable; import noppes.npcs.client.model.blocks.ModelTable; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyTable; +import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; public class BlockTableRenderer extends BlockRendererInterface{ - private final ModelTable model = new ModelTable(); - private static final ResourceLocation resource1 = new ResourceLocation("customnpcs","textures/cache/planks_oak.png"); - private static final ResourceLocation resource2 = new ResourceLocation("customnpcs","textures/cache/planks_big_oak.png"); - private static final ResourceLocation resource3 = new ResourceLocation("customnpcs","textures/cache/planks_spruce.png"); - private static final ResourceLocation resource4 = new ResourceLocation("customnpcs","textures/cache/planks_birch.png"); - private static final ResourceLocation resource5 = new ResourceLocation("customnpcs","textures/cache/planks_acacia.png"); - private static final ResourceLocation resource6 = new ResourceLocation("customnpcs","textures/cache/planks_jungle.png"); - + private final ModelLegacyTable legacyTable = new ModelLegacyTable(); + private final ModelTable table = new ModelTable(); + + private static final ResourceLocation oak = new ResourceLocation("customnpcs","textures/models/table/oak.png"); + private static final ResourceLocation spruce = new ResourceLocation("customnpcs","textures/models/table/spruce.png"); + private static final ResourceLocation birch = new ResourceLocation("customnpcs","textures/models/table/birch.png"); + private static final ResourceLocation jungle = new ResourceLocation("customnpcs","textures/models/table/jungle.png"); + private static final ResourceLocation acacia = new ResourceLocation("customnpcs","textures/models/table/acacia.png"); + private static final ResourceLocation dark_oak = new ResourceLocation("customnpcs","textures/models/table/dark_oak.png"); + public BlockTableRenderer(){ ((BlockTable)CustomItems.table).renderId = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(this); @@ -39,15 +45,29 @@ public class BlockTableRenderer extends BlockRendererInterface{ boolean east = var1.getWorldObj().getBlock(var1.xCoord, var1.yCoord, var1.zCoord + 1) == CustomItems.table; boolean west = var1.getWorldObj().getBlock(var1.xCoord, var1.yCoord, var1.zCoord - 1) == CustomItems.table; - model.Shape1.showModel = !south && !east; - model.Shape3.showModel = !north && !west; - model.Shape4.showModel = !north && !east; - model.Shape5.showModel = !south && !west; - - setWoodTexture(var1.getBlockMetadata()); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - GL11.glRotatef(90 * tile.rotation, 0, 1, 0); - model.Table.render(0.0625f); + legacyTable.Shape1.showModel = !south && !east; + legacyTable.Shape3.showModel = !north && !west; + legacyTable.Shape4.showModel = !north && !east; + legacyTable.Shape5.showModel = !south && !west; + + table.Shape1.showModel = !south && !east; + table.Shape2.showModel = !south && !west; + table.Shape3.showModel = !north && !west; + table.Shape4.showModel = !north && !east; + + if(ConfigClient.LegacyTable){ + setWoodTexture(var1.getBlockMetadata()); + legacyTable.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + GL11.glRotatef(90 * tile.rotation, 0, 1, 0); + legacyTable.Table.render(0.0625f); + } else { + GL11.glEnable(GL11.GL_ALPHA_TEST); + setTableTexture(var1.getBlockMetadata()); + table.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + GL11.glRotatef(90 * tile.rotation, 0, 1, 0); + table.Table.render(0.0625f); + GL11.glDisable(GL11.GL_ALPHA_TEST); + } GL11.glPopMatrix(); } @@ -60,18 +80,45 @@ public class BlockTableRenderer extends BlockRendererInterface{ GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(180, 0, 1, 0); - setWoodTexture(metadata); - GL11.glColor3f(1, 1, 1); - model.Table.render(0.0625f); - model.Shape1.showModel = true; - model.Shape3.showModel = true; - model.Shape4.showModel = true; - model.Shape5.showModel = true; - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - + if(ConfigClient.LegacyTable){ + setWoodTexture(metadata); + GL11.glColor3f(1, 1, 1); + legacyTable.Table.render(0.0625f); + legacyTable.Shape1.showModel = true; + legacyTable.Shape3.showModel = true; + legacyTable.Shape4.showModel = true; + legacyTable.Shape5.showModel = true; + legacyTable.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } else { + setTableTexture(metadata); + GL11.glColor3f(1, 1, 1); + table.Table.render(0.0625f); + table.Shape1.showModel = true; + table.Shape2.showModel = true; + table.Shape3.showModel = true; + table.Shape4.showModel = true; + table.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + GL11.glPopMatrix(); } + public void setTableTexture(int meta){ + TextureManager manager = Minecraft.getMinecraft().getTextureManager(); + if(meta == 1) + manager.bindTexture(spruce); + else if(meta == 2) + manager.bindTexture(birch); + else if(meta == 3) + manager.bindTexture(jungle); + else if(meta == 4) + manager.bindTexture(acacia); + else if(meta == 5) + manager.bindTexture(dark_oak); + else + manager.bindTexture(oak); + } + @Override public int getRenderId() { return CustomItems.table.getRenderType(); diff --git a/src/main/java/noppes/npcs/config/ConfigClient.java b/src/main/java/noppes/npcs/config/ConfigClient.java index f44dda428..1d522cd84 100644 --- a/src/main/java/noppes/npcs/config/ConfigClient.java +++ b/src/main/java/noppes/npcs/config/ConfigClient.java @@ -86,6 +86,7 @@ public class ConfigClient public static boolean LegacyBanner = false; public static boolean LegacyChair = false; public static boolean LegacyStool = false; + public static boolean LegacyTable = false; public static boolean LegacyBarrel = false; public static boolean LegacyCarpentryBench = false; @@ -152,6 +153,7 @@ public class ConfigClient LegacyBarrel = config.get(MODEL, "Legacy Barrel Model", false).getBoolean(false); LegacyChair = config.get(MODEL, "Legacy Chair Model", false).getBoolean(false); LegacyStool = config.get(MODEL, "Legacy Stool Model", false).getBoolean(false); + LegacyTable = config.get(MODEL, "Legacy Table Model", false).getBoolean(false); LegacyCarpentryBench = config.get(MODEL, "Legacy Carpentry Bench Model", false).getBoolean(false); // Convert to Legacy diff --git a/src/main/resources/assets/customnpcs/textures/models/table/acacia.png b/src/main/resources/assets/customnpcs/textures/models/table/acacia.png new file mode 100644 index 0000000000000000000000000000000000000000..ae87e7dbc48b63d84ad915219de7f37c246975c5 GIT binary patch literal 986 zcmV<0110>4P)Px&dPzhi4XXG44|8JqnzzTKUf{hFQqfEp_DRX<%C_!Zl1>Hnh zGs(ZD2#^djEB|0?!*YM>loY{STirytYIb!GFxOB00052=+ z2+xxum>P^(bydNs2MFfo0FVw+0Mp(uPoHE-*X-~-{Y9ue02GO396=2;-FQnzjjVK8 z5aW4V2N(~GVmm`sDh~j6U79r$HOzFrn$u`1O9yGG9JlQvCOA0=0h8I#ziNb?qD;h* zeVQvGKF?FbaVL{uX1RKzMvz55;AZ9tr!nC6{sF+)oy%tZDGetX?hUj=s18>+8vt6f zGL9fcU^Vpi{y~?U`7(|yH>R>gji&Ui(`89~SQMuoK*wPjNBTP%X4aYgc)vY!8{~54 zF`IN;oc~Rn-35C66utg*05svJKNEf-dd!wtcNMA+fEwZTs}_LAqq4bWnwZ}5KXzO! zh1&V)QNAa|)c&0gQY-KGpF}r~A5_dVHEw59&a_2&6xfzof9>q#Fc(pPR#?N}@8oSm zW%lTDnX+;KT4q*xnancl4?E4e-gCEQFy3=TV7ZqWfeC(BFDvIZOxq%!Y<0`79{_N6 za+sf=9_8n!NBP;wq4mu5<-?ntWK4OpY*o=g(A-|=)rIJ^VgR-q(KnT?DmDJ7$)QKb zuOHv$+fqypJR-n#qVW0quS$=S%O>P&2|(#>Yt=hCi*RRC>Me%04xV0T0sy#96t0c? zI8U!LAu#>Q;`-I)ITHfYZ)`5#+@3pOI!JZU({FGrz0L&Y8M)DFfT!1;04R=)#+Jv^ z>&(kp>@ye#LH>t_m$VC5_wpi>r`MVA^5#zO`}7YBJniv#JRXn7Px&$Vo&&RCt{2n7?WpF&MyqE^f+Quw}4^xKKQ#OQCb2Q|CTLA0kucOnryWd4pu_ z6zClA(gaMQ&S1k`igmOduEU*llJ1hYIYFFQzr}a@q|>KQ`u@lrS~C55l;0*#qy%6P z$F(+>raop{6K_5ocGlChnQoiG0B7I6^CEfyK(yP}?QvAuWx4nTEQxme#8HmSI%KPB z>pRhIpEOD=*>Kb&P5%HOvud46{yY2KR{iz{c>nG-P~TN^=O*Jp@eoG<%r54{QBSwe z<_VB9*&i4Eq^Qkfe}8!A$yk@x27p_RYq?;TYN46^e$zOa)!ZYI(u)zi7~oFdEf?y_ z_47^R3`3Z5U%L+;V?eaqCtF=>KQDYY(Y~wvR>|jAe~q@kIyPLce&~LXTCqgQ)m$4D z0}4vtEq5+iED=KOs;G9fJQ0a}4j8*0N5GyTFL!-3G{&j;P>&P$!EX#uik7(VnmDTY zwdMEa^T3S-hG7f&2E+i%cV%WT#PI#5{zddJvc#>6a=xkJ$4&Lb|Ipe1)AOHY9iZ}j zu_!m!E8kZ##i<8l0ks`8U=lA`YeSzr^g4mN<)AyN!{!0aMUZ;QlugEu29F* zJ-Vh`eY>fj+1}Jg>0r8nsl$Ee?+USl%=)}}yQe!(&#w?-M@MFvb(rk$sV_0Tgvr=W zQ?q$eoP>rOV6s>ism+n;;%78udVW>uATy?ysdY=#I>@YaxxS^tedq5E;+Q!pvx|AL z=r|@@T{DPZ>9%ZjUAv>3*U?1E$_<>GUz+~0WU37+*O^_+$yUEe7SFBY?dqg-n2ZNZ zFH>utHuD2;dVG+dogC(8Cx`jz@j>kzefj)pt+vO84uYmNnu5&BSEIGs9vj`Wlf&FC zNe6Mv^y^WcNXh$;M;!nmb~rsg$ju-k#Lfe$?T_wYG-P%$2dclO+;>15;;HfMp%r*& zxcE?uYxJ)f1rVBYiEI{N(h3m-9d2c z>wv8{z}Bb1Kp+qZ1OkCTAP@)y0)apv5C{YUfj}S-2y6rY06dmEy1eQ5djJ3c4rN$L iW=%~1DgXcg2mk;800000(o>TF0000Px%=t)FDRCt{2nZJ+PFcinXhB)Ld{c%#IcA!$%Zb)6ab!YFN+5Pt0x>UNY>q)(# zL#5Ld3d90;2o5g~2Lg6g!oAOgojm_|e!mZ2(o@)nx{=ET8E<8sGDc_4?%n0AM=b%y%ro3IN+U z0Hj(0M%Vj#8g1~sm-aMLt*UwWd?7?pfFsq)``azp^)+pPKc{1~kw1oD1xy!ny-lm@PA=K905jgKUgH=eXy^%HT5V zSK}WNIGc#;0zUusxB@*J;PJu8*g`Vgc{_{N!U=La+kNvhJgxmT5p0j-{`IsmJc#K{Mk;WVCmFtx|9z$foN$E-oj<`yD+v^{`zW%U1QPl z_*fxCO@qFYnDoKn!^`9u2L#&pQfZci!h+fO7ZoSn^H| z@P7~BfiZ@B%>vN!6n!TUL;euiSn`!hs3ImagKu|_3IN8Vq4f>GC%eAA5BfCqzo>%X zo2%!QDdmF!sPSlMe?I&M)=B^X+P=QMSD!z=wP^UVlWK)8Uw?G+ z^Z_8rGqv%dwFU5Ymp8bN1Rj5m@uj6JB(+M5Rc`;X1U(g!Vr8ldi(fNimz}3b)Vn|z zNtD&(zFnR?Z=W+_0U&wZ{c*wD=ggD0fF8XZOc!(T_PO)qEg+f9OjY^0>m_dsf*=Tj zAP9mW2!bF8f*=TjAP9mW2tv2{3#zfC{66#~tN;K24rN$LW=%~1DgXcg2mk;800000 S(o>TF0000Px)14%?dRCt{2m_ctFMHGNPM|SO9D_b`qT_rU}1-XhSDuk*CP8C!Ii3_S)^~!|< zaNo`rRjg*-A zE<3Y3Z)V<`dGF0^f&p2WKOg$Ok7d~a_3`{Dbo$M(0IY9LyiU1n9Wb939fq$04AM-ta}Ygl_mvuoKmH!WH&q?per9ya6784$Vxw!W#juT zmddr5{2&Z$fHz(|qRP?4Y82dY>{JQ>$H@Vx`dl%uR#J9@l;tUgbex=OBSr+6%}=N? zuPojkX#N8mK(H*ExnkT6M0v-_;W#-wuddqmlb5H+0l4l=SFXieF|Xe5=1Nb>Pz=zk zkSLK(rwM|9mGWQeTdC5FDWY@pPMLx`uD1Qr{Bxw!>6k(EF@|A;ferA}?|-YZ__D49 zME)z2oy|{h^G-nchJ9OXfZ(dVOgP8r$ejLh~@L0{8*14y)t$xg=N{wpiAZ2(Bi;< z76Tk7N2PL4)#W+q)OTEM$sV3pkDUQrcP7?uR!bs#G6n!lO}P{bN2yjTDwTO&ecN%i zpRA-%%d%A6?DY^ zC2r_DB?tm_B$gw$$nTjLp!>6a=I^(?cS1iWNS}It`Z&WP@zuv?!`1sujy*d;He<2b z_W9+vd%SjhEAlR{);N9gxT=45{RXFBeV*LGLjcqp8>+07X*Sr@CM$i*6TlCm{BEUF zEU(s>D;`m8uHU$;=8&~)ZZ4O%&EdT_PYyhOGNJuW*lhc>A9lz&8QKq{$z={ixp(dU z8i4w~(QLBO)cmg?11Y7*+Wj@vHs@qmDVGKwKWV4Z)V(U% zOtzbq?Q7)$5FgoY-)<>D>I^3)1|3GmeDHjVnouL)9x0OeoF-d=|psj9OqP(6O zN0p@fBmmSkv$t+A7z_r3!C){L3q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/table/oak.png b/src/main/resources/assets/customnpcs/textures/models/table/oak.png new file mode 100644 index 0000000000000000000000000000000000000000..d087fc65cc2ab8c217587694c445772875f1759c GIT binary patch literal 1015 zcmVPx&mq|oHRCt{2nLkJyQ5?s=i3ieLOn46zB1v0yC|E)0;?SvEp-8)S>EKe3Zq9bl z*{u{@9J)BxQVJakP90pFB+#KMMhx6=k4tiq49Rtf@8#X)j+%Q1n&f@9_wM~JzxU_& z{k`8M1x0>-dgsaQcFV!UWL~tH%|Ix*_4@|3fBE4{Y7l>e7%Ij9@b%X*W~hn9$1?x` z<}?7*BFA^110~F1lgc2~D0RU!855==092fS%LsmIDA{OuOYM+pD6y0Kbp_ z000Uk1CsBE7zMg<8idDql{H2DtJtfeya3OiJps_$vDs4Z*|l5mQ+1$wYUbzs?}=-_ zdvK!Ue_|RCbxdXF+bst+8=;P`wkCAt^VPE=keiHU^Nvsy==J70;)9BCNZa0ok&nhBrE&H!{tZJ`< zvIYdJL7*pGvcmHnt+^f1A64lMV*mEz_q){q*;(#n&P+#+A(P!cp3}o78(fqy`>=6w zNbPT}dSxjUg&o84x#cTYtE?&7!bz!24THZkYMk63Hir8kr$E_?3W?Bdna~h&dCA1Ep61w_P>8oL1g3uBkm{Y#1F2CGlX%WmR3m*ur8ssxd@;+_z23)4eAc>qYsSJ|)+4zD)8i3xt* zc;WFpTp$^&?;H;G2GDmnlt|}J*djHA<+oOyYL14T^ zaD28pg0WwKu}^~Px&VM#G?|GDK8BhUR;3iF-Rcosx%NA_ zNZh1xlee%NH%8jwNU4Q7@Uw->t-B;%>`tBjO^Yrnfo_w{cm?+JHpqJH(iRy1-jRMA`N$_1! zg|V5deQ8nva$k~_p>Jvoxi2{wB`}UwyCr(1bTlG!9%~e7;(2Tmib`Qk+8PuLUXwY` z!nt1Gkue+NaGHr(&p%9px<#ehJ!6S>z@i9-DWK$RQ6U+5tx<#Byv5 z$L5fS677JCENk0soNkHn-gUO;fSlrg&Ar%?BOZ#>0kI269Uygp)B#clfYbpyTL-AK zlVd-#6P6v1HZeA{696uM`}&Q6ZKF{T~AYa~s> zYSsHSym|Lg&8+3c^Jg2+oEOiZ`I)slYdnBDKb`yT;|S@t{aqcg#Y31|N zxj!7k%b!2&tnpBvfHd*FqGBjRFw`2w`RUv@PTO_k0g~L86qTZ=6uB=M%3WT)eXkbI zv2c!8Z{P2{@lZbodnN1^xyvrc`!wu@;;NSUpe7$3`2R}(M6?LxbR|b>#wmxd7sf~;@giJP4zdF z_ZfY8y*}!f*WrIC3xXgBf*=TjAP9mW2!bF8f*=TjAPB;4^BMO>ic Date: Thu, 6 Feb 2025 12:11:37 -0500 Subject: [PATCH 123/157] Icons for Global Menu --- .../client/gui/{global => }/GuiMagicMap.java | 3 +- .../client/gui/global/GuiNPCManageMagic.java | 1 + .../gui/mainmenu/GuiNPCGlobalMainMenu.java | 278 ++++++++++++++---- .../gui/{global => util}/GuiDiagram.java | 3 +- .../npcs/client/gui/util/GuiNPCInterface.java | 1 - .../npcs/client/gui/util/GuiNpcButton.java | 22 +- .../client/gui/util/GuiNpcSquareButton.java | 117 ++++++++ .../assets/customnpcs/textures/gui/icons.png | Bin 1264 -> 10888 bytes 8 files changed, 348 insertions(+), 77 deletions(-) rename src/main/java/noppes/npcs/client/gui/{global => }/GuiMagicMap.java (98%) rename src/main/java/noppes/npcs/client/gui/{global => util}/GuiDiagram.java (99%) create mode 100644 src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java b/src/main/java/noppes/npcs/client/gui/GuiMagicMap.java similarity index 98% rename from src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java rename to src/main/java/noppes/npcs/client/gui/GuiMagicMap.java index 01b9ef562..67f4a58de 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiMagicMap.java +++ b/src/main/java/noppes/npcs/client/gui/GuiMagicMap.java @@ -1,9 +1,10 @@ -package noppes.npcs.client.gui.global; +package noppes.npcs.client.gui; import java.util.ArrayList; import java.util.List; import java.util.Map; +import noppes.npcs.client.gui.util.GuiDiagram; import noppes.npcs.client.gui.util.GuiNPCInterface; import noppes.npcs.controllers.MagicController; import noppes.npcs.controllers.data.Magic; diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java index 720b12d6b..b5ccdc8e6 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageMagic.java @@ -1,5 +1,6 @@ package noppes.npcs.client.gui.global; +import noppes.npcs.client.gui.GuiMagicMap; import noppes.npcs.client.gui.util.GuiNPCInterface2; import noppes.npcs.entity.EntityNPCInterface; diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java index e28d96658..34fc23ee1 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java @@ -1,83 +1,233 @@ package noppes.npcs.client.gui.mainmenu; -import cpw.mods.fml.common.Loader; import net.minecraft.client.gui.GuiButton; import noppes.npcs.NoppesStringUtils; import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.global.GuiNpcManagePlayerData; import noppes.npcs.client.gui.global.GuiNpcNaturalSpawns; -import noppes.npcs.client.gui.util.*; +import noppes.npcs.client.gui.util.GuiNPCInterface2; +import noppes.npcs.client.gui.util.GuiNpcButton; +import noppes.npcs.client.gui.util.GuiNpcSquareButton; import noppes.npcs.constants.EnumGuiType; import noppes.npcs.entity.EntityNPCInterface; -import java.util.Arrays; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.HashMap; -public class GuiNPCGlobalMainMenu extends GuiNPCInterface2{ - public GuiNPCGlobalMainMenu(EntityNPCInterface npc){ - super(npc,5); +import static noppes.npcs.client.gui.player.inventory.GuiCNPCInventory.specialIcons; + +public class GuiNPCGlobalMainMenu extends GuiNPCInterface2 { + + // Store all composite buttons keyed by their IDs. + private Map buttonMap = new HashMap<>(); + + private GuiNpcSquareButton bankButton; + private GuiNpcSquareButton factionButton; + private GuiNpcSquareButton dialogButton; + private GuiNpcSquareButton questButton; + private GuiNpcSquareButton transportButton; + private GuiNpcSquareButton playerdataButton; + private GuiNpcSquareButton recipeButton; + private GuiNpcSquareButton spawnButton; + private GuiNpcSquareButton linkedButton; + private GuiNpcSquareButton animationButton; + private GuiNpcSquareButton tagButton; + + public GuiNPCGlobalMainMenu(EntityNPCInterface npc) { + super(npc, 5); + } + + /** + * Register a new composite button. + */ + public void registerButton(GuiNpcSquareButton button) { + buttonMap.put(button.id, button); } @Override - public void initGui(){ - super.initGui(); - int y = guiTop + 10; - this.addButton(new GuiNpcButton(2, guiLeft + 5, y, "global.banks")); - this.addButton(new GuiNpcButton(3, guiLeft + 5, y += 22, "menu.factions")); - this.addButton(new GuiNpcButton(4, guiLeft + 5, y += 22, "dialog.dialogs")); - this.addButton(new GuiNpcButton(11, guiLeft + 5, y += 22, "quest.quests")); - this.addButton(new GuiNpcButton(12, guiLeft + 5, y += 22, "global.transport")); - this.addButton(new GuiNpcButton(13, guiLeft + 5, y += 22, "global.playerdata")); - this.addButton(new GuiNpcButton(14, guiLeft + 5, y += 22, "global.recipes")); - this.addButton(new GuiNpcButton(15, guiLeft + 5, y += 22, NoppesStringUtils.translate("global.naturalspawn"))); - this.addButton(new GuiNpcButton(16, guiLeft + 5, y += 22, "global.linked")); - y = guiTop + 10; - this.addButton(new GuiNpcButton(18, guiLeft + 210, y, "menu.animations")); - this.addButton(new GuiNpcButton(17, guiLeft + 210, y += 22, "menu.tags")); + public void initGui() { + super.initGui(); + // Create and register composite buttons. + registerButton(bankButton = new GuiNpcSquareButton(2, 0, 0, 20, "global.banks", 0xFF333333)); + bankButton.setIconPos(24, 24, 72, 32).setIconTexture(specialIcons); + + registerButton(factionButton = new GuiNpcSquareButton(3, 0, 0, 20, "menu.factions", 0xFF333333)); + factionButton.setIconPos(24, 24, 0, 32).setIconTexture(specialIcons); + + registerButton(dialogButton = new GuiNpcSquareButton(4, 0, 0, 20, "dialog.dialogs", 0xFF333333)); + dialogButton.setIconPos(24, 24, 24, 32).setIconTexture(specialIcons); + + registerButton(questButton = new GuiNpcSquareButton(11, 0, 0, 20, "quest.quests", 0xFF333333)); + questButton.setIconPos(24, 24, 0, 56).setIconTexture(specialIcons); + + registerButton(transportButton = new GuiNpcSquareButton(12, 0, 0, 20, "global.transport", 0xFF333333)); + transportButton.setIconPos(24, 24, 96, 32).setIconTexture(specialIcons); + + registerButton(playerdataButton = new GuiNpcSquareButton(13, 0, 0, 20, "global.playerdata", 0xFF333333)); + playerdataButton.setIconPos(24, 24, 216, 32).setIconTexture(specialIcons); + + registerButton(recipeButton = new GuiNpcSquareButton(14, 0, 0, 20, "global.recipes", 0xFF333333)); + recipeButton.setIconPos(24, 24, 48, 32).setIconTexture(specialIcons); + + registerButton(spawnButton = new GuiNpcSquareButton(15, 0, 0, 20, NoppesStringUtils.translate("global.naturalspawn"), 0xFF333333)); + spawnButton.setIconPos(24, 24, 144, 32).setIconTexture(specialIcons); + + registerButton(linkedButton = new GuiNpcSquareButton(16, 0, 0, 20, "global.linked", 0xFF333333)); + linkedButton.setIconPos(24, 24, 168, 32).setIconTexture(specialIcons); + + registerButton(animationButton = new GuiNpcSquareButton(18, 0, 0, 20, "menu.animations", 0xFF333333)); + animationButton.setIconPos(24, 24, 120, 32).setIconTexture(specialIcons); + + registerButton(tagButton = new GuiNpcSquareButton(17, 0, 0, 20, "menu.tags", 0xFF333333)); + tagButton.setIconPos(24, 24, 192, 32).setIconTexture(specialIcons); + + // Layout composite buttons optimally. + layoutButtons(); + // Add all composite buttons to the GUI. + for (GuiNpcButton btn : buttonMap.values()) { + this.addButton(btn); + } + } + + /** + * Compute the optimal layout by iterating over candidate row counts from 1 to total. + * For each candidate: + * - cols = ceil(total / r) + * - candidateHoriz = (availWidth - (cols+1)*padding) / cols + * - candidateVert = (availHeight - (r+1)*padding) / r + * - candidate = min(candidateHoriz, candidateVert) + * - usedWidth = cols * candidate + (cols+1)*padding + * - usedHeight = r * candidate + (r+1)*padding + * - horizontalWaste = availWidth - usedWidth + * - verticalWaste = availHeight - usedHeight + * Then define a score = candidate - (horizontalWaste + verticalWaste) * wasteWeight, + * where wasteWeight is a constant (try 0.1 or 0.2). We choose the candidate with the highest score. + * + * @param total Total number of buttons. + * @param padding Padding in pixels. + * @return An array with {optimalRows, candidateSize}. + */ + private int[] computeOptimalLayout(int total, int padding) { + int availWidth = xSize - 2 * padding; + int availHeight = ySize - 2 * padding; + int bestRows = 1; + int bestCandidate = 0; + double bestScore = -Double.MAX_VALUE; + double wasteWeight = 0.2; // adjust as needed + + for (int r = 1; r <= total; r++) { + int cols = (int) Math.ceil(total / (double) r); + int candidateHoriz = (availWidth - (cols + 1) * padding) / cols; + int candidateVert = (availHeight - (r + 1) * padding) / r; + int candidate = Math.min(candidateHoriz, candidateVert); + if (candidate <= 0) + continue; + int usedWidth = cols * candidate + (cols + 1) * padding; + int usedHeight = r * candidate + (r + 1) * padding; + int horizontalWaste = availWidth - usedWidth; + int verticalWaste = availHeight - usedHeight; + double score = candidate - wasteWeight * (horizontalWaste + verticalWaste); + if (score > bestScore) { + bestScore = score; + bestCandidate = candidate; + bestRows = r; + } + } + if (bestCandidate <= 0) { + bestCandidate = availHeight - 2 * padding; + bestRows = 1; + } + return new int[]{bestRows, bestCandidate}; + } + + + private void layoutButtons() { + List buttons = new ArrayList<>(buttonMap.values()); + Collections.sort(buttons, new Comparator() { + @Override + public int compare(GuiNpcSquareButton b1, GuiNpcSquareButton b2) { + return Integer.compare(b1.id, b2.id); + } + }); + int total = buttons.size(); + if (total == 0) + return; + int padding = 5; + int[] optimal = computeOptimalLayout(total, padding); + int rows = optimal[0]; + int buttonSize = optimal[1]; // composite button size (square) + + // Distribute buttons evenly among the rows. + int base = total / rows; + int extra = total % rows; + int[] rowCounts = new int[rows]; + for (int i = 0; i < rows; i++) { + rowCounts[i] = base + (i < extra ? 1 : 0); + } + int totalHeight = rows * buttonSize + (rows + 1) * padding; + int startY = guiTop + (ySize - totalHeight) / 2; + int index = 0; + for (int row = 0; row < rows; row++) { + int count = rowCounts[row]; + int rowWidth = count * buttonSize + (count + 1) * padding; + int rowStartX = guiLeft + (xSize - rowWidth) / 2; + int yPos = startY + padding + row * (buttonSize + padding); + for (int col = 0; col < count; col++) { + if (index >= total) + break; + GuiNpcSquareButton btn = buttons.get(index); + btn.updatePositionAndSize(rowStartX + padding + col * (buttonSize + padding), yPos, buttonSize); + index++; + } + } + } + + + @Override + protected void actionPerformed(GuiButton guibutton) { + int id = guibutton.id; + if (id == 11) { + NoppesUtil.requestOpenGUI(EnumGuiType.ManageQuests); + } + if (id == 2) { + NoppesUtil.requestOpenGUI(EnumGuiType.ManageBanks); + } + if (id == 3) { + NoppesUtil.requestOpenGUI(EnumGuiType.ManageFactions); + } + if (id == 17) { + NoppesUtil.requestOpenGUI(EnumGuiType.ManageTags); + } + if (id == 18) { + NoppesUtil.requestOpenGUI(EnumGuiType.ManageAnimations); + } + if (id == 4) { + NoppesUtil.requestOpenGUI(EnumGuiType.ManageDialogs); + } + if (id == 12) { + NoppesUtil.requestOpenGUI(EnumGuiType.ManageTransport); + } + if (id == 13) { + NoppesUtil.openGUI(player, new GuiNpcManagePlayerData(npc)); + } + if (id == 14) { + NoppesUtil.requestOpenGUI(EnumGuiType.ManageRecipes, 4, 0, 0); + } + if (id == 15) { + NoppesUtil.openGUI(player, new GuiNpcNaturalSpawns(npc)); + } + if (id == 16) { + NoppesUtil.requestOpenGUI(EnumGuiType.ManageLinked); + } } @Override - protected void actionPerformed(GuiButton guibutton) { - int id = guibutton.id; - if (id == 11) { - NoppesUtil.requestOpenGUI(EnumGuiType.ManageQuests); - } - if (id == 2) { - NoppesUtil.requestOpenGUI(EnumGuiType.ManageBanks); - } - if (id == 3) { - NoppesUtil.requestOpenGUI(EnumGuiType.ManageFactions); - } - if (id == 17) { - NoppesUtil.requestOpenGUI(EnumGuiType.ManageTags); - } - if (id == 18) { - NoppesUtil.requestOpenGUI(EnumGuiType.ManageAnimations); - } - if (id == 4) { - NoppesUtil.requestOpenGUI(EnumGuiType.ManageDialogs); - } - if (id == 12) { - NoppesUtil.requestOpenGUI(EnumGuiType.ManageTransport); - } - if (id == 13) { - NoppesUtil.openGUI(player, new GuiNpcManagePlayerData(npc)); - } - if (id == 14) { - NoppesUtil.requestOpenGUI(EnumGuiType.ManageRecipes, 4, 0, 0); - } - if (id == 15) { - NoppesUtil.openGUI(player, new GuiNpcNaturalSpawns(npc)); - } - if (id == 16) { - NoppesUtil.requestOpenGUI(EnumGuiType.ManageLinked); - } - - - } - @Override - public void save() { - } - - + public void save() { + // No saving logic needed. + } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java b/src/main/java/noppes/npcs/client/gui/util/GuiDiagram.java similarity index 99% rename from src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java rename to src/main/java/noppes/npcs/client/gui/util/GuiDiagram.java index 404e3628d..8c8e839de 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiDiagram.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiDiagram.java @@ -1,9 +1,8 @@ -package noppes.npcs.client.gui.global; +package noppes.npcs.client.gui.util; import java.awt.Point; import java.util.*; -import noppes.npcs.client.gui.util.GuiNPCInterface; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.Gui; diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java b/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java index 67bb96ad1..8cf1a20d0 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNPCInterface.java @@ -13,7 +13,6 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import noppes.npcs.client.CustomNpcResourceListener; import noppes.npcs.client.TextBlockClient; -import noppes.npcs.client.gui.global.GuiDiagram; import noppes.npcs.entity.EntityNPCInterface; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java index dc568c1e5..820ad12ca 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcButton.java @@ -24,9 +24,12 @@ public class GuiNpcButton extends GuiButton { boolean hasSubGUI = false; // Fields for icon texture and its dimensions. - private ResourceLocation iconTexture = null; - private int iconWidth = 16; - private int iconHeight = 16; + protected ResourceLocation iconTexture = null; + protected int iconWidth = 16; + protected int iconHeight = 16; + + protected int iconPosX = 0; + protected int iconPosY = 0; public GuiNpcButton(int i, int j, int k, String s) { super(i, j, k, StatCollector.translateToLocal(s)); @@ -97,16 +100,17 @@ public class GuiNpcButton extends GuiButton { * Sets the icon texture for this button. * The texture should be 16x16 by default, unless you adjust the icon dimensions. */ - public void setIconTexture(ResourceLocation texture) { + public GuiNpcButton setIconTexture(ResourceLocation texture) { this.iconTexture = texture; + return this; } - /** - * Sets the icon dimensions. - */ - public void setIconSize(int width, int height) { + public GuiNpcButton setIconPos(int width, int height, int x, int y) { this.iconWidth = width; this.iconHeight = height; + this.iconPosX = x; + this.iconPosY = y; + return this; } @Override @@ -139,7 +143,7 @@ public class GuiNpcButton extends GuiButton { int iconX = this.xPosition + (this.width - iconWidth) / 2; int iconY = this.yPosition + (this.height - iconHeight) / 2; // Draw the texture; we assume texture coordinates start at (0,0) with the desired size. - this.drawTexturedModalRect(iconX, iconY, 0, 0, iconWidth, iconHeight); + this.drawTexturedModalRect(iconX, iconY, iconPosX, iconPosY, iconWidth, iconHeight); RenderHelper.disableStandardItemLighting(); GL11.glPopMatrix(); } diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java new file mode 100644 index 000000000..effdbe3b0 --- /dev/null +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java @@ -0,0 +1,117 @@ +package noppes.npcs.client.gui.util; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.renderer.RenderHelper; +import org.lwjgl.opengl.GL11; + +import static noppes.npcs.client.gui.player.inventory.GuiCNPCInventory.specialIcons; + +public class GuiNpcSquareButton extends GuiNpcButton { + + // Fixed height for the text button portion. + public static final int TEXT_BUTTON_HEIGHT = 20; + // Overall square side length (set via layout). + public int size; + // The icon area height is the overall size minus TEXT_BUTTON_HEIGHT. + public int iconAreaHeight; + // Background color (ARGB) for the icon area. + protected int backgroundColor; + // The child text button. + public GuiNpcButton textButton; + + /** + * Constructor. + * + * @param id Button id. + * @param x Initial x (placeholder; layout will override). + * @param y Initial y (placeholder; layout will override). + * @param size Overall square side (placeholder; layout will override). + * @param label Button text. + * @param backgroundColor ARGB color for the icon area. + */ + public GuiNpcSquareButton(int id, int x, int y, int size, String label, int backgroundColor) { + // The composite button’s width and height are both "size". + super(id, x, y, size, size, label); + this.size = size; + this.iconAreaHeight = size - TEXT_BUTTON_HEIGHT; + this.backgroundColor = backgroundColor; + // Create the child text button. + this.textButton = new GuiNpcButton(id, x, y + iconAreaHeight, size, TEXT_BUTTON_HEIGHT, label); + } + + /** + * Update the composite button’s position and overall size. + */ + public void updatePositionAndSize(int x, int y, int newSize) { + this.xPosition = x; + this.yPosition = y; + this.size = newSize; + this.width = newSize; + this.height = newSize; + this.iconAreaHeight = newSize - TEXT_BUTTON_HEIGHT; + this.textButton.xPosition = x; + this.textButton.yPosition = y + this.iconAreaHeight; + this.textButton.width = newSize; + this.textButton.height = TEXT_BUTTON_HEIGHT; + } + + @Override + public void drawButton(Minecraft mc, int mouseX, int mouseY) { + if (!this.visible) + return; + + // --- Draw the icon area background --- + Gui.drawRect(xPosition, yPosition, xPosition + size, yPosition + iconAreaHeight, backgroundColor); + + // --- Draw the icon --- + if (iconTexture != null) { + this.zLevel = 100.0F; + mc.getTextureManager().bindTexture(iconTexture); + GL11.glPushMatrix(); + // Disable lighting so the icon is drawn at full brightness. + RenderHelper.disableStandardItemLighting(); + // Set color to white + GL11.glColor4f(1F, 1F, 1F, 1F); + // Compute center of icon area. + float centerX = xPosition + size / 2.0F; + float centerY = yPosition + iconAreaHeight / 2.0F; + GL11.glTranslatef(centerX, centerY, 0F); + + float scale = (float) iconAreaHeight / iconHeight; + GL11.glScalef(scale, scale, 1F); + + GL11.glTranslatef(-8F, -8F, 0F); + // Draw the icon (using stored UV coordinates) + this.drawTexturedModalRect(0, 0, iconPosX, iconPosY, iconWidth, iconHeight); + GL11.glPopMatrix(); + this.zLevel = 0f; + } + + // --- Draw the child text button --- + textButton.drawButton(mc, mouseX, mouseY); + } + + @Override + public boolean mousePressed(Minecraft mc, int mouseX, int mouseY) { + if (!this.visible) + return false; + + // If click is in the text button area: + if (mouseX >= xPosition && mouseX < xPosition + size && + mouseY >= yPosition + iconAreaHeight && mouseY < yPosition + size) { + return textButton.mousePressed(mc, mouseX, mouseY); + } + // Or if click is in the icon area, we also treat it as a click. + if (mouseX >= xPosition && mouseX < xPosition + size && + mouseY >= yPosition && mouseY < yPosition + iconAreaHeight) { + return true; + } + return false; + } + + @Override + public void mouseReleased(int mouseX, int mouseY) { + textButton.mouseReleased(mouseX, mouseY); + } +} diff --git a/src/main/resources/assets/customnpcs/textures/gui/icons.png b/src/main/resources/assets/customnpcs/textures/gui/icons.png index 79e25f85869b5405a3e36a412e1684510ff7753b..a0bd71c262c6ba8c9057a4cbd66f83c9bec698dc 100644 GIT binary patch literal 10888 zcmeHtcT^KW`|c+6UZq3ms3<6?AT@MCFCqw1l_Ju6Cx9S`^d`LtA|RkhF9}_G2c<@e z^xh%BUB2IU&;9S7bN|14&SZD9+04v4Gw<`h&odEP8cJluOvC^HkRg=ibpQYYUP1su zeDL(rrO4{$&Q(WA7APBFSpxue03k2)%qwGS*4K;ns7ZSFgg5pbPdYP#E8skpgeJl8VK(S zJ7vv3zu-JCj&iQybl4kB14=KwE_1H2>&TkEp2UgLI#@@C5&);}ZTIoKpbUapMaY<1 zms_2MRtsdzX)o+gS<;bc85Vn^+7N{67y=d|^P&spzOYu_H@n|n+V@3U$mW?3s{_uF z*~vO|elYq5BM4w@UnLr775ciw4Td`ap#Z=dhNh=WN;NgIpbfL+Btkq*+z*!L?C$hY z=S!T3;NM1|6It%iscy%^Jza&T?4JPW5aiNZYA2#Y49l5s7u(4+>F74;^AWj;i1=Pg9ffl>yDU)*IO7I5k#qAa zR&jdO*HUf8Ea%nNLm2}vp&Kjmi)#ytmX|f0m%DFVr2(_c3>$SJcBZ>EL~xeN<*sv? zk|$2`De}A7((^&Z#exvP$~Eza@rxICHd$HgTNWKjch93rA~5tyfdC;1@%~rhp~Op^ zmh3oR;_>lYHiGYYIX)`7=3IV%`P$O5)rJ(_y`>vO;{imYQ%c@hm8RX%CwV-pMGYO+ zI*TBCjJwqv$K2X-M=jO6*iMhK^AMEKE#kkEYXtLmrpY7obGXDR@QSKzYl5 z#R3@Bz`&a6`;`W};KYe2Z#ga@-~2eE`>Ur%-Y^Z1PSb0^SaHDU-Yj4_w;LCKXPRp)_{>SVS*$w`y_Ev3vu5zyJt|9Y-IiA zJUHmMC@=f9Va|}RVg@|}ChvYeA^~zrOP{%v;mYrxxF0VR&(FLY3_LC?#1bIqk~L;2 z@}$m7jOl3>^-xHY7dtGmS=Fp%v8Jf^_D04_V;Wt z%ibcL^nLY@>CkrdmQOia0DKwVl~w;Hhd1~ddqzHcgg^+J3#FRX)a2@pHwYfOAKQvu z9(pljO_lds=ITu0k4VOPO@2<3r5#_xyG*-%BZ_&^I^M7JOwr1GLC0M#=8y2%#eJ!W z9kV~28aB8r(U+dXvTc5K0zH)3ZdZLWzwdf7bZVyYh4S4S`UqXM=kws4x&~r1B=EYs zb+wF*b6NhXx3r9;JwC~=*k$kOQGuZCrI8{&&mu6JORw#ujSD1987Ywy+YayW@E}gy z1aY)wkrCR-jxdH?C$?jpC0-=quh=oapGK~acFeg$P=(B=00L>*T$aOI_uvkoaSuS4;ufu&`CiqKGkq;>SuQxsM= zSLP$M$oMEdJ+W&&A9dh|)Ybkj>ik13fQ^n3@@3$`aoq-g;7wmnQ)PJWTv zLkRb8%6RmnlD_4&&>eN0hS}(!k0Ko|=3h9f^7V*pD;T}y|0nI9{-d!=T^N3<^tR;h zd}}NB%UYzx5piH(QOehl`AHWONx7lvNiVKBLfW6dA^k zP_t?oFm`~Wi0<6H9rB5&wraR0y2)Q8?I}@sm;wTr(>PtTEg8?GXFrD&m++hItUmY@ z98xeaVB+S{BZoYWCYO7WDq%c1J8a4gLdeGlobGMZ;9@1n5x?bCdw322Ik~w+;L3I| z71oi?t~^`Sc?cj6YOhWa2LP~c4sTk{D#XW$-n+_mJB_Hj4sJkaOWjwut*QCD`De(X$m=Tm>a7*+VH&gs-Omu3b7U*?Vt>qJp-nh8%%Cx(yn|9<2Rw?`U%jL&c% zAaRwl+it! zY3AjJ*Hhe(J&_OL;Z863pv_=?^@%Ozp8Q9u-s%ce*w)GWM7N2|QagfAR8=4IE8XQ_ z5%*Bjxz=UuigInRx7MfMKREE$fc_PhijB9{AOK#j7I&yO5q>QUmG70mO_OUE!`2QZ-L)+YcB_tD6AWjQ&4~h z#AaocF)#U)*U=)(u>2aOfE|6y{w}a>aNI^R=7N$R|6Xm@iUKb2 z4B`Uh^!2uJu@7K?mhLDKXtEz=FCyBmgA1uw@0)@qhp%7s{J0sH(T`GYHOE{BK~A(S z&Ro=^d9I=j(}cd(%ytuO?^q-x?`Hcy7)a7rRgI)xwP^AZsJ4IeX80Svg@pxaN--6!7-0xZT z2<{3e&yYuHCn^TMgWpD)>K^tSq@DW!Xw-aQ%;+HYe5UFJ0^mFyuNkEl8D;r;7lShO zc{9|NufR>{p2VJo1DBQkraD5opM9r&Bydm>77)H~(G?|rjNSfhev~2q)ouMwMk%o1 z+KIMm3a>zz7mr+X4jldDd?*B&%vU`Bb=SY3g*({TPak%vfJyJy{v_&5J?HZ_eZT(m z=hU0{qG7gdW?@T*51NAMLicNXh$wr19sZ>ng|B#rC>)bbn+^b?y81XduqYe^{L?G8 zki4)+uFFNGeg@!lWF9tI_XnK*(8T1sN*{B1Lk7wO3W#n-0?1)G>iD6a{)EhOl5N)a z3zne4_W2{a0TGM&APrz&^5o}W{@&T}=;>Ca*d+w8^sbGrGu~X)ro99X? z{AOKmChkRrR;W7^3FUmkO}*k{=i9%fNuW|C7{ZiO+@!4FWC!TT=lc17fyvr6FIKrD&l8ZLVp*cWLPu z@;5c*`rfU_FWZ@8=F2ZCC+DQP3j{3>Ob1_%d@gM2zZ+)2 zj5o0=O_`k_SiX(SKRvy!*b-$MP=x@GQg*tk{wnPzynhb;EpRKlDO}{L&3{+Ac4Tjc zh}lKRp zwnc47+aUL}`#F-x3JKD+(7}Qx2Ril2=yKlk40oCc7RetEX*p|Qwh&dJ4 zSsAnl-YuweT`AT_G=nar+4sN`mHr-y1nj1d>3L4SO)!C7!3D-9CtF_=-}3ZU^f>11 z@~4&*J-E(td)o8jt#Kggz{G2KBW*|R_y>Y{6g z?uzl9F&*C9i{|SR1OTDYu2;PY-2$k}@fdx79)vk5kdc}3aqCM703-+9^6pJ=x@shQ zVk8b=bRU`brSESwlt;#i%Yp&D-Of1b&zDLNJ(xi-;U%-qm`@-vt|BBP)%Q6*n%EJi z{3d~q^d}H&A`U=nLuhG#$*@BMWz86Di_;*9X3J?jqCabJ!BH&ar@(;NjD za(A&|`S_~!YytI}9Kamphfs|E*;uNnk+`pxMtM8M={v{1^lXPBW@wJO&p18^CJ|rU zSeVzy^8Pp(!}WF;15;Vfyl5@Zm3C~&3(^*S`{gCRBfn!i);*zO7eo;Ws-SL^J>=h+ zZzk^C@AJF=tgUfk9p|N-7q|hqVpztx0yX7wv)FD&eGd&EB@NADJI@7y~Jw zvP<#42ujzkRL>nm7OJlE@+Vd}<2~VG6yV3g`HTQ{`^-_(5i+8?``*4Q$uhx$#;LFj zf3Ug2pZ&DyS%dzS0CkX;K=Sx@hh)sXuI%hUygxO~Aw+T7pD3xqVKd&S6X`b9SBG>T z{*xYkqLiYm&By5oJW$$03z>$PCSHNTq|Wo_g@uw|1zeB9o1qWYYC-FDr>n>wLb$mZ z_I7cED_r{T+{6lwrofz!e{L~F4q^?*>ABWW*x1v*1}9xoW@?0EE!h^^iZc|Ba$7J@ zC}34sxNx*mW3e4i+NY-8k=w-MwV9#~mR{~77N}+;(N&rQI~81pz#_w5AaD&fb7 zh=(^3i;7BG#QHjMfxjTNjA9rbnCumf?QCx9K?D7q7zR9RQId_qafI#K(x?Sow%Wfw zz;-%uQos6X%W-CXcAGKv?@z3j2BJemMI!RG>~k01P#@L+>vh}R2>T}vnvU8kf#0!z z=&QNr;v+LJ#FPF7O^yZaG}^HfVV(M^u?r{BL_TjFvmfR8;|Bmkv$LVcLDJ{lx)2AE z0i!J3-s?BI&3*;s1|@n%QctVwjTyS4LY!wr<>lp9HT3Wf#dmPQ*x6?QIrsK34R7P> z_j{rs^G}ovVZURQc}~UY(zUg#DIhfkII%IO^vpq9f?Em--cQ*sENMaPf9TN()2{Mv z&AByj&KNNAHM@qLLzx^KOlQBV8GzFC7LYKW3CBT+hky$bfA*TSWIJql^^`e=f?Q5c zjz&dAMO#PbLs%GZVp7sw)4T&s+(0n-%u>Nhy z=o3GM=d{Z+@G0Ci-E(&SRcHI;>Y#pOHXu6ck9OGQ^E%VJf{&Tj(es}9e{O<@&nCxi z&Rn+jL3n#{J=NQ*?x(ZW=x|ND%HfyIFl7FwKI{xOpgPQrugNrc3(a^7;<<>hp=@3P4I@fB3r0;%R=Zrr%6hFu5WVZW42AC;a zO8oQ(pV_n-$h`@N9%C~3ZhehF)0dSUb)7j5DlPs|=~Iqw*>2*&*;tMr^Cl0P`zTxR zO;Cb|Pjq-501gP6`N&JBb9@BYUTNQ^yC3`voUbiuxOv0?va_%f3<+ixDsD{YHYPti zS@NE4+@$^~Jy}e77lX97P+wQc4nFWqWO{e? zO*o#jEz`4v<8Dx`jS>(0#BxE;r9_^X)*y|6beBJ0p4jQN&plb!pN?}VQ}0rNi^cnO z8VAtEd=2O@4fJvE_#le7{s!NSl3zGYUbqnLkBPg`1*$tdc_n*lfOYG~>z6JUA!-4A znh+C?JVj-1?1&Q|=~uqPq7?{$zP^&8h2K7AjqSQDZ(^#oO|FKapK@eqC0znbf1851 zwO;7OMA!OTsU{);sn1aFBQCP)7F^I;!236Svnau5)dJJLi+@vAoFoVA>dBq6< zTr6zt#5R;EwP}*%Vvn|AzJ#Ub^(mdNYBGdLW>qArMeVp5jlc z$PIztI&^xbxXuo<`w{E9D+0y>upU;)ONx~OjGA$j>aO(BCS6;bx29^ICOVy)Qj$X} z0gxYxv|MN~;H7S@ql4WgfPI7@J$%#SFH1J8|5jxxEmtA-MS6uu(i+mu-=yO*~*HvE+JrW+T-?lU{CHJ3F1?#i{#ztz=+g4y1Qcw${7IzVM;>J%|;8=e@Umr z7?s!IIc`sd8adYC#b8~?vb+|EB=&nv&B5nhhr>#H?KGMgebo6a@WCq}(oI_KieSfV zt;P|boez?5XY9KR`|t5_8F%+kA!4oPyf8v?S~@7w0k6XCpW8>W$WB(0{9*4xM$k37 zoL$#>G;|-6qvvv2E+I~0%gO2U zs(r1jB(kdH+SAk5#|&qeb`)BR@b@ZM=N65PjE>G;1&l3T5Wsx244dx}ASF0=w~ZQ{ z+FH*T9Em*|;YYvgWOtKmB(Z7SIis{-8WQsUK<8P4e>4uVYc9b1;u2o(c?*g0`|N45 zok6P@IV}aq;DRh64qVHC(!>_8OnM};m1|$Xk1POW0!OFs`4o4!dVaxGkeByrv_dwV zVT0?1wfs)TyoUfpbrhg3%D#--BOj?r23RepJL3eg`R(phpnQrPBI*>uLY)ZzPv z1l)VQ_fA*+kB)HseDlf3)CFiXXR7!^?;BMsyRHnlGh^4^0^y^`qkj<5e*i%7jfvz; z0_eK%)ZlbXsbWh0A|opvYmppdz)AG+8Ut_&<;6Z5$$JKX6!B>+?@$K|RJT;dn-soQ zDm;E^d_IXj^F9M}~(J z)~xKOgT#~iphNO}d5o^Vuzshi!t}Sa$v)q|3T+$wjtM}Wap1Kl3P(;!q7(j&a0kXb65b}0iFQ0khi6twFyJ$}M4F_)hSxo|T1 zFk+4Ar8JY%E%CWqp+E36D(_>W3_k$(J=Bk^6X^WDEu(x)-z2V-b7&Jc8OU(-j^kmv zmZSJl-8FKN6BaFnTsw6#eb^Zt+2&ea-+U#jKbkX+!|n-y83ml^wAiO{oDvsql49vX z<`zfVF616TejBplGBJzZQ7IN}esSr0;2{n)n>H@q%=nnVL$2(97xeZuOgF;~av`&? zG2PegDbVK_felqJ$pwMU?`(U^TX)A0n6uDful74c_gFqtz%y}isjxoNk(kL$x=lr} zGyAi;)RY^7-ZWquTOha;Xtoj%lvBZuk+Baue8N$iFJi8|BLM{onvC*88n(>bx)Dvi z4k9q5d`u68ynK(%Fy$*M0a86YjEox=PvY=wf>DjNu&+2P;VJYdT<+0VXA9fVfu}i5 zvkte}F1rmaHNr%V4V*;m_WHLVP*YRCRQ)+f0YmG(IC$LKt`{_8 zOs(cmj;wT*+=scHcX-@0>9T>tr@E)#Eh=NrTy~ z9qIFB8w8dDfP0oa8476)b_-1YvPG&(X48mr{)K|6yTUtkcYWK=^4M*&it%K2+F_2g ztghVAaT!FnYotR$lHy06Lfkw(|F(Av;Q;S0jXsTu6i~>R%REqXZv@%#_8)PC0Wv!o zkeXJJ^W$FDT8*6TeVK51cG2uRo=2ix0%J0QFQZ!o!>`|ie1;13ZX!U}*aW9;YtNz% z5+4YHu~A3=%2D1lZ4NX*>{%&x#lC9?Jbf|Ks@}$9es(EiI;mU95AiPH<+Cb|P0R zSW46yQ#bSCP569EK9hgGcM<@qFGG^HS##P#oRGr-|G)8fCLY|?L%Qz1%J4g4cH0bk zZOrkIXhdNK_*q^_e_U*(2DZd|^d2P- z%8T@ub@!hQ?nH3fpVXxX>6;|bv{E|!FbkhI*Al~Ks0LPHSdIyXMA97GQscSIRifR9 z0sum?1U|IiVTg3DBgWAAsuTDW--OzpZcNAC#Be(^^a9ILp28r-1F~8CBD1R{Z`#2G zUo}o-slJJ+TzHnt%PE@Wbf85rIjVQ;5uU{M+luV@qtwq=`$tFeDZ#vuqL`~i-q7`C zc#JY`3xa0GgP|B~oz zxiAz&7-u7F&L5ANszDFkbHs^r9Cl8s-MwdIvguPkc<^eZJnmphBzZ;Xf`+mER-BvI z2mtgD2%%<9P5s^EC9kwrPmisU9k174PcTF0tToKW{Et!E$IUh+$JJUT-2YTU;+|F_QmYuKVQ#jN?b!=_y z=UUU7`ACqcpr#D6uc>LV{njGqIM8wM<;UacB>EEypF@I-us!+mz|r!@7X&#?goU=u zN6JCva=~mTnr@7)Ujcc79M`k*GU%96U{w|ei0%d~Pcvh3=5SHHR7PK*PBnp^<$G1c z3~v9eR9g>_Tbn)6YnzT6NvF``KgrT1&;&KvXggAQ@H-Q{JnD*dHY|oEu`y-U<9cgZ zwTd+mr=0cPY0?w_u~)bM_$(&(Z~*`@%gtVZ_RA}hhQwyPW1OL7WmmV%Mou|mjWi^Z zkP90H3E_pT{6KvvprN0t_Y*@Xzuc9Z`3xPJ%Nd#Oefh@fl8Dte78HB4j!pMX^4{*C z-bceN`vQ^r7xZ~-IPdY+To%9uY1!zyds6MTaFE>;smX?g%^o)kE~6};7rq8vc4}}4 zkMovy{zJI%M|@CTrd4ZciN7Oi;L&~JmhyA|+>z}p{=+bErCQAfk#%rJ zK-V#_iK}_l*F5kPvYJU8%AhUvo#yh)z;z5&i$&GM?G`R5e(dzfx`{`O#StXdDDj}yy!Jno-h)7+mC*`9x@}6Dk6_qRz6MGe zv?)>Gx$ZxuYGca4aF=C0DQNS!TBfVNiSfDX;Z!zL>gD?xX!i%1a=J%4JK3u`dtQhK zo)Kv8rW#QGOB5d|EO?>y{CV+VR^)Ujj>}MZZq*I@)91mgw$*@)HB$7r*3d&2H3#OY zwwJtxMvqlp;~qsxf$wq;JJ2n4Mcae&FV9N!R+oD%lzp{*Zdu%4=PSHL8|8eAOCL_uzk8wh`1>!=l+!bvy1{q%)9ceOTGb~Bkall zN1oJArit6Zf)5$gK)nz^j=NIxP+`?~!nioNpoNV7rTF1t=6wYLINM90teI+cnA=bV zOQm?1Px!<#^Ud(nj9L44O_gL%-crbtXEnduNnG97_)!iFY(L2Zf4JtI3m`!q6aq*l zyfv>pM(=l6UQ>k&7^S#hc>hOzvXutdrL0LyeFZq*m@u5nikX!kzVDw3`MvLm-4VK{>ZN#v|m~|CS5o&R>+QaI1Xhi1U&zrUEG0V1(&a1OTPW?jyBAErYyx z?Wt#Y4NXx95!mS)l*d!6W@WAOI~iJyuxC} zUdkw1R}n1|v>;^{b8xJXG%k43nw;yy@G(JC@ZB61?#>v9>ecAa-taqk1irJ2S=VYD zAg(&+?!Uh+xUJ-PCWLr~J7Tlh>2KZA#>i%-I@W9u!KNn#G)WS8al;^hg&ar} zfqbW&uj&I&1b)D-a`6v)koY9uy5FKS!C5|+LU;u_!2T74YUKkkT#L^ZJMA@!zRf=; zUUh37BPeP3+Q!C47K9fGJeBc(MDc;LKV5#(w@?5eXJsz#ZE)g#BlE0aG#`3$t?1W* z>dvdQTxMZi-M#YzBW-OHa<~R@hoxSv)Evf@(Xna*?cjKDWGSytTR@T1xJ(F+r}=MD z|MxNy&mC>R&N4+*d)(7l%)oaTm?!2^)_Sk!l?;-#;Zg1g-`D(KIOeG}iH#KcotCNnXh zwU?F4$^A4DH#3~E`{AcJmXMOSmp4tPqFLf-=qdKGWX>%!-o~L+he)pP1w6!BKf*`b zMF;<33BB11b#n;wnAx zKiA6WiDc#!O+k_cG&KM!7xxp>fyjOpJTPm4Ke{Eqt4T=e`erop-^X!7ocxCXNI6pP z0-&6W1nV0axz{5GLM17U3TVpT_j35tw%5>a-q5KFV>(;E>VUO9tI@CRV;ssSb9%~H zOLAV*Ye?2R%AU)r{Ez_0i92Wy#sZgDq>WcGOvKO!nNH4?5(RixLdM(tId6nVo>M)D zpuS|WHZ+faHfIt?i$Iz^6v#m$kj-5$7VMYetuNC;J2f5!ng!u!Sf zctc@`WStA;b>;D*r0e8WO%0jY_Mo}Uc_FwZ5#(=*%F48|dJ%w*ZTlt_ncrg`BEX3o zO0dFpW!7S9YzzU-!>e2LX+09m5rHKQ^ya1lu#`hD7XohAQ4tR6Mm7`q5&w&m(ECl} zEEJ2m!!Vmk_?nnJS^hyJ71{T`I%;rp;mc}ml!I4x*y{e#HALG38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&eBep-M}h^wBiiBhsf1~2dbMc;@+{$7>^#A|=KfHf$60??^x(lptGd5=IOR&^^+;9H5$uiv0nk(r?(bm4{#VzZ0-^($(>no?9C+=wb zw=?y?!!sGi>)!3F-F^SsVGGg2)4#5pQkOBm?7E}Kjg-ctZ{Hq%{MfZoqIT!~=i2Je zj;v?+F3))F_1C=X-~Se@m|r&g{dIqTfBPt)%ES4LpRV7(zTYyAm8FCG!A}_lt~bAe z+7cyR-+uQ?$>H4piak0T;-?vM7bN+)G+Z@fx|7~uaVl8#8NX|T&VZa`ZQ~V`&&z+}69l8nO>$?jrWEMHRW0>tbdp}#pPvry0tvdeJ z$G1r(O!HQ#`}_9QPs?u&HeJR$8D6>nU6|6~o7W)uU@6;*&+?zGEUx`_e8-T>`9v?^ z|7FXALK)?apM_rhmZ;ftYpd!9O@}+2r(c#-#mE%@TT`$q`oKP!Hbdqo`{#=nvf4b) zpI_c+v+DV;n16+ePyR$M2-I&_xySEvW?|21h4`d@cbKN7+CI^X*l(|YOU|KT7yA<_ z3z@b$@$Cnr6qxte{O$PpIZ%Vyr%=@7k;V3g;)Y1Q#$D`Jc01f=Ubcg?CpqR)@?EAT zy|nWTUjsjUT|4i$LimB|yr%b?W0(aO~`u*FFO|XJ#$6l`9AD_ z$PgjMeqfUY!?dG}8+7;@QVSV$x|tIqWf)FB8kHJ|&^W^EbJ_o@?3wtLvGcY7O92K? LS3j3^P6 Date: Thu, 6 Feb 2025 12:26:09 -0500 Subject: [PATCH 124/157] Make Public for DBC Addon to use --- src/main/java/kamkeel/npcs/network/PacketHandler.java | 6 ++---- src/main/java/noppes/npcs/CustomNpcs.java | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index d6d38808b..f7c3d5492 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -91,7 +91,7 @@ public class PacketHandler { // Server to Client public static final PacketChannel DATA_PACKET = new PacketChannel("CNPC+|Data", EnumChannelType.DATA); - private static final List packetChannels = new ArrayList<>(); + public static final List packetChannels = new ArrayList<>(); public PacketHandler() { // Register Channels @@ -99,7 +99,6 @@ public class PacketHandler { packetChannels.add(PLAYER_PACKET); packetChannels.add(DATA_PACKET); - this.registerChannels(); this.registerDataPackets(); this.registerRequestPackets(); this.registerPlayerPackets(); @@ -384,13 +383,12 @@ public class PacketHandler { PLAYER_PACKET.registerPacket(new ScreenSizePacket()); } - private void registerChannels() { + public void registerChannels() { for (PacketChannel channel : packetChannels) { FMLEventChannel eventChannel = NetworkRegistry.INSTANCE.newEventDrivenChannel(channel.getChannelName()); eventChannel.register(this); channels.put(channel.getChannelType(), eventChannel); - System.out.println("Registered channel: " + channel.getChannelName()); } } diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index aa7838e1b..eb739ab24 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -191,6 +191,7 @@ public class CustomNpcs { MARKOV_GENERATOR[8] = new MarkovCustomNPCsClassic(3); MARKOV_GENERATOR[9] = new MarkovSpanish(3); + PacketHandler.Instance.registerChannels(); } @EventHandler From 328a3d418698f28eba354ae6523d0235bf1acd5e Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 6 Feb 2025 15:55:21 -0500 Subject: [PATCH 125/157] Best Image Scaling --- .../gui/mainmenu/GuiNPCGlobalMainMenu.java | 39 +++++++++---------- .../client/gui/util/GuiNpcSquareButton.java | 11 ++---- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java index 34fc23ee1..02e1a9ac2 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java @@ -97,29 +97,26 @@ public class GuiNPCGlobalMainMenu extends GuiNPCInterface2 { /** * Compute the optimal layout by iterating over candidate row counts from 1 to total. * For each candidate: - * - cols = ceil(total / r) - * - candidateHoriz = (availWidth - (cols+1)*padding) / cols + * - Let c = ceil(total / r) + * - candidateHoriz = (availWidth - (c+1)*padding) / c * - candidateVert = (availHeight - (r+1)*padding) / r * - candidate = min(candidateHoriz, candidateVert) - * - usedWidth = cols * candidate + (cols+1)*padding - * - usedHeight = r * candidate + (r+1)*padding - * - horizontalWaste = availWidth - usedWidth - * - verticalWaste = availHeight - usedHeight - * Then define a score = candidate - (horizontalWaste + verticalWaste) * wasteWeight, - * where wasteWeight is a constant (try 0.1 or 0.2). We choose the candidate with the highest score. + * - usedWidth = candidate * c + (c+1)*padding + * - usedHeight = candidate * r + (r+1)*padding + * - ratio = (usedWidth * usedHeight) / (availWidth * availHeight) + * + * We choose the candidate (r, candidate) that maximizes this ratio. * * @param total Total number of buttons. * @param padding Padding in pixels. - * @return An array with {optimalRows, candidateSize}. + * @return An array {optimalRows, candidateSize}. */ private int[] computeOptimalLayout(int total, int padding) { int availWidth = xSize - 2 * padding; int availHeight = ySize - 2 * padding; + double bestRatio = -1; int bestRows = 1; int bestCandidate = 0; - double bestScore = -Double.MAX_VALUE; - double wasteWeight = 0.2; // adjust as needed - for (int r = 1; r <= total; r++) { int cols = (int) Math.ceil(total / (double) r); int candidateHoriz = (availWidth - (cols + 1) * padding) / cols; @@ -127,13 +124,11 @@ public class GuiNPCGlobalMainMenu extends GuiNPCInterface2 { int candidate = Math.min(candidateHoriz, candidateVert); if (candidate <= 0) continue; - int usedWidth = cols * candidate + (cols + 1) * padding; - int usedHeight = r * candidate + (r + 1) * padding; - int horizontalWaste = availWidth - usedWidth; - int verticalWaste = availHeight - usedHeight; - double score = candidate - wasteWeight * (horizontalWaste + verticalWaste); - if (score > bestScore) { - bestScore = score; + int usedWidth = candidate * cols + (cols + 1) * padding; + int usedHeight = candidate * r + (r + 1) * padding; + double ratio = (double)(usedWidth * usedHeight) / (availWidth * availHeight); + if (ratio > bestRatio || (Math.abs(ratio - bestRatio) < 0.0001 && candidate > bestCandidate)) { + bestRatio = ratio; bestCandidate = candidate; bestRows = r; } @@ -145,7 +140,9 @@ public class GuiNPCGlobalMainMenu extends GuiNPCInterface2 { return new int[]{bestRows, bestCandidate}; } - + /** + * Layout composite buttons using the optimal configuration. + */ private void layoutButtons() { List buttons = new ArrayList<>(buttonMap.values()); Collections.sort(buttons, new Comparator() { @@ -160,7 +157,7 @@ public class GuiNPCGlobalMainMenu extends GuiNPCInterface2 { int padding = 5; int[] optimal = computeOptimalLayout(total, padding); int rows = optimal[0]; - int buttonSize = optimal[1]; // composite button size (square) + int buttonSize = optimal[1]; // composite button is square with side "buttonSize" // Distribute buttons evenly among the rows. int base = total / rows; diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java index effdbe3b0..994885cec 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java @@ -66,26 +66,21 @@ public class GuiNpcSquareButton extends GuiNpcButton { // --- Draw the icon --- if (iconTexture != null) { - this.zLevel = 100.0F; mc.getTextureManager().bindTexture(iconTexture); GL11.glPushMatrix(); // Disable lighting so the icon is drawn at full brightness. RenderHelper.disableStandardItemLighting(); - // Set color to white GL11.glColor4f(1F, 1F, 1F, 1F); // Compute center of icon area. float centerX = xPosition + size / 2.0F; float centerY = yPosition + iconAreaHeight / 2.0F; GL11.glTranslatef(centerX, centerY, 0F); - - float scale = (float) iconAreaHeight / iconHeight; + // Scale so that original icon height maps to the icon area height. + float scale = (float) iconAreaHeight / (float) iconHeight; // iconHeight should be 24 now. GL11.glScalef(scale, scale, 1F); - - GL11.glTranslatef(-8F, -8F, 0F); - // Draw the icon (using stored UV coordinates) + GL11.glTranslatef(-iconWidth / 2.0F, -iconHeight / 2.0F, 0F); this.drawTexturedModalRect(0, 0, iconPosX, iconPosY, iconWidth, iconHeight); GL11.glPopMatrix(); - this.zLevel = 0f; } // --- Draw the child text button --- From 5de68934ebcd82b816d03bb2d09e3231bdee4aa6 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 6 Feb 2025 18:08:38 -0500 Subject: [PATCH 126/157] Square Buttons for Menu --- .../noppes/npcs/client/gui/util/GuiNpcSquareButton.java | 9 +++++++-- src/main/resources/assets/customnpcs/lang/de_DE.lang | 2 +- src/main/resources/assets/customnpcs/lang/en_US.lang | 2 +- src/main/resources/assets/customnpcs/lang/ru_RU.lang | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java index 994885cec..2fde46e1d 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java @@ -70,14 +70,18 @@ public class GuiNpcSquareButton extends GuiNpcButton { GL11.glPushMatrix(); // Disable lighting so the icon is drawn at full brightness. RenderHelper.disableStandardItemLighting(); + // Reset color to white. GL11.glColor4f(1F, 1F, 1F, 1F); // Compute center of icon area. float centerX = xPosition + size / 2.0F; float centerY = yPosition + iconAreaHeight / 2.0F; GL11.glTranslatef(centerX, centerY, 0F); - // Scale so that original icon height maps to the icon area height. - float scale = (float) iconAreaHeight / (float) iconHeight; // iconHeight should be 24 now. + // Use an internal padding so the icon doesn't touch the borders. + int iconPadding = 2; // adjust as needed + // Compute scale: available space is (iconAreaHeight - 2 * iconPadding) + float scale = (float) (iconAreaHeight - 2 * iconPadding) / (float) iconHeight; GL11.glScalef(scale, scale, 1F); + // Center the icon (assuming iconWidth and iconHeight are the texture's dimensions) GL11.glTranslatef(-iconWidth / 2.0F, -iconHeight / 2.0F, 0F); this.drawTexturedModalRect(0, 0, iconPosX, iconPosY, iconWidth, iconHeight); GL11.glPopMatrix(); @@ -87,6 +91,7 @@ public class GuiNpcSquareButton extends GuiNpcButton { textButton.drawButton(mc, mouseX, mouseY); } + @Override public boolean mousePressed(Minecraft mc, int mouseX, int mouseY) { if (!this.visible) diff --git a/src/main/resources/assets/customnpcs/lang/de_DE.lang b/src/main/resources/assets/customnpcs/lang/de_DE.lang index 72d987994..318e029d4 100644 --- a/src/main/resources/assets/customnpcs/lang/de_DE.lang +++ b/src/main/resources/assets/customnpcs/lang/de_DE.lang @@ -346,7 +346,7 @@ global.banks=Banken global.transport=Transport global.playerdata=PlayerData global.recipes=Rezepte -global.naturalspawn=Natural Spawns +global.naturalspawn=Spawns bank.slot=Slot bank.unlock=Freischalten diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index 1ea355b10..26d319480 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -521,7 +521,7 @@ global.banks=Banks global.transport=Transport global.playerdata=PlayerData global.recipes=Recipes -global.naturalspawn=Natural Spawns +global.naturalspawn=Spawns global.linked=Linked bank.slot=Slot diff --git a/src/main/resources/assets/customnpcs/lang/ru_RU.lang b/src/main/resources/assets/customnpcs/lang/ru_RU.lang index f6f3d74ad..a729216e5 100644 --- a/src/main/resources/assets/customnpcs/lang/ru_RU.lang +++ b/src/main/resources/assets/customnpcs/lang/ru_RU.lang @@ -362,7 +362,7 @@ global.banks=Сберегатели global.transport=Транспортёры global.playerdata=Данные игроков global.recipes=Рецепты -global.naturalspawn=Естественные спауны +global.naturalspawn=Спавнится global.linked=Связи bank.slot=Слот From 8a270b154860c0ab74a243ddf5cad8dad37d34a8 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 6 Feb 2025 18:42:46 -0500 Subject: [PATCH 127/157] Fix Button --- .../noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java | 2 +- .../java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java index 02e1a9ac2..4469aef54 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java @@ -154,7 +154,7 @@ public class GuiNPCGlobalMainMenu extends GuiNPCInterface2 { int total = buttons.size(); if (total == 0) return; - int padding = 5; + int padding = 2; int[] optimal = computeOptimalLayout(total, padding); int rows = optimal[0]; int buttonSize = optimal[1]; // composite button is square with side "buttonSize" diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java index 2fde46e1d..8132e2eaa 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcSquareButton.java @@ -46,7 +46,7 @@ public class GuiNpcSquareButton extends GuiNpcButton { public void updatePositionAndSize(int x, int y, int newSize) { this.xPosition = x; this.yPosition = y; - this.size = newSize; + this.size = newSize - 1; this.width = newSize; this.height = newSize; this.iconAreaHeight = newSize - TEXT_BUTTON_HEIGHT; From 4202cb72712d677423f2cb7ddf21095914ac2ef7 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 9 Feb 2025 01:09:23 -0500 Subject: [PATCH 128/157] Fix Scripted Items re-evaluating Scripts --- .../java/kamkeel/npcs/network/PacketUtil.java | 3 + .../noppes/npcs/ScriptItemEventHandler.java | 82 ++++++++++++------- 2 files changed, 56 insertions(+), 29 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/PacketUtil.java b/src/main/java/kamkeel/npcs/network/PacketUtil.java index ad8286efe..3a95df786 100644 --- a/src/main/java/kamkeel/npcs/network/PacketUtil.java +++ b/src/main/java/kamkeel/npcs/network/PacketUtil.java @@ -120,6 +120,9 @@ public class PacketUtil { } private static boolean isValidItemForType(ItemStack item, EnumItemPacketType type) { + if(item == null || item.getItem() == null) + return false; + switch (type) { case WAND: return item.getItem() == CustomItems.wand; diff --git a/src/main/java/noppes/npcs/ScriptItemEventHandler.java b/src/main/java/noppes/npcs/ScriptItemEventHandler.java index f260b7ba8..8f91705cc 100644 --- a/src/main/java/noppes/npcs/ScriptItemEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptItemEventHandler.java @@ -22,6 +22,7 @@ import noppes.npcs.entity.EntityCustomNpc; import noppes.npcs.items.ItemScripted; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.event.ItemEvent; +import noppes.npcs.scripted.item.ScriptCustomItem; import java.util.HashMap; @@ -60,8 +61,9 @@ public class ScriptItemEventHandler { if(event.player.worldObj instanceof WorldServer) { try { if (event.entityItem.getEntityItem().getItem() == CustomItems.scripted_item && !event.isCanceled()) { - IItemCustom isw = ItemScripted.GetWrapper(event.entityItem.getEntityItem()); - event.setCanceled(EventHooks.onScriptItemTossed(isw, event.player, event.entityItem)); + IItemStack isw = NpcAPI.Instance().getIItemStack(event.entityItem.getEntityItem()); + if(isw instanceof IItemCustom) + event.setCanceled(EventHooks.onScriptItemTossed((IItemCustom) isw, event.player, event.entityItem)); } } catch (Exception e) {} } @@ -75,8 +77,9 @@ public class ScriptItemEventHandler { if(event.player.worldObj instanceof WorldServer) { try { if (event.player.getHeldItem().getItem() == CustomItems.scripted_item && !event.isCanceled()) { - IItemCustom isw = ItemScripted.GetWrapper(event.player.getHeldItem()); - EventHooks.onScriptItemPickedUp(isw, event.player); + IItemStack isw = NpcAPI.Instance().getIItemStack(event.player.getHeldItem()); + if(isw instanceof IItemCustom) + EventHooks.onScriptItemPickedUp((IItemCustom) isw, event.player); } } catch(Exception e) {} } @@ -89,8 +92,13 @@ public class ScriptItemEventHandler { ItemStack stack = entity.getEntityItem(); try { - if (stack.stackSize > 0 && stack.getItem() == CustomItems.scripted_item && EventHooks.onScriptItemSpawn(ItemScripted.GetWrapper(stack), entity)) { - event.setCanceled(true); + if (stack.stackSize > 0 && stack.getItem() == CustomItems.scripted_item) { + IItemStack isw = NpcAPI.Instance().getIItemStack(stack); + if(isw instanceof IItemCustom){ + if(EventHooks.onScriptItemSpawn((IItemCustom) isw, entity)){ + event.setCanceled(true); + } + } } } catch(Exception e) {} } @@ -104,12 +112,14 @@ public class ScriptItemEventHandler { if(!event.entityPlayer.worldObj.isRemote && event.entityPlayer.worldObj instanceof WorldServer) { try { if (event.entityPlayer.getHeldItem().getItem() == CustomItems.scripted_item && !event.isCanceled()) { - IItemCustom isw = ItemScripted.GetWrapper(event.entityPlayer.getHeldItem()); - ItemEvent.InteractEvent eve = new ItemEvent.InteractEvent(isw, (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer), 2, NpcAPI.Instance().getIEntity(event.target)); - event.setCanceled(EventHooks.onScriptItemInteract(isw, eve)); + IItemStack isw = NpcAPI.Instance().getIItemStack(event.entityPlayer.getHeldItem()); + if(isw instanceof IItemCustom){ + ItemEvent.InteractEvent eve = new ItemEvent.InteractEvent((IItemCustom) isw, (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer), 2, NpcAPI.Instance().getIEntity(event.target)); + event.setCanceled(EventHooks.onScriptItemInteract((IItemCustom) isw, eve)); - ItemEvent.RightClickEvent rightClickEvent = new ItemEvent.RightClickEvent(isw, (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer), 1, NpcAPI.Instance().getIEntity(event.target)); - event.setCanceled(EventHooks.onScriptItemRightClick(isw, rightClickEvent)); + ItemEvent.RightClickEvent rightClickEvent = new ItemEvent.RightClickEvent((IItemCustom) isw, (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer), 1, NpcAPI.Instance().getIEntity(event.target)); + event.setCanceled(EventHooks.onScriptItemRightClick((IItemCustom) isw, rightClickEvent)); + } } } catch(Exception e) {} } @@ -135,9 +145,11 @@ public class ScriptItemEventHandler { } try { if (event.entityPlayer.getHeldItem().getItem() == CustomItems.scripted_item && !event.isCanceled()) { - IItemCustom isw = ItemScripted.GetWrapper(event.entityPlayer.getHeldItem()); - ItemEvent.RightClickEvent eve = new ItemEvent.RightClickEvent(isw, (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer), 0, null); - event.setCanceled(EventHooks.onScriptItemRightClick(isw, eve)); + IItemStack isw = NpcAPI.Instance().getIItemStack(event.entityPlayer.getHeldItem()); + if(isw instanceof IItemCustom){ + ItemEvent.RightClickEvent eve = new ItemEvent.RightClickEvent((IItemCustom) isw, (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer), 0, null); + event.setCanceled(EventHooks.onScriptItemRightClick((IItemCustom) isw, eve)); + } } } catch(Exception e) {} } @@ -149,9 +161,11 @@ public class ScriptItemEventHandler { handler.hadInteract = true; try { if (event.entityPlayer.getHeldItem().getItem() == CustomItems.scripted_item && !event.isCanceled()) { - IItemCustom isw = ItemScripted.GetWrapper(event.entityPlayer.getHeldItem()); - ItemEvent.RightClickEvent eve = new ItemEvent.RightClickEvent(isw, (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer), 2, NpcAPI.Instance().getIBlock((IWorld) NpcAPI.Instance().getIWorld(event.world), event.x, event.y, event.z)); - event.setCanceled(EventHooks.onScriptItemRightClick(isw, eve)); + IItemStack isw = NpcAPI.Instance().getIItemStack(event.entityPlayer.getHeldItem()); + if(isw instanceof IItemCustom){ + ItemEvent.RightClickEvent eve = new ItemEvent.RightClickEvent((IItemCustom) isw, (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer), 2, NpcAPI.Instance().getIBlock((IWorld) NpcAPI.Instance().getIWorld(event.world), event.x, event.y, event.z)); + event.setCanceled(EventHooks.onScriptItemRightClick((IItemCustom) isw, eve)); + } } } catch(Exception e) {} } @@ -164,9 +178,12 @@ public class ScriptItemEventHandler { return; if(event.entityPlayer.worldObj instanceof WorldServer) { - IItemCustom handler = ItemScripted.GetWrapper(event.item); - IPlayer IPlayer = (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer); - event.setCanceled(EventHooks.onStartUsingCustomItem(handler, IPlayer, event.duration)); + + IItemStack isw = NpcAPI.Instance().getIItemStack(event.item); + if(isw instanceof IItemCustom){ + IPlayer IPlayer = (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer); + event.setCanceled(EventHooks.onStartUsingCustomItem((IItemCustom) isw, IPlayer, event.duration)); + } } } @SubscribeEvent @@ -175,9 +192,12 @@ public class ScriptItemEventHandler { return; if(event.entityPlayer.worldObj instanceof WorldServer && event.item.getItem() == CustomItems.scripted_item) { - IItemCustom handler = ItemScripted.GetWrapper(event.item); - IPlayer IPlayer = (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer); - event.setCanceled(EventHooks.onUsingCustomItem(handler, IPlayer, event.duration)); + + IItemStack isw = NpcAPI.Instance().getIItemStack(event.item); + if(isw instanceof IItemCustom){ + IPlayer IPlayer = (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer); + event.setCanceled(EventHooks.onUsingCustomItem((IItemCustom) isw, IPlayer, event.duration)); + } } } @SubscribeEvent @@ -186,9 +206,11 @@ public class ScriptItemEventHandler { return; if(event.entityPlayer.worldObj instanceof WorldServer && event.item.getItem() == CustomItems.scripted_item) { - IItemCustom handler = ItemScripted.GetWrapper(event.item); - IPlayer IPlayer = (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer); - event.setCanceled(EventHooks.onStopUsingCustomItem(handler, IPlayer, event.duration)); + IItemStack isw = NpcAPI.Instance().getIItemStack(event.item); + if(isw instanceof IItemCustom){ + IPlayer IPlayer = (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer); + event.setCanceled(EventHooks.onStopUsingCustomItem((IItemCustom) isw, IPlayer, event.duration)); + } } } @SubscribeEvent @@ -197,9 +219,11 @@ public class ScriptItemEventHandler { return; if(event.entityPlayer.worldObj instanceof WorldServer && event.item.getItem() == CustomItems.scripted_item) { - IItemCustom handler = ItemScripted.GetWrapper(event.item); - IPlayer IPlayer = (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer); - EventHooks.onFinishUsingCustomItem(handler, IPlayer, event.duration); + IItemStack isw = NpcAPI.Instance().getIItemStack(event.item); + if(isw instanceof IItemCustom){ + IPlayer IPlayer = (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer); + EventHooks.onFinishUsingCustomItem((IItemCustom) isw, IPlayer, event.duration); + } } } } From eeb6b2ea8bdc0b022d57596d49c43857a3411931 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 9 Feb 2025 04:02:16 -0500 Subject: [PATCH 129/157] Scripted Items Display Errors & Fix Console Scroll Wheel and Scroll Bar --- .../kamkeel/npcs/network/PacketHandler.java | 3 + .../npcs/network/enums/EnumRequestPacket.java | 12 +- .../script/item/ItemScriptErrorPacket.java | 108 ++++++++++++++++++ .../script/{ => item}/ItemScriptPacket.java | 5 +- .../client/gui/script/GuiScriptInterface.java | 7 +- .../npcs/client/gui/script/GuiScriptItem.java | 49 +++++++- .../npcs/client/gui/util/GuiNpcTextArea.java | 48 ++++---- .../npcs/controllers/ScriptContainer.java | 6 +- 8 files changed, 198 insertions(+), 40 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/script/item/ItemScriptErrorPacket.java rename src/main/java/kamkeel/npcs/network/packets/request/script/{ => item}/ItemScriptPacket.java (93%) diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index f7c3d5492..74bb48909 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -58,6 +58,8 @@ import kamkeel.npcs.network.packets.request.role.RoleCompanionUpdatePacket; import kamkeel.npcs.network.packets.request.role.RoleGetPacket; import kamkeel.npcs.network.packets.request.role.RoleSavePacket; import kamkeel.npcs.network.packets.request.script.*; +import kamkeel.npcs.network.packets.request.script.item.ItemScriptErrorPacket; +import kamkeel.npcs.network.packets.request.script.item.ItemScriptPacket; import kamkeel.npcs.network.packets.request.tags.*; import kamkeel.npcs.network.packets.request.transform.TransformGetPacket; import kamkeel.npcs.network.packets.request.transform.TransformLoadPacket; @@ -115,6 +117,7 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new ForgeScriptPacket()); REQUEST_PACKET.registerPacket(new GlobalNPCScriptPacket()); REQUEST_PACKET.registerPacket(new ItemScriptPacket()); + REQUEST_PACKET.registerPacket(new ItemScriptErrorPacket()); REQUEST_PACKET.registerPacket(new NPCScriptPacket()); REQUEST_PACKET.registerPacket(new PlayerScriptPacket()); REQUEST_PACKET.registerPacket(new ScriptInfoPacket()); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index db80613b6..d4ab15674 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -159,5 +159,15 @@ public enum EnumRequestPacket { CloneAllTagsShort, ClonePreSave, - EventScript, PlayerScript, ForgeScript, GlobalNPCScript, ItemScript, BlockScript, NPCScript, ScriptInfo, DimensionTeleport + EventScript, + PlayerScript, + ForgeScript, + GlobalNPCScript, + ItemScript, + ItemScriptError, + BlockScript, + NPCScript, + ScriptInfo, + + DimensionTeleport } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/item/ItemScriptErrorPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/item/ItemScriptErrorPacket.java new file mode 100644 index 000000000..c40417a41 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/item/ItemScriptErrorPacket.java @@ -0,0 +1,108 @@ +package kamkeel.npcs.network.packets.request.script.item; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NBTTags; +import noppes.npcs.api.item.IItemStack; +import noppes.npcs.client.gui.script.GuiScriptItem; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ScriptContainer; +import noppes.npcs.controllers.ScriptController; +import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.item.ScriptCustomItem; + +import java.io.IOException; +import java.util.Map; +import java.util.TreeMap; + +public final class ItemScriptErrorPacket extends AbstractPacket { + public static String packetName = "Request|ItemScriptError"; + + private Action action; + + public ItemScriptErrorPacket() {} + + public ItemScriptErrorPacket(Action action) { + this.action = action; + } + + @Override + public Enum getType() { + return EnumRequestPacket.ItemScriptError; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.SCRIPT_ITEM; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(action.ordinal()); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) + return; + + + Action requestedAction = Action.values()[in.readInt()]; + IItemStack iw = NpcAPI.Instance().getIItemStack(player.getHeldItem()); + if(iw instanceof ScriptCustomItem){ + if(requestedAction == Action.GET){ + TreeMap map = new TreeMap<>(); + int tab = 0; + for (ScriptContainer script : ((ScriptCustomItem) iw).scripts) { + ++tab; + + for (Map.Entry longStringEntry : script.console.entrySet()) { + map.put(longStringEntry.getKey(), " tab " + tab + ":\n" + longStringEntry.getValue()); + } + } + + NBTTagCompound compound = new NBTTagCompound(); + compound.setTag("ItemScriptConsole", NBTTags.NBTLongStringMap(map)); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } else { + for (ScriptContainer script : ((ScriptCustomItem) iw).scripts) { + script.console.clear(); + } + } + } + } + + public static void Clear() { + PacketClient.sendClient(new ItemScriptErrorPacket(Action.CLEAR)); + } + + public static void Get() { + PacketClient.sendClient(new ItemScriptErrorPacket(Action.GET)); + } + + private enum Action { + GET, + CLEAR + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/ItemScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/item/ItemScriptPacket.java similarity index 93% rename from src/main/java/kamkeel/npcs/network/packets/request/script/ItemScriptPacket.java rename to src/main/java/kamkeel/npcs/network/packets/request/script/item/ItemScriptPacket.java index 07be1630d..bc66d732f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/script/ItemScriptPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/item/ItemScriptPacket.java @@ -1,10 +1,9 @@ -package kamkeel.npcs.network.packets.request.script; +package kamkeel.npcs.network.packets.request.script.item; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.*; -import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.network.packets.data.large.GuiDataPacket; import kamkeel.npcs.util.ByteBufUtils; @@ -14,8 +13,6 @@ import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.config.ConfigScript; import noppes.npcs.controllers.ScriptController; -import noppes.npcs.controllers.data.IScriptHandler; -import noppes.npcs.controllers.data.PlayerDataScript; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.item.ScriptCustomItem; diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java index 0b0475ebd..dabf86bf8 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java @@ -20,7 +20,7 @@ import java.util.*; import java.util.Map.Entry; public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallback, IGuiData, ITextChangeListener, ICustomScrollListener, IJTextAreaListener, ITextfieldListener { - private int activeTab = 0; + protected int activeTab = 0; public IScriptHandler handler; public Map> languages = new HashMap(); private int scriptLimit = 1; @@ -113,7 +113,8 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb this.addScroll(scroll); } else { GuiNpcTextArea var8 = new GuiNpcTextArea(2, this, this.guiLeft + 4 + yoffset, this.guiTop + 6 + yoffset, this.xSize - 160 - yoffset, (int)((float)this.ySize * 0.92F) - yoffset * 2, this.getConsoleText()); - var8.enabled = false; + var8.canEdit = false; + var8.setFocused(true); this.addTextField(var8); int var9 = this.guiLeft + this.xSize - 150; this.addButton(new GuiNpcButton(100, var9, this.guiTop + 125, 60, 20, "gui.copy")); @@ -159,7 +160,7 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb } - private String getConsoleText() { + protected String getConsoleText() { Map map = this.handler.getConsoleText(); StringBuilder builder = new StringBuilder(); Iterator var3 = map.entrySet().iterator(); diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java index 7100b0b33..6f7d9e1cd 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java @@ -1,15 +1,26 @@ package noppes.npcs.client.gui.script; -import kamkeel.npcs.network.packets.request.script.ItemScriptPacket; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.script.item.ItemScriptErrorPacket; +import kamkeel.npcs.network.packets.request.script.item.ItemScriptPacket; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomItems; +import noppes.npcs.NBTTags; +import noppes.npcs.NoppesStringUtils; +import noppes.npcs.controllers.ScriptContainer; import noppes.npcs.scripted.item.ScriptCustomItem; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + public class GuiScriptItem extends GuiScriptInterface { private ScriptCustomItem item; + public static Map consoleText = new HashMap<>(); public GuiScriptItem() { hookList.add("init"); @@ -26,17 +37,47 @@ public class GuiScriptItem extends GuiScriptInterface { hookList.add("finishItem"); this.handler = this.item = new ScriptCustomItem(new ItemStack(CustomItems.scripted_item)); + ItemScriptErrorPacket.Get(); ItemScriptPacket.Get(); } public void setGuiData(NBTTagCompound compound) { - this.item.setMCNbt(compound); - this.item.loadScriptData(); - super.setGuiData(compound); + if(compound.hasKey("ItemScriptConsole")){ + consoleText = NBTTags.GetLongStringMap(compound.getTagList("ItemScriptConsole", 10)); + initGui(); + } + else { + this.item.setMCNbt(compound); + this.item.loadScriptData(); + super.setGuiData(compound); + } } public void save() { super.save(); ItemScriptPacket.Save(this.item.getMCNbt()); } + + protected String getConsoleText() { + Map map = consoleText; + StringBuilder builder = new StringBuilder(); + Iterator var3 = map.entrySet().iterator(); + + while(var3.hasNext()) { + Map.Entry entry = (Map.Entry)var3.next(); + builder.insert(0, new Date((Long)entry.getKey()) + (String)entry.getValue() + "\n"); + } + + return builder.toString(); + } + + public void confirmClicked(boolean flag, int i) { + if(i == 102) { + if (activeTab <= 0){ + consoleText = new HashMap<>(); + ItemScriptErrorPacket.Clear(); + } + } + super.confirmClicked(flag, i); + } } diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextArea.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextArea.java index d2be0c1bb..076306b86 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextArea.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextArea.java @@ -90,20 +90,18 @@ public class GuiNpcTextArea extends GuiNpcTextField { } return false; } - + @Override public void mouseClicked(int i, int j, int k){ boolean wasFocused = isFocused(); super.mouseClicked(i, j, k); - + if(hoverVerticalScrollBar(i, j)){ clickVerticalBar = true; startClick = -1; return; } - if(k != 0 || !canEdit) - return; - + int x = i - posX; int y = (j - posY - 4) / font.height() + getStartLineY(); cursorPosition = 0; @@ -126,22 +124,22 @@ public class GuiNpcTextArea extends GuiNpcTextField { return; charCount++; line += c; - + } cursorPosition = charCount; - + lineCount++; charCount++; if(y < lineCount){ break; } - } + } if(y >= lineCount) cursorPosition = getText().length(); } - + private List getLines(){ List list = new ArrayList(); String line = ""; @@ -156,7 +154,7 @@ public class GuiNpcTextArea extends GuiNpcTextField { list.add(line); return list; } - + private int getStartLineY(){ if(!isScrolling()) scrolledY = 0; @@ -171,9 +169,9 @@ public class GuiNpcTextArea extends GuiNpcTextField { //int color = isEnabled?0xe0e0e0:0x707070; int color = 0xe0e0e0; boolean flag = isFocused() && (cursorCounter / 6) % 2 == 0; - + int startLine = getStartLineY(); - + int maxLine = height / font.height() + startLine; int charCount = 0; @@ -193,7 +191,7 @@ public class GuiNpcTextArea extends GuiNpcTextField { int xx = posX + font.width(line) + 4; int yy = posY + ((lineCount - startLine) * font.height()) + 4; if(getText().length() == cursorPosition){ - font.drawString("_", xx, yy, color); + font.drawString("_", xx, yy, color); } else{ drawCursorVertical(xx, yy, xx + 1, yy + font.height()); @@ -208,7 +206,7 @@ public class GuiNpcTextArea extends GuiNpcTextField { int xx = posX + font.width(line) + 4; int yy = posY + ((lineCount - startLine) * font.height()) + 4; if(getText().length() == cursorPosition){ - font.drawString("_", xx, yy, color); + font.drawString("_", xx, yy, color); } else{ drawCursorVertical(xx, yy, xx + 1, yy + font.height()); @@ -218,8 +216,8 @@ public class GuiNpcTextArea extends GuiNpcTextField { lineCount++; charCount++; } - - + + int k2 = Mouse.getDWheel(); if(k2 != 0 && isFocused()){ addScrollY(k2 < 0?-10:10); @@ -229,10 +227,10 @@ public class GuiNpcTextArea extends GuiNpcTextField { if(clickVerticalBar){ if(startClick >= 0) addScrollY(startClick - (mouseY - posY)); - + if(hoverVerticalScrollBar(mouseX, mouseY)) startClick = mouseY - posY; - + startClick = mouseY - posY; } } @@ -242,20 +240,20 @@ public class GuiNpcTextArea extends GuiNpcTextField { listHeight = lineCount * font.height(); drawVerticalScrollBar(); } - + public void drawString(FontRenderer fontRendererIn, String text, int x, int y, int color){ GL11.glColor4f(1, 1, 1, 1); font.drawString(text, x, y, color); //super.drawString(fontRendererIn, text, x, y, color); } - + private boolean isScrolling() { return listHeight > height - 4; } private void addScrollY(int scrolled){ scrolledY -= 1f * scrolled / height; - + if(scrolledY < 0) scrolledY = 0; @@ -263,17 +261,17 @@ public class GuiNpcTextArea extends GuiNpcTextField { if(scrolledY > max ) scrolledY = max; } - + private boolean hoverVerticalScrollBar(int x, int y){ if(listHeight <= height - 4) return false; - + if(posY < y && posY + height > y && x < posX + width && x > posX + (width - 8)) return true; - + return false; } - + private void drawCursorVertical(int p_146188_1_, int p_146188_2_, int p_146188_3_, int p_146188_4_){ int i1; diff --git a/src/main/java/noppes/npcs/controllers/ScriptContainer.java b/src/main/java/noppes/npcs/controllers/ScriptContainer.java index e5affe66b..8ed7045d3 100644 --- a/src/main/java/noppes/npcs/controllers/ScriptContainer.java +++ b/src/main/java/noppes/npcs/controllers/ScriptContainer.java @@ -132,7 +132,7 @@ public class ScriptContainer { var14.printStackTrace(pw); } finally { String errorString = sw.getBuffer().toString().trim(); - this.appandConsole(errorString); + this.appendConsole(errorString); pw.close(); } } @@ -201,14 +201,14 @@ public class ScriptContainer { e.printStackTrace(pw); } finally { - appandConsole(sw.getBuffer().toString().trim()); + appendConsole(sw.getBuffer().toString().trim()); pw.close(); Current = null; } } } - public void appandConsole(String message) { + public void appendConsole(String message) { if (message != null && !message.isEmpty()) { long time = System.currentTimeMillis(); if (this.console.containsKey(time)) { From e9004aafa3ebe51fb4e5859cf472ada3f3ed8abe Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 9 Feb 2025 04:47:36 -0500 Subject: [PATCH 130/157] Rename to Linked GUI --- src/main/java/noppes/npcs/client/ClientProxy.java | 2 +- .../{GuiNPCManageLinkedNpc.java => GuiNPCManageLinked.java} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/main/java/noppes/npcs/client/gui/global/{GuiNPCManageLinkedNpc.java => GuiNPCManageLinked.java} (94%) diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index 5e91116ba..dc9df0a67 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -272,7 +272,7 @@ public class ClientProxy extends CommonProxy { return new GuiNPCManageAnimations(animNpc, save); } else if (gui == EnumGuiType.ManageLinked) - return new GuiNPCManageLinkedNpc(npc); + return new GuiNPCManageLinked(npc); else if (gui == EnumGuiType.ManageTransport) return new GuiNPCManageTransporters(npc); diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinkedNpc.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinked.java similarity index 94% rename from src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinkedNpc.java rename to src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinked.java index 2e3cd06f8..4ddd059d8 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinkedNpc.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageLinked.java @@ -17,14 +17,14 @@ import java.util.HashMap; import java.util.List; import java.util.Vector; -public class GuiNPCManageLinkedNpc extends GuiNPCInterface2 implements IScrollData, ISubGuiListener{ +public class GuiNPCManageLinked extends GuiNPCInterface2 implements IScrollData, ISubGuiListener{ private GuiCustomScroll scroll; private List data = new ArrayList(); private String search = ""; public static GuiScreen Instance; - public GuiNPCManageLinkedNpc(EntityNPCInterface npc){ + public GuiNPCManageLinked(EntityNPCInterface npc){ super(npc); Instance = this; PacketClient.sendClient(new LinkedGetAllPacket()); From 9cda5503edbd7dfadb435b8e0990aedaf092ed6f Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 9 Feb 2025 20:49:45 -0500 Subject: [PATCH 131/157] Anvil Recipes Beginning --- src/main/java/noppes/npcs/CommonProxy.java | 5 +- .../npcs/blocks/BlockCarpentryBench.java | 11 +- .../java/noppes/npcs/client/ClientProxy.java | 5 +- .../client/gui/player/GuiAnvilRecipes.java | 232 +++++++++++ .../npcs/client/gui/player/GuiNpcAnvil.java | 81 ++++ .../noppes/npcs/constants/EnumGuiType.java | 9 +- .../npcs/containers/ContainerAnvilRepair.java | 370 ++++++++++++++++++ .../npcs/controllers/MagicController.java | 4 +- .../npcs/controllers/RecipeController.java | 142 ++++++- .../npcs/controllers/data/RecipeAnvil.java | 111 ++++++ .../npcs/controllers/data/RecipesDefault.java | 8 +- .../assets/customnpcs/textures/gui/anvil.png | Bin 0 -> 904 bytes .../customnpcs/textures/gui/recipesAnvil.png | Bin 0 -> 1205 bytes 13 files changed, 947 insertions(+), 31 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java create mode 100644 src/main/java/noppes/npcs/client/gui/player/GuiNpcAnvil.java create mode 100644 src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java create mode 100644 src/main/java/noppes/npcs/controllers/data/RecipeAnvil.java create mode 100644 src/main/resources/assets/customnpcs/textures/gui/anvil.png create mode 100644 src/main/resources/assets/customnpcs/textures/gui/recipesAnvil.png diff --git a/src/main/java/noppes/npcs/CommonProxy.java b/src/main/java/noppes/npcs/CommonProxy.java index a799a8938..1d45e4cee 100644 --- a/src/main/java/noppes/npcs/CommonProxy.java +++ b/src/main/java/noppes/npcs/CommonProxy.java @@ -64,9 +64,12 @@ public class CommonProxy implements IGuiHandler { if(gui == EnumGuiType.PlayerTrader) return new ContainerNPCTrader(npc, player); - if(gui == EnumGuiType.PlayerAnvil) + if(gui == EnumGuiType.PlayerCarpentryBench) return new ContainerCarpentryBench(player.inventory, player.worldObj, x, y, z); + if(gui == EnumGuiType.PlayerAnvil) + return new ContainerAnvilRepair(player.inventory, player.worldObj, x, y, z); + if(gui == EnumGuiType.SetupItemGiver) return new ContainerNpcItemGiver(npc, player); diff --git a/src/main/java/noppes/npcs/blocks/BlockCarpentryBench.java b/src/main/java/noppes/npcs/blocks/BlockCarpentryBench.java index a435939fb..5b579c406 100644 --- a/src/main/java/noppes/npcs/blocks/BlockCarpentryBench.java +++ b/src/main/java/noppes/npcs/blocks/BlockCarpentryBench.java @@ -2,9 +2,9 @@ package noppes.npcs.blocks; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -32,9 +32,14 @@ public class BlockCarpentryBench extends BlockContainer @Override public boolean onBlockActivated(World par1World, int i, int j, int k, EntityPlayer player, int par6, float par7, float par8, float par9) - {//onBlockActivated + { if(!par1World.isRemote){ - player.openGui(CustomNpcs.instance, EnumGuiType.PlayerAnvil.ordinal(), par1World, i, j, k); + int meta = par1World.getBlockMetadata(i, j, k); + if(meta >= 4){ + player.openGui(CustomNpcs.instance, EnumGuiType.PlayerAnvil.ordinal(), par1World, i, j, k); + } else { + player.openGui(CustomNpcs.instance, EnumGuiType.PlayerCarpentryBench.ordinal(), par1World, i, j, k); + } } return true; } diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index dc9df0a67..896528a4e 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -316,9 +316,12 @@ public class ClientProxy extends CommonProxy { else if (gui == EnumGuiType.ScriptItem) return new GuiScriptItem(); - else if (gui == EnumGuiType.PlayerAnvil) + else if (gui == EnumGuiType.PlayerCarpentryBench) return new GuiNpcCarpentryBench((ContainerCarpentryBench) container); + else if (gui == EnumGuiType.PlayerAnvil) + return new GuiNpcAnvil((ContainerAnvilRepair) container); + else if (gui == EnumGuiType.SetupFollower) return new GuiNpcFollowerSetup(npc, (ContainerNPCFollowerSetup) container); diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java b/src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java new file mode 100644 index 000000000..d0ba2533c --- /dev/null +++ b/src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java @@ -0,0 +1,232 @@ +package noppes.npcs.client.gui.player; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.ArrayList; +import java.util.List; + +import noppes.npcs.client.CustomNpcResourceListener; +import noppes.npcs.client.gui.util.*; +import noppes.npcs.controllers.RecipeController; +import noppes.npcs.controllers.data.RecipeAnvil; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import noppes.npcs.util.ValueUtil; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +@SideOnly(Side.CLIENT) +public class GuiAnvilRecipes extends GuiNPCInterface { + + private static final ResourceLocation SLOT_TEXTURE = new ResourceLocation("customnpcs", "textures/gui/slot.png"); + + private int page = 0; + private GuiNpcLabel lblPage; + private GuiNpcButton btnLeft, btnRight; + private List recipes = new ArrayList(); + private String search = ""; + + public GuiAnvilRecipes() { + this.xSize = 256; + this.ySize = 182; + setBackground("recipesAnvil.png"); + this.closeOnEsc = true; + + recipes.addAll(RecipeController.Instance.anvilRecipes.values()); + } + + @Override + public void initGui() { + super.initGui(); + guiTop += 10; + // Add search text field (ID 3) at top. + addTextField(new GuiNpcTextField(3, this, fontRendererObj, guiLeft + 2, guiTop - 25, 250, 20, search)); + + addLabel(new GuiNpcLabel(0, "Anvil Recipe List", guiLeft + 5, guiTop + 5)); + addLabel(lblPage = new GuiNpcLabel(1, "", guiLeft + 5, guiTop + 168)); + + addButton(this.btnLeft = new GuiButtonNextPage(1, guiLeft + 150, guiTop + 164, true)); + addButton(this.btnRight = new GuiButtonNextPage(2, guiLeft + 80, guiTop + 164, false)); + + updateButton(); + } + + private void updateButton() { + // We want 8 recipes per page. + int maxPages = MathHelper.ceiling_float_int(recipes.size() / 8.0F); + btnRight.visible = btnRight.enabled = page > 0; + btnLeft.visible = btnLeft.enabled = page < maxPages - 1; + lblPage.label = (page + 1) + "/" + maxPages; + } + + @Override + public void keyTyped(char c, int i) { + super.keyTyped(c, i); + if(search.equals(getTextField(3).getText())) + return; + search = getTextField(3).getText().toLowerCase(); + recipes = getSearchList(); + page = 0; + updateButton(); + } + + private List getSearchList() { + if(search.isEmpty()) { + return new ArrayList(RecipeController.Instance.anvilRecipes.values()); + } + List list = new ArrayList(); + for(RecipeAnvil recipe : RecipeController.Instance.anvilRecipes.values()) { + ItemStack repairItem = recipe.itemToRepair; + if(repairItem == null) + continue; + if(repairItem.getDisplayName() == null) + continue; + if(repairItem.getDisplayName().trim().isEmpty()) + continue; + if(repairItem.getDisplayName().toLowerCase().contains(search)) + list.add(recipe); + } + return list; + } + + @Override + protected void actionPerformed(GuiButton button) { + if(!button.enabled) + return; + if(button == btnRight) { + if(page > 0) + page--; + } + if(button == btnLeft) { + int maxPages = MathHelper.ceiling_float_int(recipes.size() / 8.0F); + if(page < maxPages - 1) + page++; + } + updateButton(); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + super.drawScreen(mouseX, mouseY, partialTicks); + + // Update page label. + lblPage.label = (page + 1) + "/" + MathHelper.ceiling_float_int(recipes.size() / 8.0F); + lblPage.x = guiLeft + (xSize - Minecraft.getMinecraft().fontRenderer.getStringWidth(lblPage.label)) / 2; + + // Determine which recipes to show. + int recipesPerPage = 8; + int startIndex = page * recipesPerPage; + int endIndex = Math.min(recipes.size(), startIndex + recipesPerPage); + + // Set base positions: first column X and first row Y. + int baseX = guiLeft + 4; + int baseY = guiTop + 28; // first row Y = 28 + int colSpacing = 124; // horizontal spacing between columns + int rowSpacing = 35; // vertical spacing so row1 becomes 28+35 = 63 + + for (int i = startIndex; i < endIndex; i++) { + RecipeAnvil recipe = recipes.get(i); + int localIndex = i - startIndex; // 0 to 7 + int col = localIndex / 4; // 0 for left column, 1 for right column + int row = localIndex % 4; // 0 to 3 + + int slotX = baseX + col * colSpacing; + int slotY = baseY + row * rowSpacing; + + // Draw slot backgrounds for two input slots. + mc.renderEngine.bindTexture(SLOT_TEXTURE); + GL11.glColor4f(1F, 1F, 1F, 1F); + // Left slot (item to repair) + drawTexturedModalRect(slotX, slotY, 0, 0, 18, 18); + // Middle slot (repair material) + drawTexturedModalRect(slotX + 22, slotY, 0, 0, 18, 18); + + // Draw the item-to-repair at 50% durability. + ItemStack toRepair = recipe.itemToRepair; + if (toRepair != null) { + ItemStack halfItem = toRepair.copy(); + if (halfItem.isItemStackDamageable()) { + int halfDamage = halfItem.getMaxDamage() / 2; + halfItem.setItemDamage(halfDamage); + } + drawItem(halfItem, slotX + 1, slotY + 1, mouseX, mouseY); + } + // Draw the repair material. + ItemStack material = recipe.repairMaterial; + if (material != null) { + drawItem(material, slotX + 23, slotY + 1, mouseX, mouseY); + } + + // Draw the output item fully repaired (damage = 0). + // For first column, output X = guiLeft+103; second column, output X = guiLeft+229. + int outputX = (col == 0) ? (guiLeft + 103) : (guiLeft + 229); + if (recipe.itemToRepair != null) { + ItemStack fullOutput = recipe.itemToRepair.copy(); + if (fullOutput.isItemStackDamageable()) { + fullOutput.setItemDamage(0); + } + drawItem(fullOutput, outputX, slotY, mouseX, mouseY); + } + + // Draw the percentage text. + // We want the "middle right" for the first column to be at 68. + // So for column 0, centerX is fixed at 68; for column 1, centerX is 68 + colSpacing. + String percentText = Math.round(recipe.getRepairPercentage()) + "%"; + int textWidth = fontRendererObj.getStringWidth(percentText); + int centerX = (col == 0) ? guiLeft + 57 : (guiLeft + 57 + colSpacing); + int textX = centerX - (textWidth / 2); + int textY = slotY + 4 + row; + fontRendererObj.drawString(percentText, textX, textY, CustomNpcResourceListener.DefaultTextColor); + + // Draw XP cost with scaling. + String xpCostStr = formatXpCost(recipe.getXpCost()); + int digitCount = xpCostStr.length(); + // Scale factor: for 1 digit = 1.0, for 2 digits = 0.9, for 3 digits = 0.8. + float xpScale = 1.0F - 0.1F * (digitCount - 1); + // Get raw text width. + int rawTextWidth = fontRendererObj.getStringWidth(xpCostStr); + int scaledTextWidth = (int)(rawTextWidth * xpScale); + int xpCenterX = (col == 0) ? (guiLeft + 76) : (guiLeft + 78 + colSpacing); + int xpTextX = xpCenterX - (scaledTextWidth / 2); + int xpTextY = slotY - 4 + row; // adjust as needed + + GL11.glPushMatrix(); + GL11.glTranslatef(xpTextX, xpTextY, 0); + GL11.glScalef(xpScale, xpScale, 1.0F); + fontRendererObj.drawString(xpCostStr, 0, 0, 0x4ac26a); + GL11.glPopMatrix(); + } + } + + private String formatXpCost(int xp) { + if (xp < 1000) { + return String.valueOf(xp); + } + double xpK = xp / 1000.0; + if (xpK == (int)xpK) { + return ((int)xpK) + "K"; + } else { + return String.format("%.1fK", xpK); + } + } + + private void drawItem(ItemStack item, int x, int y, int mouseX, int mouseY) { + GL11.glPushMatrix(); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + RenderHelper.enableGUIStandardItemLighting(); + itemRender.zLevel = 100.0F; + itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.renderEngine, item, x, y); + itemRender.renderItemOverlayIntoGUI(fontRendererObj, mc.renderEngine, item, x, y); + itemRender.zLevel = 0.0F; + RenderHelper.disableStandardItemLighting(); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glPopMatrix(); + } + + @Override + public void save() {} +} diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiNpcAnvil.java b/src/main/java/noppes/npcs/client/gui/player/GuiNpcAnvil.java new file mode 100644 index 000000000..b33075f5c --- /dev/null +++ b/src/main/java/noppes/npcs/client/gui/player/GuiNpcAnvil.java @@ -0,0 +1,81 @@ +package noppes.npcs.client.gui.player; + +import net.minecraft.client.gui.GuiButton; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import noppes.npcs.client.CustomNpcResourceListener; +import noppes.npcs.client.gui.util.GuiContainerNPCInterface; +import noppes.npcs.client.gui.util.GuiNpcButton; +import noppes.npcs.containers.ContainerAnvilRepair; +import noppes.npcs.controllers.RecipeController; +import org.lwjgl.opengl.GL11; + +public class GuiNpcAnvil extends GuiContainerNPCInterface { + + private final ResourceLocation resource = new ResourceLocation("customnpcs", "textures/gui/anvil.png"); + private ContainerAnvilRepair container; + private GuiNpcButton button; + + public GuiNpcAnvil(ContainerAnvilRepair container) { + super(null, container); + this.container = container; + this.title = ""; + allowUserInput = false; + closeOnEsc = true; + ySize = 180; + } + + @Override + public void initGui() { + super.initGui(); + addButton(button = new GuiNpcButton(0, guiLeft + 158, guiTop + 4, 12, 20, "...")); + } + + @Override + public void buttonEvent(GuiButton guibutton) { + displayGuiScreen(new GuiAnvilRecipes()); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { + // Enable the button if there are any anvil recipes. + button.enabled = RecipeController.Instance != null && !RecipeController.Instance.getAnvilList().isEmpty(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + mc.renderEngine.bindTexture(resource); + int l = (width - xSize) / 2; + int i1 = (height - ySize) / 2; + drawTexturedModalRect(l, i1, 0, 0, xSize, ySize); + super.drawGuiContainerBackgroundLayer(partialTicks, mouseX, mouseY); + + // Draw title and player's inventory label. + fontRendererObj.drawString(StatCollector.translateToLocal("tile.anvil.name"), guiLeft + 4, guiTop + 4, CustomNpcResourceListener.DefaultTextColor); + fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), guiLeft + 4, guiTop + 87, CustomNpcResourceListener.DefaultTextColor); + + // Compute the repair status message based on container.repairCost and player's XP. + String status = ""; + if (container.repairCost > 0) { + if (container.repairCost > mc.thePlayer.experienceTotal) { + status = "Repair cost: " + container.repairCost + " XP"; + } else { + status = "Repair cost: " + container.repairCost + " XP"; + } + } else { + // If there is a damaged item that is fully repaired. + if (container.anvilMatrix.getStackInRowAndColumn(0, 0) != null && + container.anvilMatrix.getStackInRowAndColumn(0, 0).isItemStackDamageable() && + container.anvilMatrix.getStackInRowAndColumn(0, 0).getItemDamage() <= 0) { + status = "Item is already fully repaired"; + } + } + int textColor = CustomNpcResourceListener.DefaultTextColor; + if (container.repairCost > mc.thePlayer.experienceTotal) { + textColor = 0xFF0000; // red when not enough XP + } + fontRendererObj.drawString(status, guiLeft + 5, guiTop + 75, textColor); + } + + @Override + public void save() { + // Nothing to save. + } +} diff --git a/src/main/java/noppes/npcs/constants/EnumGuiType.java b/src/main/java/noppes/npcs/constants/EnumGuiType.java index 5b028c886..7ce4f7e02 100644 --- a/src/main/java/noppes/npcs/constants/EnumGuiType.java +++ b/src/main/java/noppes/npcs/constants/EnumGuiType.java @@ -1,5 +1,11 @@ package noppes.npcs.constants; +import noppes.npcs.quests.QuestItem; +import noppes.npcs.roles.companion.CompanionTrader; +import noppes.npcs.scripted.ScriptBlock; + +import javax.swing.border.Border; + public enum EnumGuiType { MainMenuDisplay, MainMenuInv, @@ -27,7 +33,8 @@ public enum EnumGuiType { SetupBank, ManageDialogs, ManageQuests, - PlayerAnvil, + PlayerCarpentryBench, + PlayerAnvil, QuestReward, ManageRecipes, QuestItem, diff --git a/src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java b/src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java new file mode 100644 index 000000000..df2badcc9 --- /dev/null +++ b/src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java @@ -0,0 +1,370 @@ +package noppes.npcs.containers; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.init.Items; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.inventory.InventoryCraftResult; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.network.play.server.S2FPacketSetSlot; +import net.minecraft.world.World; +import noppes.npcs.api.handler.data.IAnvilRecipe; +import noppes.npcs.controllers.RecipeController; +import noppes.npcs.controllers.data.RecipeAnvil; + +public class ContainerAnvilRepair extends Container { + // A 2-slot crafting matrix: slot 0 = damaged item, slot 1 = repair material. + public InventoryCrafting anvilMatrix = new InventoryCrafting(this, 2, 1); + // Single-slot output inventory. + public InventoryCraftResult anvilResult = new InventoryCraftResult(); + + private EntityPlayer player; + private World worldObj; + private int posX, posY, posZ; + + // These fields are used for syncing the repair cost message. + public String repairStatus = ""; + public int repairCost = 0; + // How many repair material items are used during the repair calculation. + public int repairMaterialConsumed = 0; + + public ContainerAnvilRepair(InventoryPlayer playerInv, World world, int x, int y, int z) { + this.worldObj = world; + this.posX = x; + this.posY = y; + this.posZ = z; + this.player = playerInv.player; + + // Output slot (index 0) using our custom SlotAnvilOutput. + this.addSlotToContainer(new SlotAnvilOutput(this, anvilResult, 0, 133, 47)); + + // Input slot 0: damaged item. We restrict its stack size to 1. + this.addSlotToContainer(new Slot(anvilMatrix, 0, 26, 47) { + @Override + public int getSlotStackLimit() { + return 1; + } + }); + // Input slot 1: repair material. Override onSlotChanged so that changes to the stack size trigger an update. + this.addSlotToContainer(new Slot(anvilMatrix, 1, 75, 47) { + @Override + public void onSlotChanged() { + super.onSlotChanged(); + ContainerAnvilRepair.this.onCraftMatrixChanged(anvilMatrix); + } + }); + + // Add player inventory slots. + for (int row = 0; row < 3; ++row) { + for (int col = 0; col < 9; ++col) { + this.addSlotToContainer(new Slot(playerInv, col + row * 9 + 9, 8 + col * 18, 98 + row * 18)); + } + } + for (int col = 0; col < 9; ++col) { + this.addSlotToContainer(new Slot(playerInv, col, 8 + col * 18, 156)); + } + + updateRepairResult(); + + // For testing: clear recipes and add a test recipe. + RecipeController.Instance.anvilRecipes.clear(); + RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( + "Test", + new ItemStack(Items.iron_pickaxe), + new ItemStack(Items.paper), + 4, + 3)); + RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( + "Okay", + new ItemStack(Items.diamond_pickaxe), + new ItemStack(Items.paper), + 4, + 3)); + RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( + "Bob", + new ItemStack(Items.golden_pickaxe), + new ItemStack(Items.paper), + 4, + 3)); + RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( + "Dude", + new ItemStack(Items.iron_chestplate), + new ItemStack(Items.paper), + 4, + 3)); + RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( + "Oas", + new ItemStack(Items.golden_pickaxe), + new ItemStack(Items.diamond), + 4, + 3)); + RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( + "awd", + new ItemStack(Items.golden_sword), + new ItemStack(Items.gold_ingot), + 4, + 3)); + RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( + "fawd", + new ItemStack(Items.bow), + new ItemStack(Items.string), + 4, + 3)); + RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( + "cxzs", + new ItemStack(Items.bow), + new ItemStack(Items.diamond), + 4, + 3)); + RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( + "awdawdwa", + new ItemStack(Items.iron_sword), + new ItemStack(Items.blaze_rod), + 4, + 3)); + } + + @Override + public void onCraftMatrixChanged(IInventory inventory) { + updateRepairResult(); + detectAndSendChanges(); + } + + /** + * Updates the output slot (and repair cost fields) based on the two input slots. + * Instead of forcing the damaged item’s stack to 1 (which deletes extra items), + * we create a copy with stackSize 1 for calculations. Then, when the repair is picked up, + * we subtract one from the original stack. + */ + public void updateRepairResult() { + if (!this.worldObj.isRemote) { + repairMaterialConsumed = 0; + ItemStack input0 = anvilMatrix.getStackInRowAndColumn(0, 0); + ItemStack input1 = anvilMatrix.getStackInRowAndColumn(1, 0); + + // If either input is missing, clear output. + if (input0 == null || input1 == null) { + repairCost = 0; + anvilResult.setInventorySlotContents(0, null); + return; + } + + // Create a copy of the damaged item for calculation (stack size 1) + ItemStack calcItem = input0.copy(); + calcItem.stackSize = 1; + + // If the item is damageable and already fully repaired, show a message. + if (calcItem.isItemStackDamageable() && calcItem.getItemDamage() <= 0) { + repairCost = 0; + anvilResult.setInventorySlotContents(0, null); + return; + } + + // Look for a matching recipe. + RecipeAnvil matchingRecipe = null; + for (IAnvilRecipe recipe : RecipeController.Instance.getAnvilList()) { + if (recipe.matches(input0, input1)) { + matchingRecipe = (RecipeAnvil) recipe; + break; + } + } + + ItemStack output = null; + if (matchingRecipe != null) { + int baseXpCost = matchingRecipe.getXpCost(); + // Assume repairPercentage is given as a percent (e.g. 20 for 20% per material) + float repairPercentage = matchingRecipe.getRepairPercentage() / 100.0f; + + int maxDamage = calcItem.getMaxDamage(); + int currentDamage = calcItem.getItemDamage(); + + // Fixed repair amount per material (at least 1 point) + int repairPerMaterial = (int) Math.floor(maxDamage * repairPercentage); + if (repairPerMaterial < 1) { + repairPerMaterial = 1; + } + + int availableMaterials = input1.stackSize; + int materialsUsed = 0; + + while (currentDamage > 0 && materialsUsed < availableMaterials) { + int repairThisIteration = repairPerMaterial; + if (repairThisIteration > currentDamage) { + repairThisIteration = currentDamage; + } + currentDamage -= repairThisIteration; + materialsUsed++; + + // Stop if item is fully repaired. + if (currentDamage <= 0) { + break; + } + } + int xpCost = baseXpCost * materialsUsed; + + calcItem.setItemDamage(currentDamage); + if (player.experienceTotal >= xpCost) { + output = calcItem; + } + repairMaterialConsumed = materialsUsed; + repairCost = xpCost; + } else { + repairCost = 0; + } + + anvilResult.setInventorySlotContents(0, output); + } + } + + + + + // --- Sync Methods --- + @Override + public void addCraftingToCrafters(ICrafting listener) { + super.addCraftingToCrafters(listener); + listener.sendProgressBarUpdate(this, 0, this.repairCost); + } + + @Override + public void detectAndSendChanges() { + super.detectAndSendChanges(); + for (Object crafterObj : this.crafters) { + ((ICrafting) crafterObj).sendProgressBarUpdate(this, 0, this.repairCost); + } + } + + @Override + public void updateProgressBar(int id, int data) { + if (id == 0) { + this.repairCost = data; + } + } + // --- End Sync Methods --- + + @Override + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + if (!this.worldObj.isRemote) { + for (int i = 0; i < this.anvilMatrix.getSizeInventory(); i++) { + ItemStack stack = this.anvilMatrix.getStackInSlotOnClosing(i); + if (stack != null) { + player.dropPlayerItemWithRandomChoice(stack, false); + } + } + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return player.getDistanceSq((double)this.posX + 0.5D, + (double)this.posY + 0.5D, + (double)this.posZ + 0.5D) <= 64.0D; + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack copy = null; + Slot slot = (Slot)this.inventorySlots.get(index); + if (slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + copy = stack.copy(); + if (index == 0) { // output slot + if (player.experienceTotal < this.repairCost) { + return null; + } + if (!this.mergeItemStack(stack, 3, this.inventorySlots.size(), true)) { + return null; + } + slot.onSlotChange(stack, copy); + } else if (index >= 1 && index <= 2) { // input slots + if (!this.mergeItemStack(stack, 3, this.inventorySlots.size(), false)) { + return null; + } + } else { // player inventory + if (!this.mergeItemStack(stack, 1, 3, false)) { + return null; + } + } + if (stack.stackSize == 0) { + slot.putStack(null); + } else { + slot.onSlotChanged(); + } + if (stack.stackSize == copy.stackSize) { + return null; + } + slot.onPickupFromSlot(player, stack); + } + if (!this.worldObj.isRemote && player instanceof EntityPlayerMP) { + ((EntityPlayerMP) player).sendContainerToPlayer(this); + } + return copy; + } + + @Override + public boolean func_94530_a(ItemStack stack, Slot slotIn) { + return slotIn.inventory != this.anvilResult && super.func_94530_a(stack, slotIn); + } + + // Custom output slot: only allows pickup if the player has enough XP and, + // when picked up, consumes the required number of repair material items and + // subtracts one from the damaged item stack. + public class SlotAnvilOutput extends Slot { + private ContainerAnvilRepair container; + + public SlotAnvilOutput(ContainerAnvilRepair container, IInventory inventory, int index, int x, int y) { + super(inventory, index, x, y); + this.container = container; + } + + @Override + public boolean isItemValid(ItemStack stack) { + return false; + } + + @Override + public boolean canTakeStack(EntityPlayer player) { + return player.experienceTotal >= container.repairCost; + } + + @Override + public void onPickupFromSlot(EntityPlayer player, ItemStack stack) { + if (player.experienceTotal < container.repairCost) { + container.updateRepairResult(); + return; + } + if (!player.capabilities.isCreativeMode) { + player.addExperience(-container.repairCost); + } + + ItemStack repairMat = container.anvilMatrix.getStackInRowAndColumn(1, 0); + if (repairMat != null) { + if (repairMat.stackSize > container.repairMaterialConsumed) { + repairMat.stackSize -= container.repairMaterialConsumed; + } else { + repairMat = null; + } + container.anvilMatrix.setInventorySlotContents(1, repairMat); + } + + ItemStack input0 = container.anvilMatrix.getStackInRowAndColumn(0, 0); + if (input0 != null) { + if (input0.stackSize > 1) { + input0.stackSize -= 1; + } else { + input0 = null; + } + container.anvilMatrix.setInventorySlotContents(0, input0); + } + container.repairCost = 0; + container.updateRepairResult(); + super.onPickupFromSlot(player, stack); + } + } +} diff --git a/src/main/java/noppes/npcs/controllers/MagicController.java b/src/main/java/noppes/npcs/controllers/MagicController.java index da72e80a2..c92465252 100644 --- a/src/main/java/noppes/npcs/controllers/MagicController.java +++ b/src/main/java/noppes/npcs/controllers/MagicController.java @@ -57,7 +57,7 @@ public class MagicController { } catch (Exception ee) { } } magics.clear(); - if (true) { + if (false) { // Create default Pokémon types Magic normal = new Magic(0, "Normal", 0xA8A878); normal.setIconItem(new ItemStack(net.minecraft.init.Items.paper)); // using paper for Normal @@ -205,7 +205,7 @@ public class MagicController { magics.put(fairy.id, fairy); } - if (false) { + if (true) { // Create default magics Magic earth = new Magic(0, "Earth", 0x00DD00, 1, 1); earth.setIconItem(new ItemStack(CustomItems.earthElement)); diff --git a/src/main/java/noppes/npcs/controllers/RecipeController.java b/src/main/java/noppes/npcs/controllers/RecipeController.java index 1bdddd556..3eaea1fac 100644 --- a/src/main/java/noppes/npcs/controllers/RecipeController.java +++ b/src/main/java/noppes/npcs/controllers/RecipeController.java @@ -9,7 +9,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.CustomNpcs; import noppes.npcs.api.handler.IRecipeHandler; +import noppes.npcs.api.handler.data.IAnvilRecipe; import noppes.npcs.api.handler.data.IRecipe; +import noppes.npcs.controllers.data.RecipeAnvil; import noppes.npcs.controllers.data.RecipeCarpentry; import noppes.npcs.controllers.data.RecipesDefault; @@ -21,14 +23,19 @@ import java.util.*; public class RecipeController implements IRecipeHandler { private static Collection prevRecipes; - public HashMap globalRecipes = new HashMap(); - public HashMap carpentryRecipes = new HashMap(); - public static RecipeController Instance; + + public HashMap globalRecipes = new HashMap(); + public HashMap carpentryRecipes = new HashMap(); + public HashMap anvilRecipes = new HashMap(); + + public static RecipeController Instance; public static final int version = 1; public int nextId = 1; + public int nextAnvilId = 1; - public static HashMap syncRecipes = new HashMap(); + public static HashMap syncRecipes = new HashMap(); + public static HashMap syncAnvilRecipes = new HashMap(); public RecipeController(){ Instance = this; @@ -37,6 +44,7 @@ public class RecipeController implements IRecipeHandler { loadCategories(); reloadGlobalRecipes(globalRecipes); } + public static void reloadGlobalRecipes(HashMap globalRecipes){ List list = CraftingManager.getInstance().getRecipeList(); if(prevRecipes != null){ @@ -61,6 +69,7 @@ public class RecipeController implements IRecipeHandler { else{ globalRecipes.clear(); carpentryRecipes.clear(); + anvilRecipes.clear(); loadDefaultRecipes(-1); } } catch (Exception e) { @@ -85,23 +94,34 @@ public class RecipeController implements IRecipeHandler { private void loadCategories(File file) throws Exception{ NBTTagCompound nbttagcompound1 = CompressedStreamTools.readCompressed(new FileInputStream(file)); nextId = nbttagcompound1.getInteger("LastId"); + nextAnvilId = nbttagcompound1.getInteger("LastAnvilId"); NBTTagList list = nbttagcompound1.getTagList("Data", 10); HashMap globalRecipes = new HashMap(); - HashMap anvilRecipes = new HashMap(); + HashMap carpentryRecipes = new HashMap(); + HashMap anvilRecipes = new HashMap(); if(list != null){ for(int i = 0; i < list.tagCount(); i++) { - RecipeCarpentry recipe = RecipeCarpentry.read(list.getCompoundTagAt(i)); - if(recipe.isGlobal) - globalRecipes.put(recipe.id,recipe); - else - anvilRecipes.put(recipe.id,recipe); - if(recipe.id > nextId) - nextId = recipe.id; + NBTTagCompound compound = list.getCompoundTagAt(i); + if(compound.hasKey("IsAnvil")){ + RecipeAnvil anvil = RecipeAnvil.read(compound); + anvilRecipes.put(anvil.id, anvil); + if(anvil.id > nextAnvilId) + nextAnvilId = anvil.id; + } else { + RecipeCarpentry recipe = RecipeCarpentry.read(compound); + if(recipe.isGlobal) + globalRecipes.put(recipe.id,recipe); + else + carpentryRecipes.put(recipe.id,recipe); + if(recipe.id > nextId) + nextId = recipe.id; + } } } - this.carpentryRecipes = anvilRecipes; + this.carpentryRecipes = carpentryRecipes; this.globalRecipes = globalRecipes; + this.anvilRecipes = anvilRecipes; loadDefaultRecipes(nbttagcompound1.getInteger("Version")); } private void saveCategories(){ @@ -114,9 +134,13 @@ public class RecipeController implements IRecipeHandler { for(RecipeCarpentry recipe : carpentryRecipes.values()){ list.appendTag(recipe.writeNBT()); } + for(RecipeAnvil recipe : anvilRecipes.values()){ + list.appendTag(recipe.writeNBT()); + } NBTTagCompound nbttagcompound = new NBTTagCompound(); nbttagcompound.setTag("Data", list); nbttagcompound.setInteger("LastId", nextId); + nbttagcompound.setInteger("LastAnvilId", nextAnvilId); nbttagcompound.setInteger("Version", version); File file = new File(saveDir, "recipes.dat_new"); File file1 = new File(saveDir, "recipes.dat_old"); @@ -157,6 +181,12 @@ public class RecipeController implements IRecipeHandler { return null; } + public RecipeAnvil getAnvilRecipe(int id) { + if(anvilRecipes.containsKey(id)) + return anvilRecipes.get(id); + return null; + } + public RecipeCarpentry saveRecipe(NBTTagCompound compound) throws IOException { RecipeCarpentry recipe = RecipeCarpentry.read(compound); @@ -184,9 +214,34 @@ public class RecipeController implements IRecipeHandler { return recipe; } + public RecipeAnvil saveAnvilRecipe(NBTTagCompound compound) throws IOException { + RecipeAnvil recipe = RecipeAnvil.read(compound); + + RecipeAnvil current = getAnvilRecipe(recipe.id); + if(current != null && !current.name.equals(recipe.name)){ + while(containsRecipeName(recipe.name)) + recipe.name += "_"; + } + + if(recipe.id == -1){ + recipe.id = getUniqueAnvilId(); + while(containsRecipeName(recipe.name)) + recipe.name += "_"; + } + + anvilRecipes.put(recipe.id, recipe); + saveCategories(); + return recipe; + } + private int getUniqueId() { return nextId++; } + + private int getUniqueAnvilId() { + return nextAnvilId++; + } + private boolean containsRecipeName(String name) { name = name.toLowerCase(); for(RecipeCarpentry recipe : globalRecipes.values()){ @@ -200,6 +255,15 @@ public class RecipeController implements IRecipeHandler { return false; } + private boolean containsAnvilRecipeName(String name) { + name = name.toLowerCase(); + for(RecipeAnvil recipe : anvilRecipes.values()){ + if(recipe.name.toLowerCase().equals(name)) + return true; + } + return false; + } + public RecipeCarpentry delete(int id) { RecipeCarpentry recipe = getRecipe(id); if(recipe == null) @@ -210,29 +274,58 @@ public class RecipeController implements IRecipeHandler { RecipeCarpentry carpentry = carpentryRecipes.remove(recipe.id); if(carpentry != null) - SyncController.syncAllWorkbenchRecipes(); + SyncController.syncAllCarpentryRecipes(); saveCategories(); reloadGlobalRecipes(globalRecipes); return recipe; } - public void addRecipe(RecipeCarpentry recipeAnvil) { - recipeAnvil.id = getUniqueId(); - if(!recipeAnvil.isGlobal) - RecipeController.Instance.carpentryRecipes.put(recipeAnvil.id, recipeAnvil); + + public RecipeAnvil deleteAnvil(int id) { + RecipeAnvil recipe = getAnvilRecipe(id); + if(recipe == null) + return null; + + RecipeAnvil anvilRecipe = anvilRecipes.remove(recipe.id); + if(anvilRecipe != null) + // SyncController.syncAllWorkbenchRecipes(); + + saveCategories(); + return recipe; + } + + public void addRecipe(RecipeCarpentry recipeCarpentry) { + recipeCarpentry.id = getUniqueId(); + if(!recipeCarpentry.isGlobal) + RecipeController.Instance.carpentryRecipes.put(recipeCarpentry.id, recipeCarpentry); else{ - RecipeController.Instance.globalRecipes.put(recipeAnvil.id, recipeAnvil); + RecipeController.Instance.globalRecipes.put(recipeCarpentry.id, recipeCarpentry); } } + public void addAnvilRecipe(RecipeAnvil recipeAnvil) { + recipeAnvil.id = getUniqueAnvilId(); + anvilRecipes.put(recipeAnvil.id, recipeAnvil); + } + + @Override public List getGlobalList() { return new ArrayList(this.globalRecipes.values()); } + @Override public List getCarpentryList() { return new ArrayList(this.carpentryRecipes.values()); } + @Override + public List getAnvilList() { + List list = new ArrayList<>(); + list.addAll(anvilRecipes.values()); + return list; + } + + @Override public void addRecipe(String name, boolean global, ItemStack result, Object... objects) { RecipeCarpentry recipe = new RecipeCarpentry(name); recipe.isGlobal = global; @@ -245,6 +338,7 @@ public class RecipeController implements IRecipeHandler { } } + @Override public void addRecipe(String name, boolean global, ItemStack result, int width, int height, ItemStack... objects) { ArrayList list = new ArrayList<>(); int var9 = objects.length; @@ -266,4 +360,14 @@ public class RecipeController implements IRecipeHandler { var12.printStackTrace(); } } + + @Override + public void addAnvilRecipe(String name, boolean global, ItemStack itemToRepair, ItemStack repairMaterial, int xpCost, float repairPercentage) { + RecipeAnvil recipe = new RecipeAnvil(name, itemToRepair, repairMaterial, xpCost, repairPercentage); + try { + this.saveAnvilRecipe(recipe.writeNBT()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/noppes/npcs/controllers/data/RecipeAnvil.java b/src/main/java/noppes/npcs/controllers/data/RecipeAnvil.java new file mode 100644 index 000000000..e153fe3a8 --- /dev/null +++ b/src/main/java/noppes/npcs/controllers/data/RecipeAnvil.java @@ -0,0 +1,111 @@ +package noppes.npcs.controllers.data; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.api.handler.data.IAnvilRecipe; +import noppes.npcs.NoppesUtilPlayer; +import noppes.npcs.NoppesUtilServer; + +public class RecipeAnvil implements IAnvilRecipe { + public int id = -1; + public String name = ""; + public Availability availability = new Availability(); + public boolean ignoreNBT = false; + + public ItemStack itemToRepair; + public ItemStack repairMaterial; + + private int xpCost; + private float repairPercentage; + + private boolean isAnvil = true; + + public RecipeAnvil() { } + + public RecipeAnvil(String name, ItemStack itemToRepair, ItemStack repairMaterial, int xpCost, float repairPercentage) { + this.name = name; + this.itemToRepair = itemToRepair; + this.repairMaterial = repairMaterial; + this.xpCost = xpCost; + this.repairPercentage = repairPercentage; + } + + public static RecipeAnvil read(NBTTagCompound compound) { + RecipeAnvil recipe = new RecipeAnvil(); + recipe.id = compound.getInteger("ID"); + recipe.name = compound.getString("Name"); + recipe.availability.readFromNBT(compound.getCompoundTag("Availability")); + recipe.xpCost = compound.getInteger("XPCost"); + recipe.repairPercentage = compound.getFloat("RepairPercentage"); + recipe.itemToRepair = NoppesUtilServer.readItem(compound.getCompoundTag("ItemToRepair")); + recipe.repairMaterial = NoppesUtilServer.readItem(compound.getCompoundTag("RepairMaterial")); + recipe.isAnvil = true; + return recipe; + } + + public NBTTagCompound writeNBT() { + NBTTagCompound compound = new NBTTagCompound(); + compound.setInteger("ID", id); + compound.setString("Name", name); + compound.setTag("Availability", availability.writeToNBT(new NBTTagCompound())); + compound.setInteger("XPCost", xpCost); + compound.setFloat("RepairPercentage", repairPercentage); + compound.setTag("ItemToRepair", NoppesUtilServer.writeItem(itemToRepair, new NBTTagCompound())); + compound.setTag("RepairMaterial", NoppesUtilServer.writeItem(repairMaterial, new NBTTagCompound())); + compound.setBoolean("IsAnvil", true); + return compound; + } + + public int getXpCost() { + return xpCost; + } + + @Override + public float getRepairPercentage() { + return repairPercentage; + } + + /** + * Checks that both input ItemStacks are non-null and match the recipe’s defined items. + */ + @Override + public boolean matches(ItemStack inputItem, ItemStack inputRepairMaterial) { + if (inputItem == null || inputRepairMaterial == null) return false; + if (!NoppesUtilPlayer.compareItems(this.itemToRepair, inputItem, true, false)) { + return false; + } + if (!NoppesUtilPlayer.compareItems(this.repairMaterial, inputRepairMaterial, false, false)) { + return false; + } + return true; + } + + /** + * Returns a repaired copy of the input item by reducing its damage. + */ + @Override + public ItemStack getResult(ItemStack inputItem) { + if (inputItem == null) + return null; + ItemStack result = inputItem.copy(); + if (!result.isItemStackDamageable()) + return result; + int maxDamage = result.getMaxDamage(); + int repairAmount = (int) (maxDamage * repairPercentage); + int currentDamage = result.getItemDamage(); + int newDamage = currentDamage - repairAmount; + if (newDamage < 0) newDamage = 0; + result.setItemDamage(newDamage); + return result; + } + + @Override + public String getName() { + return name; + } + + @Override + public int getID() { + return this.id; + } +} diff --git a/src/main/java/noppes/npcs/controllers/data/RecipesDefault.java b/src/main/java/noppes/npcs/controllers/data/RecipesDefault.java index f20b25264..8583290c9 100644 --- a/src/main/java/noppes/npcs/controllers/data/RecipesDefault.java +++ b/src/main/java/noppes/npcs/controllers/data/RecipesDefault.java @@ -19,10 +19,10 @@ public class RecipesDefault { else item = (ItemStack) ob; - RecipeCarpentry recipeAnvil = new RecipeCarpentry(name); - recipeAnvil.isGlobal = isGlobal; - recipeAnvil = RecipeCarpentry.saveRecipe(recipeAnvil, item, recipe); - RecipeController.Instance.addRecipe(recipeAnvil); + RecipeCarpentry recipeCarpentry = new RecipeCarpentry(name); + recipeCarpentry.isGlobal = isGlobal; + recipeCarpentry = RecipeCarpentry.saveRecipe(recipeCarpentry, item, recipe); + RecipeController.Instance.addRecipe(recipeCarpentry); } public static void loadDefaultRecipes(int i) { if(i < 0){ diff --git a/src/main/resources/assets/customnpcs/textures/gui/anvil.png b/src/main/resources/assets/customnpcs/textures/gui/anvil.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc3c4bbcafcdc9a338d2831adad9192e86c6a78 GIT binary patch literal 904 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5D>38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&eBzG#3?h%1o(|NsB7W5+^6L(R?2ySuxABB`6FO9LtPk|4iepeztDNO?26 z0fjgVJR*x382I*sFrx))unGeM(@Rem$B>G+w|Cy=-Et6NOBC*U|9?{Un@-t%T0Q52 z%-)}wpS-PNYh{bj$xQ2>#~1vQYY$t<{94&~;KJqW^*>gL&tTkF^|C@o+=6*SH9Mz5 z1H+u%I*cp=4h&`Q6@YX@@pRP&1}2UJ?_^bgbiun#AUVbxdz(S@x!7qyIR%E@_N1GSi-*C zRo)FdUy6nYTkq>hoh!bPA;v$Isi0C%sA2U^7Y4m)zgTx<@H0&Q#IR1N!Tg>IL;jDM z3`~1CA8h$k&sq+2*4urFx!33BGyk}P!vhSAED7KFgn*v3D31hsu7TmrJx7oypX+%u zF#On_6|Mg4T76t5?}7ZM*ZJmeQvwAKP!&9EzyXx^|JtwRYfac5>^vQIINkcp+T~$U z%pW|XvwtMk<+=jx0EHsUgFC69AcyGRQaven>m`YX=X%k+^WPe5pBDwRLp^ux!}gzB zMWGtt@d4I#;hm@7Rj=d*JE&{#GuTw$&H7O@edpIJUfB$Fx7L{cY5aDp3u*x*f?#%M zd^g#iwbal-o>RfW_P`Cn0~38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&eBzG8q+h%1o(|NsB7W5+^6L(R?2ySuynC;9uY_xC^K@BhLdD4Q~Aw+fKr zE(!7r2C9St1}}fcPe5VL0*}aI1_r*vAk26?e?G+x3k{ntu_!~E&e@q z%J=#Q*_VYS9|!Cd+%27%{_l;FmVCOCGGle*H1D`+pI%Nsy?@V|`2D}8?3wz0KUc-+ zQ@^W!+I#%@DcHckqQJn&;lRLDGDQH!6j-phSPW zNPPsyjlVlAxqo=?n%Ypue~;$cxMFZWCK2S>1xG-Fc|=U}wo<`Gc~0KneTs1A=x;eGUzW*#5B8{Nquxcc@P|wf?0YQ=9~{Hx&-J zHl!7~mG$f81YGm*Ef-p_yPt8ocmHn3R$he#b6gsF8#fHdu9p9OHHvsXbUAsif z89%=)W7<~zLEK<&o<_pvb_T}HFQ+lxl2c;wSvFtIA^Y2lIeQs&uP-j1$n>tdL(pLA zIne|84Re7WP^Ei(kGOqM=UY5=kMAdWUr{;~@iH3AI` zvZ^eMdQ2vhjW<=7BsPQNgyC*2&yJX?JG@#s42(}zm~vQLY((=~Y(?{2_K0V+>=nAA32Q&gN0#4cfA5;1$A z-XOW~Ix9F00UgTnLPL?GKybm#ITPrMYgrQFJ(vvukO?wssE2$uF04 zUYKQTm9Fn_`s<6BB@Msjl309}7PEekPEdEKRdfQTqA3hpr!oLjQ6JL`!6Znq%K5I` z!2t^5h0FpAHZa-)UAikx*vGZw%B*Qh2|HJu z_xSm5dXj?v)5GG7D;*oMq68Mq5@T7hjFoX!=0I^h^%5fgF@L!-k@?v-&3<4p!QkoY K=d#Wzp$PzR#n{3C literal 0 HcmV?d00001 From 48dd7bedeade6e7d4c7f1f3d315448c729a339fd Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 02:44:28 -0500 Subject: [PATCH 132/157] New Anvil Recipe System --- src/api | 2 +- .../npcs/controllers/SyncController.java | 42 +++ .../npcs/network/enums/EnumSyncType.java | 3 +- .../request/recipe/RecipeGetPacket.java | 16 +- .../request/recipe/RecipeRemovePacket.java | 22 +- .../request/recipe/RecipeSavePacket.java | 14 +- .../java/noppes/npcs/NoppesUtilServer.java | 23 +- .../gui/global/GuiNpcManageRecipes.java | 262 ++++++++++++++---- .../client/gui/player/GuiAnvilRecipes.java | 102 +++++-- .../npcs/containers/ContainerAnvilRepair.java | 24 +- .../containers/ContainerManageRecipes.java | 204 ++++++++------ .../npcs/controllers/RecipeController.java | 6 +- .../npcs/controllers/data/RecipeAnvil.java | 68 ++++- .../controllers/data/RecipeCarpentry.java | 17 +- .../assets/customnpcs/lang/en_US.lang | 8 +- 15 files changed, 592 insertions(+), 221 deletions(-) diff --git a/src/api b/src/api index 17d165e62..f91f9b43b 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 17d165e62846b73b13f82af0e93b84704db4e11a +Subproject commit f91f9b43ba47a6bc1f6970537792b3b8ce49f4b8 diff --git a/src/main/java/kamkeel/npcs/controllers/SyncController.java b/src/main/java/kamkeel/npcs/controllers/SyncController.java index a98a10755..b7a77c83e 100644 --- a/src/main/java/kamkeel/npcs/controllers/SyncController.java +++ b/src/main/java/kamkeel/npcs/controllers/SyncController.java @@ -62,6 +62,13 @@ public class SyncController { carpentryNBT() ), player); + PacketHandler.Instance.sendToPlayer(new SyncPacket( + EnumSyncType.ANVIL_RECIPES, + EnumSyncAction.RELOAD, + -1, + anvilNBT() + ), player); + DBCAddon.instance.syncPlayer(player); syncPlayerData(player, false); } @@ -88,6 +95,17 @@ public class SyncController { return compound; } + public static NBTTagCompound anvilNBT(){ + RecipeController controller = RecipeController.Instance; + NBTTagList list = new NBTTagList(); + NBTTagCompound compound = new NBTTagCompound(); + for(RecipeAnvil recipe : controller.anvilRecipes.values()){ + list.appendTag(recipe.writeNBT()); + } + compound.setTag("recipes", list); + return compound; + } + public static NBTTagCompound factionsNBT(){ NBTTagList list = new NBTTagList(); NBTTagCompound compound = new NBTTagCompound(); @@ -201,6 +219,15 @@ public class SyncController { )); } + public static void syncAllAnvilRecipes() { + PacketHandler.Instance.sendToAll(new SyncPacket( + EnumSyncType.ANVIL_RECIPES, + EnumSyncAction.RELOAD, + -1, + anvilNBT() + )); + } + @SideOnly(Side.CLIENT) public static void clientSync(EnumSyncType enumSyncType, NBTTagCompound fullCompound) { switch (enumSyncType){ @@ -325,6 +352,21 @@ public class SyncController { RecipeController.syncRecipes = new HashMap(); break; } + case ANVIL_RECIPES: { + NBTTagList list = fullCompound.getTagList("recipes", 10); + if(list == null) + return; + + for(int i = 0; i < list.tagCount(); i++) + { + RecipeAnvil recipe = RecipeAnvil.read(list.getCompoundTagAt(i)); + RecipeController.syncAnvilRecipes.put(recipe.id, recipe); + } + + RecipeController.Instance.anvilRecipes = RecipeController.syncAnvilRecipes; + RecipeController.syncAnvilRecipes = new HashMap(); + break; + } } } diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java b/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java index e573f5346..6d9ba1d34 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java @@ -9,5 +9,6 @@ public enum EnumSyncType { PLAYERDATA, MAGIC, WORKBENCH_RECIPES, - CARPENTRY_RECIPES + CARPENTRY_RECIPES, + ANVIL_RECIPES, } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java index 16f52b62b..8f5eaf57d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeGetPacket.java @@ -13,6 +13,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.NoppesUtilServer; import noppes.npcs.controllers.RecipeController; +import noppes.npcs.controllers.data.RecipeAnvil; import noppes.npcs.controllers.data.RecipeCarpentry; import java.io.IOException; @@ -21,9 +22,11 @@ public final class RecipeGetPacket extends AbstractPacket { public static String packetName = "Request|RecipeGet"; private int recipeId; + private boolean isAnvil = false; - public RecipeGetPacket(int recipeId) { + public RecipeGetPacket(int recipeId, boolean anvil) { this.recipeId = recipeId; + this.isAnvil = anvil; } public RecipeGetPacket() {} @@ -43,6 +46,7 @@ public final class RecipeGetPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { out.writeInt(recipeId); + out.writeBoolean(this.isAnvil); } @Override @@ -52,7 +56,13 @@ public final class RecipeGetPacket extends AbstractPacket { if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; int id = in.readInt(); - RecipeCarpentry recipe = RecipeController.Instance.getRecipe(id); - NoppesUtilServer.setRecipeGui((EntityPlayerMP) player, recipe); + boolean anvil = in.readBoolean(); + if(anvil){ + RecipeAnvil recipe = RecipeController.Instance.getAnvilRecipe(id); + NoppesUtilServer.setRecipeAnvilGui((EntityPlayerMP) player, recipe); + } else { + RecipeCarpentry recipe = RecipeController.Instance.getRecipe(id); + NoppesUtilServer.setRecipeGui((EntityPlayerMP) player, recipe); + } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeRemovePacket.java index cd8ab6136..0df707054 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeRemovePacket.java @@ -14,6 +14,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.NoppesUtilServer; import noppes.npcs.controllers.RecipeController; +import noppes.npcs.controllers.data.RecipeAnvil; import noppes.npcs.controllers.data.RecipeCarpentry; import java.io.IOException; @@ -22,13 +23,14 @@ public final class RecipeRemovePacket extends AbstractPacket { public static String packetName = "Request|RecipeRemove"; private int recipeId; + private boolean isAnvil; - public RecipeRemovePacket(int recipeId) { + public RecipeRemovePacket(int recipeId, boolean isAnvil) { this.recipeId = recipeId; + this.isAnvil = isAnvil; } - public RecipeRemovePacket() { - } + public RecipeRemovePacket() {} @Override public Enum getType() { @@ -49,6 +51,7 @@ public final class RecipeRemovePacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { out.writeInt(recipeId); + out.writeBoolean(isAnvil); } @Override @@ -58,8 +61,15 @@ public final class RecipeRemovePacket extends AbstractPacket { if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; int id = in.readInt(); - RecipeCarpentry recipe = RecipeController.Instance.delete(id); - NoppesUtilServer.sendRecipeData((EntityPlayerMP) player, recipe.isGlobal ? 3 : 4); - NoppesUtilServer.setRecipeGui((EntityPlayerMP) player, new RecipeCarpentry("")); + boolean anvil = in.readBoolean(); + if(anvil){ + RecipeAnvil recipe = RecipeController.Instance.deleteAnvil(id); + NoppesUtilServer.sendRecipeData((EntityPlayerMP) player, 1); + NoppesUtilServer.setRecipeAnvilGui((EntityPlayerMP) player, new RecipeAnvil()); + } else { + RecipeCarpentry recipe = RecipeController.Instance.delete(id); + NoppesUtilServer.sendRecipeData((EntityPlayerMP) player, recipe.isGlobal ? 3 : 4); + NoppesUtilServer.setRecipeGui((EntityPlayerMP) player, new RecipeCarpentry("")); + } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java index 5e5719810..cc6f69d87 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/recipe/RecipeSavePacket.java @@ -16,6 +16,7 @@ import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.NoppesUtilServer; import noppes.npcs.controllers.RecipeController; +import noppes.npcs.controllers.data.RecipeAnvil; import noppes.npcs.controllers.data.RecipeCarpentry; import java.io.IOException; @@ -58,9 +59,16 @@ public final class RecipeSavePacket extends AbstractPacket { return; if (!PacketUtil.verifyItemPacket(EnumItemPacketType.WAND, player)) return; + NBTTagCompound compound = ByteBufUtils.readNBT(in); - RecipeCarpentry recipe = RecipeController.Instance.saveRecipe(compound); - NoppesUtilServer.sendRecipeData((EntityPlayerMP) player, recipe.isGlobal ? 3 : 4); - NoppesUtilServer.setRecipeGui((EntityPlayerMP) player, recipe); + if(compound.hasKey("IsAnvil")){ + RecipeAnvil recipe = RecipeController.Instance.saveAnvilRecipe(compound); + NoppesUtilServer.sendRecipeData((EntityPlayerMP) player, 1); + NoppesUtilServer.setRecipeAnvilGui((EntityPlayerMP) player, recipe); + } else { + RecipeCarpentry recipe = RecipeController.Instance.saveRecipe(compound); + NoppesUtilServer.sendRecipeData((EntityPlayerMP) player, recipe.isGlobal ? 3 : 4); + NoppesUtilServer.setRecipeGui((EntityPlayerMP) player, recipe); + } } } diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 3b4ddfbfd..1794d3ec0 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -592,11 +592,15 @@ public class NoppesUtilServer { for(RecipeCarpentry recipe : RecipeController.Instance.globalRecipes.values()){ map.put(recipe.name, recipe.id); } - } + } else if (size == 4){ + for(RecipeCarpentry recipe : RecipeController.Instance.carpentryRecipes.values()){ + map.put(recipe.name, recipe.id); + } + } else{ - for(RecipeCarpentry recipe : RecipeController.Instance.carpentryRecipes.values()){ - map.put(recipe.name, recipe.id); - } + for(RecipeAnvil recipe : RecipeController.Instance.anvilRecipes.values()){ + map.put(recipe.name, recipe.id); + } } sendScrollData(player, map); } @@ -730,6 +734,17 @@ public class NoppesUtilServer { GuiDataPacket.sendGuiData((EntityPlayerMP)player, recipe.writeNBT()); } + public static void setRecipeAnvilGui(EntityPlayerMP player, RecipeAnvil recipe){ + if(recipe == null) + return; + if(!(player.openContainer instanceof ContainerManageRecipes)) + return; + + ContainerManageRecipes container = (ContainerManageRecipes) player.openContainer; + container.setRecipe(recipe); + GuiDataPacket.sendGuiData((EntityPlayerMP)player, recipe.writeNBT()); + } + public static void sendBank(EntityPlayerMP player,Bank bank) { NBTTagCompound compound = new NBTTagCompound(); bank.writeEntityToNBT(compound); diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java index 6fc87a9d0..cae37149e 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java @@ -9,11 +9,14 @@ import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import noppes.npcs.client.CustomNpcResourceListener; import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumGuiType; import noppes.npcs.containers.ContainerManageRecipes; +import noppes.npcs.controllers.data.RecipeAnvil; import noppes.npcs.controllers.data.RecipeCarpentry; import noppes.npcs.entity.EntityNPCInterface; import org.lwjgl.opengl.GL11; @@ -23,9 +26,10 @@ import java.util.HashMap; import java.util.List; import java.util.Vector; -public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IScrollData, IGuiData, ICustomScrollListener,ITextfieldListener{ - private GuiCustomScroll scroll; - private HashMap data = new HashMap(); +public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IScrollData, IGuiData, ICustomScrollListener, ITextfieldListener, ISubGuiListener { + public static int tab = 1; + public GuiCustomScroll scroll; + public HashMap data = new HashMap(); private ContainerManageRecipes container; private String selected = null; private ResourceLocation slot; @@ -39,6 +43,7 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS setBackground("inventorymenu.png"); slot = getResource("slot.png"); ySize = 200; + tab = 1; } @Override @@ -47,49 +52,91 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS if(scroll == null) scroll = new GuiCustomScroll(this,0,0); - scroll.setSize(130, 180); - scroll.guiLeft = guiLeft + 172; - scroll.guiTop = guiTop + 8; + scroll.setSize(130, 150); + scroll.guiLeft = guiLeft + 280; + scroll.guiTop = guiTop + 38; addScroll(scroll); - this.addButton(new GuiNpcButton(0,guiLeft + 306, guiTop + 10, 84, 20, "menu.global")); - this.addButton(new GuiNpcButton(1,guiLeft + 306, guiTop + 32, 84, 20, "tile.npcCarpentyBench.name")); - this.getButton(0).setEnabled(container.width == 4); - this.getButton(1).setEnabled(container.width == 3); + int y = guiTop + 10; - this.addButton(new GuiNpcButton(3,guiLeft + 306, guiTop + 60, 84, 20, "gui.add")); - this.addButton(new GuiNpcButton(4,guiLeft + 306, guiTop + 82, 84, 20, "gui.remove")); + this.addButton(new GuiButtonBiDirectional(0,guiLeft + 280, y, 130, 20, new String[]{"menu.global", "tile.npcCarpentyBench.name", "tile.anvil.name"}, tab)); - this.addLabel(new GuiNpcLabel(0, "gui.ignoreDamage", guiLeft + 86, guiTop + 32)); - this.addButton(new GuiNpcButtonYesNo(5,guiLeft + 114, guiTop + 40, 50, 20, container.recipe.ignoreDamage)); + y+= 106; - this.addLabel(new GuiNpcLabel(1, "gui.ignoreNBT", guiLeft + 86, guiTop + 82)); - this.addButton(new GuiNpcButtonYesNo(6,guiLeft + 114, guiTop + 90, 50, 20, container.recipe.ignoreNBT)); + this.addButton(new GuiNpcButton(3,guiLeft + 226, y += 22, 50, 20, "gui.add")); + this.addButton(new GuiNpcButton(4,guiLeft + 226, y += 22, 50, 20, "gui.remove")); + this.addButton(new GuiNpcButton(10,guiLeft + 226, y += 30, 50, 20, "gui.copy")); - this.addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft + 8, guiTop + 8, 160, 20, container.recipe.name)); - this.getTextField(0).enabled = false; - this.getButton(5).setEnabled(false); - this.getButton(6).setEnabled(false); + if (container.width != 1) { + int buttonPos = guiTop + 72; + this.addLabel(new GuiNpcLabel(0, "gui.ignoreDamage", guiLeft + 131, buttonPos)); + this.addButton(new GuiNpcButtonYesNo(5, guiLeft + 235, buttonPos - 5, 40, 20, container.recipe.ignoreDamage)); + this.addLabel(new GuiNpcLabel(1, "gui.ignoreNBT", guiLeft + 131, buttonPos += 22)); + this.addButton(new GuiNpcButtonYesNo(6, guiLeft + 235, buttonPos - 5, 40, 20, container.recipe.ignoreNBT)); + this.getButton(5).setEnabled(false); + this.getButton(6).setEnabled(false); - this.addTextField(new GuiNpcTextField(55, this, fontRendererObj, guiLeft + 172, guiTop + 8 + 3 + 180, 130, 20, search)); + this.addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft + 8, guiTop + 8, 160, 20, container.recipe.name)); + this.getTextField(0).enabled = false; + } else { + int buttonPos = guiTop + 50; + this.addLabel(new GuiNpcLabel(0, "gui.ignoreMatDamage", guiLeft + 131, buttonPos)); + this.addButton(new GuiNpcButtonYesNo(7, guiLeft + 235, buttonPos - 5, 40, 20, container.recipeAnvil.ignoreRepairMaterialDamage)); + + + this.addLabel(new GuiNpcLabel(1, "gui.ignoreMatNBT", guiLeft + 131, buttonPos += 22)); + this.addButton(new GuiNpcButtonYesNo(8, guiLeft + 235, buttonPos - 5, 40, 20, container.recipeAnvil.ignoreRepairMaterialNBT)); + + this.addLabel(new GuiNpcLabel(11, "gui.repairPercent", guiLeft + 8, buttonPos)); + this.addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft + 90, buttonPos - 5, 35, 20, container.recipeAnvil.getRepairPercentage() + "")); + this.getTextField(1).floatsOnly = true; + this.getTextField(1).setMinMaxDefaultFloat(1, 100, container.recipeAnvil.getRepairPercentage()); + this.getTextField(1).enabled = false; + + this.addLabel(new GuiNpcLabel(2, "gui.ignoreItemNBT", guiLeft + 131, buttonPos += 22)); + this.addButton(new GuiNpcButtonYesNo(9, guiLeft + 235, buttonPos - 5, 40, 20, container.recipeAnvil.ignoreRepairItemNBT)); + + this.addLabel(new GuiNpcLabel(12, "gui.xpCost", guiLeft + 8, buttonPos)); + this.addTextField(new GuiNpcTextField(2, this, fontRendererObj, guiLeft + 70, buttonPos - 5, 55, 20, container.recipeAnvil.getXpCost() + "")); + this.getTextField(2).integersOnly = true; + this.getTextField(2).setMinMaxDefault(0, Integer.MAX_VALUE, container.recipeAnvil.getXpCost()); + this.getTextField(2).enabled = false; + + this.getButton(7).setEnabled(false); + this.getButton(8).setEnabled(false); + this.getButton(9).setEnabled(false); + + this.addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft + 8, guiTop + 8, 160, 20, container.recipeAnvil.name)); + this.getTextField(0).enabled = false; + } + this.addTextField(new GuiNpcTextField(55, this, fontRendererObj, guiLeft + 280, guiTop + 8 + 3 + 180, 130, 20, search)); } @Override protected void actionPerformed(GuiButton guibutton){ GuiNpcButton button = (GuiNpcButton) guibutton; if(button.id == 0){ - getTextField(55).setText(""); - search = ""; - scroll.clear(); - save(); - NoppesUtil.requestOpenGUI(EnumGuiType.ManageRecipes,3,0,0); - } - if(button.id == 1){ - getTextField(55).setText(""); - search = ""; - scroll.clear(); - save(); - NoppesUtil.requestOpenGUI(EnumGuiType.ManageRecipes,4,0,0); + GuiButtonBiDirectional buttonBiDirectional = (GuiButtonBiDirectional) button; + tab = buttonBiDirectional.getValue(); + if(tab == 0){ + getTextField(55).setText(""); + search = ""; + scroll.clear(); + save(); + NoppesUtil.requestOpenGUI(EnumGuiType.ManageRecipes,3,0,0); + } else if (tab == 1){ + getTextField(55).setText(""); + search = ""; + scroll.clear(); + save(); + NoppesUtil.requestOpenGUI(EnumGuiType.ManageRecipes,4,0,0); + } else { + getTextField(55).setText(""); + search = ""; + scroll.clear(); + save(); + NoppesUtil.requestOpenGUI(EnumGuiType.ManageRecipes,1,0,0); + } } if(button.id == 3){ save(); @@ -97,13 +144,21 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS String name = "New"; while(data.containsKey(name)) name += "_"; - RecipeCarpentry recipe = new RecipeCarpentry(name); - recipe.isGlobal = container.width == 3; - PacketClient.sendClient(new RecipeSavePacket(recipe.writeNBT())); + + if(container.width == 1){ + RecipeAnvil recipe = new RecipeAnvil(); + recipe.name = name; + PacketClient.sendClient(new RecipeSavePacket(recipe.writeNBT())); + } + else { + RecipeCarpentry recipe = new RecipeCarpentry(name); + recipe.isGlobal = container.width == 3; + PacketClient.sendClient(new RecipeSavePacket(recipe.writeNBT())); + } } if(button.id == 4){ if(data.containsKey(scroll.getSelected())){ - PacketClient.sendClient(new RecipeRemovePacket(data.get(scroll.getSelected()))); + PacketClient.sendClient(new RecipeRemovePacket(data.get(scroll.getSelected()), container.width == 1)); scroll.clear(); } } @@ -113,6 +168,15 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS if(button.id == 6){ container.recipe.ignoreNBT = button.getValue() == 1; } + if (button.id == 7) { + container.recipeAnvil.ignoreRepairMaterialDamage = button.getValue() == 1; + } + if (button.id == 8) { + container.recipeAnvil.ignoreRepairMaterialNBT = button.getValue() == 1; + } + if (button.id == 9) { + container.recipeAnvil.ignoreRepairItemNBT = button.getValue() == 1; + } } @Override @@ -142,18 +206,49 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS return list; } - @Override - public void setGuiData(NBTTagCompound compound) { - RecipeCarpentry recipe = RecipeCarpentry.read(compound); - getTextField(0).setText(recipe.name); - container.setRecipe(recipe); - this.getTextField(0).enabled = true; - this.getButton(5).setEnabled(true); - this.getButton(5).setDisplay(recipe.ignoreDamage?1:0); - this.getButton(6).setEnabled(true); - this.getButton(6).setDisplay(recipe.ignoreNBT?1:0); - setSelected(recipe.name); - } + @Override + public void setGuiData(NBTTagCompound compound) { + if (compound.hasKey("IsAnvil")) { + RecipeAnvil recipe = RecipeAnvil.read(compound); + getTextField(0).setText(recipe.name); + getTextField(1).setText(recipe.getRepairPercentage() + ""); + getTextField(2).setText(recipe.getXpCost() + ""); + container.setRecipe(recipe); + + setSelected(recipe.name); + getTextField(0).enabled = true; + getTextField(1).enabled = true; + getTextField(2).enabled = true; + + container.width = 1; + + GuiNpcButtonYesNo btnMatDamage = (GuiNpcButtonYesNo)this.getButton(7); + GuiNpcButtonYesNo btnMatNBT = (GuiNpcButtonYesNo)this.getButton(8); + GuiNpcButtonYesNo btnItemNBT = (GuiNpcButtonYesNo)this.getButton(9); + if (btnMatDamage != null) { + btnMatDamage.setDisplay(recipe.ignoreRepairMaterialDamage ? 1 : 0); + btnMatDamage.setEnabled(true); + } + if (btnMatNBT != null) { + btnMatNBT.setDisplay(recipe.ignoreRepairMaterialNBT ? 1 : 0); + btnMatNBT.setEnabled(true); + } + if (btnItemNBT != null) { + btnItemNBT.setDisplay(recipe.ignoreRepairItemNBT ? 1 : 0); + btnItemNBT.setEnabled(true); + } + } else { + RecipeCarpentry recipe = RecipeCarpentry.read(compound); + getTextField(0).setText(recipe.name); + container.setRecipe(recipe); + this.getTextField(0).enabled = true; + this.getButton(5).setEnabled(true); + this.getButton(5).setDisplay(recipe.ignoreDamage ? 1 : 0); + this.getButton(6).setEnabled(true); + this.getButton(6).setDisplay(recipe.ignoreNBT ? 1 : 0); + setSelected(recipe.name); + } + } @Override protected void drawGuiContainerBackgroundLayer(float f, int x, int y){ @@ -166,16 +261,29 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS drawTexturedModalRect(guiLeft + i*18 + 7, guiTop + j*18 + 34, 0, 0, 18, 18); } } - drawTexturedModalRect(guiLeft + 86, guiTop + 60, 0, 0, 18, 18); + + if(container.width == 1){ + drawTexturedModalRect(guiLeft + 101, guiTop + 34, 0, 0, 18, 18); + this.fontRendererObj.drawString(StatCollector.translateToLocal("gui.material"), guiLeft + 28, guiTop + 38, CustomNpcResourceListener.DefaultTextColor); + } else { + drawTexturedModalRect(guiLeft + 86, guiTop + 60, 0, 0, 18, 18); + } } @Override public void setData(Vector list, HashMap data) { String name = scroll.getSelected(); this.data = data; scroll.setList(getSearchList()); + this.getTextField(0).enabled = name != null; - this.getTextField(0).enabled = name != null; - this.getButton(5).setEnabled(name != null); + if(container.width == 1){ + this.getButton(7).setEnabled(name != null); + this.getButton(8).setEnabled(name != null); + this.getButton(9).setEnabled(name != null); + } else { + this.getButton(5).setEnabled(name != null); + this.getButton(6).setEnabled(name != null); + } if(name != null) scroll.setSelected(name); @@ -191,7 +299,11 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS public void customScrollClicked(int i, int j, int k, GuiCustomScroll guiCustomScroll) { save(); selected = scroll.getSelected(); - PacketClient.sendClient(new RecipeGetPacket(data.get(selected))); + if(container.width == 1){ + PacketClient.sendClient(new RecipeGetPacket(data.get(selected), true)); + } else { + PacketClient.sendClient(new RecipeGetPacket(data.get(selected), false)); + } } @Override @@ -199,7 +311,11 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS GuiNpcTextField.unfocus(); if(selected != null && data.containsKey(selected)){ container.saveRecipe(); - PacketClient.sendClient(new RecipeSavePacket(container.recipe.writeNBT())); + if(container.width == 1){ + PacketClient.sendClient(new RecipeSavePacket(container.recipeAnvil.writeNBT())); + } else { + PacketClient.sendClient(new RecipeSavePacket(container.recipe.writeNBT())); + } } } @@ -208,13 +324,39 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS if(guiNpcTextField.id == 0){ String name = guiNpcTextField.getText(); if(!name.isEmpty() && !data.containsKey(name)){ - String old = container.recipe.name; - data.remove(container.recipe.name); - container.recipe.name = name; - data.put(container.recipe.name, container.recipe.id); - selected = name; - scroll.replace(old,container.recipe.name); + if(container.width == 1){ + String old = container.recipeAnvil.name; + data.remove(container.recipeAnvil.name); + container.recipeAnvil.name = name; + data.put(container.recipeAnvil.name, container.recipeAnvil.id); + selected = name; + scroll.replace(old,container.recipeAnvil.name); + } else { + String old = container.recipe.name; + data.remove(container.recipe.name); + container.recipe.name = name; + data.put(container.recipe.name, container.recipe.id); + selected = name; + scroll.replace(old,container.recipe.name); + } } } + if(guiNpcTextField.id == 1){ + float percent = guiNpcTextField.getFloat(); + if(container.width == 1){ + container.recipeAnvil.repairPercentage = percent; + } + } + if(guiNpcTextField.id == 2){ + int xpCost = guiNpcTextField.getInteger(); + if(container.width == 1){ + container.recipeAnvil.xpCost = xpCost; + } + } } + + @Override + public void subGuiClosed(SubGuiInterface subgui){ + + } } diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java b/src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java index d0ba2533c..6d9e17667 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java @@ -3,6 +3,7 @@ package noppes.npcs.client.gui.player; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import noppes.npcs.client.CustomNpcResourceListener; @@ -109,6 +110,28 @@ public class GuiAnvilRecipes extends GuiNPCInterface { updateButton(); } + private static class ItemOverlayData { + public final int x, y; + public final ItemStack item; + public ItemOverlayData(int x, int y, ItemStack item) { + this.x = x; + this.y = y; + this.item = item; + } + } + + private static class TextOverlayData { + public final int x, y, width, height; + public final String text; + public TextOverlayData(int x, int y, int width, int height, String text) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.text = text; + } + } + @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { super.drawScreen(mouseX, mouseY, partialTicks); @@ -117,22 +140,25 @@ public class GuiAnvilRecipes extends GuiNPCInterface { lblPage.label = (page + 1) + "/" + MathHelper.ceiling_float_int(recipes.size() / 8.0F); lblPage.x = guiLeft + (xSize - Minecraft.getMinecraft().fontRenderer.getStringWidth(lblPage.label)) / 2; - // Determine which recipes to show. int recipesPerPage = 8; int startIndex = page * recipesPerPage; int endIndex = Math.min(recipes.size(), startIndex + recipesPerPage); - // Set base positions: first column X and first row Y. + // Base positions relative to guiLeft and guiTop. int baseX = guiLeft + 4; - int baseY = guiTop + 28; // first row Y = 28 + int baseY = guiTop + 28; // first row = guiTop + 28 int colSpacing = 124; // horizontal spacing between columns - int rowSpacing = 35; // vertical spacing so row1 becomes 28+35 = 63 + int rowSpacing = 35; // vertical spacing so row1 = guiTop + 28 + 35 + + // Create lists to collect overlay data. + List itemOverlays = new ArrayList(); + List textOverlays = new ArrayList(); for (int i = startIndex; i < endIndex; i++) { RecipeAnvil recipe = recipes.get(i); int localIndex = i - startIndex; // 0 to 7 - int col = localIndex / 4; // 0 for left column, 1 for right column - int row = localIndex % 4; // 0 to 3 + int col = localIndex / 4; // 0 for left column, 1 for right column + int row = localIndex % 4; // rows 0..3 int slotX = baseX + col * colSpacing; int slotY = baseY + row * rowSpacing; @@ -147,59 +173,91 @@ public class GuiAnvilRecipes extends GuiNPCInterface { // Draw the item-to-repair at 50% durability. ItemStack toRepair = recipe.itemToRepair; + ItemStack halfItem = null; if (toRepair != null) { - ItemStack halfItem = toRepair.copy(); + halfItem = toRepair.copy(); if (halfItem.isItemStackDamageable()) { int halfDamage = halfItem.getMaxDamage() / 2; halfItem.setItemDamage(halfDamage); } drawItem(halfItem, slotX + 1, slotY + 1, mouseX, mouseY); + // Instead of drawing overlay immediately, add to list. + if (func_146978_c((slotX+1) - guiLeft, (slotY+1) - guiTop, 16, 16, mouseX, mouseY)) { + itemOverlays.add(new ItemOverlayData(slotX+1, slotY+1, halfItem)); + } } + // Draw the repair material. ItemStack material = recipe.repairMaterial; if (material != null) { drawItem(material, slotX + 23, slotY + 1, mouseX, mouseY); + if (func_146978_c((slotX+23) - guiLeft, (slotY+1) - guiTop, 16, 16, mouseX, mouseY)) { + itemOverlays.add(new ItemOverlayData(slotX+23, slotY+1, material)); + } } // Draw the output item fully repaired (damage = 0). - // For first column, output X = guiLeft+103; second column, output X = guiLeft+229. int outputX = (col == 0) ? (guiLeft + 103) : (guiLeft + 229); + ItemStack fullOutput = null; if (recipe.itemToRepair != null) { - ItemStack fullOutput = recipe.itemToRepair.copy(); + fullOutput = recipe.itemToRepair.copy(); if (fullOutput.isItemStackDamageable()) { fullOutput.setItemDamage(0); } drawItem(fullOutput, outputX, slotY, mouseX, mouseY); + if (func_146978_c(outputX - guiLeft, slotY - guiTop, 16, 16, mouseX, mouseY)) { + itemOverlays.add(new ItemOverlayData(outputX, slotY, fullOutput)); + } } // Draw the percentage text. - // We want the "middle right" for the first column to be at 68. - // So for column 0, centerX is fixed at 68; for column 1, centerX is 68 + colSpacing. + int percentCenterX = (col == 0) ? (guiLeft + 57) : (guiLeft + 57 + colSpacing); String percentText = Math.round(recipe.getRepairPercentage()) + "%"; - int textWidth = fontRendererObj.getStringWidth(percentText); - int centerX = (col == 0) ? guiLeft + 57 : (guiLeft + 57 + colSpacing); - int textX = centerX - (textWidth / 2); - int textY = slotY + 4 + row; - fontRendererObj.drawString(percentText, textX, textY, CustomNpcResourceListener.DefaultTextColor); + int percentWidth = fontRendererObj.getStringWidth(percentText); + int percentTextX = percentCenterX - (percentWidth / 2); + int percentTextY = slotY + 4 + row; + fontRendererObj.drawString(percentText, percentTextX, percentTextY, CustomNpcResourceListener.DefaultTextColor); + // Add text overlay for percentage with the full unrounded value. + if (func_146978_c(percentTextX - guiLeft, percentTextY - guiTop, percentWidth, fontRendererObj.FONT_HEIGHT, mouseX, mouseY)) { + textOverlays.add(new TextOverlayData(percentTextX, percentTextY, percentWidth, fontRendererObj.FONT_HEIGHT, String.valueOf(recipe.getRepairPercentage()))); + } // Draw XP cost with scaling. String xpCostStr = formatXpCost(recipe.getXpCost()); int digitCount = xpCostStr.length(); - // Scale factor: for 1 digit = 1.0, for 2 digits = 0.9, for 3 digits = 0.8. float xpScale = 1.0F - 0.1F * (digitCount - 1); - // Get raw text width. int rawTextWidth = fontRendererObj.getStringWidth(xpCostStr); int scaledTextWidth = (int)(rawTextWidth * xpScale); - int xpCenterX = (col == 0) ? (guiLeft + 76) : (guiLeft + 78 + colSpacing); - int xpTextX = xpCenterX - (scaledTextWidth / 2); - int xpTextY = slotY - 4 + row; // adjust as needed - + int xpCenterX = (col == 0) ? (guiLeft + 76) : (guiLeft + 76 + colSpacing); + int xpTextX = xpCenterX - (scaledTextWidth / 2) + col; + int xpTextY = slotY - 4 + row; GL11.glPushMatrix(); GL11.glTranslatef(xpTextX, xpTextY, 0); GL11.glScalef(xpScale, xpScale, 1.0F); fontRendererObj.drawString(xpCostStr, 0, 0, 0x4ac26a); GL11.glPopMatrix(); + // Add text overlay for XP cost with the full (unformatted) number. + int xpBoxWidth = scaledTextWidth; + int xpBoxHeight = fontRendererObj.FONT_HEIGHT; + if (func_146978_c(xpTextX - guiLeft, xpTextY - guiTop, xpBoxWidth, xpBoxHeight, mouseX, mouseY)) { + textOverlays.add(new TextOverlayData(xpTextX, xpTextY, xpBoxWidth, xpBoxHeight, String.valueOf(recipe.getXpCost()))); + } } + + for (ItemOverlayData iod : itemOverlays) { + this.renderToolTip(iod.item, mouseX, mouseY); + } + + for (TextOverlayData tod : textOverlays) { + this.drawHoveringText(java.util.Arrays.asList(tod.text), mouseX, mouseY, this.fontRendererObj); + } + } + protected boolean func_146978_c(int p_146978_1_, int p_146978_2_, int p_146978_3_, int p_146978_4_, int p_146978_5_, int p_146978_6_) { + int k1 = this.guiLeft; + int l1 = this.guiTop; + p_146978_5_ -= k1; + p_146978_6_ -= l1; + return p_146978_5_ >= p_146978_1_ - 1 && p_146978_5_ < p_146978_1_ + p_146978_3_ + 1 && p_146978_6_ >= p_146978_2_ - 1 && p_146978_6_ < p_146978_2_ + p_146978_4_ + 1; } private String formatXpCost(int xp) { diff --git a/src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java b/src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java index df2badcc9..355294a47 100644 --- a/src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java +++ b/src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java @@ -77,38 +77,38 @@ public class ContainerAnvilRepair extends Container { "Test", new ItemStack(Items.iron_pickaxe), new ItemStack(Items.paper), - 4, - 3)); + 50, + 23)); RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( "Okay", new ItemStack(Items.diamond_pickaxe), new ItemStack(Items.paper), - 4, - 3)); + 21, + 10)); RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( "Bob", new ItemStack(Items.golden_pickaxe), new ItemStack(Items.paper), - 4, - 3)); + 1200, + 40)); RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( "Dude", new ItemStack(Items.iron_chestplate), new ItemStack(Items.paper), - 4, - 3)); + 40000, + 23)); RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( "Oas", new ItemStack(Items.golden_pickaxe), new ItemStack(Items.diamond), - 4, - 3)); + 12, + 1)); RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( "awd", new ItemStack(Items.golden_sword), new ItemStack(Items.gold_ingot), - 4, - 3)); + 80, + 14)); RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( "fawd", new ItemStack(Items.bow), diff --git a/src/main/java/noppes/npcs/containers/ContainerManageRecipes.java b/src/main/java/noppes/npcs/containers/ContainerManageRecipes.java index a881df2ce..88a3c7851 100644 --- a/src/main/java/noppes/npcs/containers/ContainerManageRecipes.java +++ b/src/main/java/noppes/npcs/containers/ContainerManageRecipes.java @@ -6,6 +6,7 @@ import net.minecraft.inventory.InventoryBasic; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import noppes.npcs.NoppesUtilPlayer; +import noppes.npcs.controllers.data.RecipeAnvil; import noppes.npcs.controllers.data.RecipeCarpentry; import java.util.ArrayList; @@ -16,6 +17,7 @@ public class ContainerManageRecipes extends Container { private InventoryBasic craftingMatrix; public RecipeCarpentry recipe; + public RecipeAnvil recipeAnvil; public int size; public int width; private boolean init = false; @@ -25,14 +27,21 @@ public class ContainerManageRecipes extends Container this.width = size; craftingMatrix = new InventoryBasic("crafting", false, this.size + 1); recipe = new RecipeCarpentry(""); - addSlotToContainer(new Slot(craftingMatrix,0,87,61)); + recipeAnvil = new RecipeAnvil(); + + if(width == 1){ + addSlotToContainer(new Slot(craftingMatrix,0,102,35)); + } + else { + addSlotToContainer(new Slot(craftingMatrix,0,87,61)); + } for(int i = 0; i < size;i++){ for(int j = 0; j < size;j++){ addSlotToContainer(new Slot(craftingMatrix, i * width + j + 1,j*18 + 8, i*18 + 35)); } } - + for(int i1 = 0; i1 < 3; i1++) { for(int l1 = 0; l1 < 9; l1++) @@ -57,7 +66,7 @@ public class ContainerManageRecipes extends Container public boolean canInteractWith(EntityPlayer entityplayer) { return true; } - + public void setRecipe(RecipeCarpentry recipe) { craftingMatrix.setInventorySlotContents(0,recipe.getRecipeOutput()); for(int i = 0; i < width;i++){ @@ -70,85 +79,116 @@ public class ContainerManageRecipes extends Container } this.recipe = recipe; } - public void saveRecipe(){ - int nextChar = 0; - char[] chars = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P'}; - Map nameMapping = new HashMap(); - int firstRow = width,lastRow = 0,firstColumn = width,lastColumn = 0; - boolean seenRow = false; - for(int i = 0; i < width;i++){ - boolean seenColumn = false; - for(int j = 0; j < width;j++){ - ItemStack item = craftingMatrix.getStackInSlot(i * width + j + 1); - if(item == null){ - continue; - }else{ - if(!seenColumn && j < firstColumn){ - firstColumn = j; - } - if(j > lastColumn) - lastColumn = j; - - seenColumn = true; - } - Character letter = null; - for(ItemStack mapped : nameMapping.keySet()){ - if(NoppesUtilPlayer.compareItems(mapped, item, recipe.ignoreDamage, recipe.ignoreNBT)) - letter = nameMapping.get(mapped); - } - if(letter == null){ - letter = chars[nextChar]; - nextChar++; - nameMapping.put(item, letter); - } - } - if(seenColumn){ - if(!seenRow){ - firstRow = i; - lastRow = i; - seenRow = true; - } - else{ - lastRow = i; - } - } - - } - ArrayList recipe = new ArrayList(); - for(int i = 0; i < width;i++){ - if(i < firstRow || i > lastRow) - continue; - String row = ""; - for(int j = 0; j < width;j++){ - if(j < firstColumn|| j > lastColumn) - continue; - ItemStack item = craftingMatrix.getStackInSlot(i * width + j + 1); - if(item == null){ - row += " "; - continue; - } + public void setRecipe(RecipeAnvil recipe) { + if (recipe.itemToRepair != null) { + ItemStack output = recipe.itemToRepair.copy(); + if (output.isItemStackDamageable()) { + output.setItemDamage(0); + } + craftingMatrix.setInventorySlotContents(0, output); + } else { + craftingMatrix.setInventorySlotContents(0, null); + } - for(ItemStack mapped : nameMapping.keySet()){ - if(NoppesUtilPlayer.compareItems(mapped, item, false, false)){ - row += nameMapping.get(mapped); - } - } - - } - recipe.add(row); - } - if(nameMapping.isEmpty()){ - RecipeCarpentry r = new RecipeCarpentry(this.recipe.name); - r.copy(this.recipe); - this.recipe = r; - return; - } - for(ItemStack mapped : nameMapping.keySet()){ - Character letter = nameMapping.get(mapped); - recipe.add(letter); - recipe.add(mapped); - } - this.recipe = RecipeCarpentry.saveRecipe(this.recipe, craftingMatrix.getStackInSlot(0), recipe.toArray()); - } + craftingMatrix.setInventorySlotContents(1, recipe.repairMaterial); + for (int i = 2; i < craftingMatrix.getSizeInventory(); i++) { + craftingMatrix.setInventorySlotContents(i, null); + } + + this.recipeAnvil = recipe; + } + + public void saveRecipe(){ + if(width == 1){ + ItemStack output = craftingMatrix.getStackInSlot(0); + ItemStack repairMat = craftingMatrix.getStackInSlot(1); + if(output == null || repairMat == null){ + return; + } + + RecipeAnvil r = new RecipeAnvil(); + r.copy(this.recipeAnvil); + r.name = this.recipeAnvil.name; + r.itemToRepair = output.copy(); + r.repairMaterial = repairMat.copy(); + this.recipeAnvil = RecipeAnvil.saveRecipe(r, output, repairMat); + return; + } else { + // Carpentry Recipe save (existing code) + int nextChar = 0; + char[] chars = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P'}; + Map nameMapping = new HashMap(); + int firstRow = width, lastRow = 0, firstColumn = width, lastColumn = 0; + boolean seenRow = false; + for (int i = 0; i < width; i++) { + boolean seenColumn = false; + for (int j = 0; j < width; j++) { + ItemStack item = craftingMatrix.getStackInSlot(i * width + j + 1); + if (item == null) { + continue; + } else { + if (!seenColumn && j < firstColumn) { + firstColumn = j; + } + if (j > lastColumn) + lastColumn = j; + seenColumn = true; + } + Character letter = null; + for (ItemStack mapped : nameMapping.keySet()) { + if (NoppesUtilPlayer.compareItems(mapped, item, recipe.ignoreDamage, recipe.ignoreNBT)) + letter = nameMapping.get(mapped); + } + if (letter == null) { + letter = chars[nextChar]; + nextChar++; + nameMapping.put(item, letter); + } + } + if (seenColumn) { + if (!seenRow) { + firstRow = i; + lastRow = i; + seenRow = true; + } else { + lastRow = i; + } + } + } + ArrayList recipeList = new ArrayList(); + for (int i = 0; i < width; i++) { + if (i < firstRow || i > lastRow) + continue; + String row = ""; + for (int j = 0; j < width; j++) { + if (j < firstColumn || j > lastColumn) + continue; + ItemStack item = craftingMatrix.getStackInSlot(i * width + j + 1); + if (item == null) { + row += " "; + continue; + } + for (ItemStack mapped : nameMapping.keySet()) { + if (NoppesUtilPlayer.compareItems(mapped, item, false, false)) { + row += nameMapping.get(mapped); + } + } + } + recipeList.add(row); + } + if (nameMapping.isEmpty()) { + RecipeCarpentry r = new RecipeCarpentry(this.recipe.name); + r.copy(this.recipe); + this.recipe = r; + return; + } + for (ItemStack mapped : nameMapping.keySet()) { + Character letter = nameMapping.get(mapped); + recipeList.add(letter); + recipeList.add(mapped); + } + this.recipe = RecipeCarpentry.saveRecipe(this.recipe, craftingMatrix.getStackInSlot(0), recipeList.toArray()); + } + } } diff --git a/src/main/java/noppes/npcs/controllers/RecipeController.java b/src/main/java/noppes/npcs/controllers/RecipeController.java index 3eaea1fac..39894ce4d 100644 --- a/src/main/java/noppes/npcs/controllers/RecipeController.java +++ b/src/main/java/noppes/npcs/controllers/RecipeController.java @@ -219,13 +219,13 @@ public class RecipeController implements IRecipeHandler { RecipeAnvil current = getAnvilRecipe(recipe.id); if(current != null && !current.name.equals(recipe.name)){ - while(containsRecipeName(recipe.name)) + while(containsAnvilRecipeName(recipe.name)) recipe.name += "_"; } if(recipe.id == -1){ recipe.id = getUniqueAnvilId(); - while(containsRecipeName(recipe.name)) + while(containsAnvilRecipeName(recipe.name)) recipe.name += "_"; } @@ -288,7 +288,7 @@ public class RecipeController implements IRecipeHandler { RecipeAnvil anvilRecipe = anvilRecipes.remove(recipe.id); if(anvilRecipe != null) - // SyncController.syncAllWorkbenchRecipes(); + SyncController.syncAllAnvilRecipes(); saveCategories(); return recipe; diff --git a/src/main/java/noppes/npcs/controllers/data/RecipeAnvil.java b/src/main/java/noppes/npcs/controllers/data/RecipeAnvil.java index e153fe3a8..02f7919a7 100644 --- a/src/main/java/noppes/npcs/controllers/data/RecipeAnvil.java +++ b/src/main/java/noppes/npcs/controllers/data/RecipeAnvil.java @@ -2,21 +2,25 @@ package noppes.npcs.controllers.data; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.api.handler.data.IAnvilRecipe; import noppes.npcs.NoppesUtilPlayer; import noppes.npcs.NoppesUtilServer; +import noppes.npcs.api.handler.data.IAnvilRecipe; +import noppes.npcs.controllers.data.Availability; public class RecipeAnvil implements IAnvilRecipe { public int id = -1; public String name = ""; public Availability availability = new Availability(); - public boolean ignoreNBT = false; + + public boolean ignoreRepairItemNBT = false; + public boolean ignoreRepairMaterialNBT = false; + public boolean ignoreRepairMaterialDamage = false; public ItemStack itemToRepair; public ItemStack repairMaterial; - private int xpCost; - private float repairPercentage; + public int xpCost; + public float repairPercentage; private boolean isAnvil = true; @@ -39,6 +43,9 @@ public class RecipeAnvil implements IAnvilRecipe { recipe.repairPercentage = compound.getFloat("RepairPercentage"); recipe.itemToRepair = NoppesUtilServer.readItem(compound.getCompoundTag("ItemToRepair")); recipe.repairMaterial = NoppesUtilServer.readItem(compound.getCompoundTag("RepairMaterial")); + recipe.ignoreRepairMaterialNBT = compound.getBoolean("IgnoreRepairMatNBT"); + recipe.ignoreRepairItemNBT = compound.getBoolean("IgnoreRepairItemNBT"); + recipe.ignoreRepairMaterialDamage = compound.getBoolean("IgnoreRepairMatDamage"); recipe.isAnvil = true; return recipe; } @@ -50,12 +57,20 @@ public class RecipeAnvil implements IAnvilRecipe { compound.setTag("Availability", availability.writeToNBT(new NBTTagCompound())); compound.setInteger("XPCost", xpCost); compound.setFloat("RepairPercentage", repairPercentage); - compound.setTag("ItemToRepair", NoppesUtilServer.writeItem(itemToRepair, new NBTTagCompound())); - compound.setTag("RepairMaterial", NoppesUtilServer.writeItem(repairMaterial, new NBTTagCompound())); + if(itemToRepair != null){ + compound.setTag("ItemToRepair", NoppesUtilServer.writeItem(itemToRepair, new NBTTagCompound())); + } + if(repairMaterial != null){ + compound.setTag("RepairMaterial", NoppesUtilServer.writeItem(repairMaterial, new NBTTagCompound())); + } + compound.setBoolean("IgnoreRepairMatNBT", ignoreRepairMaterialNBT); + compound.setBoolean("IgnoreRepairItemNBT", ignoreRepairItemNBT); + compound.setBoolean("IgnoreRepairMatDamage", ignoreRepairMaterialDamage); compound.setBoolean("IsAnvil", true); return compound; } + @Override public int getXpCost() { return xpCost; } @@ -65,24 +80,18 @@ public class RecipeAnvil implements IAnvilRecipe { return repairPercentage; } - /** - * Checks that both input ItemStacks are non-null and match the recipe’s defined items. - */ @Override public boolean matches(ItemStack inputItem, ItemStack inputRepairMaterial) { if (inputItem == null || inputRepairMaterial == null) return false; - if (!NoppesUtilPlayer.compareItems(this.itemToRepair, inputItem, true, false)) { + if (!NoppesUtilPlayer.compareItems(this.itemToRepair, inputItem, true, this.ignoreRepairItemNBT)) { return false; } - if (!NoppesUtilPlayer.compareItems(this.repairMaterial, inputRepairMaterial, false, false)) { + if (!NoppesUtilPlayer.compareItems(this.repairMaterial, inputRepairMaterial, this.ignoreRepairMaterialDamage, this.ignoreRepairMaterialNBT)) { return false; } return true; } - /** - * Returns a repaired copy of the input item by reducing its damage. - */ @Override public ItemStack getResult(ItemStack inputItem) { if (inputItem == null) @@ -108,4 +117,35 @@ public class RecipeAnvil implements IAnvilRecipe { public int getID() { return this.id; } + + public static RecipeAnvil saveRecipe(RecipeAnvil recipe, ItemStack output, ItemStack repairMaterial) { + if (output != null) { + recipe.itemToRepair = output.copy(); + if (recipe.itemToRepair.isItemStackDamageable()) { + recipe.itemToRepair.setItemDamage(0); + } + } else { + recipe.itemToRepair = null; + } + recipe.repairMaterial = (repairMaterial == null ? null : repairMaterial.copy()); + return recipe; + } + + public boolean isValid() { + return itemToRepair != null && repairMaterial != null; + } + + /** + * Creates and returns a deep copy of this RecipeAnvil. + */ + public void copy(RecipeAnvil recipe) { + this.id = recipe.id; + this.name = recipe.name; + this.availability = recipe.availability; + this.ignoreRepairMaterialDamage = recipe.ignoreRepairMaterialDamage; + this.ignoreRepairItemNBT = recipe.ignoreRepairItemNBT; + this.ignoreRepairMaterialNBT = recipe.ignoreRepairMaterialNBT; + this.repairPercentage = recipe.repairPercentage;; + this.xpCost = recipe.xpCost; + } } diff --git a/src/main/java/noppes/npcs/controllers/data/RecipeCarpentry.java b/src/main/java/noppes/npcs/controllers/data/RecipeCarpentry.java index 3c1607a2a..809d59df4 100644 --- a/src/main/java/noppes/npcs/controllers/data/RecipeCarpentry.java +++ b/src/main/java/noppes/npcs/controllers/data/RecipeCarpentry.java @@ -23,7 +23,7 @@ public class RecipeCarpentry extends ShapedRecipes implements IRecipe { public boolean isGlobal = false; public boolean ignoreDamage = false; public boolean ignoreNBT = false; - + public RecipeCarpentry(int width, int height, ItemStack[] recipe, ItemStack result){ super(width, height, recipe, result); @@ -32,9 +32,9 @@ public class RecipeCarpentry extends ShapedRecipes implements IRecipe { super(0, 0, new ItemStack[0], null); this.name = name; } - + public static RecipeCarpentry read(NBTTagCompound compound){ - RecipeCarpentry recipe = new RecipeCarpentry(compound.getInteger("Width"), compound.getInteger("Height"), + RecipeCarpentry recipe = new RecipeCarpentry(compound.getInteger("Width"), compound.getInteger("Height"), NBTTags.getItemStackArray(compound.getTagList("Materials", 10)), NoppesUtilServer.readItem(compound.getCompoundTag("Item"))); recipe.name = compound.getString("Name"); recipe.id = compound.getInteger("ID"); @@ -42,7 +42,7 @@ public class RecipeCarpentry extends ShapedRecipes implements IRecipe { recipe.ignoreDamage = compound.getBoolean("IgnoreDamage"); recipe.ignoreNBT = compound.getBoolean("IgnoreNBT"); recipe.isGlobal = compound.getBoolean("Global"); - + return recipe; } @@ -188,15 +188,14 @@ public class RecipeCarpentry extends ShapedRecipes implements IRecipe { var15[var9] = null; } } - RecipeCarpentry newrecipe = new RecipeCarpentry(var5, var6, var15, par1ItemStack); + RecipeCarpentry newrecipe = new RecipeCarpentry(var5, var6, var15, par1ItemStack); newrecipe.copy(recipe); if(var5 == 4 || var6 == 4) newrecipe.isGlobal = false; - - - + return newrecipe; } + public void copy(RecipeCarpentry recipe) { this.id = recipe.id; this.name = recipe.name; @@ -205,7 +204,7 @@ public class RecipeCarpentry extends ShapedRecipes implements IRecipe { this.ignoreDamage = recipe.ignoreDamage; this.ignoreNBT = recipe.ignoreNBT; } - + public ItemStack getCraftingItem(int i){ if(recipeItems == null || i >= recipeItems.length) return null; diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index 26d319480..9b4d8afa5 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -88,8 +88,14 @@ gui.sunlight=Sunlight gui.always=Always gui.untilclose=UntilClose gui.whenavailable=OnTheMove -gui.ignoreDamage=Ignore damage +gui.ignoreDamage=Ignore Damage gui.ignoreNBT=Ignore NBT +gui.ignoreMatDamage=Ignore Material DMG +gui.ignoreMatNBT=Ignore Material NBT +gui.ignoreItemNBT=Ignore Item NBT +gui.repairPercent=Repair % +gui.material=Material +gui.xpCost=XP Cost gui.recordHistory=Record History gui.minrange=MinimumRange gui.engagedistance=EngageDistance From d45e5503215389a6c45f2ab18f439840e1c589a8 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 13:59:59 -0500 Subject: [PATCH 133/157] Availability Options for Recipe & Anvil Recipes --- .../gui/global/GuiNpcManageRecipes.java | 79 ++++++-- .../client/gui/player/GuiAnvilRecipes.java | 60 ++++++- .../npcs/client/gui/player/GuiRecipes.java | 170 ++++++++++++------ .../npcs/containers/ContainerAnvilRepair.java | 66 +------ .../npcs/controllers/data/Availability.java | 89 +++++++++ .../assets/customnpcs/lang/en_US.lang | 8 + 6 files changed, 339 insertions(+), 133 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java index cae37149e..76dd1b840 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageRecipes.java @@ -12,6 +12,7 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import noppes.npcs.client.CustomNpcResourceListener; import noppes.npcs.client.NoppesUtil; +import noppes.npcs.client.gui.SubGuiNpcAvailability; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumGuiType; @@ -43,7 +44,14 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS setBackground("inventorymenu.png"); slot = getResource("slot.png"); ySize = 200; - tab = 1; + + if(container.width == 1){ + tab = 2; + } else if (container.width == 3){ + tab = 0; + } else { + tab = 1; + } } @Override @@ -73,8 +81,13 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS this.addButton(new GuiNpcButtonYesNo(5, guiLeft + 235, buttonPos - 5, 40, 20, container.recipe.ignoreDamage)); this.addLabel(new GuiNpcLabel(1, "gui.ignoreNBT", guiLeft + 131, buttonPos += 22)); this.addButton(new GuiNpcButtonYesNo(6, guiLeft + 235, buttonPos - 5, 40, 20, container.recipe.ignoreNBT)); + + buttonPos += 22; + this.addButton(new GuiNpcButton(15, guiLeft + 172, buttonPos - 5, 103, 20, "availability.options")); + this.getButton(5).setEnabled(false); this.getButton(6).setEnabled(false); + this.getButton(15).setEnabled(false); this.addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft + 8, guiTop + 8, 160, 20, container.recipe.name)); this.getTextField(0).enabled = false; @@ -102,9 +115,13 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS this.getTextField(2).setMinMaxDefault(0, Integer.MAX_VALUE, container.recipeAnvil.getXpCost()); this.getTextField(2).enabled = false; + buttonPos += 22; + this.addButton(new GuiNpcButton(15, guiLeft + 172, buttonPos - 5, 103, 20, "availability.options")); + this.getButton(7).setEnabled(false); this.getButton(8).setEnabled(false); this.getButton(9).setEnabled(false); + this.getButton(15).setEnabled(false); this.addTextField(new GuiNpcTextField(0, this, fontRendererObj, guiLeft + 8, guiTop + 8, 160, 20, container.recipeAnvil.name)); this.getTextField(0).enabled = false; @@ -177,6 +194,14 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS if (button.id == 9) { container.recipeAnvil.ignoreRepairItemNBT = button.getValue() == 1; } + if(button.id == 15){ + save(); + if(container.width == 1){ + setSubGui(new SubGuiNpcAvailability(container.recipeAnvil.availability)); + } else { + setSubGui(new SubGuiNpcAvailability(container.recipe.availability)); + } + } } @Override @@ -210,43 +235,62 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS public void setGuiData(NBTTagCompound compound) { if (compound.hasKey("IsAnvil")) { RecipeAnvil recipe = RecipeAnvil.read(compound); - getTextField(0).setText(recipe.name); - getTextField(1).setText(recipe.getRepairPercentage() + ""); - getTextField(2).setText(recipe.getXpCost() + ""); container.setRecipe(recipe); + container.width = 1; + tab = 2; + fixButtons(); + } else { + RecipeCarpentry recipe = RecipeCarpentry.read(compound); + container.setRecipe(recipe); + fixButtons(); + } + } - setSelected(recipe.name); + private void fixButtons(){ + if(tab == 2){ + getTextField(0).setText(container.recipeAnvil.name); + getTextField(1).setText(container.recipeAnvil.getRepairPercentage() + ""); + getTextField(2).setText(container.recipeAnvil.getXpCost() + ""); + + setSelected(container.recipeAnvil.name); getTextField(0).enabled = true; getTextField(1).enabled = true; getTextField(2).enabled = true; - container.width = 1; - GuiNpcButtonYesNo btnMatDamage = (GuiNpcButtonYesNo)this.getButton(7); GuiNpcButtonYesNo btnMatNBT = (GuiNpcButtonYesNo)this.getButton(8); GuiNpcButtonYesNo btnItemNBT = (GuiNpcButtonYesNo)this.getButton(9); if (btnMatDamage != null) { - btnMatDamage.setDisplay(recipe.ignoreRepairMaterialDamage ? 1 : 0); + btnMatDamage.setDisplay(container.recipeAnvil.ignoreRepairMaterialDamage ? 1 : 0); btnMatDamage.setEnabled(true); } if (btnMatNBT != null) { - btnMatNBT.setDisplay(recipe.ignoreRepairMaterialNBT ? 1 : 0); + btnMatNBT.setDisplay(container.recipeAnvil.ignoreRepairMaterialNBT ? 1 : 0); btnMatNBT.setEnabled(true); } if (btnItemNBT != null) { - btnItemNBT.setDisplay(recipe.ignoreRepairItemNBT ? 1 : 0); + btnItemNBT.setDisplay(container.recipeAnvil.ignoreRepairItemNBT ? 1 : 0); btnItemNBT.setEnabled(true); } + + GuiNpcButton avail = this.getButton(15); + if(avail != null) + avail.setEnabled(true); } else { - RecipeCarpentry recipe = RecipeCarpentry.read(compound); - getTextField(0).setText(recipe.name); - container.setRecipe(recipe); + getTextField(0).setText(container.recipe.name); + this.getTextField(0).enabled = true; this.getButton(5).setEnabled(true); - this.getButton(5).setDisplay(recipe.ignoreDamage ? 1 : 0); + this.getButton(5).setDisplay(container.recipe.ignoreDamage ? 1 : 0); this.getButton(6).setEnabled(true); - this.getButton(6).setDisplay(recipe.ignoreNBT ? 1 : 0); - setSelected(recipe.name); + this.getButton(6).setDisplay(container.recipe.ignoreNBT ? 1 : 0); + setSelected(container.recipe.name); + + if(!container.recipe.isGlobal){ + GuiNpcButton avail = this.getButton(15); + if(avail != null) + avail.setEnabled(true); + } } } @@ -357,6 +401,7 @@ public class GuiNpcManageRecipes extends GuiContainerNPCInterface2 implements IS @Override public void subGuiClosed(SubGuiInterface subgui){ - + if(subgui instanceof SubGuiNpcAvailability) + fixButtons(); } } diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java b/src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java index 6d9e17667..cac06388a 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiAnvilRecipes.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import net.minecraft.util.StatCollector; import noppes.npcs.client.CustomNpcResourceListener; import noppes.npcs.client.gui.util.*; import noppes.npcs.controllers.RecipeController; @@ -122,13 +123,18 @@ public class GuiAnvilRecipes extends GuiNPCInterface { private static class TextOverlayData { public final int x, y, width, height; - public final String text; + public final List textLines; + public TextOverlayData(int x, int y, int width, int height, String text) { + this(x, y, width, height, Arrays.asList(text)); + } + + public TextOverlayData(int x, int y, int width, int height, List textLines) { this.x = x; this.y = y; this.width = width; this.height = height; - this.text = text; + this.textLines = textLines; } } @@ -156,6 +162,9 @@ public class GuiAnvilRecipes extends GuiNPCInterface { for (int i = startIndex; i < endIndex; i++) { RecipeAnvil recipe = recipes.get(i); + if(!recipe.isValid()) + continue; + int localIndex = i - startIndex; // 0 to 7 int col = localIndex / 4; // 0 for left column, 1 for right column int row = localIndex % 4; // rows 0..3 @@ -222,6 +231,51 @@ public class GuiAnvilRecipes extends GuiNPCInterface { textOverlays.add(new TextOverlayData(percentTextX, percentTextY, percentWidth, fontRendererObj.FONT_HEIGHT, String.valueOf(recipe.getRepairPercentage()))); } + if(!recipe.availability.isDefault()){ + if(!recipe.availability.isAvailable(this.player)){ + String helpChar = "?"; + float scale = 1F; // Adjust for a very small size + int questionWidth = (int)(fontRendererObj.getStringWidth(helpChar) * scale); + int questionHeight = (int)(fontRendererObj.FONT_HEIGHT * scale); + // Center the "?" under the percentage text. + int questionX = percentCenterX - (questionWidth / 2) - 1 - row; + int questionY = percentTextY + fontRendererObj.FONT_HEIGHT; // You can tweak the vertical offset if needed + + GL11.glPushMatrix(); + GL11.glTranslatef(questionX, questionY, 0); + GL11.glScalef(scale, scale, 1.0F); + + fontRendererObj.drawString(helpChar, 0, 0, 0xbd3e35); + GL11.glPopMatrix(); + + if (func_146978_c(questionX - guiLeft, questionY - guiTop, questionWidth, questionHeight, mouseX, mouseY)) { + List availableText = recipe.availability.isAvailableText(this.player); + textOverlays.add(new TextOverlayData(questionX, questionY, questionWidth, questionHeight, availableText)); + } + } else { + // Draw a very small "?" under the percentage text. + String helpChar = "!"; + float scale = 1F; // Adjust for a very small size + int questionWidth = (int)(fontRendererObj.getStringWidth(helpChar) * scale); + int questionHeight = (int)(fontRendererObj.FONT_HEIGHT * scale); + // Center the "?" under the percentage text. + int questionX = percentCenterX - (questionWidth / 2) - 1 - row; + int questionY = percentTextY + fontRendererObj.FONT_HEIGHT; // You can tweak the vertical offset if needed + + GL11.glPushMatrix(); + GL11.glTranslatef(questionX, questionY, 0); + GL11.glScalef(scale, scale, 1.0F); + + fontRendererObj.drawString(helpChar, 0, 0, CustomNpcResourceListener.DefaultTextColor); + GL11.glPopMatrix(); + + // When the "!" is hovered, add its tooltip overlay. + if (func_146978_c(questionX - guiLeft, questionY - guiTop, questionWidth, questionHeight, mouseX, mouseY)) { + textOverlays.add(new TextOverlayData(questionX, questionY, questionWidth, questionHeight, StatCollector.translateToLocal("gui.available"))); + } + } + } + // Draw XP cost with scaling. String xpCostStr = formatXpCost(recipe.getXpCost()); int digitCount = xpCostStr.length(); @@ -249,7 +303,7 @@ public class GuiAnvilRecipes extends GuiNPCInterface { } for (TextOverlayData tod : textOverlays) { - this.drawHoveringText(java.util.Arrays.asList(tod.text), mouseX, mouseY, this.fontRendererObj); + this.drawHoveringText(tod.textLines, mouseX, mouseY, this.fontRendererObj); } } protected boolean func_146978_c(int p_146978_1_, int p_146978_2_, int p_146978_3_, int p_146978_4_, int p_146978_5_, int p_146978_6_) { diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiRecipes.java b/src/main/java/noppes/npcs/client/gui/player/GuiRecipes.java index 64895af87..1302aa678 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiRecipes.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiRecipes.java @@ -9,6 +9,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import noppes.npcs.client.CustomNpcResourceListener; import noppes.npcs.client.gui.util.*; import noppes.npcs.controllers.RecipeController; import noppes.npcs.controllers.data.RecipeCarpentry; @@ -16,6 +18,7 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @SideOnly(Side.CLIENT) @@ -97,6 +100,33 @@ public class GuiRecipes extends GuiNPCInterface updateButton(); } + private static class ItemOverlayData { + public final int x, y; + public final ItemStack item; + public ItemOverlayData(int x, int y, ItemStack item) { + this.x = x; + this.y = y; + this.item = item; + } + } + + private static class TextOverlayData { + public final int x, y, width, height; + public final List textLines; + + public TextOverlayData(int x, int y, int width, int height, String text) { + this(x, y, width, height, Arrays.asList(text)); + } + + public TextOverlayData(int x, int y, int width, int height, List textLines) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.textLines = textLines; + } + } + @Override public void drawScreen(int xMouse, int yMouse, float f){ super.drawScreen(xMouse, yMouse, f); @@ -104,57 +134,95 @@ public class GuiRecipes extends GuiNPCInterface label.label = page + 1 + "/" + MathHelper.ceiling_float_int(recipes.size() / 4f); label.x = guiLeft + (256 - Minecraft.getMinecraft().fontRenderer.getStringWidth(label.label)) / 2; - for(int i = 0; i < 4; i++){ - int index = i + page * 4; - if(index >= recipes.size()) - break; - IRecipe irecipe = recipes.get(index); - if(irecipe.getRecipeOutput() == null) - continue; - int x = guiLeft + 5 + i / 2 * 126; - int y = guiTop + 15 + i % 2 * 76; - drawItem(irecipe.getRecipeOutput(), x + 98, y + 28, xMouse, yMouse); - if(irecipe instanceof RecipeCarpentry){ - RecipeCarpentry recipe = (RecipeCarpentry) irecipe; - x += (72 - recipe.recipeWidth * 18) / 2; - y += (72 - recipe.recipeHeight * 18) / 2; - for(int j = 0; j < recipe.recipeWidth; j++){ - for(int k = 0; k < recipe.recipeHeight; k++){ - mc.renderEngine.bindTexture(resource); - GL11.glColor4f(1, 1, 1, 1); - drawTexturedModalRect(x + j * 18, y + k * 18, 0, 0, 18, 18); - ItemStack item = recipe.getCraftingItem(j + k * recipe.recipeWidth); - if(item == null) - continue; - drawItem(item, x + j * 18 + 1, y + k * 18 + 1, xMouse, yMouse); - } - } - } - } - for(int i = 0; i < 4; i++){ - int index = i + page * 4; - if(index >= recipes.size()) - break; - IRecipe irecipe = recipes.get(index); - if(irecipe instanceof RecipeCarpentry){ - RecipeCarpentry recipe = (RecipeCarpentry) irecipe; - if(recipe.getRecipeOutput() == null) - continue; - int x = guiLeft + 5 + i / 2 * 126; - int y = guiTop + 15 + i % 2 * 76; - drawOverlay(recipe.getRecipeOutput(), x + 98, y + 22, xMouse, yMouse); - x += (72 - recipe.recipeWidth * 18) / 2; - y += (72 - recipe.recipeHeight * 18) / 2; - for(int j = 0; j < recipe.recipeWidth; j++){ - for(int k = 0; k < recipe.recipeHeight; k++){ - ItemStack item = recipe.getCraftingItem(j + k * recipe.recipeWidth); - if(item == null) - continue; - drawOverlay(item, x + j * 18 + 1, y + k * 18 + 1, xMouse, yMouse); - } - } - } - } + + List itemOverlays = new ArrayList(); + List textOverlays = new ArrayList(); + + // Loop through recipes. + for (int i = 0; i < 4; i++) { + int index = i + page * 4; + if (index >= recipes.size()) + break; + IRecipe irecipe = recipes.get(index); + if (irecipe.getRecipeOutput() == null) + continue; + int x = guiLeft + 5 + (i / 2) * 126; + int y = guiTop + 15 + (i % 2) * 76; + + drawItem(irecipe.getRecipeOutput(), x + 98, y + 28, xMouse, yMouse); + if (func_146978_c((x+98) - guiLeft, (y+28) - guiTop, 16, 16, xMouse, yMouse)) { + itemOverlays.add(new ItemOverlayData(x+98, y+28, irecipe.getRecipeOutput())); + } + + if (irecipe instanceof RecipeCarpentry) { + RecipeCarpentry recipe = (RecipeCarpentry) irecipe; + if (!recipe.isGlobal && recipe.availability != null && !recipe.availability.isDefault()) { + int outputX = x + 98; + int outputY = y + 38; + float scale = 1.0F; + String iconStr; + int iconColor; + if (!recipe.availability.isAvailable(mc.thePlayer)) { + iconStr = "?"; + iconColor = 0xbd3e35; + } else { + iconStr = "!"; + iconColor = CustomNpcResourceListener.DefaultTextColor; + } + int iconWidth = (int)(fontRendererObj.getStringWidth(iconStr) * scale); + int iconHeight = (int)(fontRendererObj.FONT_HEIGHT * scale); + // Center the icon below the output slot (16x16 slot). + int iconX = outputX + (16 - iconWidth) / 2; + int iconY = outputY + 16; + + // Render the icon. + GL11.glPushMatrix(); + GL11.glTranslatef(iconX, iconY, 0); + GL11.glScalef(scale, scale, 1.0F); + fontRendererObj.drawString(iconStr, 0, 0, iconColor); + GL11.glPopMatrix(); + + // Instead of rendering the tooltip immediately, add it as a text overlay. + if (func_146978_c(iconX - guiLeft, iconY - guiTop, iconWidth, iconHeight, xMouse, yMouse)) { + List tooltipLines = recipe.availability.isAvailableText(mc.thePlayer); + if (tooltipLines.isEmpty()) { + tooltipLines.add(StatCollector.translateToLocal("gui.available")); + } + textOverlays.add(new TextOverlayData(iconX, iconY, iconWidth, iconHeight, tooltipLines)); + } + } + } + + // Draw the recipe grid (for RecipeCarpentry recipes). + if (irecipe instanceof RecipeCarpentry) { + RecipeCarpentry recipe = (RecipeCarpentry) irecipe; + int gridX = x + (72 - recipe.recipeWidth * 18) / 2; + int gridY = y + (72 - recipe.recipeHeight * 18) / 2; + for (int j = 0; j < recipe.recipeWidth; j++) { + for (int k = 0; k < recipe.recipeHeight; k++) { + mc.renderEngine.bindTexture(resource); + GL11.glColor4f(1, 1, 1, 1); + drawTexturedModalRect(gridX + j * 18, gridY + k * 18, 0, 0, 18, 18); + ItemStack item = recipe.getCraftingItem(j + k * recipe.recipeWidth); + if (item == null) + continue; + drawItem(item, gridX + j * 18 + 1, gridY + k * 18 + 1, xMouse, yMouse); + if (func_146978_c((gridX+j*18+1)-guiLeft, (gridY+k*18+1)-guiTop, 16, 16, xMouse, yMouse)) { + itemOverlays.add(new ItemOverlayData(gridX+j*18+1, gridY+k*18+1, item)); + } + } + } + } + } + + // Render any item tooltips. + for (ItemOverlayData iod : itemOverlays) { + this.renderToolTip(iod.item, xMouse, yMouse); + } + // Render all text overlays (each line from the availability tooltip will be on its own line). + for (TextOverlayData tod : textOverlays) { + this.drawHoveringText(tod.textLines, xMouse, yMouse, this.fontRendererObj); + } } private void drawItem(ItemStack item, int x, int y, int xMouse, int yMouse){ diff --git a/src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java b/src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java index 355294a47..9230ed884 100644 --- a/src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java +++ b/src/main/java/noppes/npcs/containers/ContainerAnvilRepair.java @@ -3,7 +3,6 @@ package noppes.npcs.containers; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.init.Items; import net.minecraft.inventory.Container; import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.InventoryCrafting; @@ -11,7 +10,6 @@ import net.minecraft.inventory.InventoryCraftResult; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraft.network.play.server.S2FPacketSetSlot; import net.minecraft.world.World; import noppes.npcs.api.handler.data.IAnvilRecipe; import noppes.npcs.controllers.RecipeController; @@ -27,10 +25,7 @@ public class ContainerAnvilRepair extends Container { private World worldObj; private int posX, posY, posZ; - // These fields are used for syncing the repair cost message. - public String repairStatus = ""; public int repairCost = 0; - // How many repair material items are used during the repair calculation. public int repairMaterialConsumed = 0; public ContainerAnvilRepair(InventoryPlayer playerInv, World world, int x, int y, int z) { @@ -70,63 +65,6 @@ public class ContainerAnvilRepair extends Container { } updateRepairResult(); - - // For testing: clear recipes and add a test recipe. - RecipeController.Instance.anvilRecipes.clear(); - RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( - "Test", - new ItemStack(Items.iron_pickaxe), - new ItemStack(Items.paper), - 50, - 23)); - RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( - "Okay", - new ItemStack(Items.diamond_pickaxe), - new ItemStack(Items.paper), - 21, - 10)); - RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( - "Bob", - new ItemStack(Items.golden_pickaxe), - new ItemStack(Items.paper), - 1200, - 40)); - RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( - "Dude", - new ItemStack(Items.iron_chestplate), - new ItemStack(Items.paper), - 40000, - 23)); - RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( - "Oas", - new ItemStack(Items.golden_pickaxe), - new ItemStack(Items.diamond), - 12, - 1)); - RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( - "awd", - new ItemStack(Items.golden_sword), - new ItemStack(Items.gold_ingot), - 80, - 14)); - RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( - "fawd", - new ItemStack(Items.bow), - new ItemStack(Items.string), - 4, - 3)); - RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( - "cxzs", - new ItemStack(Items.bow), - new ItemStack(Items.diamond), - 4, - 3)); - RecipeController.Instance.addAnvilRecipe(new RecipeAnvil( - "awdawdwa", - new ItemStack(Items.iron_sword), - new ItemStack(Items.blaze_rod), - 4, - 3)); } @Override @@ -176,6 +114,10 @@ public class ContainerAnvilRepair extends Container { ItemStack output = null; if (matchingRecipe != null) { + if(!matchingRecipe.availability.isAvailable(player)){ + return; + } + int baseXpCost = matchingRecipe.getXpCost(); // Assume repairPercentage is given as a percent (e.g. 20 for 20% per material) float repairPercentage = matchingRecipe.getRepairPercentage() / 100.0f; diff --git a/src/main/java/noppes/npcs/controllers/data/Availability.java b/src/main/java/noppes/npcs/controllers/data/Availability.java index 1b039d730..1704e5b97 100644 --- a/src/main/java/noppes/npcs/controllers/data/Availability.java +++ b/src/main/java/noppes/npcs/controllers/data/Availability.java @@ -1,8 +1,11 @@ package noppes.npcs.controllers.data; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; +import net.minecraft.util.StatCollector; import noppes.npcs.ICompatibilty; import noppes.npcs.VersionCompatibility; import noppes.npcs.api.entity.IPlayer; @@ -13,6 +16,9 @@ import noppes.npcs.controllers.PlayerQuestController; import noppes.npcs.controllers.QuestController; import noppes.npcs.scripted.CustomNPCsException; +import java.util.ArrayList; +import java.util.List; + public class Availability implements ICompatibilty, IAvailability { public int version = VersionCompatibility.ModRev; @@ -124,6 +130,31 @@ public class Availability implements ICompatibilty, IAvailability { compound.setInteger("AvailabilityMinPlayerLevel", minPlayerLevel); return compound; } + + public boolean isDefault() { + return dialogAvailable == EnumAvailabilityDialog.Always && + dialog2Available == EnumAvailabilityDialog.Always && + dialog3Available == EnumAvailabilityDialog.Always && + dialog4Available == EnumAvailabilityDialog.Always && + dialogId == -1 && + + questAvailable == EnumAvailabilityQuest.Always && + quest2Available == EnumAvailabilityQuest.Always && + quest3Available == EnumAvailabilityQuest.Always && + quest4Available == EnumAvailabilityQuest.Always && + questId == -1 && + + factionAvailable == EnumAvailabilityFactionType.Always && + faction2Available == EnumAvailabilityFactionType.Always && + factionId == -1 && + faction2Id == -1 && + factionStance == EnumAvailabilityFaction.Friendly && + faction2Stance == EnumAvailabilityFaction.Friendly && + + daytime == EnumDayTime.Always && + minPlayerLevel == 0; + } + public void setFactionAvailability(int value) { factionAvailable = EnumAvailabilityFactionType.values()[value]; } @@ -177,6 +208,64 @@ public class Availability implements ICompatibilty, IAvailability { return true; } + @SideOnly(Side.CLIENT) + public List isAvailableText(EntityPlayer player) { + List errors = new ArrayList(); + + // Check daytime conditions. + if (daytime == EnumDayTime.Day) { + long time = player.worldObj.getWorldTime() % 24000; + if (time > 12000) { + errors.add(StatCollector.translateToLocal("availability.error.day")); + } + } else if (daytime == EnumDayTime.Night) { + long time = player.worldObj.getWorldTime() % 24000; + if (time < 12000) { + errors.add(StatCollector.translateToLocal("availability.error.night")); + } + } + + // Check dialog conditions. + if (!dialogAvailable(dialogId, dialogAvailable, player)) { + errors.add(StatCollector.translateToLocalFormatted("availability.error.dialog", dialogAvailable.toString(), dialogId)); + } + if (!dialogAvailable(dialog2Id, dialog2Available, player)) { + errors.add(StatCollector.translateToLocalFormatted("availability.error.dialog", dialog2Available.toString(), dialog2Id)); + } + if (!dialogAvailable(dialog3Id, dialog3Available, player)) { + errors.add(StatCollector.translateToLocalFormatted("availability.error.dialog", dialog3Available.toString(), dialog3Id)); + } + if (!dialogAvailable(dialog4Id, dialog4Available, player)) { + errors.add(StatCollector.translateToLocalFormatted("availability.error.dialog", dialog4Available.toString(), dialog4Id)); + } + + // Check quest conditions. + if (!questAvailable(questId, questAvailable, player)) { + errors.add(StatCollector.translateToLocalFormatted("availability.error.quest", questAvailable.toString(), questId)); + } + if (!questAvailable(quest2Id, quest2Available, player)) { + errors.add(StatCollector.translateToLocalFormatted("availability.error.quest", quest2Available.toString(), quest2Id)); + } + if (!questAvailable(quest3Id, quest3Available, player)) { + errors.add(StatCollector.translateToLocalFormatted("availability.error.quest", quest3Available.toString(), quest3Id)); + } + if (!questAvailable(quest4Id, quest4Available, player)) { + errors.add(StatCollector.translateToLocalFormatted("availability.error.quest", quest4Available.toString(), quest4Id)); + } + + // Check faction conditions. + if (!factionAvailable(factionId, factionStance, factionAvailable, player)) { + errors.add(StatCollector.translateToLocalFormatted("availability.error.faction", factionAvailable.toString(), factionStance.toString(), factionId)); + } + if (!factionAvailable(faction2Id, faction2Stance, faction2Available, player)) { + errors.add(StatCollector.translateToLocalFormatted("availability.error.faction", faction2Available.toString(), faction2Stance.toString(), faction2Id)); + } + if (player.experienceLevel < minPlayerLevel) { + errors.add(StatCollector.translateToLocalFormatted("availability.error.xp", minPlayerLevel)); + } + return errors; + } + private boolean factionAvailable(int id, EnumAvailabilityFaction stance, EnumAvailabilityFactionType available, EntityPlayer player) { if(available == EnumAvailabilityFactionType.Always) return true; diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index 9b4d8afa5..ba8ab903b 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -143,6 +143,7 @@ gui.loading=Loading gui.off=Off gui.on=On gui.sure=Are you sure? +gui.available=Requirements Met party.accept=Accept party.allowParty=Allow Partying @@ -326,6 +327,13 @@ availability.areaNotAvailble=You can't go this way availability.permission=You don't have permission to do this availability.editIcon=For the next 10 seconds you can set any item icon by right clicking +availability.error.day=Only During Day +availability.error.night=Only During Night +availability.error.dialog=%s Dialog %d +availability.error.quest=%s Quest %d +availability.error.faction=%s %s Faction %d +availability.error.xp=Exp Level %d + spawning.availableBiomes=Available Biomes spawning.spawningBiomes=Spawning Biomes spawning.availableDimensions=Available Dimensions From 29e182e82d8acc68a31878d961548a2b00ab05cb Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 14:20:40 -0500 Subject: [PATCH 134/157] Linked Item [WIP] --- .../LinkedScriptedItemController.java | 114 +++++++++++++ .../java/noppes/npcs/items/ItemLinked.java | 158 ++++++++++++++++++ 2 files changed, 272 insertions(+) create mode 100644 src/main/java/noppes/npcs/controllers/LinkedScriptedItemController.java create mode 100644 src/main/java/noppes/npcs/items/ItemLinked.java diff --git a/src/main/java/noppes/npcs/controllers/LinkedScriptedItemController.java b/src/main/java/noppes/npcs/controllers/LinkedScriptedItemController.java new file mode 100644 index 000000000..eaba4baaa --- /dev/null +++ b/src/main/java/noppes/npcs/controllers/LinkedScriptedItemController.java @@ -0,0 +1,114 @@ +package noppes.npcs.controllers; + + +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; +import noppes.npcs.LogWriter; +import noppes.npcs.util.JsonException; +import noppes.npcs.util.NBTJsonUtil; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class LinkedScriptedItemController { + public static LinkedScriptedItemController Instance; + public List list = new ArrayList<>(); + + public LinkedScriptedItemController() { + Instance = this; + load(); + } + + public File getDir() { + File dir = new File(CustomNpcs.getWorldSaveDirectory(), "linkeditems"); + if (!dir.exists()) { + dir.mkdirs(); + } + return dir; + } + + public void load() { + File dir = getDir(); + File[] files = dir.listFiles((d, name) -> name.endsWith(".json")); + if(files == null) return; + for (File file : files) { + try { + NBTTagCompound compound = NBTJsonUtil.LoadFile(file); + LinkedScriptedItemData data = new LinkedScriptedItemData(); + data.loadFromNBT(compound); + list.add(data); + } catch (Exception e) { + LogWriter.error("Error loading linked items: " + file.getAbsolutePath(), e); + } + } + } + + public void save() { + File dir = getDir(); + for (LinkedScriptedItemData data : list) { + try { + File file = new File(dir, data.name + ".json_new"); + NBTJsonUtil.SaveFile(file, data.saveToNBT()); + } catch (IOException e) { + LogWriter.except(e); + } catch (JsonException e) { + throw new RuntimeException(e); + } + } + } + + public LinkedScriptedItemData getData(String name) { + for (LinkedScriptedItemData data : list) { + if (data.name.equalsIgnoreCase(name)) { + return data; + } + } + return null; + } + + public void addData(String name, NBTTagCompound scriptData) { + if (name.isEmpty() || getData(name) != null) + return; + LinkedScriptedItemData data = new LinkedScriptedItemData(); + data.name = name; + data.scriptData = scriptData; + data.time = System.currentTimeMillis(); + list.add(data); + save(); + } + + public void updateData(String name, NBTTagCompound scriptData) { + LinkedScriptedItemData data = getData(name); + if (data != null) { + data.scriptData = scriptData; + data.time = System.currentTimeMillis(); + save(); + } + } + + public static class LinkedScriptedItemData { + public String name = "LinkedScriptedItem"; + public long time; + public NBTTagCompound scriptData = new NBTTagCompound(); + + public LinkedScriptedItemData() { + time = System.currentTimeMillis(); + } + + public void loadFromNBT(NBTTagCompound compound) { + name = compound.getString("LinkedScriptName"); + scriptData = compound.getCompoundTag("ScriptData"); + time = compound.getLong("Time"); + } + + public NBTTagCompound saveToNBT() { + NBTTagCompound compound = new NBTTagCompound(); + compound.setString("LinkedScriptName", name); + compound.setTag("ScriptData", scriptData); + compound.setLong("Time", time); + return compound; + } + } +} diff --git a/src/main/java/noppes/npcs/items/ItemLinked.java b/src/main/java/noppes/npcs/items/ItemLinked.java new file mode 100644 index 000000000..efeb40e79 --- /dev/null +++ b/src/main/java/noppes/npcs/items/ItemLinked.java @@ -0,0 +1,158 @@ +package noppes.npcs.items; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.world.World; +import noppes.npcs.CustomItems; +import noppes.npcs.CustomNpcs; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.EventHooks; +import noppes.npcs.api.item.IItemStack; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.constants.EnumGuiType; +import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.event.ItemEvent; +import noppes.npcs.scripted.item.ScriptCustomItem; +import org.lwjgl.opengl.GL11; + +public class ItemLinked extends Item implements ItemRenderInterface { + + public ItemLinked() { + maxStackSize = 1; + CustomNpcs.proxy.registerItem(this); + setHasSubtypes(true); + } + + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister par1IconRegister){ + this.itemIcon = Items.iron_pickaxe.getIconFromDamage(0); + } + + @Override + public int getColorFromItemStack(ItemStack itemStack, int par2){ + return 0x8B4513; + } + + @Override + public boolean requiresMultipleRenderPasses(){ + return true; + } + + @Override + public Item setUnlocalizedName(String name){ + GameRegistry.registerItem(this, name); + return super.setUnlocalizedName(name); + } + + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); + return stack; + } + + @Override + public boolean onEntitySwing(EntityLivingBase entityLivingBase, ItemStack stack){ + if (entityLivingBase.worldObj.isRemote) { + return false; + } + + IItemStack istack = NpcAPI.Instance().getIItemStack(stack); + ItemEvent.AttackEvent eve = new ItemEvent.AttackEvent( (ScriptCustomItem) istack, NpcAPI.Instance().getIEntity(entityLivingBase), 2, null); + return EventHooks.onScriptItemAttack((ScriptCustomItem) istack, eve); + } + + public int getMaxItemUseDuration(ItemStack stack){ + return (new ScriptCustomItem(stack)).getMaxItemUseDuration(); + } + + public static ScriptCustomItem GetWrapper(ItemStack stack) { + return new ScriptCustomItem(stack); + } + + public boolean showDurabilityBar(ItemStack stack) { + IItemStack istack = NpcAPI.Instance().getIItemStack(stack); + return istack instanceof ScriptCustomItem && (new ScriptCustomItem(stack)).durabilityShow; + } + + public double getDurabilityForDisplay(ItemStack stack) { + IItemStack istack = NpcAPI.Instance().getIItemStack(stack); + return istack instanceof ScriptCustomItem ? 1.0D - (new ScriptCustomItem(stack)).durabilityValue : 1.0D; + } + + public int getItemStackLimit(ItemStack stack) { + IItemStack istack = NpcAPI.Instance().getIItemStack(stack); + return istack instanceof ScriptCustomItem ? (new ScriptCustomItem(stack)).getMaxStackSize() : super.getItemStackLimit(stack); + } + + public boolean isItemTool(ItemStack stack) + { + IItemStack istack = NpcAPI.Instance().getIItemStack(stack); + return istack instanceof ScriptCustomItem ? (new ScriptCustomItem(stack)).isTool() : super.isItemTool(stack); + } + + public float getDigSpeed(ItemStack stack, Block block, int metadata) + { + IItemStack istack = NpcAPI.Instance().getIItemStack(stack); + return istack instanceof ScriptCustomItem ? (new ScriptCustomItem(stack)).getDigSpeed() : super.getDigSpeed(stack, block, metadata); + } + + public boolean isValidArmor(ItemStack stack, int armorType, Entity entity) + { + IItemStack istack = NpcAPI.Instance().getIItemStack(stack); + + if((new ScriptCustomItem(stack)).getArmorType() == -1) + return true; + + return istack instanceof ScriptCustomItem ? armorType == (new ScriptCustomItem(stack)).getArmorType() : super.isValidArmor(stack, armorType, entity); + } + + public int getItemEnchantability(ItemStack stack) + { + IItemStack istack = NpcAPI.Instance().getIItemStack(stack); + return istack instanceof ScriptCustomItem ? (new ScriptCustomItem(stack)).getEnchantability() : super.getItemEnchantability(stack); + } + + public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) { + IItemStack istack = NpcAPI.Instance().getIItemStack(stack); + ItemEvent.AttackEvent eve = new ItemEvent.AttackEvent( (ScriptCustomItem) istack, NpcAPI.Instance().getIEntity(attacker), 1, NpcAPI.Instance().getIEntity(target)); + return EventHooks.onScriptItemAttack((ScriptCustomItem) istack, eve); + } + + public EnumAction getItemUseAction(ItemStack stack) + { + IItemStack istack = NpcAPI.Instance().getIItemStack(stack); + if (istack instanceof ScriptCustomItem) { + switch (((ScriptCustomItem) istack).getItemUseAction()) { + case 0: + return EnumAction.none; + case 1: + return EnumAction.block; + case 2: + return EnumAction.bow; + case 3: + return EnumAction.eat; + case 4: + return EnumAction.drink; + } + } + return super.getItemUseAction(stack); + } + + @Override + public void renderSpecial() {} + + public void renderOffset(ScriptCustomItem scriptCustomItem) { + GL11.glTranslatef(0.135F * scriptCustomItem.scaleX, 0.2F * scriptCustomItem.scaleY, 0.07F * scriptCustomItem.scaleZ); + } +} From 65ac349c08bad6cb86d589e4b142613c49ee0d10 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 14:26:32 -0500 Subject: [PATCH 135/157] API Link --- src/api | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api b/src/api index f91f9b43b..5a8246f72 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit f91f9b43ba47a6bc1f6970537792b3b8ce49f4b8 +Subproject commit 5a8246f728f7c258efd41d3ecf2b69edf83b5f3d From 20a46e60079ce9618b836ba8216949118d32b72c Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 14:58:45 -0500 Subject: [PATCH 136/157] Custom Effect [WIP] --- src/api | 2 +- .../markovnames/MarkovDictionarySPA.java | 1 - src/main/java/noppes/npcs/CommonProxy.java | 12 +- src/main/java/noppes/npcs/DataInventory.java | 30 +- src/main/java/noppes/npcs/LogWriter.java | 6 +- .../java/noppes/npcs/NoppesUtilServer.java | 8 + .../noppes/npcs/client/TranslateUtil.java | 14 +- .../npcs/client/gui/GuiNpcDimension.java | 2 +- .../npcs/client/gui/GuiNpcMobSpawner.java | 2 +- .../client/gui/GuiNpcMobSpawnerMounter.java | 2 +- .../client/gui/GuiNpcMobSpawnerSelector.java | 2 +- .../gui/SubGuiNpcResistanceProperties.java | 2 +- .../gui/global/GuiNPCManageTransporters.java | 2 +- .../client/gui/model/GuiEntitySelection.java | 2 +- .../npcs/client/gui/model/GuiPresetSave.java | 2 +- .../client/gui/model/GuiPresetSelection.java | 2 +- .../npcs/client/gui/player/GuiMailbox.java | 2 +- .../gui/player/GuiTransportSelection.java | 2 +- .../client/gui/roles/GuiNpcCompanion.java | 4 +- .../npcs/client/gui/util/GuiCustomScroll.java | 2 +- .../client/gui/util/GuiModelInterface.java | 2 +- .../client/gui/util/GuiModelInterface2.java | 4 +- .../blocks/BlockCarpentryBenchRenderer.java | 2 +- .../npcs/config/legacy/LegacyLoader.java | 8 +- .../controllers/StatusEffectController.java | 601 ++++++++++++++++++ .../npcs/controllers/data/CustomEffect.java | 319 ++++++++++ .../controllers/data/EffectScriptHandler.java | 181 ++++++ .../npcs/controllers/data/PlayerEffect.java | 102 +++ .../npcs/controllers/data/PlayerMail.java | 16 +- .../java/noppes/npcs/roles/JobItemGiver.java | 4 +- .../npcs/scripted/event/PlayerEvent.java | 56 ++ 31 files changed, 1331 insertions(+), 65 deletions(-) create mode 100644 src/main/java/noppes/npcs/controllers/StatusEffectController.java create mode 100644 src/main/java/noppes/npcs/controllers/data/CustomEffect.java create mode 100644 src/main/java/noppes/npcs/controllers/data/EffectScriptHandler.java create mode 100644 src/main/java/noppes/npcs/controllers/data/PlayerEffect.java diff --git a/src/api b/src/api index 5a8246f72..3f40e94be 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 5a8246f728f7c258efd41d3ecf2b69edf83b5f3d +Subproject commit 3f40e94beaf4e8310fab8fa3376a069c9751efdd diff --git a/src/main/java/nikedemos/markovnames/MarkovDictionarySPA.java b/src/main/java/nikedemos/markovnames/MarkovDictionarySPA.java index bf7fcc61c..129e0b8e2 100644 --- a/src/main/java/nikedemos/markovnames/MarkovDictionarySPA.java +++ b/src/main/java/nikedemos/markovnames/MarkovDictionarySPA.java @@ -7,7 +7,6 @@ public class MarkovDictionarySPA extends MarkovDictionary { public MarkovDictionarySPA(String dictionary, int seqlen, Random rng) { super(dictionary, seqlen, rng); - // TODO Auto-generated constructor stub } @Override diff --git a/src/main/java/noppes/npcs/CommonProxy.java b/src/main/java/noppes/npcs/CommonProxy.java index 1d45e4cee..65859884d 100644 --- a/src/main/java/noppes/npcs/CommonProxy.java +++ b/src/main/java/noppes/npcs/CommonProxy.java @@ -108,16 +108,16 @@ public class CommonProxy implements IGuiHandler { @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { - // TODO Auto-generated method stub + return null; } public void openGui(EntityNPCInterface npc, EnumGuiType gui) { - // TODO Auto-generated method stub + } public void openGui(EntityNPCInterface npc, EnumGuiType gui, int x, int y, int z) { - // TODO Auto-generated method stub + } @@ -126,12 +126,12 @@ public class CommonProxy implements IGuiHandler { } public void openGui(EntityPlayer player, Object guiscreen) { - // TODO Auto-generated method stub + } public void spawnParticle(EntityLivingBase player, String string, Object... ob) { - // TODO Auto-generated method stub + } @@ -146,7 +146,7 @@ public class CommonProxy implements IGuiHandler { } public void registerItem(Item item) { - // TODO Auto-generated method stub + } diff --git a/src/main/java/noppes/npcs/DataInventory.java b/src/main/java/noppes/npcs/DataInventory.java index 992a68ae5..6db4c4ccf 100644 --- a/src/main/java/noppes/npcs/DataInventory.java +++ b/src/main/java/noppes/npcs/DataInventory.java @@ -24,14 +24,14 @@ public class DataInventory implements IInventory { public HashMap weapons = new HashMap(); public HashMap prevWeapons = new HashMap(); public HashMap armor = new HashMap(); - + public int minExp = 0; public int maxExp = 0; - + public int lootMode = 0; - + private EntityNPCInterface npc; - + public DataInventory(EntityNPCInterface npc){ this.npc = npc; } @@ -43,7 +43,7 @@ public class DataInventory implements IInventory { nbttagcompound.setTag("Weapons", NBTTags.nbtItemStackList(getWeapons())); nbttagcompound.setTag("DoubleDropChance", NBTTags.nbtIntegerDoubleMap(dropchance)); nbttagcompound.setInteger("LootMode", lootMode); - + return nbttagcompound; } public void readEntityFromNBT(NBTTagCompound nbttagcompound){ @@ -187,7 +187,7 @@ public class DataInventory implements IInventory { npc.worldObj.spawnEntityInWorld(item); } } - + public EntityItem getEntityItem(ItemStack itemstack) { if (itemstack == null) { return null; @@ -205,13 +205,13 @@ public class DataInventory implements IInventory { return entityitem; } - + public ItemStack armorItemInSlot(int i) { return getArmor().get(i); } @Override public int getSizeInventory() { - // TODO Auto-generated method stub + return 15; } @Override @@ -243,7 +243,7 @@ public class DataInventory implements IInventory { var3 = getArmor(); i = 2; } - + ItemStack var4 = null; if (var3.get(par1) != null) { @@ -355,17 +355,17 @@ public class DataInventory implements IInventory { } @Override public void markDirty() { - // TODO Auto-generated method stub - + + } @Override public void openInventory() { - // TODO Auto-generated method stub - + + } @Override public void closeInventory() { - // TODO Auto-generated method stub - + + } } diff --git a/src/main/java/noppes/npcs/LogWriter.java b/src/main/java/noppes/npcs/LogWriter.java index 6286f2c1f..aeccab32f 100644 --- a/src/main/java/noppes/npcs/LogWriter.java +++ b/src/main/java/noppes/npcs/LogWriter.java @@ -81,10 +81,10 @@ public class LogWriter { logger.setLevel(Level.ALL); info(new Date().toString()); } catch (SecurityException e) { - // TODO Auto-generated catch block + e.printStackTrace(); } catch (IOException e) { - // TODO Auto-generated catch block + e.printStackTrace(); } } @@ -223,4 +223,4 @@ class NPCStamp public Date makeDate = new Date(); public Date recentDate = new Date(); public int counter = 1; -}; \ No newline at end of file +}; diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 1794d3ec0..2e4230618 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -65,6 +65,14 @@ import static kamkeel.npcs.network.packets.data.large.ScrollGroupPacket.sendScro public class NoppesUtilServer { private static HashMap editingQuests = new HashMap(); + public static IPlayer getIPlayer(EntityPlayer p) { + return (IPlayer) NpcAPI.Instance().getIEntity(p); + } + + public static UUID getUUID(Entity entity) { + return entity instanceof EntityPlayer ? ((EntityPlayer) entity).getGameProfile().getId() : entity.getUniqueID(); + } + public static void setEditingNpc(EntityPlayer player, EntityNPCInterface npc){ PlayerData data = PlayerDataController.Instance.getPlayerData(player); data.editingNpc = npc; diff --git a/src/main/java/noppes/npcs/client/TranslateUtil.java b/src/main/java/noppes/npcs/client/TranslateUtil.java index b4e26426b..88b23ca6e 100644 --- a/src/main/java/noppes/npcs/client/TranslateUtil.java +++ b/src/main/java/noppes/npcs/client/TranslateUtil.java @@ -18,7 +18,7 @@ public class TranslateUtil { private static final String AudioUrl = "http://translate.google.com/translate_tts?q=%s&tl=%s"; public static String Translate(String text){ - + try { String urlStr = String.format(TranslateUrl, URLEncoder.encode(text,"utf8"), "auto", "nl"); URL url = new URL(urlStr); @@ -45,10 +45,10 @@ public class TranslateUtil { } catch (IOException e) { e.printStackTrace(); } - + return text; } - + // public static void PlayAudio(String text){ // try { // String urlStr = String.format(AudioUrl, URLEncoder.encode(text,"utf8"), "en"); @@ -59,12 +59,12 @@ public class TranslateUtil { // //connection.setDoOutput(true); // connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)"); // connection.setRequestProperty("X-HTTP-Method-Override", "GET"); -// +// // InputStream audioSrc = new BufferedInputStream(connection.getInputStream()); // //DataInputStream read = new DataInputStream(audioSrc); // AudioInputStream audioIn = AudioSystem.getAudioInputStream(audioSrc); // Clip clip = AudioSystem.getClip(); -// +// // } catch (UnsupportedEncodingException e) { // e.printStackTrace(); // } catch (MalformedURLException e) { @@ -72,10 +72,10 @@ public class TranslateUtil { // } catch (IOException e) { // e.printStackTrace(); // } catch (UnsupportedAudioFileException e) { -// // TODO Auto-generated catch block +// // e.printStackTrace(); // } catch (LineUnavailableException e) { -// // TODO Auto-generated catch block +// // e.printStackTrace(); // } // } diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java b/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java index f2aa248b2..2aa64b412 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcDimension.java @@ -80,7 +80,7 @@ public class GuiNpcDimension extends GuiNPCInterface implements IScrollData{ } @Override public void save() { - // TODO Auto-generated method stub + } @Override diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index 0d00d30f3..b467640dc 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -466,7 +466,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { @Override public void save() { - // TODO Auto-generated method stub + } @Override diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java index 2384e8c59..fff76deda 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java @@ -217,7 +217,7 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData @Override public void save() { - // TODO Auto-generated method stub + } @Override diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java index b0b861166..16d58c93d 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java @@ -144,7 +144,7 @@ public class GuiNpcMobSpawnerSelector extends SubGuiInterface implements IGuiDat @Override public void save() { - // TODO Auto-generated method stub + } diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcResistanceProperties.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcResistanceProperties.java index 505c5246c..97341b4e6 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcResistanceProperties.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcResistanceProperties.java @@ -60,7 +60,7 @@ public class SubGuiNpcResistanceProperties extends SubGuiInterface implements IS @Override public void mousePressed(GuiNpcSlider slider) { - // TODO Auto-generated method stub + } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java index 61fc8143c..dfec90df5 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTransporters.java @@ -133,7 +133,7 @@ public class GuiNPCManageTransporters extends GuiNPCInterface implements IScroll @Override public void setSelected(String selected) { - // TODO Auto-generated method stub + } diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiEntitySelection.java b/src/main/java/noppes/npcs/client/gui/model/GuiEntitySelection.java index 3b0ff48b6..5ed455569 100644 --- a/src/main/java/noppes/npcs/client/gui/model/GuiEntitySelection.java +++ b/src/main/java/noppes/npcs/client/gui/model/GuiEntitySelection.java @@ -172,7 +172,7 @@ public class GuiEntitySelection extends GuiNPCInterface @Override public void save() { - // TODO Auto-generated method stub + } diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiPresetSave.java b/src/main/java/noppes/npcs/client/gui/model/GuiPresetSave.java index dc574b559..99a396853 100644 --- a/src/main/java/noppes/npcs/client/gui/model/GuiPresetSave.java +++ b/src/main/java/noppes/npcs/client/gui/model/GuiPresetSave.java @@ -43,7 +43,7 @@ public class GuiPresetSave extends GuiNPCInterface{ } @Override public void save() { - // TODO Auto-generated method stub + } } diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiPresetSelection.java b/src/main/java/noppes/npcs/client/gui/model/GuiPresetSelection.java index e9245e0cb..f8a2e5ad4 100644 --- a/src/main/java/noppes/npcs/client/gui/model/GuiPresetSelection.java +++ b/src/main/java/noppes/npcs/client/gui/model/GuiPresetSelection.java @@ -155,7 +155,7 @@ public class GuiPresetSelection extends GuiNPCInterface @Override public void save() { - // TODO Auto-generated method stub + } diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiMailbox.java b/src/main/java/noppes/npcs/client/gui/player/GuiMailbox.java index 2094720d2..70e2130f9 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiMailbox.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiMailbox.java @@ -121,7 +121,7 @@ public class GuiMailbox extends GuiNPCInterface implements IGuiData, ICustomScro } @Override public void save() { - // TODO Auto-generated method stub + } @Override diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiTransportSelection.java b/src/main/java/noppes/npcs/client/gui/player/GuiTransportSelection.java index fa9ef7b58..601f01df5 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiTransportSelection.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiTransportSelection.java @@ -94,7 +94,7 @@ public class GuiTransportSelection extends GuiNPCInterface implements ITopButton } @Override public void setSelected(String selected) { - // TODO Auto-generated method stub + } diff --git a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java index af4c4de5e..136dbdc77 100644 --- a/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java +++ b/src/main/java/noppes/npcs/client/gui/roles/GuiNpcCompanion.java @@ -114,13 +114,13 @@ public class GuiNpcCompanion extends GuiNPCInterface2 implements ITextfieldListe @Override public void mousePressed(GuiNpcSlider slider) { - // TODO Auto-generated method stub + } @Override public void mouseReleased(GuiNpcSlider slider) { - // TODO Auto-generated method stub + } diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java index 61db640a1..68f5e6de7 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java @@ -308,7 +308,7 @@ public class GuiCustomScroll extends GuiScreen drawTexturedModalRect(i, k, xSize, 11, 5, 1); } public boolean hasSelected() { - // TODO Auto-generated method stub + return selected >= 0; } diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface.java b/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface.java index a3163a45c..f419f3b24 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface.java @@ -196,7 +196,7 @@ public class GuiModelInterface extends GuiNPCInterface { @Override public void save() { - // TODO Auto-generated method stub + } } diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface2.java b/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface2.java index 31f3fa130..ae1578679 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface2.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface2.java @@ -155,8 +155,8 @@ public class GuiModelInterface2 extends GuiNPCInterface2{ @Override public void save() { - // TODO Auto-generated method stub - + + } public void setSave(boolean saveNPC){ diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java index 70df788b1..9ee1bf066 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCarpentryBenchRenderer.java @@ -92,7 +92,7 @@ public class BlockCarpentryBenchRenderer extends TileEntitySpecialRenderer imple @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - // TODO Auto-generated method stub + return false; } diff --git a/src/main/java/noppes/npcs/config/legacy/LegacyLoader.java b/src/main/java/noppes/npcs/config/legacy/LegacyLoader.java index 17e0e8c13..87469c391 100644 --- a/src/main/java/noppes/npcs/config/legacy/LegacyLoader.java +++ b/src/main/java/noppes/npcs/config/legacy/LegacyLoader.java @@ -13,7 +13,7 @@ public class LegacyLoader { private String fileName; private Class configClass; private LinkedList configFields; - + public LegacyLoader(Class clss, File dir, String fileName){ if(!dir.exists()) dir.mkdir(); @@ -131,16 +131,16 @@ public class LegacyLoader { out.write(name + "=" + field.get(null).toString() + System.getProperty( "line.separator" )); out.write(System.getProperty( "line.separator" )); } catch (IllegalArgumentException e) { - // TODO Auto-generated catch block + e.printStackTrace(); } catch (IllegalAccessException e) { - // TODO Auto-generated catch block + e.printStackTrace(); } } out.close(); } catch (IOException e) { - // TODO Auto-generated catch block + e.printStackTrace(); } } diff --git a/src/main/java/noppes/npcs/controllers/StatusEffectController.java b/src/main/java/noppes/npcs/controllers/StatusEffectController.java new file mode 100644 index 000000000..a926cd5df --- /dev/null +++ b/src/main/java/noppes/npcs/controllers/StatusEffectController.java @@ -0,0 +1,601 @@ +package noppes.npcs.controllers; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import noppes.npcs.CustomNpcs; +import noppes.npcs.LogWriter; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.api.handler.IStatusEffectHandler; +import noppes.npcs.api.handler.data.ICustomEffect; +import noppes.npcs.controllers.data.CustomEffect; +import noppes.npcs.controllers.data.EffectScriptHandler; +import noppes.npcs.controllers.data.PlayerEffect; +import noppes.npcs.scripted.event.PlayerEvent; +import noppes.npcs.util.NBTJsonUtil; + +import java.io.*; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.zip.GZIPInputStream; + +import static noppes.npcs.scripted.event.PlayerEvent.EffectEvent.ExpirationType; + +public class StatusEffectController implements IStatusEffectHandler { + + public static StatusEffectController Instance = new StatusEffectController(); + public HashMap> indexMapper = new HashMap<>(); + + public HashMap customEffectsSync = new HashMap<>(); + public HashMap customEffects = new HashMap<>(); + + public HashMap customEffectScriptHandlers = new HashMap<>(); + private HashMap bootOrder; + + private int lastUsedID = 0; + + public ConcurrentHashMap> playerEffects = new ConcurrentHashMap<>(); + + public StatusEffectController() {} + + public static StatusEffectController getInstance() { + return Instance; + } + + public void load() { + lastUsedID = 0; + playerEffects.clear(); + bootOrder = new HashMap<>(); + LogWriter.info("Loading custom effects..."); + readCustomEffectMap(); + loadCustomEffects(); + LogWriter.info("Done loading custom effects."); + } + + + public void runEffects(EntityPlayer player) { + Map current = getPlayerEffects(player); + for (int active : current.keySet()) { + CustomEffect effect = get(active); + if (effect != null) { + effect.runEffect(player, current.get(active)); + } + } + } + + public void killEffects(EntityPlayer player) { + Map current = getPlayerEffects(player); + Iterator> iterator = current.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + CustomEffect effect = get(entry.getKey()); + if (effect != null) { + if (effect.lossOnDeath) { + effect.onRemoved(player, entry.getValue(), PlayerEvent.EffectEvent.ExpirationType.DEATH); + iterator.remove(); + } + } else { + iterator.remove(); // Use iterator to remove the current element + } + } + } + + public boolean has(String name) { + return get(name) != null; + } + + public boolean has(int id) { + return get(id) != null; + } + + @Override + public ICustomEffect createEffect(String name) { + if (has(name)) + return get(name); + + CustomEffect effect = new CustomEffect(); + effect.name = name; + + if (effect.id == -1) { + int id = getUnusedId(); + while (customEffects.containsKey(id)) { + id = getUnusedId(); + } + effect.id = id; + } + customEffects.put(effect.id, effect); + return effect; + } + + @Override + public ICustomEffect getEffect(String name) { + return get(name); + } + + @Override + public void deleteEffect(String name) { + ICustomEffect effect = getEffect(name); + if (effect != null) { + CustomEffect foundEffect = customEffects.remove(effect.getID()); + customEffectScriptHandlers.remove(effect.getID()); + if (foundEffect != null && foundEffect.name != null) { + File dir = this.getDir(); + for (File file : dir.listFiles()) { + if (!file.isFile() || !file.getName().endsWith(".json")) + continue; + if (file.getName().equals(foundEffect.name + ".json")) { + file.delete(); + + // TODO: Fix Packets + // DBCPacketHandler.Instance.sendToAll(new DBCInfoSyncPacket(DBCSyncType.CUSTOM_EFFECT, EnumSyncAction.REMOVE, foundEffect.getID(), new NBTTagCompound())); + break; + } + } + saveEffectLoadMap(); + } + } + } + + public void delete(int id) { + ICustomEffect effect = get(id); + if (effect != null) { + CustomEffect foundEffect = customEffects.remove(effect.getID()); + customEffectScriptHandlers.remove(effect.getID()); + if (foundEffect != null && foundEffect.name != null) { + File dir = this.getDir(); + for (File file : dir.listFiles()) { + if (!file.isFile() || !file.getName().endsWith(".json")) + continue; + if (file.getName().equals(foundEffect.name + ".json")) { + file.delete(); + + // TODO: Fix Packets + // DBCPacketHandler.Instance.sendToAll(new DBCInfoSyncPacket(DBCSyncType.CUSTOM_EFFECT, EnumSyncAction.REMOVE, foundEffect.getID(), new NBTTagCompound())); + break; + } + } + saveEffectLoadMap(); + } + } + } + + + public int getUnusedId() { + for (int catid : customEffects.keySet()) { + if (catid > lastUsedID) + lastUsedID = catid; + } + lastUsedID++; + return lastUsedID; + } + + public CustomEffect get(String name) { + for (CustomEffect effect : customEffects.values()) { + if (effect.getName().equalsIgnoreCase(name)) { + return effect; + } + } + return null; + } + + public CustomEffect get(int id) { + CustomEffect statusEffect; + statusEffect = customEffects.get(id); + return statusEffect; + } + + public Map getPlayerEffects(EntityPlayer player) { + UUID playerId = NoppesUtilServer.getUUID(player); + if (!playerEffects.containsKey(playerId)) + playerEffects.put(playerId, new ConcurrentHashMap<>()); + return playerEffects.get(NoppesUtilServer.getUUID(player)); + } + + public void applyEffect(EntityPlayer player, int id) { + CustomEffect parent = get(id); + if (parent != null) { + PlayerEffect playerEffect = new PlayerEffect(id, parent.length, (byte) 1); + applyEffect(player, playerEffect); + } + } + + public void applyEffect(EntityPlayer player, int id, int duration) { + CustomEffect parent = get(id); + if (parent != null) { + PlayerEffect playerEffect = new PlayerEffect(id, duration, (byte) 1); + applyEffect(player, playerEffect); + } + } + + public void applyEffect(EntityPlayer player, PlayerEffect effect) { + if (effect == null) + return; + + CustomEffect parent = get(effect.id); + if (parent != null) { + Map currentEffects = new ConcurrentHashMap<>(); + UUID uuid = NoppesUtilServer.getUUID(player); + if (playerEffects.containsKey(uuid)) + currentEffects = playerEffects.get(NoppesUtilServer.getUUID(player)); + else + playerEffects.put(uuid, currentEffects); + + currentEffects.put(effect.id, effect); + parent.onAdded(player, effect); + } + } + + public void removeEffect(EntityPlayer player, PlayerEffect effect, ExpirationType type) { + if (effect == null) + return; + + Map currentEffects = new ConcurrentHashMap<>(); + UUID uuid = NoppesUtilServer.getUUID(player); + if (playerEffects.containsKey(uuid)) + currentEffects = playerEffects.get(NoppesUtilServer.getUUID(player)); + else + playerEffects.put(uuid, currentEffects); + + if (currentEffects.containsKey(effect.id)) { + CustomEffect parent = get(effect.id); + if (parent != null) { + parent.onRemoved(player, effect, type); + } + currentEffects.remove(effect.id); + } + } + + @Override + public boolean hasEffect(IPlayer player, int id) { + if (player == null || player.getMCEntity() == null) + return false; + return hasEffect((EntityPlayer) player.getMCEntity(), id); + } + + @Override + public boolean hasEffect(IPlayer player, ICustomEffect effect) { + return hasEffect(player, effect.getID()); + } + + @Override + public int getEffectDuration(IPlayer player, int id) { + if (player == null || player.getMCEntity() == null) + return -1; + return getEffectDuration((EntityPlayer) player.getMCEntity(), id); + } + + @Override + public int getEffectDuration(IPlayer player, ICustomEffect effect) { + return getEffectDuration(player, effect.getID()); + } + + @Override + public void applyEffect(IPlayer player, int id, int duration, byte level) { + if (player == null || player.getMCEntity() == null) + return; + applyEffect((EntityPlayer) player.getMCEntity(), id, duration, level); + } + + @Override + public void applyEffect(IPlayer player, ICustomEffect effect, int duration, byte level) { + applyEffect(player, effect.getID(), duration, level); + } + + @Override + public void removeEffect(IPlayer player, int id) { + if (player == null || player.getMCEntity() == null) + return; + removeEffect((EntityPlayer) player.getMCEntity(), id, ExpirationType.REMOVED); + } + + @Override + public void removeEffect(IPlayer player, ICustomEffect effect) { + removeEffect((EntityPlayer) player.getMCEntity(), (PlayerEffect) effect, ExpirationType.REMOVED); + } + + @Override + public void clearEffects(IPlayer player) { + if (player == null || player.getMCEntity() == null) + return; + clearEffects(player.getMCEntity()); + } + + @Override + public ICustomEffect saveEffect(ICustomEffect customEffect) { + if (customEffect.getID() < 0) { + customEffect.setID(getUnusedId()); + while (has(customEffect.getName())) + customEffect.setName(customEffect.getName() + "_"); + } else { + CustomEffect existing = customEffects.get(customEffect.getID()); + if (existing != null && !existing.name.equals(customEffect.getName())) + while (has(customEffect.getName())) + customEffect.setName(customEffect.getName() + "_"); + } + + customEffects.remove(customEffect.getID()); + customEffects.put(customEffect.getID(), (CustomEffect) customEffect); + + saveEffectLoadMap(); + + File dir = this.getDir(); + if (!dir.exists()) + dir.mkdirs(); + + File file = new File(dir, customEffect.getName() + ".json_new"); + File file2 = new File(dir, customEffect.getName() + ".json"); + + try { + NBTTagCompound nbtTagCompound = ((CustomEffect) customEffect).writeToNBT(true); + NBTJsonUtil.SaveFile(file, nbtTagCompound); + if (file2.exists()) + file2.delete(); + file.renameTo(file2); + nbtTagCompound.removeTag("ScriptData"); + // TODO: Add Packets + // DBCPacketHandler.Instance.sendToAll(new DBCInfoSyncPacket(DBCSyncType.CUSTOM_EFFECT, EnumSyncAction.UPDATE, -1, nbtTagCompound)); + } catch (Exception e) { + LogWriter.except(e); + } + return customEffects.get(customEffect.getID()); + } + + public void clearEffects(Entity player) { + Map effects = playerEffects.get(NoppesUtilServer.getUUID(player)); + if (effects != null) { + effects.clear(); + } + } + + public boolean hasEffect(EntityPlayer player, int id) { + Map currentEffects; + UUID uuid = NoppesUtilServer.getUUID(player); + if (playerEffects.containsKey(uuid)) + currentEffects = playerEffects.get(uuid); + else + return false; + + return currentEffects.containsKey(id); + } + + public int getEffectDuration(EntityPlayer player, int id) { + Map currentEffects = new ConcurrentHashMap<>(); + UUID uuid = NoppesUtilServer.getUUID(player); + if (playerEffects.containsKey(uuid)) + currentEffects = playerEffects.get(uuid); + else + playerEffects.put(uuid, currentEffects); + + if (currentEffects.containsKey(id)) + return currentEffects.get(id).duration; + + return -1; + } + + public void applyEffect(EntityPlayer player, int id, int duration, byte level) { + if (player == null || id <= 0) + return; + + Map currentEffects = new ConcurrentHashMap<>(); + UUID uuid = NoppesUtilServer.getUUID(player); + if (playerEffects.containsKey(uuid)) + currentEffects = playerEffects.get(NoppesUtilServer.getUUID(player)); + else + playerEffects.put(uuid, currentEffects); + + CustomEffect parent = get(id); + if (parent != null) { + PlayerEffect playerEffect = new PlayerEffect(id, duration, level); + currentEffects.put(id, playerEffect); + parent.onAdded(player, playerEffect); + } + } + + public void removeEffect(EntityPlayer player, int id, ExpirationType type) { + if (player == null || id <= 0) + return; + + Map currentEffects = new ConcurrentHashMap<>(); + UUID uuid = NoppesUtilServer.getUUID(player); + if (playerEffects.containsKey(uuid)) + currentEffects = playerEffects.get(NoppesUtilServer.getUUID(player)); + else + playerEffects.put(uuid, currentEffects); + + if (currentEffects.containsKey(id)) { + PlayerEffect current = currentEffects.get(id); + this.removeEffect(player, current, type); + } + } + + public void decrementEffects(EntityPlayer player) { + + Iterator iterator = getPlayerEffects(player).values().iterator(); + + IPlayer iPlayer = NoppesUtilServer.getIPlayer(player); + while (iterator.hasNext()) { + PlayerEffect effect = iterator.next(); + + if (effect == null) { + iterator.remove(); + continue; + } + + if (effect.duration == -100) + continue; + + if (effect.duration <= 0) { + CustomEffect parent = StatusEffectController.Instance.get(effect.id); + if (parent != null) { + parent.onRemoved(player, effect, ExpirationType.RUN_OUT); + } + iterator.remove(); + continue; + } + effect.duration--; + } + } + + public File getMapDir() { + File dir = CustomNpcs.getWorldSaveDirectory(); + if (!dir.exists()) + dir.mkdir(); + return dir; + } + + private void loadCustomEffects() { + customEffects.clear(); + + File dir = getDir(); + if (!dir.exists()) { + dir.mkdir(); + } else { + for (File file : dir.listFiles()) { + if (!file.isFile() || !file.getName().endsWith(".json")) + continue; + try { + CustomEffect effect = new CustomEffect(); + effect.readFromNBT(NBTJsonUtil.LoadFile(file)); + effect.name = file.getName().substring(0, file.getName().length() - 5); + + if (effect.id == -1) { + effect.id = getUnusedId(); + } + + int originalID = effect.id; + int setID = effect.id; + while (bootOrder.containsKey(setID) || customEffects.containsKey(setID)) { + if (bootOrder.containsKey(setID)) + if (bootOrder.get(setID).equals(effect.name)) + break; + + setID++; + } + + effect.id = setID; + if (originalID != setID) { + LogWriter.info("Found Custom Effect ID Mismatch: " + effect.name + ", New ID: " + setID); + effect.save(); + } + + customEffects.put(effect.id, effect); + } catch (Exception e) { + LogWriter.error("Error loading: " + file.getAbsolutePath(), e); + } + } + } + + indexMapper.put(0, customEffects); + saveEffectLoadMap(); + } + + public HashMap getEffectMap(int index){ + if(indexMapper.containsKey(index)){ + return getEffectMap(index); + } + return null; + } + + private File getDir() { + return new File(CustomNpcs.getWorldSaveDirectory(), "customeffects"); + } + + private void saveEffectLoadMap() { + try { + File saveDir = getMapDir(); + File file = new File(saveDir, "customeffects.dat_new"); + File file1 = new File(saveDir, "customeffects.dat_old"); + File file2 = new File(saveDir, "customeffects.dat"); + CompressedStreamTools.writeCompressed(this.writeMapNBT(), new FileOutputStream(file)); + if (file1.exists()) { + file1.delete(); + } + file2.renameTo(file1); + if (file2.exists()) { + file2.delete(); + } + file.renameTo(file2); + if (file.exists()) { + file.delete(); + } + } catch (Exception e) { + LogWriter.except(e); + } + } + + private NBTTagCompound writeMapNBT() { + NBTTagCompound nbt = new NBTTagCompound(); + NBTTagList customEffects = new NBTTagList(); + for (Integer key : this.customEffects.keySet()) { + CustomEffect customEffect = this.customEffects.get(key); + if (!customEffect.getName().isEmpty()) { + NBTTagCompound effectCompound = new NBTTagCompound(); + effectCompound.setString("Name", customEffect.getName()); + effectCompound.setInteger("ID", key); + + customEffects.appendTag(effectCompound); + } + } + nbt.setTag("CustomEffects", customEffects); + nbt.setInteger("lastID", lastUsedID); + return nbt; + } + + private void readCustomEffectMap() { + bootOrder.clear(); + + try { + File file = new File(getMapDir(), "customeffects.dat"); + if (file.exists()) { + loadCustomEffectMap(file); + } + } catch (Exception e) { + try { + File file = new File(getMapDir(), "customeffects.dat_old"); + if (file.exists()) { + loadCustomEffectMap(file); + } + } catch (Exception ignored) { + } + } + } + + private void loadCustomEffectMap(File file) throws IOException { + DataInputStream var1 = new DataInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(file)))); + readCustomEffectMap(var1); + var1.close(); + } + + private void readCustomEffectMap(DataInputStream stream) throws IOException { + NBTTagCompound nbtCompound = CompressedStreamTools.read(stream); + this.readMapNBT(nbtCompound); + } + + private void readMapNBT(NBTTagCompound compound) { + lastUsedID = compound.getInteger("lastID"); + NBTTagList list = compound.getTagList("CustomEffects", 10); + if (list != null) { + for (int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbttagcompound = list.getCompoundTagAt(i); + String effectName = nbttagcompound.getString("Name"); + Integer key = nbttagcompound.getInteger("ID"); + bootOrder.put(key, effectName); + } + } + } + + public void deleteEffectFile(String prevName) { + File dir = this.getDir(); + if (!dir.exists()) + dir.mkdirs(); + File file2 = new File(dir, prevName + ".json"); + if (file2.exists()) + file2.delete(); + } +} diff --git a/src/main/java/noppes/npcs/controllers/data/CustomEffect.java b/src/main/java/noppes/npcs/controllers/data/CustomEffect.java new file mode 100644 index 000000000..96b0c661a --- /dev/null +++ b/src/main/java/noppes/npcs/controllers/data/CustomEffect.java @@ -0,0 +1,319 @@ +package noppes.npcs.controllers.data; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.Constants; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.api.event.IPlayerEvent; +import noppes.npcs.api.handler.data.ICustomEffect; +import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.scripted.event.PlayerEvent; + +import java.util.function.Consumer; + +public class CustomEffect implements ICustomEffect { + public int id = -1; + + public String name = ""; + public boolean lossOnDeath = true; + public int length = 30; + + // Must be a multiple of 10 + public int everyXTick = 20; + + public String icon = ""; + // CustomNpcPlusDBC.ID + ":textures/gui/icons.png"; + public int iconX = 0, iconY = 0; + + /** + * Experimental script stuff. + */ + public Consumer onAddedConsumer; + public Consumer onTickConsumer; + public Consumer onRemovedConsumer; + public String menuName = "§aNEW EFFECT"; + public int width = 16, height = 16; + + public int index = 0; + + public CustomEffect() {} + + public CustomEffect(int id) { + this.id = id; + } + + public CustomEffect(int id, String name) { + this(id); + this.name = name; + } + + @Override + public int getID() { + return this.id; + } + + @Override + public String getName() { + return this.name; + } + + @Override + public void setMenuName(String name) { + if (name != null && !name.isEmpty()) + this.menuName = name.replaceAll("&", "§"); + } + + @Override + public String getMenuName() { + return menuName; + } + + @Override + public void setName(String name) { + if (name != null && !name.isEmpty()) + this.name = name; + } + + @Override + public String getIcon() { + return icon; + } + + @Override + public void setIcon(String icon) { + this.icon = icon; + } + + @Override + public int getEveryXTick() { + return everyXTick; + } + + @Override + public void setEveryXTick(int everyXTick) { + if (everyXTick < 10) + everyXTick = 10; + int remainder = everyXTick % 10; + if (remainder >= 5) + everyXTick += 10 - remainder; + else + everyXTick -= remainder; + this.everyXTick = everyXTick; + } + + @Override + public int getIconX() { + return iconX; + } + + @Override + public void setIconX(int iconX) { + this.iconX = iconX; + } + + @Override + public int getIconY() { + return iconY; + } + + @Override + public void setIconY(int iconY) { + this.iconY = iconY; + } + + @Override + public int getWidth() { + return this.width; + } + + @Override + public int getHeight() { + return this.height; + } + + @Override + public void setWidth(int width) { + this.width = width; + } + + @Override + public void setHeight(int height) { + this.height = height; + } + + @Override + public boolean isLossOnDeath() { + return lossOnDeath; + } + + @Override + public void setLossOnDeath(boolean lossOnDeath) { + this.lossOnDeath = lossOnDeath; + } + + @Override + public ICustomEffect save() { + return StatusEffectController.getInstance().saveEffect(this); + } + + @Override + public void setID(int id) { + this.id = id; + } + + @Override + public int getIndex() { + return this.index; + } + + + public void onAdded(Consumer function) { + onAddedConsumer = function; + } + + public void onTick(Consumer function) { + onTickConsumer = function; + } + + public void onRemoved(Consumer function) { + onRemovedConsumer = function; + } + + public void onAdded(EntityPlayer player, PlayerEffect playerEffect) { + IPlayer iPlayer = NoppesUtilServer.getIPlayer(player); + + PlayerEvent.EffectEvent.Added event = new PlayerEvent.EffectEvent.Added(iPlayer, playerEffect); + if (onAddedConsumer != null) onAddedConsumer.accept(event); + EffectScriptHandler script = getScriptHandler(); + if (script == null) { + return; + } + + script.callScript(EffectScriptHandler.ScriptType.OnAdd, event); + } + + public void onTick(EntityPlayer player, PlayerEffect playerEffect) { + IPlayer iPlayer = NoppesUtilServer.getIPlayer(player); + PlayerEvent.EffectEvent.Ticked event = new PlayerEvent.EffectEvent.Ticked(iPlayer, playerEffect); + + if (onTickConsumer != null) { + onTickConsumer.accept(event); + } + + EffectScriptHandler script = getScriptHandler(); + if (script == null) { + return; + } + + script.callScript(EffectScriptHandler.ScriptType.OnTick, event); + } + + public void onRemoved(EntityPlayer player, PlayerEffect playerEffect, PlayerEvent.EffectEvent.ExpirationType type) { + IPlayer iPlayer = NoppesUtilServer.getIPlayer(player); + + PlayerEvent.EffectEvent.Removed event = new PlayerEvent.EffectEvent.Removed(iPlayer, playerEffect, type); + + if (onRemovedConsumer != null) { + onRemovedConsumer.accept(event); + } + + EffectScriptHandler script = getScriptHandler(); + if (script == null) { + return; + } + + script.callScript(EffectScriptHandler.ScriptType.OnRemove, event); + } + + public NBTTagCompound writeToNBT(boolean saveScripts) { + NBTTagCompound compound = new NBTTagCompound(); + compound.setInteger("ID", id); + compound.setString("name", name); + compound.setString("menuName", menuName); + compound.setInteger("length", length); + compound.setInteger("everyXTick", everyXTick); + compound.setInteger("iconX", iconX); + compound.setInteger("iconY", iconY); + compound.setInteger("iconWidth", width); + compound.setInteger("iconHeight", height); + compound.setString("icon", icon); + compound.setBoolean("lossOnDeath", lossOnDeath); + +// if (saveScripts && scriptContainer != null) { + if (saveScripts) { + NBTTagCompound scriptData = new NBTTagCompound(); + EffectScriptHandler handler = getScriptHandler(); + if (handler != null) + handler.writeToNBT(scriptData); + compound.setTag("ScriptData", scriptData); + } + + return compound; + } + + public void readFromNBT(NBTTagCompound compound) { + if (compound.hasKey("ID")) + id = compound.getInteger("ID"); + else + id = StatusEffectController.Instance.getUnusedId(); + name = compound.getString("name"); + + if (compound.hasKey("menuName", Constants.NBT.TAG_STRING)) + menuName = compound.getString("menuName"); + else + menuName = name; + + length = compound.getInteger("length"); + everyXTick = compound.getInteger("everyXTick"); + iconX = compound.getInteger("iconX"); + iconY = compound.getInteger("iconY"); + + if (compound.hasKey("iconWidth", Constants.NBT.TAG_INT)) + width = compound.getInteger("iconWidth"); + else + width = 16; + + if (compound.hasKey("iconHeight", Constants.NBT.TAG_INT)) + height = compound.getInteger("iconHeight"); + else + height = 16; + + icon = compound.getString("icon"); + lossOnDeath = compound.getBoolean("lossOnDeath"); + + if (compound.hasKey("ScriptData", Constants.NBT.TAG_COMPOUND)) { + EffectScriptHandler handler = new EffectScriptHandler(); + handler.readFromNBT(compound.getCompoundTag("ScriptData")); + setScriptHandler(handler); + } + + } + + public CustomEffect cloneEffect() { + CustomEffect newEffect = new CustomEffect(); + newEffect.readFromNBT(this.writeToNBT(true)); + newEffect.id = -1; + return newEffect; + } + + public EffectScriptHandler getScriptHandler() { + return StatusEffectController.getInstance().customEffectScriptHandlers.get(this.id); + } + public void setScriptHandler(EffectScriptHandler handler) { + StatusEffectController.getInstance().customEffectScriptHandlers.put(this.id, handler); + } + + public EffectScriptHandler getOrCreateScriptHandler() { + EffectScriptHandler data = getScriptHandler(); + if (data == null) + setScriptHandler(data =new EffectScriptHandler()); + return data; + } + + public void runEffect(EntityPlayer player, PlayerEffect playerEffect) { + if (player.ticksExisted % everyXTick == 0) { + onTick(player, playerEffect); + } + } +} diff --git a/src/main/java/noppes/npcs/controllers/data/EffectScriptHandler.java b/src/main/java/noppes/npcs/controllers/data/EffectScriptHandler.java new file mode 100644 index 000000000..05db76d09 --- /dev/null +++ b/src/main/java/noppes/npcs/controllers/data/EffectScriptHandler.java @@ -0,0 +1,181 @@ +package noppes.npcs.controllers.data; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.eventhandler.Event; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.Constants; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ScriptContainer; +import noppes.npcs.controllers.ScriptController; +import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.event.PlayerEvent; + +import javax.script.ScriptEngine; +import java.io.IOException; +import java.util.*; + +public class EffectScriptHandler implements IScriptHandler { + public ScriptContainer container; + public String scriptLanguage = "ECMAScript"; + public boolean enabled = false; + + + public NBTTagCompound writeToNBT(NBTTagCompound compound) { + compound.setString("ScriptLanguage", scriptLanguage); + compound.setBoolean("ScriptEnabled", enabled); + + if (container != null) + compound.setTag("ScriptContent", container.writeToNBT(new NBTTagCompound())); + return compound; + } + + public EffectScriptHandler readFromNBT(NBTTagCompound compound) { + scriptLanguage = compound.getString("ScriptLanguage"); + enabled = compound.getBoolean("ScriptEnabled"); + + if (compound.hasKey("ScriptContent", Constants.NBT.TAG_COMPOUND)) { + container = new ScriptContainer(this); + container.readFromNBT(compound.getCompoundTag("ScriptContent")); + } + return this; + } + + public void callScript(ScriptType type, PlayerEvent.EffectEvent event) { + callScript(type.function, event); + } + + public boolean isEnabled() { + return this.enabled && ScriptController.HasStart && container != null && ConfigScript.ScriptingEnabled; + } + + @Override + public void callScript(String s, Event event) { + if (!this.isEnabled()) { + return; + } + + ScriptEngine engine = container.engine; + engine.put("API", NpcAPI.Instance()); + + for (Map.Entry engineObjects : NpcAPI.engineObjects.entrySet()) { + engine.put(engineObjects.getKey(), engineObjects.getValue()); + } + + container.run(s, event); + } + + @Override + public boolean isClient() { + return FMLCommonHandler.instance().getEffectiveSide().isClient(); + } + + @Override + public boolean getEnabled() { + return this.enabled; + } + + @Override + public void setEnabled(boolean b) { + this.enabled = b; + } + + @Override + public String getLanguage() { + return this.scriptLanguage; + } + + @Override + public void setLanguage(String s) { + this.scriptLanguage = s; + } + + @Override + public void setScripts(List list) { + if (list == null || list.isEmpty()) { + container = null; + return; + } + container = list.get(0); + } + + @Override + public List getScripts() { + if (container == null) + return new ArrayList<>(); + return Collections.singletonList(container); + } + + @Override + public String noticeString() { + return ""; + } + + @Override + public Map getConsoleText() { + TreeMap map = new TreeMap(); + int tab = 0; + Iterator var3 = this.getScripts().iterator(); + + while(var3.hasNext()) { + ScriptContainer script = (ScriptContainer)var3.next(); + ++tab; + Iterator var5 = script.console.entrySet().iterator(); + + while(var5.hasNext()) { + Map.Entry longStringEntry = (Map.Entry)var5.next(); + map.put(longStringEntry.getKey(), " tab " + tab + ":\n" + (String)longStringEntry.getValue()); + } + } + + return map; + } + + @Override + public void clearConsole() { + Iterator var1 = this.getScripts().iterator(); + + while(var1.hasNext()) { + ScriptContainer script = (ScriptContainer)var1.next(); + script.console.clear(); + } + } + + public void saveScript(ByteBuf buffer) throws IOException { + int tab = buffer.readInt(); + int totalScripts = buffer.readInt(); + if (totalScripts == 0) { + this.container = null; + } + + if (tab == 0) { + NBTTagCompound tabCompound = ByteBufUtils.readNBT(buffer); + ScriptContainer script = new ScriptContainer(this); + script.readFromNBT(tabCompound); + this.container = script; + } else { + NBTTagCompound compound = ByteBufUtils.readNBT(buffer); + this.setLanguage(compound.getString("ScriptLanguage")); + if (!ScriptController.Instance.languages.containsKey(this.getLanguage())) { + if (!ScriptController.Instance.languages.isEmpty()) { + this.setLanguage((String) ScriptController.Instance.languages.keySet().toArray()[0]); + } else { + this.setLanguage("ECMAScript"); + } + } + this.setEnabled(compound.getBoolean("ScriptEnabled")); + } + } + + public enum ScriptType { + OnAdd("onAdded"), + OnTick("onTick"), + OnRemove("onRemove"); + + public final String function; + ScriptType(String functionName) { + this.function = functionName; + } + } +} diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerEffect.java b/src/main/java/noppes/npcs/controllers/data/PlayerEffect.java new file mode 100644 index 000000000..ec0e35302 --- /dev/null +++ b/src/main/java/noppes/npcs/controllers/data/PlayerEffect.java @@ -0,0 +1,102 @@ +package noppes.npcs.controllers.data; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.api.handler.data.IPlayerEffect; +import noppes.npcs.controllers.StatusEffectController; + +public class PlayerEffect implements IPlayerEffect { + public int id; + public int duration; + public byte level; + public int index; + + public PlayerEffect(int id, int duration, byte level) { + this.id = id; + this.duration = duration; + this.level = level; + } + + public static PlayerEffect readEffectData(NBTTagCompound nbt) { + int id = nbt.getInteger("Id"); + int index = nbt.getInteger("Index"); + if (id > 0) { + StatusEffectController controller = StatusEffectController.getInstance(); + boolean found = controller.has(id); +// StatusEffectController.getInstance().customEffects.containsKey(id); + if (found) { + byte level = nbt.getByte("Level"); + int dur = nbt.getInteger("Dur"); + return new PlayerEffect(id, dur, level); + } + } + return null; + } + + public NBTTagCompound writeEffectData(NBTTagCompound nbt) { + nbt.setInteger("Id", this.id); + nbt.setByte("Level", this.level); + nbt.setInteger("Dur", this.duration); + nbt.setInteger("Index", this.index); + return nbt; + } + + @Override + public void kill() { + duration = 0; + } + + @Override + public int getId() { + return id; + } + + @Override + public int getDuration() { + return duration; + } + + @Override + public void setDuration(int duration) { + this.duration = duration; + } + + @Override + public byte getLevel() { + return level; + } + + @Override + public void setLevel(byte level) { + this.level = level; + } + + @Override + public String getName() { + CustomEffect effect = StatusEffectController.getInstance().get(this.id); + if(effect != null) + return effect.getName(); + + return "UNKNOWN"; + } + + @Override + public void performEffect(IPlayer player) { + if (player != null && player.getMCEntity() != null && player.getMCEntity() instanceof EntityPlayer) { + CustomEffect effect = StatusEffectController.getInstance().get(this.id); + if(effect != null) + effect.onTick((EntityPlayer) player.getMCEntity(), this); + } + } + + @Override + public int getIndex() { + return this.index; + } + + @Override + public void setIndex(int index) { + this.index = index; + } +} diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerMail.java b/src/main/java/noppes/npcs/controllers/data/PlayerMail.java index 68baa0d80..a35cb23d3 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerMail.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerMail.java @@ -23,9 +23,9 @@ public class PlayerMail implements IInventory, IPlayerMail { public int questId = -1; public String questTitle = ""; public ItemStack[] items = new ItemStack[4]; - + public long timePast; - + public void readNBT(NBTTagCompound compound) { subject = compound.getString("Subject"); sender = compound.getString("Sender"); @@ -81,7 +81,7 @@ public class PlayerMail implements IInventory, IPlayerMail { compound.setTag("MailItems", nbttaglist); return compound; } - + public boolean isValid(){ return !subject.isEmpty() && !message.hasNoTags() && !sender.isEmpty(); } @@ -168,20 +168,20 @@ public class PlayerMail implements IInventory, IPlayerMail { @Override public String getInventoryName() { - // TODO Auto-generated method stub + return null; } @Override public boolean hasCustomInventoryName() { - // TODO Auto-generated method stub + return false; } @Override public void markDirty() { - // TODO Auto-generated method stub - + + } @Override @@ -191,7 +191,7 @@ public class PlayerMail implements IInventory, IPlayerMail { @Override public void openInventory() { - + } @Override diff --git a/src/main/java/noppes/npcs/roles/JobItemGiver.java b/src/main/java/noppes/npcs/roles/JobItemGiver.java index ea69aa07e..8a72ff2aa 100644 --- a/src/main/java/noppes/npcs/roles/JobItemGiver.java +++ b/src/main/java/noppes/npcs/roles/JobItemGiver.java @@ -268,7 +268,7 @@ public class JobItemGiver extends JobInterface{ @Override public void killed() { - // TODO Auto-generated method stub + } @@ -280,7 +280,7 @@ public class JobItemGiver extends JobInterface{ @Override public void delete() { - // TODO Auto-generated method stub + } } diff --git a/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java b/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java index e181668ac..a0d1fcfbb 100644 --- a/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java +++ b/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java @@ -14,6 +14,7 @@ import noppes.npcs.api.entity.IEntity; import noppes.npcs.api.entity.IEntityLivingBase; import noppes.npcs.api.entity.IPlayer; import noppes.npcs.api.event.IPlayerEvent; +import noppes.npcs.api.handler.data.IPlayerEffect; import noppes.npcs.api.item.IItemStack; import noppes.npcs.constants.EnumScriptType; import noppes.npcs.scripted.NpcAPI; @@ -949,4 +950,59 @@ public class PlayerEvent extends CustomNPCsEvent implements IPlayerEvent { return EnumScriptType.RANGED_LAUNCHED.function; } } + + public static class EffectEvent extends PlayerEvent implements IPlayerEvent.EffectEvent { + + public final IPlayerEffect effect; + + public EffectEvent(IPlayer player, IPlayerEffect statusEffect) { + super(player); + this.effect = statusEffect; + } + + @Override + public IPlayerEffect getEffect() { + return this.effect; + } + + public static class Added extends PlayerEvent.EffectEvent implements IPlayerEvent.EffectEvent.Added { + + public Added(IPlayer player, IPlayerEffect statusEffect) { + super(player, statusEffect); + } + + } + public static class Ticked extends PlayerEvent.EffectEvent implements IPlayerEvent.EffectEvent.Ticked { + + public Ticked(IPlayer player, IPlayerEffect statusEffect) { + super(player, statusEffect); + } + + } + public static class Removed extends PlayerEvent.EffectEvent implements IPlayerEvent.EffectEvent.Removed { + + private final ExpirationType type; + + public Removed(IPlayer player, IPlayerEffect statusEffect, ExpirationType type) { + super(player, statusEffect); + this.type = type; + } + + @Override + public boolean hasTimerRunOut() { + return type == ExpirationType.RUN_OUT; + } + + @Override + public boolean causedByDeath() { + return type == ExpirationType.DEATH; + } + } + + public enum ExpirationType { + REMOVED, + RUN_OUT, + DEATH + } + } } From 070e03290707f9604704c6853427daa649910bb1 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 15:04:44 -0500 Subject: [PATCH 137/157] Push Working Compile --- .../npcs/client/gui/SubGuiEffectGeneral.java | 255 +++++++++++ .../gui/global/GuiNPCManageEffects.java | 310 ++++++++++++++ .../client/gui/script/GuiScriptEffect.java | 404 ++++++++++++++++++ 3 files changed, 969 insertions(+) create mode 100644 src/main/java/noppes/npcs/client/gui/SubGuiEffectGeneral.java create mode 100644 src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java create mode 100644 src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiEffectGeneral.java b/src/main/java/noppes/npcs/client/gui/SubGuiEffectGeneral.java new file mode 100644 index 000000000..34afd27d1 --- /dev/null +++ b/src/main/java/noppes/npcs/client/gui/SubGuiEffectGeneral.java @@ -0,0 +1,255 @@ +package noppes.npcs.client.gui; + +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.util.ResourceLocation; +import noppes.npcs.client.ClientCacheHandler; +import noppes.npcs.client.gui.global.GuiNPCManageEffects; +import noppes.npcs.client.gui.script.GuiScriptEffect; +import noppes.npcs.client.gui.util.*; +import noppes.npcs.client.renderer.ImageData; +import noppes.npcs.controllers.data.CustomEffect; +import org.lwjgl.opengl.GL11; + +import java.util.ArrayList; +import java.util.List; + +public class SubGuiEffectGeneral extends SubGuiInterface implements ITextfieldListener { + private final GuiNPCManageEffects parent; + public CustomEffect effect; + private final String originalName; + + private List topButtons = new ArrayList<>(); + + public SubGuiEffectGeneral(GuiNPCManageEffects parent, CustomEffect effect) { + this.effect = effect; + this.parent = parent; + this.originalName = effect.name; + this.closeOnEsc = true; + + setBackground("menubg.png"); + xSize = 360; + ySize = 216; + } + + @Override + public void initGui() { + super.initGui(); + GuiMenuTopButton close = new GuiMenuTopButton(-5, guiLeft + xSize - 22, guiTop - 10, "X"); + + GuiMenuTopButton general = new GuiMenuTopButton(-1, guiLeft + 4, guiTop - 10, "display.general"); + GuiMenuTopButton scripts = new GuiMenuTopButton(-2, general.xPosition + general.getWidth(), guiTop - 10, "script.scripts"); + + close.active = false; + general.active = true; + scripts.active = false; + + addTopButton(close); + addTopButton(general); + addTopButton(scripts); + + guiTop += 7; + int y = guiTop + 7; + int x = guiLeft + 4 + 4; + addTextField(new GuiNpcTextField(1, this, this.fontRendererObj, x + 36, y, 280, 20, effect.name)); + getTextField(1).setMaxStringLength(40); + addLabel(new GuiNpcLabel(1, "gui.name", x, y + 5)); + + addLabel(new GuiNpcLabel(-1, "ID", x + 320, y + 1)); + addLabel(new GuiNpcLabel(-2, effect.id + "", x + 320, y + 11)); + + y += 23; + + addTextField(new GuiNpcTextField(2, this, x + 70, y, 246, 20, effect.menuName.replaceAll("§", "&"))); + getTextField(2).setMaxStringLength(40); + addLabel(new GuiNpcLabel(2, "general.menuName", x, y + 5)); + + y += 23; + + addTextField(setIntegerOnly( + new GuiNpcTextField(3, this, x + 70, y, 83, 20, ""+effect.everyXTick), + 10, + 1200, + effect.everyXTick + )); + getTextField(3).setMaxStringLength(6); + getTextField(3).integersOnly = true; + addLabel(new GuiNpcLabel(3, "effect.editor.runsEveryX", x, y + 5)); + + int oldX = x; + int xEnd = guiLeft+xSize-10; + x = getTextField(3).xPosition + getTextField(3).width; + addButton(new GuiNpcButtonYesNo(10, (x+xEnd - 83) / 2, y + 23, 83, 20, effect.lossOnDeath)); + GuiNpcLabel label = new GuiNpcLabel(10, "effect.editor.lossOnDeath", x, y + 5); + label.x = (x+xEnd - fontRendererObj.getStringWidth(label.label))/2; + addLabel(label); + x = oldX; + y += 23; + + addTextField(setIntegerOnly( + new GuiNpcTextField(4, this, x + 70, y, 83, 20, ""+effect.length), + -100, + 86400, + effect.length + )); + + addLabel(new GuiNpcLabel(4, "effect.editor.defaultLength", x, y + 5)); + + x = oldX - 4; + y += 23; + GuiScrollWindow scrollWindow = new GuiScrollWindow(this, x + 5, y, xSize - 20, ySize - 10 - (y - guiTop), 0) { + @Override + public void drawComponents(int mouseX, int mouseY, float partialTicks) { + super.drawComponents(mouseX, mouseY, partialTicks); + + int iconRenderSize = 96; + + int x = 10, y = (clipHeight - 96) / 2; + + TextureManager textureManager = mc.getTextureManager(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + ImageData data = ClientCacheHandler.getImageData(effect.icon); + if (data.imageLoaded()) { + data.bindTexture(); + int iconX = effect.iconX; + int iconY = effect.iconY; + int iconWidth = effect.getWidth(); + int iconHeight = effect.getHeight(); + int width = data.getTotalWidth(); + int height = data.getTotalWidth(); + + + func_152125_a(x, y, iconX, iconY, iconWidth, iconHeight, iconRenderSize, iconRenderSize, width, height); + + } else { + textureManager.bindTexture(new ResourceLocation("customnpcs", "textures/marks/question.png")); + func_152125_a(x, y, 0, 0, 1, 1, iconRenderSize, iconRenderSize, 1, 1); + } + GL11.glDisable(GL11.GL_DEPTH_TEST); + + // TODO: FIX TEXTURE + // textureManager.bindTexture(new ResourceLocation(CustomNpcPlusDBC.ID + ":textures/gui/icons.png")); + func_152125_a(x, y, 0, 240, 16, 16, iconRenderSize, iconRenderSize, 256, 256); + GL11.glEnable(GL11.GL_DEPTH_TEST); + } + }; + addScrollableGui(0, scrollWindow); + + y = (scrollWindow.clipHeight - 96) / 2 + 5; + x = 116; + scrollWindow.addLabel(new GuiNpcLabel(5, "display.texture", x, y, 0xFFFFFF)); + y += 12; + scrollWindow.addTextField(new GuiNpcTextField(5, this, x, y, scrollWindow.clipWidth-x-10, 20, effect.icon)); + scrollWindow.getTextField(5).setMaxStringLength(100); + + y += 25; + + scrollWindow.addLabel(new GuiNpcLabel(6, "effect.editor.xPos", x, y + 6, 0xFFFFFF)); + scrollWindow.addTextField(setIntegerOnly( + new GuiNpcTextField(6, this, x + 43, y, 60, 20, ""+effect.iconX), + 0, + 10240, + effect.iconX + )); + scrollWindow.addTextField(setIntegerOnly( + new GuiNpcTextField(7, this, scrollWindow.clipWidth - 60 - 10, y, 60, 20, ""+effect.iconY), + 0, + 10240, + effect.iconY + )); + scrollWindow.addLabel(new GuiNpcLabel(7, "effect.editor.yPos", scrollWindow.getTextField(7).xPosition - 43, y + 6, 0xFFFFFF)); + y += 23; + + scrollWindow.addLabel(new GuiNpcLabel(8, "effect.editor.width", x, y + 6, 0xFFFFFF)); + scrollWindow.addTextField(setIntegerOnly( + new GuiNpcTextField(8, this, x + 43, y, 60, 20, ""+effect.width), + 0, + 10240, + effect.width + )); + scrollWindow.addTextField(setIntegerOnly( + new GuiNpcTextField(9, this, scrollWindow.clipWidth - 60 - 10, y, 60, 20, ""+effect.height), + 0, + 10240, + effect.height + )); + scrollWindow.addLabel(new GuiNpcLabel(9, "effect.editor.height", scrollWindow.getTextField(9).xPosition - 43, y + 6, 0xFFFFFF)); + + } + + private GuiNpcTextField setIntegerOnly(GuiNpcTextField field, int min, int max, int def) { + field.integersOnly = true; + field.setMinMaxDefault(min, max, def); + field.setMaxStringLength(6); + return field; + } + + @Override + protected void actionPerformed(GuiButton guibutton) { + int id = guibutton.id; + + if (id == -5) { + close(); + return; + } + if (id == -2) { + // TODO: FIX PACKET + // DBCPacketHandler.Instance.sendToServer(new DBCSaveEffect(effect.writeToNBT(false), originalName)); + GuiScriptEffect scriptGUI = new GuiScriptEffect(parent, effect); + scriptGUI.setWorldAndResolution(mc, width, height); + scriptGUI.initGui(); + mc.currentScreen = scriptGUI; + } + if (id == 10) { + GuiNpcButtonYesNo button = (GuiNpcButtonYesNo) guibutton; + effect.lossOnDeath = button.getBoolean(); + } + } + + @Override + public void unFocused(GuiNpcTextField guiNpcTextField) { + int id = guiNpcTextField.id; + + switch (id) { + case 1: + effect.setName(guiNpcTextField.getText()); + break; + case 2: + effect.setMenuName(guiNpcTextField.getText()); + break; + case 3: + effect.setEveryXTick(guiNpcTextField.getInteger()); + guiNpcTextField.setText(effect.everyXTick+""); + break; + case 4: + int length = guiNpcTextField.getInteger(); + if (length < 0) + length = -100; + guiNpcTextField.setText(length+""); + effect.length = length; + break; + case 5: + effect.icon = guiNpcTextField.getText(); + break; + case 6: + effect.iconX = guiNpcTextField.getInteger(); + break; + case 7: + effect.iconY = guiNpcTextField.getInteger(); + break; + case 8: + effect.width = guiNpcTextField.getInteger(); + break; + case 9: + effect.height = guiNpcTextField.getInteger(); + break; + } + } + + @Override + public void close() { + super.close(); + // TODO: FIX Packet + // DBCPacketHandler.Instance.sendToServer(new DBCSaveEffect(effect.writeToNBT(false), originalName)); + } +} diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java new file mode 100644 index 000000000..c6f94ebe0 --- /dev/null +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java @@ -0,0 +1,310 @@ +package noppes.npcs.client.gui.global; + +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiYesNo; +import net.minecraft.client.gui.GuiYesNoCallback; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import noppes.npcs.client.ClientCacheHandler; +import noppes.npcs.client.CustomNpcResourceListener; +import noppes.npcs.client.NoppesUtil; +import noppes.npcs.client.gui.SubGuiEffectGeneral; +import noppes.npcs.client.gui.util.*; +import noppes.npcs.client.renderer.ImageData; +import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.data.CustomEffect; +import noppes.npcs.entity.EntityNPCInterface; +import org.lwjgl.opengl.GL11; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Vector; + +public class GuiNPCManageEffects extends GuiNPCInterface2 implements ICustomScrollListener, IScrollData, IGuiData, ISubGuiListener, GuiYesNoCallback { + public GuiCustomScroll scrollEffects; + public HashMap data = new HashMap<>(); + public CustomEffect effect = new CustomEffect(); + public String selected = null; + public String search = ""; + public String originalName = ""; + boolean setNormalSound = true; + + public GuiNPCManageEffects(EntityNPCInterface npc) { + super(npc); + + // TODO: Fix Packet + // DBCPacketHandler.Instance.sendToServer(new DBCRequestEffect(-1)); + } + + public void initGui() { + super.initGui(); + addButton(new GuiNpcButton(0, guiLeft + 368, guiTop + 8, 45, 20, "gui.add")); + + addButton(new GuiNpcButton(1, guiLeft + 368, guiTop + 32, 45, 20, "gui.remove")); + getButton(1).enabled = effect != null && effect.id != -1; + + addButton(new GuiNpcButton(2, guiLeft + 368, guiTop + 56, 45, 20, "gui.clone")); + getButton(2).enabled = effect != null && effect.id != -1; + + addButton(new GuiNpcButton(3, guiLeft + 368, guiTop + 80, 45, 20, "gui.edit")); + getButton(3).enabled = effect != null && effect.id != -1; + + if (scrollEffects == null) { + scrollEffects = new GuiCustomScroll(this, 0, 0); + scrollEffects.setSize(143, 185); + } + scrollEffects.guiLeft = guiLeft + 220; + scrollEffects.guiTop = guiTop + 4; + addScroll(scrollEffects); + scrollEffects.setList(getSearchList()); + + addTextField(new GuiNpcTextField(55, this, fontRendererObj, guiLeft + 220, guiTop + 4 + 3 + 185, 143, 20, search)); + if (effect != null && effect.id != -1) { + addLabel(new GuiNpcLabel(10, "ID", guiLeft + 368, guiTop + 4 + 3 + 185)); + addLabel(new GuiNpcLabel(11, effect.id + "", guiLeft + 368, guiTop + 4 + 3 + 195)); + } + } + + @Override + protected void actionPerformed(GuiButton guibutton) { + GuiNpcButton button = (GuiNpcButton) guibutton; + if (button.id == 0) { + save(); + String name = "New"; + while (data.containsKey(name)) + name += "_"; + CustomEffect effect = new CustomEffect(-1, name); + + // TODO: Fix Packet + // DBCPacketHandler.Instance.sendToServer(new DBCSaveEffect(effect.writeToNBT(false), "")); + } else if (button.id == 1) { + if (data.containsKey(scrollEffects.getSelected())) { + GuiYesNo guiyesno = new GuiYesNo(this, scrollEffects.getSelected(), StatCollector.translateToLocal("gui.delete"), 1); + displayGuiScreen(guiyesno); + } + } else if (button.id == 2) { + CustomEffect effect = this.effect.cloneEffect(); + while (data.containsKey(effect.name)) + effect.name += "_"; + // TODO: Fix Packet + // DBCPacketHandler.Instance.sendToServer(new DBCSaveEffect(effect.writeToNBT(false), "")); + } + + if (effect == null) + return; + + if (button.id == 3) { + if (data.containsKey(scrollEffects.getSelected()) && effect != null && effect.id >= 0) { + setSubGui(new SubGuiEffectGeneral(this, effect)); + } + } + + + } + + @Override + public void setGuiData(NBTTagCompound compound) { + this.effect = new CustomEffect(); + effect.readFromNBT(compound); + setSelected(effect.name); + + if (effect.id != -1) { + StatusEffectController.getInstance().customEffects.replace(effect.id, effect); + } + + + + initGui(); + } + + + + @Override + public void drawScreen(int i, int j, float f) { + super.drawScreen(i, j, f); + } + + @Override + public void drawBackground() { + super.drawBackground(); + renderScreen(); + } + + private void renderScreen() { + drawGradientRect(guiLeft + 5, guiTop + 4, guiLeft + 218, guiTop + 24, 0xC0101010, 0xC0101010); + drawHorizontalLine(guiLeft + 5, guiLeft + 218, guiTop + 25, 0xFF000000 + CustomNpcResourceListener.DefaultTextColor); + drawGradientRect(guiLeft + 5, guiTop + 27, guiLeft + 218, guiTop + ySize + 9, 0xA0101010, 0xA0101010); + + + if (effect == null) + return; + if (effect.id == -1) + return; + + String drawString = effect.getMenuName(); + int textWidth = getStringWidthWithoutColor(drawString); + int centerX = guiLeft + 5 + ((218 - 10 - textWidth) / 2); // Adjusted centerX calculation + fontRendererObj.drawString(drawString, centerX, guiTop + 10, CustomNpcResourceListener.DefaultTextColor, true); + int y = guiTop + 33; + int x = guiLeft + 12; + + int iconRenderSize = 48; + + TextureManager textureManager = mc.getTextureManager(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + ImageData data = ClientCacheHandler.getImageData(effect.icon); + if (data.imageLoaded()) { + data.bindTexture(); + int iconX = effect.iconX; + int iconY = effect.iconY; + int iconWidth = effect.getWidth(); + int iconHeight = effect.getHeight(); + int width = data.getTotalWidth(); + int height = data.getTotalWidth(); + + + func_152125_a(x, y, iconX, iconY, iconWidth, iconHeight, iconRenderSize, iconRenderSize, width, height); + + } else { + textureManager.bindTexture(new ResourceLocation("customnpcs", "textures/marks/question.png")); + func_152125_a(x, y, 0, 0, 1, 1, iconRenderSize, iconRenderSize, 1, 1); + } + GL11.glDisable(GL11.GL_DEPTH_TEST); + + // TODO: Fix ICONS + // textureManager.bindTexture(new ResourceLocation(CustomNpcPlusDBC.ID + ":textures/gui/icons.png")); + func_152125_a(x, y, 0, 240, 16, 16, iconRenderSize, iconRenderSize, 256, 256); + GL11.glEnable(GL11.GL_DEPTH_TEST); + + x += iconRenderSize + 3; + y += 2; + + String translated = StatCollector.translateToLocal("gui.name") + ": " + effect.name; + fontRendererObj.drawString(translated, x, y, 0xFFFFFF, false); + int transLength = getStringWidthWithoutColor(translated); + fontRendererObj.drawString(" (ID: "+ effect.id+ ")", x + transLength, y, 0xB5B5B5, false); + y += 12; + fontRendererObj.drawString(StatCollector.translateToLocal("general.menuName") + ": " + effect.menuName, x, y, 0xFFFFFF, false); + y += 12; + fontRendererObj.drawString(StatCollector.translateToLocal("effect.runsEveryX") + ": " + effect.everyXTick + "t", x, y, 0xB5B5B5, false); + y += 12; + fontRendererObj.drawString(StatCollector.translateToLocal("effect.defaultLength") + ": " + effect.length + "s", x, y, 0xB5B5B5, false); + + } + + + @Override + public void keyTyped(char c, int i) { + super.keyTyped(c, i); + + if (getTextField(55) != null) { + if (getTextField(55).isFocused()) { + if (search.equals(getTextField(55).getText())) + return; + search = getTextField(55).getText().toLowerCase(); + scrollEffects.resetScroll(); + scrollEffects.setList(getSearchList()); + } + } + } + + private List getSearchList() { + if (search.isEmpty()) { + return new ArrayList(this.data.keySet()); + } + List list = new ArrayList(); + for (String name : this.data.keySet()) { + if (name.toLowerCase().contains(search)) + list.add(name); + } + return list; + } + + @Override + public void setData(Vector list, HashMap data) { + String name = scrollEffects.getSelected(); + this.data = data; + scrollEffects.setList(getSearchList()); + + if (name != null) + scrollEffects.setSelected(name); + } + + @Override + public void setSelected(String selected) { + this.selected = selected; + scrollEffects.setSelected(selected); + originalName = scrollEffects.getSelected(); + } + + @Override + public void customScrollClicked(int i, int j, int k, GuiCustomScroll guiCustomScroll) { + if (guiCustomScroll.id == 0) { + save(); + effect = null; + selected = scrollEffects.getSelected(); + originalName = scrollEffects.getSelected(); + if (selected != null && !selected.isEmpty()) { + // TODO: Fix Packet + // DBCPacketHandler.Instance.sendToServer(new DBCGetEffect(data.get(selected))); + } + } + } + + @Override + public void customScrollDoubleClicked(String selection, GuiCustomScroll scroll) { +// ICustomScrollListener.super.customScrollDoubleClicked(selection, scroll); + } + + @Override + public void save() { + if (this.selected != null && this.data.containsKey(this.selected) && this.effect != null) { + + // TODO: Fix Packet + // DBCPacketHandler.Instance.sendToServer(new DBCSaveEffect(effect.writeToNBT(false), originalName)); + } + } + + + @Override + public void subGuiClosed(SubGuiInterface subgui) { + + } + + @Override + public void confirmClicked(boolean result, int id) { + NoppesUtil.openGUI(player, this); + if (!result) + return; + if (id == 1) { + if (data.containsKey(scrollEffects.getSelected())) { + + // TODO: Fix Packet + // DBCPacketHandler.Instance.sendToServer(new DBCRemoveEffect(data.get(scrollEffects.getSelected()))); + scrollEffects.clear(); + effect = new CustomEffect(); + initGui(); + } + } + } + + public int getStringWidthWithoutColor(String text) { + int width = 0; + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + + if (c == '§') { + if (i < text.length() - 1) { + i += 1; + } + } else { + // If not a color code, calculate the width + width += fontRendererObj.getCharWidth(c); + } + } + return width; + } +} diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java new file mode 100644 index 000000000..806766d7a --- /dev/null +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java @@ -0,0 +1,404 @@ +package noppes.npcs.client.gui.script; + +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiConfirmOpenLink; +import net.minecraft.client.gui.GuiYesNo; +import net.minecraft.client.gui.GuiYesNoCallback; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.StatCollector; +import noppes.npcs.NBTTags; +import noppes.npcs.NoppesStringUtils; +import noppes.npcs.client.NoppesUtil; +import noppes.npcs.client.gui.global.GuiNPCManageEffects; +import noppes.npcs.client.gui.util.*; +import noppes.npcs.controllers.ScriptContainer; +import noppes.npcs.controllers.ScriptController; +import noppes.npcs.controllers.data.CustomEffect; +import noppes.npcs.controllers.data.EffectScriptHandler; + +import java.util.*; + +public class GuiScriptEffect extends GuiNPCInterface implements GuiYesNoCallback, IGuiData, ITextChangeListener, ICustomScrollListener, IJTextAreaListener, ITextfieldListener { + + private int activeTab = 0; + public Map> languages = new HashMap(); + private final int scriptLimit = 1; + public List hookList = new ArrayList(); + public String previousHookClicked = ""; + + public final GuiNPCManageEffects parent; + public final CustomEffect effect; + private final EffectScriptHandler scriptHandler; + + + public GuiScriptEffect(GuiNPCManageEffects parent, CustomEffect effect) { + this.drawDefaultBackground = true; + this.closeOnEsc = true; + this.xSize = 420; + this.setBackground("menubg.png"); + + this.parent = parent; + this.effect = effect; + this.scriptHandler = new EffectScriptHandler(); + + for (EffectScriptHandler.ScriptType type : EffectScriptHandler.ScriptType.values()) { + this.hookList.add(type.function); + } + + // TODO: FIX PACKET + // DBCPacketClient.sendClient(new DBCRequestEffectScript(effect.id)); + } + + public void initGui() { + this.ySize = (int)((double)this.xSize * 0.56); + if ((double)this.ySize > (double)this.height * 0.95) { + this.ySize = (int)((double)this.height * 0.95); + this.xSize = (int)((double)this.ySize / 0.56); + } + + this.bgScale = (float)this.xSize / 400.0F; + super.initGui(); + this.guiTop += 10; + int yoffset = (int)((double)this.ySize * 0.02); + GuiMenuTopButton top; + this.addTopButton(top = new GuiMenuTopButton(0, this.guiLeft + 4, this.guiTop - 17, "gui.settings")); + int topXoffset = 0; + int topYoffset = 0; + + + if (this.scriptHandler.container != null) { + this.addTopButton(top = new GuiMenuTopButton(1, top.xPosition + top.width + topXoffset, top.yPosition + topYoffset, "Script")); + + } else { + this.addTopButton(new GuiMenuTopButton(this.scriptLimit, top.xPosition + top.width, top.yPosition, "+")); + } + + top = this.getTopButton(this.activeTab); + if (top == null) { + this.activeTab = 0; + top = this.getTopButton(0); + } + + top.active = true; + if (this.activeTab == 1) { + GuiCustomScroll hooks = new GuiCustomScroll(this, 1); + hooks.allowUserInput = false; + hooks.setSize(108, 198); + hooks.guiLeft = this.guiLeft - 110; + hooks.guiTop = this.guiTop + 14; + + hooks.setUnsortedList(this.hookList); + this.addScroll(hooks); + GuiNpcLabel hookLabel = new GuiNpcLabel(0, "script.hooks", hooks.guiLeft, this.guiTop + 5); + hookLabel.color = 11184810; + this.addLabel(hookLabel); + ScriptContainer container = this.scriptHandler.container; + GuiScriptTextArea ta = new GuiScriptTextArea(this, 2, this.guiLeft + 1 + yoffset, this.guiTop + yoffset, this.xSize - 108 - yoffset, (int)((double)this.ySize * 0.96) - yoffset * 2, container == null ? "" : container.script); + ta.enableCodeHighlighting(); + ta.setListener(this); + this.addTextField(ta); + int left1 = this.guiLeft + this.xSize - 104; + this.addButton(new GuiNpcButton(102, left1, this.guiTop + yoffset, 60, 20, "gui.clear")); + this.addButton(new GuiNpcButton(101, left1 + 61, this.guiTop + yoffset, 60, 20, "gui.paste")); + this.addButton(new GuiNpcButton(100, left1, this.guiTop + 21 + yoffset, 60, 20, "gui.copy")); + this.addButton(new GuiNpcButton(105, left1 + 61, this.guiTop + 21 + yoffset, 60, 20, "gui.remove")); + + this.addButton(new GuiNpcButton(107, left1, this.guiTop + 66 + yoffset, 80, 20, "script.loadscript")); + // TODO Uncomment if script lists ever get added + this.getButton(107).enabled = false; + + GuiCustomScroll scroll = (new GuiCustomScroll(this, 0)).setUnselectable(); + scroll.setSize(100, (int)((double)this.ySize * 0.54) - yoffset * 2); + scroll.guiLeft = left1; + scroll.guiTop = this.guiTop + 88 + yoffset; + if (container != null) { + scroll.setList(container.scripts); + } + + this.addScroll(scroll); + } else { + GuiNpcTextArea var8 = new GuiNpcTextArea(2, this, this.guiLeft + 4 + yoffset, this.guiTop + 6 + yoffset, this.xSize - 160 - yoffset, (int)((float)this.ySize * 0.92F) - yoffset * 2, this.getConsoleText()); + var8.enabled = false; + this.addTextField(var8); + int var9 = this.guiLeft + this.xSize - 150; + this.addButton(new GuiNpcButton(100, var9, this.guiTop + 125, 60, 20, "gui.copy")); + this.addButton(new GuiNpcButton(102, var9, this.guiTop + 146, 60, 20, "gui.clear")); + this.addLabel(new GuiNpcLabel(1, "script.language", var9, this.guiTop + 15)); + this.addButton(new GuiNpcButton(103, var9 + 60, this.guiTop + 10, 80, 20, this.languages.keySet().toArray(new String[this.languages.keySet().size()]), this.getScriptIndex())); + this.getButton(103).enabled = !this.languages.isEmpty(); + this.addLabel(new GuiNpcLabel(2, "gui.enabled", var9, this.guiTop + 36)); + this.addButton(new GuiNpcButton(104, var9 + 60, this.guiTop + 31, 50, 20, new String[]{"gui.no", "gui.yes"}, this.scriptHandler.getEnabled() ? 1 : 0)); + if (this.player.worldObj.isRemote) { + this.addButton(new GuiNpcButton(106, var9, this.guiTop + 55, 150, 20, "script.openfolder")); + } + + this.addButton(new GuiNpcButton(109, var9, this.guiTop + 78, 80, 20, "gui.website")); + this.addButton(new GuiNpcButton(112, var9 + 81, this.guiTop + 78, 80, 20, "gui.forum")); + this.addButton(new GuiNpcButton(110, var9, this.guiTop + 99, 80, 20, "script.apidoc")); + this.addButton(new GuiNpcButton(111, var9 + 81, this.guiTop + 99, 80, 20, "script.apisrc")); + } + + this.xSize = 420; + this.ySize = 256; + } + + public void customScrollClicked(int i, int j, int k, GuiCustomScroll scroll) { + String hook = scroll.getSelected(); + if (this.previousHookClicked.equals(hook)) { + String addString = ""; + if (!this.getTextField(2).getText().isEmpty()) { + addString = addString + "\n"; + } + + addString = addString + "function " + hook + "(event) {\n \n}\n"; + this.getTextField(2).setText(this.getTextField(2).getText() + addString); + this.previousHookClicked = ""; + } else { + this.previousHookClicked = hook; + } + + } + + public void unFocused(GuiNpcTextField textfield) { + } + + private String getConsoleText() { + Map map = this.scriptHandler.getConsoleText(); + StringBuilder builder = new StringBuilder(); + Iterator var3 = map.entrySet().iterator(); + + while(var3.hasNext()) { + Map.Entry entry = (Map.Entry)var3.next(); + builder.insert(0, new Date((Long)entry.getKey()) + (String)entry.getValue() + "\n"); + } + + return builder.toString(); + } + + private int getScriptIndex() { + int i = 0; + + for(Iterator var2 = this.languages.keySet().iterator(); var2.hasNext(); ++i) { + String language = (String)var2.next(); + if (language.equalsIgnoreCase(this.scriptHandler.getLanguage())) { + return i; + } + } + + return 0; + } + + public void confirmClicked(boolean flag, int i) { + if (flag) { + if (i == 0) { + this.openLink("https://www.curseforge.com/minecraft/mc-mods/customnpc-plus"); + } + + if (i == 1) { + this.openLink("https://kamkeel.github.io/CustomNPC-Plus/"); + } + + if (i == 2) { + this.openLink("https://kamkeel.github.io/CustomNPC-Plus/"); + } + + if (i == 3) { + this.openLink("http://www.minecraftforge.net/forum/index.php/board,122.0.html"); + } + + if (i == 10) { + this.scriptHandler.container = null; + this.activeTab = 0; + } + + if (i == 101) { + this.getTextField(2).setText(NoppesStringUtils.getClipboardContents()); + this.setScript(); + } + + if (i == 102) { + if (this.activeTab == 1) { + ScriptContainer container = this.scriptHandler.container; + container.script = ""; + } else { + this.scriptHandler.clearConsole(); + } + + this.initGui(); + } + } + + this.displayGuiScreen(this); + } + + protected void actionPerformed(GuiButton guibutton) { + if (guibutton.id == 0) { + this.setScript(); + this.activeTab = 0; + this.initGui(); + } + + if (guibutton.id == this.scriptLimit) { + if (scriptHandler.container == null) + this.scriptHandler.container = new ScriptContainer(this.scriptHandler); + else + this.setScript(); + this.activeTab = 1; + this.initGui(); + } + + if (guibutton.id == 109) { + this.displayGuiScreen(new GuiConfirmOpenLink(this, "https://kamkeel.github.io/CustomNPC-Plus/", 0, true)); + } + + if (guibutton.id == 110) { + this.displayGuiScreen(new GuiConfirmOpenLink(this, "https://github.com/KAMKEEL/CustomNPC-Plus-API", 1, true)); + } + + if (guibutton.id == 111) { + this.displayGuiScreen(new GuiConfirmOpenLink(this, "https://github.com/Noppes/CustomNPCsAPI", 2, true)); + } + + if (guibutton.id == 112) { + this.displayGuiScreen(new GuiConfirmOpenLink(this, "http://www.minecraftforge.net/forum/index.php/board,122.0.html", 3, true)); + } + + if (guibutton.id == 100) { + NoppesStringUtils.setClipboardContents(this.getTextField(2).getText()); + } + + if (guibutton.id == 101) { + GuiYesNo guiyesno = new GuiYesNo(this, StatCollector.translateToLocal("gui.paste"), StatCollector.translateToLocal("gui.sure"), 101); + this.displayGuiScreen(guiyesno); + } + + GuiYesNo container1; + if (guibutton.id == 102) { + container1 = new GuiYesNo(this, StatCollector.translateToLocal("gui.clear"), StatCollector.translateToLocal("gui.sure"), 102); + this.displayGuiScreen(container1); + } + + if (guibutton.id == 103) { + this.scriptHandler.setLanguage(guibutton.displayString); + } + + if (guibutton.id == 104) { + this.scriptHandler.setEnabled(((GuiNpcButton)guibutton).getValue() == 1); + } + + if (guibutton.id == 105) { + container1 = new GuiYesNo(this, "", ((GuiNpcButton)guibutton).displayString, 10); + this.displayGuiScreen(container1); + } + + if (guibutton.id == 106) { + NoppesUtil.openFolder(ScriptController.Instance.dir); + } + + if (guibutton.id == 107) { + ScriptContainer container = this.scriptHandler.container; + if (container == null) { + container = new ScriptContainer(this.scriptHandler); + this.scriptHandler.container = container; + } + +// this.setSubGui(new EventGuiScriptList((List)this.languages.get(this.script.getLanguage()), container)); + } + + } + + private void setScript() { + if (this.activeTab == 1) { + ScriptContainer container = this.scriptHandler.container; + if (container == null) { + container = new ScriptContainer(this.scriptHandler); + this.scriptHandler.container = container; + } + + String text = this.getTextField(2).getText(); + text = text.replace("\r\n", "\n"); + text = text.replace("\r", "\n"); + container.script = text; + } + + } + + public void setGuiData(NBTTagCompound compound) { + if (!compound.hasKey("Tab")) { + this.scriptHandler.setLanguage(compound.getString("ScriptLanguage")); + this.scriptHandler.setEnabled(compound.getBoolean("ScriptEnabled")); + this.copiedSetGuiData(compound); + } else { + int tab = compound.getInteger("Tab"); + ScriptContainer container = new ScriptContainer(this.scriptHandler); + container.readFromNBT(compound.getCompoundTag("Script")); + this.scriptHandler.container = container; + this.initGui(); + } + + } + + private void copiedSetGuiData(NBTTagCompound compound) { + NBTTagList data = compound.getTagList("Languages", 10); + HashMap languages = new HashMap(); + + for(int i = 0; i < data.tagCount(); ++i) { + NBTTagCompound comp = data.getCompoundTagAt(i); + ArrayList scripts = new ArrayList(); + NBTTagList list = comp.getTagList("Scripts", 8); + + for(int j = 0; j < list.tagCount(); ++j) { + scripts.add(list.getStringTagAt(j)); + } + + languages.put(comp.getString("Language"), scripts); + } + + this.languages = languages; + this.initGui(); + } + + public void save() { + this.setScript(); + + List containers = this.scriptHandler.getScripts(); + for (int i = 0; i < containers.size(); i++) { + ScriptContainer container = containers.get(i); + // TODO: FIX PACKET + // DBCSaveEffectScript.Save(effect.id, i, containers.size(), container.writeToNBT(new NBTTagCompound())); + } + NBTTagCompound scriptData = new NBTTagCompound(); + scriptData.setString("ScriptLanguage", this.scriptHandler.getLanguage()); + scriptData.setBoolean("ScriptEnabled", this.scriptHandler.getEnabled()); + scriptData.setTag("ScriptConsole", NBTTags.NBTLongStringMap(this.scriptHandler.getConsoleText())); + + // TODO: FIX PACKET + // DBCSaveEffectScript.Save(effect.id, -1, containers.size(), scriptData); + } + + public void textUpdate(String text) { + ScriptContainer container = this.scriptHandler.container; + if (container != null) { + container.script = text; + } + + } + + public void saveText(String text) { + ScriptContainer container = this.scriptHandler.container; + if (container != null) { + container.script = text; + } + + this.initGui(); + } + + @Override + public void close() { + this.save(); + parent.setWorldAndResolution(mc, width, height); + parent.initGui(); + mc.currentScreen = parent; + } +} From d2c7e634ec5bd79f40655fac408e4247b240afab Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 16:38:50 -0500 Subject: [PATCH 138/157] Fix Packets for Effects + Syncing --- .../npcs/controllers/SyncController.java | 54 ++++++++- .../kamkeel/npcs/network/PacketHandler.java | 1 + .../npcs/network/enums/EnumRequestPacket.java | 9 +- .../npcs/network/enums/EnumSyncType.java | 1 + .../request/effects/EffectGetPacket.java | 56 +++++++++ .../request/effects/EffectRemovePacket.java | 52 +++++++++ .../request/effects/EffectSavePacket.java | 62 ++++++++++ .../effects/EffectScriptGetPacket.java | 58 ++++++++++ .../request/effects/EffectsGetPacket.java | 58 ++++++++++ .../request/script/EffectScriptPacket.java | 109 ++++++++++++++++++ .../java/noppes/npcs/NoppesUtilServer.java | 9 ++ .../java/noppes/npcs/client/ClientProxy.java | 3 + .../npcs/client/gui/SubGuiEffectGeneral.java | 8 +- .../gui/global/GuiNPCManageEffects.java | 30 ++--- .../gui/mainmenu/GuiNPCGlobalMainMenu.java | 7 ++ .../client/gui/script/GuiScriptEffect.java | 12 +- .../noppes/npcs/constants/EnumGuiType.java | 1 + .../controllers/StatusEffectController.java | 13 +-- 18 files changed, 502 insertions(+), 41 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/effects/EffectGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/effects/EffectRemovePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/effects/EffectSavePacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/effects/EffectScriptGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/effects/EffectsGetPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java diff --git a/src/main/java/kamkeel/npcs/controllers/SyncController.java b/src/main/java/kamkeel/npcs/controllers/SyncController.java index b7a77c83e..4feb0b62e 100644 --- a/src/main/java/kamkeel/npcs/controllers/SyncController.java +++ b/src/main/java/kamkeel/npcs/controllers/SyncController.java @@ -11,10 +11,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.client.ClientCacheHandler; -import noppes.npcs.controllers.DialogController; -import noppes.npcs.controllers.FactionController; -import noppes.npcs.controllers.QuestController; -import noppes.npcs.controllers.RecipeController; +import noppes.npcs.controllers.*; import noppes.npcs.controllers.data.*; import java.util.HashMap; @@ -69,6 +66,13 @@ public class SyncController { anvilNBT() ), player); + PacketHandler.Instance.sendToPlayer(new SyncPacket( + EnumSyncType.CUSTOM_EFFECTS, + EnumSyncAction.RELOAD, + -1, + customEffectsNBT() + ), player); + DBCAddon.instance.syncPlayer(player); syncPlayerData(player, false); } @@ -154,6 +158,16 @@ public class SyncController { return compound; } + public static NBTTagCompound customEffectsNBT(){ + NBTTagList list = new NBTTagList(); + NBTTagCompound compound = new NBTTagCompound(); + for (CustomEffect effect : StatusEffectController.getInstance().customEffects.values()) { + list.appendTag(effect.writeToNBT(false)); + } + compound.setTag("Data", list); + return compound; + } + public static void syncPlayerData(EntityPlayerMP player, boolean update){ PlayerData data = PlayerData.get(player); if(data != null){ @@ -228,6 +242,15 @@ public class SyncController { )); } + public static void syncAllCustomEffects() { + PacketHandler.Instance.sendToAll(new SyncPacket( + EnumSyncType.CUSTOM_EFFECTS, + EnumSyncAction.RELOAD, + -1, + customEffectsNBT() + )); + } + @SideOnly(Side.CLIENT) public static void clientSync(EnumSyncType enumSyncType, NBTTagCompound fullCompound) { switch (enumSyncType){ @@ -367,6 +390,18 @@ public class SyncController { RecipeController.syncAnvilRecipes = new HashMap(); break; } + case CUSTOM_EFFECTS: { + NBTTagList list = fullCompound.getTagList("Data", 10); + for (int i = 0; i < list.tagCount(); i++) { + CustomEffect effect = new CustomEffect(); + effect.readFromNBT(list.getCompoundTagAt(i)); + StatusEffectController.getInstance().customEffectsSync.put(effect.id, effect); + } + + StatusEffectController.getInstance().customEffects = StatusEffectController.getInstance().customEffectsSync; + StatusEffectController.getInstance().customEffectsSync = new HashMap<>(); + break; + } } } @@ -440,6 +475,14 @@ public class SyncController { ClientCacheHandler.playerData.setSyncNBT(compound); break; } + case CUSTOM_EFFECTS: { + CustomEffect effect = new CustomEffect(); + effect.readFromNBT(compound); + ClientCacheHandler.getImageData(effect.icon); + + StatusEffectController.Instance.customEffects.put(effect.id, effect); + break; + } } } @@ -509,6 +552,9 @@ public class SyncController { break; case MAGIC: break; + case CUSTOM_EFFECTS: + StatusEffectController.Instance.customEffects.remove(id); + break; } } } diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 74bb48909..6c1188bd1 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -121,6 +121,7 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new NPCScriptPacket()); REQUEST_PACKET.registerPacket(new PlayerScriptPacket()); REQUEST_PACKET.registerPacket(new ScriptInfoPacket()); + REQUEST_PACKET.registerPacket(new EffectScriptPacket()); // Cloner Packets REQUEST_PACKET.registerPacket(new CloneListPacket()); diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java index d4ab15674..46aa7c7d4 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumRequestPacket.java @@ -168,6 +168,13 @@ public enum EnumRequestPacket { BlockScript, NPCScript, ScriptInfo, + EffectScript, - DimensionTeleport + DimensionTeleport, + + EffectList, + EffectGet, + EffectScriptGet, + EffectRemove, + EffectSave, } diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java b/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java index 6d9ba1d34..36c514e5d 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumSyncType.java @@ -11,4 +11,5 @@ public enum EnumSyncType { WORKBENCH_RECIPES, CARPENTRY_RECIPES, ANVIL_RECIPES, + CUSTOM_EFFECTS } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectGetPacket.java new file mode 100644 index 000000000..0bf3d6df3 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectGetPacket.java @@ -0,0 +1,56 @@ +package kamkeel.npcs.network.packets.request.effects; + +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.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.data.CustomEffect; + +import java.io.IOException; + +public final class EffectGetPacket extends AbstractPacket { + public static final String packetName = "NPC|GetEffect"; + private int effectID; + + public EffectGetPacket(int EffectID) { + this.effectID = EffectID; + } + + public EffectGetPacket() { + } + + @Override + public Enum getType() { + return EnumRequestPacket.EffectGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.effectID); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + effectID = in.readInt(); + NBTTagCompound compound = new NBTTagCompound(); + if (effectID != -1 && StatusEffectController.getInstance().has(effectID)) { + CustomEffect Effect = (CustomEffect) StatusEffectController.getInstance().get(effectID); + if (Effect != null) { + compound = Effect.writeToNBT(false); + compound.setString("Type", "ViewEffect"); + } + } + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectRemovePacket.java new file mode 100644 index 000000000..4b7ea79d6 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectRemovePacket.java @@ -0,0 +1,52 @@ +package kamkeel.npcs.network.packets.request.effects; + +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.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.data.CustomEffect; + +import java.io.IOException; + +public class EffectRemovePacket extends AbstractPacket { + public static final String packetName = "NPC|EffectRemove"; + + private int effectID; + + public EffectRemovePacket(int outlineID) { + this.effectID = outlineID; + } + + public EffectRemovePacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.EffectRemove; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.effectID); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + effectID = in.readInt(); + StatusEffectController.getInstance().delete(effectID); + NoppesUtilServer.sendCustomEffectDataAll((EntityPlayerMP) player); + NBTTagCompound compound = (new CustomEffect()).writeToNBT(false); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectSavePacket.java new file mode 100644 index 000000000..f0f729860 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectSavePacket.java @@ -0,0 +1,62 @@ +package kamkeel.npcs.network.packets.request.effects; + +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.data.CustomEffect; + +import java.io.IOException; + +public class EffectSavePacket extends AbstractPacket { + public static final String packetName = "NPC|EffectSave"; + + private String prevName; + private NBTTagCompound effectCompound; + + public EffectSavePacket(NBTTagCompound compound, String prev){ + this.effectCompound = compound; + this.prevName = prev; + } + + public EffectSavePacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.EffectSave; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBufUtils.writeString(out, prevName); + ByteBufUtils.writeNBT(out, effectCompound); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + String prevName = ByteBufUtils.readString(in); + + CustomEffect effect = new CustomEffect(); + effect.readFromNBT(ByteBufUtils.readNBT(in)); + + StatusEffectController.getInstance().saveEffect(effect); + + if(!prevName.isEmpty() && !prevName.equals(effect.name)){ + StatusEffectController.getInstance().deleteEffectFile(prevName); + } + + NoppesUtilServer.sendCustomEffectDataAll((EntityPlayerMP) player); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectScriptGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectScriptGetPacket.java new file mode 100644 index 000000000..a38b08579 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectScriptGetPacket.java @@ -0,0 +1,58 @@ +package kamkeel.npcs.network.packets.request.effects; + +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.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.client.gui.script.GuiScriptEffect; + +import java.io.IOException; + +public class EffectScriptGetPacket extends LargeAbstractPacket { + public static final String packetName = "NPC|EffectScriptGetPacket"; + private NBTTagCompound compound; + + public EffectScriptGetPacket() {} + + public EffectScriptGetPacket(NBTTagCompound compound) { + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.EffectScriptGet; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + + @Override + protected byte[] getData() throws IOException { + ByteBuf byteBuf = Unpooled.buffer(); + ByteBufUtils.writeNBT(byteBuf, compound); + return byteBuf.array(); + } + + @SideOnly(Side.CLIENT) + @Override + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { + NBTTagCompound scriptData = ByteBufUtils.readNBT(data); + GuiScreen screen = Minecraft.getMinecraft().currentScreen; + if (screen instanceof GuiScriptEffect) { + GuiScriptEffect scriptGui = (GuiScriptEffect) screen; + scriptGui.setGuiData(scriptData); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectsGetPacket.java new file mode 100644 index 000000000..93834a848 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectsGetPacket.java @@ -0,0 +1,58 @@ +package kamkeel.npcs.network.packets.request.effects; + +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.EnumRequestPacket; +import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.data.CustomEffect; + +import java.io.IOException; + +public final class EffectsGetPacket extends AbstractPacket { + public static final String packetName = "NPC|EffectsGetPacket"; + private int effectID; + + public EffectsGetPacket(int outlineID) { + this.effectID = outlineID; + } + + public EffectsGetPacket() {} + + @Override + public Enum getType() { + return EnumRequestPacket.EffectList; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(this.effectID); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + this.effectID = in.readInt(); + + if (effectID != -1) { + CustomEffect effect = (CustomEffect) StatusEffectController.getInstance().get(effectID); + if (effect != null) { + NBTTagCompound compound = effect.writeToNBT(false); + compound.setString("PACKETTYPE", "Effect"); + GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); + } + } else { + NoppesUtilServer.sendCustomEffectDataAll((EntityPlayerMP) player); + } + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java new file mode 100644 index 000000000..fcf8815ff --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java @@ -0,0 +1,109 @@ +package kamkeel.npcs.network.packets.request.script; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.*; +import kamkeel.npcs.network.enums.EnumItemPacketType; +import kamkeel.npcs.network.enums.EnumRequestPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.LogWriter; +import noppes.npcs.config.ConfigDebug; +import noppes.npcs.config.ConfigScript; +import noppes.npcs.controllers.ScriptController; +import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.data.CustomEffect; +import noppes.npcs.controllers.data.EffectScriptHandler; +import noppes.npcs.controllers.data.IScriptHandler; +import noppes.npcs.controllers.data.PlayerDataScript; + +import java.io.IOException; + +public final class EffectScriptPacket extends AbstractPacket { + public static String packetName = "Request|EffectScript"; + + private EffectScriptPacket.Action type; + private int id; + private int page; + private int maxSize; + private NBTTagCompound compound; + + public EffectScriptPacket() {} + + public EffectScriptPacket(Action type, int id, int page, int maxSize, NBTTagCompound compound) { + this.type = type; + this.id = id; + this.page = page; + this.maxSize = maxSize; + this.compound = compound; + } + + @Override + public Enum getType() { + return EnumRequestPacket.EffectScript; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.REQUEST_PACKET; + } + + @Override + public CustomNpcsPermissions.Permission getPermission(){ + return CustomNpcsPermissions.SCRIPT_PLAYER; + } + + @SideOnly(Side.CLIENT) + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeInt(type.ordinal()); + out.writeInt(type.ordinal()); + + if(type == Action.SAVE){ + out.writeInt(this.page); + out.writeInt(this.maxSize); + ByteBufUtils.writeNBT(out, this.compound); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!(player instanceof EntityPlayerMP)) + return; + + if (!ConfigScript.canScript(player, CustomNpcsPermissions.SCRIPT)) + return; + + Action requestedAction = Action.values()[in.readInt()]; + CustomEffect effect = StatusEffectController.getInstance().get(in.readInt()); + if(effect == null) + return; + + EffectScriptHandler data = effect.getOrCreateScriptHandler(); + if(requestedAction == Action.GET){ + PacketUtil.getScripts((IScriptHandler) data, (EntityPlayerMP) player); + } else { + data.saveScript(in); + if(ConfigDebug.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ + LogWriter.script(String.format("[%s] (Player) %s SAVED EFFECT %s [%s]", "EFFECT SCRIPTS", player.getCommandSenderName(), effect.getName())); + } + } + } + + public static void Save(int effectID, int id, int maxSize, NBTTagCompound compound) { + PacketClient.sendClient(new EffectScriptPacket(Action.SAVE, effectID, id, maxSize, compound)); + } + public static void Get(int effectID) { + PacketClient.sendClient(new EffectScriptPacket(Action.GET, effectID, -1, -1, new NBTTagCompound())); + } + + private enum Action { + GET, + SAVE + } +} diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 2e4230618..1ad854679 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -7,6 +7,7 @@ import kamkeel.npcs.network.packets.data.gui.GuiClosePacket; import kamkeel.npcs.network.packets.data.gui.GuiErrorPacket; import kamkeel.npcs.network.packets.data.gui.GuiOpenPacket; import kamkeel.npcs.network.packets.data.large.GuiDataPacket; +import kamkeel.npcs.network.packets.data.large.ScrollDataPacket; import kamkeel.npcs.network.packets.data.large.ScrollListPacket; import kamkeel.npcs.network.packets.data.npc.DialogPacket; import kamkeel.npcs.network.packets.data.ParticlePacket; @@ -655,6 +656,14 @@ public class NoppesUtilServer { sendScrollGroup(player, map); } + public static void sendCustomEffectDataAll(EntityPlayerMP player) { + Map map = new HashMap(); + for (CustomEffect effect : StatusEffectController.getInstance().customEffects.values()) { + map.put(effect.name, effect.id); + } + ScrollDataPacket.sendScrollData(player, map); + } + public static void sendTransportCategoryData(EntityPlayerMP player) { HashMap map = new HashMap(); for(TransportCategory category : TransportController.getInstance().categories.values()){ diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index 896528a4e..647438d5e 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -289,6 +289,9 @@ public class ClientProxy extends CommonProxy { else if (gui == EnumGuiType.ManageBanks) return new GuiNPCManageBanks(npc, (ContainerManageBanks) container); + else if (gui == EnumGuiType.ManageEffects) + return new GuiNPCManageEffects(npc); + else if (gui == EnumGuiType.MainMenuGlobal) return new GuiNPCGlobalMainMenu(npc); diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiEffectGeneral.java b/src/main/java/noppes/npcs/client/gui/SubGuiEffectGeneral.java index 34afd27d1..4e851ab65 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiEffectGeneral.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiEffectGeneral.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.effects.EffectSavePacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.util.ResourceLocation; @@ -193,8 +195,7 @@ public class SubGuiEffectGeneral extends SubGuiInterface implements ITextfieldLi return; } if (id == -2) { - // TODO: FIX PACKET - // DBCPacketHandler.Instance.sendToServer(new DBCSaveEffect(effect.writeToNBT(false), originalName)); + PacketClient.sendClient(new EffectSavePacket(effect.writeToNBT(false), originalName)); GuiScriptEffect scriptGUI = new GuiScriptEffect(parent, effect); scriptGUI.setWorldAndResolution(mc, width, height); scriptGUI.initGui(); @@ -249,7 +250,6 @@ public class SubGuiEffectGeneral extends SubGuiInterface implements ITextfieldLi @Override public void close() { super.close(); - // TODO: FIX Packet - // DBCPacketHandler.Instance.sendToServer(new DBCSaveEffect(effect.writeToNBT(false), originalName)); + PacketClient.sendClient(new EffectSavePacket(effect.writeToNBT(false), originalName)); } } diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java index c6f94ebe0..3056bfe9c 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java @@ -1,5 +1,10 @@ package noppes.npcs.client.gui.global; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.effects.EffectGetPacket; +import kamkeel.npcs.network.packets.request.effects.EffectRemovePacket; +import kamkeel.npcs.network.packets.request.effects.EffectSavePacket; +import kamkeel.npcs.network.packets.request.effects.EffectsGetPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; @@ -35,8 +40,7 @@ public class GuiNPCManageEffects extends GuiNPCInterface2 implements ICustomScro public GuiNPCManageEffects(EntityNPCInterface npc) { super(npc); - // TODO: Fix Packet - // DBCPacketHandler.Instance.sendToServer(new DBCRequestEffect(-1)); + PacketClient.sendClient(new EffectsGetPacket(-1)); } public void initGui() { @@ -77,9 +81,7 @@ public class GuiNPCManageEffects extends GuiNPCInterface2 implements ICustomScro while (data.containsKey(name)) name += "_"; CustomEffect effect = new CustomEffect(-1, name); - - // TODO: Fix Packet - // DBCPacketHandler.Instance.sendToServer(new DBCSaveEffect(effect.writeToNBT(false), "")); + PacketClient.sendClient(new EffectSavePacket(effect.writeToNBT(false), "")); } else if (button.id == 1) { if (data.containsKey(scrollEffects.getSelected())) { GuiYesNo guiyesno = new GuiYesNo(this, scrollEffects.getSelected(), StatCollector.translateToLocal("gui.delete"), 1); @@ -89,8 +91,7 @@ public class GuiNPCManageEffects extends GuiNPCInterface2 implements ICustomScro CustomEffect effect = this.effect.cloneEffect(); while (data.containsKey(effect.name)) effect.name += "_"; - // TODO: Fix Packet - // DBCPacketHandler.Instance.sendToServer(new DBCSaveEffect(effect.writeToNBT(false), "")); + PacketClient.sendClient(new EffectSavePacket(effect.writeToNBT(false), "")); } if (effect == null) @@ -110,13 +111,9 @@ public class GuiNPCManageEffects extends GuiNPCInterface2 implements ICustomScro this.effect = new CustomEffect(); effect.readFromNBT(compound); setSelected(effect.name); - if (effect.id != -1) { StatusEffectController.getInstance().customEffects.replace(effect.id, effect); } - - - initGui(); } @@ -248,8 +245,7 @@ public class GuiNPCManageEffects extends GuiNPCInterface2 implements ICustomScro selected = scrollEffects.getSelected(); originalName = scrollEffects.getSelected(); if (selected != null && !selected.isEmpty()) { - // TODO: Fix Packet - // DBCPacketHandler.Instance.sendToServer(new DBCGetEffect(data.get(selected))); + PacketClient.sendClient(new EffectGetPacket(data.get(selected))); } } } @@ -262,9 +258,7 @@ public class GuiNPCManageEffects extends GuiNPCInterface2 implements ICustomScro @Override public void save() { if (this.selected != null && this.data.containsKey(this.selected) && this.effect != null) { - - // TODO: Fix Packet - // DBCPacketHandler.Instance.sendToServer(new DBCSaveEffect(effect.writeToNBT(false), originalName)); + PacketClient.sendClient(new EffectSavePacket(effect.writeToNBT(false), originalName)); } } @@ -281,9 +275,7 @@ public class GuiNPCManageEffects extends GuiNPCInterface2 implements ICustomScro return; if (id == 1) { if (data.containsKey(scrollEffects.getSelected())) { - - // TODO: Fix Packet - // DBCPacketHandler.Instance.sendToServer(new DBCRemoveEffect(data.get(scrollEffects.getSelected()))); + PacketClient.sendClient(new EffectRemovePacket(data.get(scrollEffects.getSelected()))); scrollEffects.clear(); effect = new CustomEffect(); initGui(); diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java index 4469aef54..a70e427da 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNPCGlobalMainMenu.java @@ -36,6 +36,7 @@ public class GuiNPCGlobalMainMenu extends GuiNPCInterface2 { private GuiNpcSquareButton linkedButton; private GuiNpcSquareButton animationButton; private GuiNpcSquareButton tagButton; + private GuiNpcSquareButton effectsButton; public GuiNPCGlobalMainMenu(EntityNPCInterface npc) { super(npc, 5); @@ -86,6 +87,9 @@ public class GuiNPCGlobalMainMenu extends GuiNPCInterface2 { registerButton(tagButton = new GuiNpcSquareButton(17, 0, 0, 20, "menu.tags", 0xFF333333)); tagButton.setIconPos(24, 24, 192, 32).setIconTexture(specialIcons); + registerButton(effectsButton = new GuiNpcSquareButton(19, 0, 0, 20, "global.customeffects", 0xFF333333)); + effectsButton.setIconPos(24, 24, 192, 32).setIconTexture(specialIcons); + // Layout composite buttons optimally. layoutButtons(); // Add all composite buttons to the GUI. @@ -221,6 +225,9 @@ public class GuiNPCGlobalMainMenu extends GuiNPCInterface2 { if (id == 16) { NoppesUtil.requestOpenGUI(EnumGuiType.ManageLinked); } + if (id == 19) { + NoppesUtil.requestOpenGUI(EnumGuiType.ManageEffects); + } } @Override diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java index 806766d7a..08e10cc9f 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java @@ -1,5 +1,8 @@ package noppes.npcs.client.gui.script; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.request.effects.EffectScriptGetPacket; +import kamkeel.npcs.network.packets.request.script.EffectScriptPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiConfirmOpenLink; import net.minecraft.client.gui.GuiYesNo; @@ -46,8 +49,7 @@ public class GuiScriptEffect extends GuiNPCInterface implements GuiYesNoCallback this.hookList.add(type.function); } - // TODO: FIX PACKET - // DBCPacketClient.sendClient(new DBCRequestEffectScript(effect.id)); + EffectScriptPacket.Get(effect.id); } public void initGui() { @@ -365,16 +367,14 @@ public class GuiScriptEffect extends GuiNPCInterface implements GuiYesNoCallback List containers = this.scriptHandler.getScripts(); for (int i = 0; i < containers.size(); i++) { ScriptContainer container = containers.get(i); - // TODO: FIX PACKET - // DBCSaveEffectScript.Save(effect.id, i, containers.size(), container.writeToNBT(new NBTTagCompound())); + EffectScriptPacket.Save(effect.id, i, containers.size(), container.writeToNBT(new NBTTagCompound())); } NBTTagCompound scriptData = new NBTTagCompound(); scriptData.setString("ScriptLanguage", this.scriptHandler.getLanguage()); scriptData.setBoolean("ScriptEnabled", this.scriptHandler.getEnabled()); scriptData.setTag("ScriptConsole", NBTTags.NBTLongStringMap(this.scriptHandler.getConsoleText())); - // TODO: FIX PACKET - // DBCSaveEffectScript.Save(effect.id, -1, containers.size(), scriptData); + EffectScriptPacket.Save(effect.id, -1, containers.size(), scriptData); } public void textUpdate(String text) { diff --git a/src/main/java/noppes/npcs/constants/EnumGuiType.java b/src/main/java/noppes/npcs/constants/EnumGuiType.java index 7ce4f7e02..a55db8ac7 100644 --- a/src/main/java/noppes/npcs/constants/EnumGuiType.java +++ b/src/main/java/noppes/npcs/constants/EnumGuiType.java @@ -37,6 +37,7 @@ public enum EnumGuiType { PlayerAnvil, QuestReward, ManageRecipes, + ManageEffects, QuestItem, NpcRemote, GlobalRemote, diff --git a/src/main/java/noppes/npcs/controllers/StatusEffectController.java b/src/main/java/noppes/npcs/controllers/StatusEffectController.java index a926cd5df..42e0cb8c3 100644 --- a/src/main/java/noppes/npcs/controllers/StatusEffectController.java +++ b/src/main/java/noppes/npcs/controllers/StatusEffectController.java @@ -1,5 +1,8 @@ package noppes.npcs.controllers; +import kamkeel.npcs.controllers.SyncController; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.CompressedStreamTools; @@ -132,8 +135,7 @@ public class StatusEffectController implements IStatusEffectHandler { if (file.getName().equals(foundEffect.name + ".json")) { file.delete(); - // TODO: Fix Packets - // DBCPacketHandler.Instance.sendToAll(new DBCInfoSyncPacket(DBCSyncType.CUSTOM_EFFECT, EnumSyncAction.REMOVE, foundEffect.getID(), new NBTTagCompound())); + SyncController.syncRemove(EnumSyncType.CUSTOM_EFFECTS, foundEffect.getID()); break; } } @@ -154,9 +156,7 @@ public class StatusEffectController implements IStatusEffectHandler { continue; if (file.getName().equals(foundEffect.name + ".json")) { file.delete(); - - // TODO: Fix Packets - // DBCPacketHandler.Instance.sendToAll(new DBCInfoSyncPacket(DBCSyncType.CUSTOM_EFFECT, EnumSyncAction.REMOVE, foundEffect.getID(), new NBTTagCompound())); + SyncController.syncRemove(EnumSyncType.CUSTOM_EFFECTS, foundEffect.getID()); break; } } @@ -338,8 +338,7 @@ public class StatusEffectController implements IStatusEffectHandler { file2.delete(); file.renameTo(file2); nbtTagCompound.removeTag("ScriptData"); - // TODO: Add Packets - // DBCPacketHandler.Instance.sendToAll(new DBCInfoSyncPacket(DBCSyncType.CUSTOM_EFFECT, EnumSyncAction.UPDATE, -1, nbtTagCompound)); + SyncController.syncUpdate(EnumSyncType.CUSTOM_EFFECTS, -1, nbtTagCompound); } catch (Exception e) { LogWriter.except(e); } From ea8e52e8e61c402b9496e93229bffe5138cf6fff Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 16:42:03 -0500 Subject: [PATCH 139/157] Register Packets --- .../kamkeel/npcs/network/PacketHandler.java | 10 ++++ .../effects/EffectScriptGetPacket.java | 58 ------------------- .../client/gui/script/GuiScriptEffect.java | 2 - 3 files changed, 10 insertions(+), 60 deletions(-) delete mode 100644 src/main/java/kamkeel/npcs/network/packets/request/effects/EffectScriptGetPacket.java diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 6c1188bd1..a4dc8045f 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -27,6 +27,10 @@ import kamkeel.npcs.network.packets.request.customgui.CustomGuiClosePacket; import kamkeel.npcs.network.packets.request.customgui.CustomGuiUnfocusedPacket; import kamkeel.npcs.network.packets.request.customgui.CustomScrollClickPacket; import kamkeel.npcs.network.packets.request.dialog.*; +import kamkeel.npcs.network.packets.request.effects.EffectGetPacket; +import kamkeel.npcs.network.packets.request.effects.EffectRemovePacket; +import kamkeel.npcs.network.packets.request.effects.EffectSavePacket; +import kamkeel.npcs.network.packets.request.effects.EffectsGetPacket; import kamkeel.npcs.network.packets.request.faction.*; import kamkeel.npcs.network.packets.request.feather.DimensionTeleportPacket; import kamkeel.npcs.network.packets.request.jobs.JobGetPacket; @@ -297,6 +301,12 @@ public class PacketHandler { REQUEST_PACKET.registerPacket(new MovingPathSavePacket()); REQUEST_PACKET.registerPacket(new MovingPathGetPacket()); + // Custom Effect Packets + REQUEST_PACKET.registerPacket(new EffectGetPacket()); + REQUEST_PACKET.registerPacket(new EffectsGetPacket()); + REQUEST_PACKET.registerPacket(new EffectSavePacket()); + REQUEST_PACKET.registerPacket(new EffectRemovePacket()); + // Other Packets REQUEST_PACKET.registerPacket(new IsGuiOpenInform()); REQUEST_PACKET.registerPacket(new GuiRequestPacket()); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectScriptGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectScriptGetPacket.java deleted file mode 100644 index a38b08579..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectScriptGetPacket.java +++ /dev/null @@ -1,58 +0,0 @@ -package kamkeel.npcs.network.packets.request.effects; - -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.EnumRequestPacket; -import kamkeel.npcs.util.ByteBufUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.client.gui.script.GuiScriptEffect; - -import java.io.IOException; - -public class EffectScriptGetPacket extends LargeAbstractPacket { - public static final String packetName = "NPC|EffectScriptGetPacket"; - private NBTTagCompound compound; - - public EffectScriptGetPacket() {} - - public EffectScriptGetPacket(NBTTagCompound compound) { - this.compound = compound; - } - - @Override - public Enum getType() { - return EnumRequestPacket.EffectScriptGet; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; - } - - - @Override - protected byte[] getData() throws IOException { - ByteBuf byteBuf = Unpooled.buffer(); - ByteBufUtils.writeNBT(byteBuf, compound); - return byteBuf.array(); - } - - @SideOnly(Side.CLIENT) - @Override - protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { - NBTTagCompound scriptData = ByteBufUtils.readNBT(data); - GuiScreen screen = Minecraft.getMinecraft().currentScreen; - if (screen instanceof GuiScriptEffect) { - GuiScriptEffect scriptGui = (GuiScriptEffect) screen; - scriptGui.setGuiData(scriptData); - } - } -} diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java index 08e10cc9f..3853ee283 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptEffect.java @@ -1,7 +1,5 @@ package noppes.npcs.client.gui.script; -import kamkeel.npcs.network.PacketClient; -import kamkeel.npcs.network.packets.request.effects.EffectScriptGetPacket; import kamkeel.npcs.network.packets.request.script.EffectScriptPacket; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiConfirmOpenLink; From 0072369fca7fdb043809a4f1d53e4058ebc4fbe2 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 16:56:17 -0500 Subject: [PATCH 140/157] Fix Effect Packet Bug --- .../npcs/network/packets/request/script/EffectScriptPacket.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java index fcf8815ff..111200e90 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java @@ -62,7 +62,7 @@ public final class EffectScriptPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { out.writeInt(type.ordinal()); - out.writeInt(type.ordinal()); + out.writeInt(id); if(type == Action.SAVE){ out.writeInt(this.page); From de0e425b8769b22e73dde31f936a369a4a09df9c Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 17:19:58 -0500 Subject: [PATCH 141/157] Effect Keys --- .../controllers/StatusEffectController.java | 165 +++++++----------- .../npcs/controllers/data/EffectKey.java | 37 ++++ .../assets/customnpcs/lang/en_US.lang | 15 ++ 3 files changed, 116 insertions(+), 101 deletions(-) create mode 100644 src/main/java/noppes/npcs/controllers/data/EffectKey.java diff --git a/src/main/java/noppes/npcs/controllers/StatusEffectController.java b/src/main/java/noppes/npcs/controllers/StatusEffectController.java index 42e0cb8c3..27f3bd814 100644 --- a/src/main/java/noppes/npcs/controllers/StatusEffectController.java +++ b/src/main/java/noppes/npcs/controllers/StatusEffectController.java @@ -15,6 +15,7 @@ import noppes.npcs.api.entity.IPlayer; import noppes.npcs.api.handler.IStatusEffectHandler; import noppes.npcs.api.handler.data.ICustomEffect; import noppes.npcs.controllers.data.CustomEffect; +import noppes.npcs.controllers.data.EffectKey; import noppes.npcs.controllers.data.EffectScriptHandler; import noppes.npcs.controllers.data.PlayerEffect; import noppes.npcs.scripted.event.PlayerEvent; @@ -42,8 +43,7 @@ public class StatusEffectController implements IStatusEffectHandler { private HashMap bootOrder; private int lastUsedID = 0; - - public ConcurrentHashMap> playerEffects = new ConcurrentHashMap<>(); + public ConcurrentHashMap> playerEffects = new ConcurrentHashMap<>(); public StatusEffectController() {} @@ -51,6 +51,10 @@ public class StatusEffectController implements IStatusEffectHandler { return Instance; } + public void registerEffectMap(int index, HashMap effectHashMap){ + indexMapper.put(index, effectHashMap); + } + public void load() { lastUsedID = 0; playerEffects.clear(); @@ -61,30 +65,31 @@ public class StatusEffectController implements IStatusEffectHandler { LogWriter.info("Done loading custom effects."); } - public void runEffects(EntityPlayer player) { - Map current = getPlayerEffects(player); - for (int active : current.keySet()) { - CustomEffect effect = get(active); + Map current = getPlayerEffects(player); + for (Map.Entry entry : current.entrySet()) { + int id = entry.getKey().getId(); + CustomEffect effect = get(id); if (effect != null) { - effect.runEffect(player, current.get(active)); + effect.runEffect(player, entry.getValue()); } } } public void killEffects(EntityPlayer player) { - Map current = getPlayerEffects(player); - Iterator> iterator = current.entrySet().iterator(); + Map current = getPlayerEffects(player); + Iterator> iterator = current.entrySet().iterator(); while (iterator.hasNext()) { - Map.Entry entry = iterator.next(); - CustomEffect effect = get(entry.getKey()); + Map.Entry entry = iterator.next(); + int id = entry.getKey().getId(); + CustomEffect effect = get(id); if (effect != null) { if (effect.lossOnDeath) { - effect.onRemoved(player, entry.getValue(), PlayerEvent.EffectEvent.ExpirationType.DEATH); + effect.onRemoved(player, entry.getValue(), ExpirationType.DEATH); iterator.remove(); } } else { - iterator.remove(); // Use iterator to remove the current element + iterator.remove(); } } } @@ -106,7 +111,7 @@ public class StatusEffectController implements IStatusEffectHandler { effect.name = name; if (effect.id == -1) { - int id = getUnusedId(); + int id = getUnusedId(); while (customEffects.containsKey(id)) { id = getUnusedId(); } @@ -134,7 +139,6 @@ public class StatusEffectController implements IStatusEffectHandler { continue; if (file.getName().equals(foundEffect.name + ".json")) { file.delete(); - SyncController.syncRemove(EnumSyncType.CUSTOM_EFFECTS, foundEffect.getID()); break; } @@ -165,7 +169,6 @@ public class StatusEffectController implements IStatusEffectHandler { } } - public int getUnusedId() { for (int catid : customEffects.keySet()) { if (catid > lastUsedID) @@ -185,16 +188,13 @@ public class StatusEffectController implements IStatusEffectHandler { } public CustomEffect get(int id) { - CustomEffect statusEffect; - statusEffect = customEffects.get(id); - return statusEffect; + return customEffects.get(id); } - public Map getPlayerEffects(EntityPlayer player) { + public Map getPlayerEffects(EntityPlayer player) { UUID playerId = NoppesUtilServer.getUUID(player); - if (!playerEffects.containsKey(playerId)) - playerEffects.put(playerId, new ConcurrentHashMap<>()); - return playerEffects.get(NoppesUtilServer.getUUID(player)); + playerEffects.computeIfAbsent(playerId, k -> new ConcurrentHashMap<>()); + return playerEffects.get(playerId); } public void applyEffect(EntityPlayer player, int id) { @@ -219,14 +219,8 @@ public class StatusEffectController implements IStatusEffectHandler { CustomEffect parent = get(effect.id); if (parent != null) { - Map currentEffects = new ConcurrentHashMap<>(); - UUID uuid = NoppesUtilServer.getUUID(player); - if (playerEffects.containsKey(uuid)) - currentEffects = playerEffects.get(NoppesUtilServer.getUUID(player)); - else - playerEffects.put(uuid, currentEffects); - - currentEffects.put(effect.id, effect); + Map currentEffects = getPlayerEffects(player); + currentEffects.put(new EffectKey(effect.id, effect.index), effect); parent.onAdded(player, effect); } } @@ -235,19 +229,14 @@ public class StatusEffectController implements IStatusEffectHandler { if (effect == null) return; - Map currentEffects = new ConcurrentHashMap<>(); - UUID uuid = NoppesUtilServer.getUUID(player); - if (playerEffects.containsKey(uuid)) - currentEffects = playerEffects.get(NoppesUtilServer.getUUID(player)); - else - playerEffects.put(uuid, currentEffects); - - if (currentEffects.containsKey(effect.id)) { + Map currentEffects = getPlayerEffects(player); + EffectKey key = new EffectKey(effect.id, effect.index); + if (currentEffects.containsKey(key)) { CustomEffect parent = get(effect.id); if (parent != null) { parent.onRemoved(player, effect, type); } - currentEffects.remove(effect.id); + currentEffects.remove(key); } } @@ -260,7 +249,7 @@ public class StatusEffectController implements IStatusEffectHandler { @Override public boolean hasEffect(IPlayer player, ICustomEffect effect) { - return hasEffect(player, effect.getID()); + return hasEffect((EntityPlayer) player, effect.getID(), effect.getIndex()); } @Override @@ -346,89 +335,72 @@ public class StatusEffectController implements IStatusEffectHandler { } public void clearEffects(Entity player) { - Map effects = playerEffects.get(NoppesUtilServer.getUUID(player)); + Map effects = playerEffects.get(NoppesUtilServer.getUUID(player)); if (effects != null) { effects.clear(); } } public boolean hasEffect(EntityPlayer player, int id) { - Map currentEffects; - UUID uuid = NoppesUtilServer.getUUID(player); - if (playerEffects.containsKey(uuid)) - currentEffects = playerEffects.get(uuid); - else - return false; + return hasEffect(player, id, 0); + } - return currentEffects.containsKey(id); + public boolean hasEffect(EntityPlayer player, int id, int index) { + return getPlayerEffects(player).containsKey(new EffectKey(id, index)); } public int getEffectDuration(EntityPlayer player, int id) { - Map currentEffects = new ConcurrentHashMap<>(); - UUID uuid = NoppesUtilServer.getUUID(player); - if (playerEffects.containsKey(uuid)) - currentEffects = playerEffects.get(uuid); - else - playerEffects.put(uuid, currentEffects); + return getEffectDuration(player, id, 0); + } - if (currentEffects.containsKey(id)) - return currentEffects.get(id).duration; - - return -1; + public int getEffectDuration(EntityPlayer player, int id, int index) { + PlayerEffect effect = getPlayerEffects(player).get(new EffectKey(id, index)); + return effect != null ? effect.duration : -1; } public void applyEffect(EntityPlayer player, int id, int duration, byte level) { + applyEffect(player, id, duration, level, 0); + } + + public void applyEffect(EntityPlayer player, int id, int duration, byte level, int index) { if (player == null || id <= 0) return; - - Map currentEffects = new ConcurrentHashMap<>(); - UUID uuid = NoppesUtilServer.getUUID(player); - if (playerEffects.containsKey(uuid)) - currentEffects = playerEffects.get(NoppesUtilServer.getUUID(player)); - else - playerEffects.put(uuid, currentEffects); - + Map currentEffects = getPlayerEffects(player); CustomEffect parent = get(id); if (parent != null) { PlayerEffect playerEffect = new PlayerEffect(id, duration, level); - currentEffects.put(id, playerEffect); + playerEffect.index = index; + currentEffects.put(new EffectKey(id, index), playerEffect); parent.onAdded(player, playerEffect); } } public void removeEffect(EntityPlayer player, int id, ExpirationType type) { + removeEffect(player, id, 0, type); + } + + public void removeEffect(EntityPlayer player, int id, int index, ExpirationType type) { if (player == null || id <= 0) return; - - Map currentEffects = new ConcurrentHashMap<>(); - UUID uuid = NoppesUtilServer.getUUID(player); - if (playerEffects.containsKey(uuid)) - currentEffects = playerEffects.get(NoppesUtilServer.getUUID(player)); - else - playerEffects.put(uuid, currentEffects); - - if (currentEffects.containsKey(id)) { - PlayerEffect current = currentEffects.get(id); - this.removeEffect(player, current, type); + Map currentEffects = getPlayerEffects(player); + EffectKey key = new EffectKey(id, index); + PlayerEffect effect = currentEffects.get(key); + if (effect != null) { + this.removeEffect(player, effect, type); } } public void decrementEffects(EntityPlayer player) { - Iterator iterator = getPlayerEffects(player).values().iterator(); - IPlayer iPlayer = NoppesUtilServer.getIPlayer(player); while (iterator.hasNext()) { PlayerEffect effect = iterator.next(); - if (effect == null) { iterator.remove(); continue; } - if (effect.duration == -100) continue; - if (effect.duration <= 0) { CustomEffect parent = StatusEffectController.Instance.get(effect.id); if (parent != null) { @@ -462,35 +434,29 @@ public class StatusEffectController implements IStatusEffectHandler { CustomEffect effect = new CustomEffect(); effect.readFromNBT(NBTJsonUtil.LoadFile(file)); effect.name = file.getName().substring(0, file.getName().length() - 5); - if (effect.id == -1) { effect.id = getUnusedId(); } - int originalID = effect.id; int setID = effect.id; while (bootOrder.containsKey(setID) || customEffects.containsKey(setID)) { if (bootOrder.containsKey(setID)) if (bootOrder.get(setID).equals(effect.name)) break; - setID++; } - effect.id = setID; if (originalID != setID) { LogWriter.info("Found Custom Effect ID Mismatch: " + effect.name + ", New ID: " + setID); effect.save(); } - customEffects.put(effect.id, effect); } catch (Exception e) { LogWriter.error("Error loading: " + file.getAbsolutePath(), e); } } } - - indexMapper.put(0, customEffects); + registerEffectMap(0, customEffects); saveEffectLoadMap(); } @@ -530,25 +496,23 @@ public class StatusEffectController implements IStatusEffectHandler { private NBTTagCompound writeMapNBT() { NBTTagCompound nbt = new NBTTagCompound(); - NBTTagList customEffects = new NBTTagList(); + NBTTagList customEffectsList = new NBTTagList(); for (Integer key : this.customEffects.keySet()) { CustomEffect customEffect = this.customEffects.get(key); if (!customEffect.getName().isEmpty()) { NBTTagCompound effectCompound = new NBTTagCompound(); effectCompound.setString("Name", customEffect.getName()); effectCompound.setInteger("ID", key); - - customEffects.appendTag(effectCompound); + customEffectsList.appendTag(effectCompound); } } - nbt.setTag("CustomEffects", customEffects); + nbt.setTag("CustomEffects", customEffectsList); nbt.setInteger("lastID", lastUsedID); return nbt; } private void readCustomEffectMap() { bootOrder.clear(); - try { File file = new File(getMapDir(), "customeffects.dat"); if (file.exists()) { @@ -560,15 +524,14 @@ public class StatusEffectController implements IStatusEffectHandler { if (file.exists()) { loadCustomEffectMap(file); } - } catch (Exception ignored) { - } + } catch (Exception ignored) {} } } private void loadCustomEffectMap(File file) throws IOException { - DataInputStream var1 = new DataInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(file)))); - readCustomEffectMap(var1); - var1.close(); + DataInputStream dis = new DataInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(file)))); + readCustomEffectMap(dis); + dis.close(); } private void readCustomEffectMap(DataInputStream stream) throws IOException { diff --git a/src/main/java/noppes/npcs/controllers/data/EffectKey.java b/src/main/java/noppes/npcs/controllers/data/EffectKey.java new file mode 100644 index 000000000..c64468f0b --- /dev/null +++ b/src/main/java/noppes/npcs/controllers/data/EffectKey.java @@ -0,0 +1,37 @@ +package noppes.npcs.controllers.data; + +public class EffectKey { + private final int id; + private final int index; + + public EffectKey(int key1, int key2) { + this.id = key1; + this.index = key2; + } + + public int getId() { + return id; + } + + public int getIndex() { + return index; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof EffectKey)) return false; + EffectKey that = (EffectKey) o; + return id == that.id && index == that.index; + } + + @Override + public int hashCode() { + return 31 * id + index; + } + + @Override + public String toString() { + return "EffectKey{" + "key1=" + id + ", key2=" + index + '}'; + } +} diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index ba8ab903b..818bf09ad 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -537,6 +537,7 @@ global.playerdata=PlayerData global.recipes=Recipes global.naturalspawn=Spawns global.linked=Linked +global.customeffects=Effects bank.slot=Slot bank.unlock=Unlock @@ -1256,3 +1257,17 @@ tint.hurt=Hurt Tint hitbox.hitbox=Hitbox hitbox.width=Width Scale hitbox.height=Height Scale + +general.menuName=Menu Name + +effect.runsEveryX=Runs every X tick +effect.defaultLength=Default length + +# These are supposed to be shorter +effect.editor.runsEveryX=Every X tick +effect.editor.defaultLength=Length +effect.editor.height=Height +effect.editor.width=Width +effect.editor.xPos=X Pos +effect.editor.yPos=Y Pos +effect.editor.lossOnDeath=Loss on Death From f2041e855b1f3a6228272f977edfe4ddee09a751 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 17:24:26 -0500 Subject: [PATCH 142/157] Rename to CustomEffectHandler --- src/api | 2 +- .../kamkeel/npcs/controllers/SyncController.java | 13 +++++++------ .../packets/request/effects/EffectGetPacket.java | 6 +++--- .../request/effects/EffectRemovePacket.java | 4 ++-- .../packets/request/effects/EffectSavePacket.java | 6 +++--- .../packets/request/effects/EffectsGetPacket.java | 4 ++-- .../packets/request/script/EffectScriptPacket.java | 7 ++----- src/main/java/noppes/npcs/NoppesUtilServer.java | 2 +- .../client/gui/global/GuiNPCManageEffects.java | 4 ++-- ...Controller.java => CustomEffectController.java} | 14 ++++++-------- .../noppes/npcs/controllers/data/CustomEffect.java | 11 +++++------ .../noppes/npcs/controllers/data/PlayerEffect.java | 8 ++++---- 12 files changed, 38 insertions(+), 43 deletions(-) rename src/main/java/noppes/npcs/controllers/{StatusEffectController.java => CustomEffectController.java} (97%) diff --git a/src/api b/src/api index 3f40e94be..21d491cca 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 3f40e94beaf4e8310fab8fa3376a069c9751efdd +Subproject commit 21d491cca8fb7454a54d367463f191d5868ded20 diff --git a/src/main/java/kamkeel/npcs/controllers/SyncController.java b/src/main/java/kamkeel/npcs/controllers/SyncController.java index 4feb0b62e..d96129736 100644 --- a/src/main/java/kamkeel/npcs/controllers/SyncController.java +++ b/src/main/java/kamkeel/npcs/controllers/SyncController.java @@ -161,7 +161,7 @@ public class SyncController { public static NBTTagCompound customEffectsNBT(){ NBTTagList list = new NBTTagList(); NBTTagCompound compound = new NBTTagCompound(); - for (CustomEffect effect : StatusEffectController.getInstance().customEffects.values()) { + for (CustomEffect effect : CustomEffectController.getInstance().customEffects.values()) { list.appendTag(effect.writeToNBT(false)); } compound.setTag("Data", list); @@ -395,11 +395,12 @@ public class SyncController { for (int i = 0; i < list.tagCount(); i++) { CustomEffect effect = new CustomEffect(); effect.readFromNBT(list.getCompoundTagAt(i)); - StatusEffectController.getInstance().customEffectsSync.put(effect.id, effect); + ClientCacheHandler.getImageData(effect.icon); + CustomEffectController.getInstance().customEffectsSync.put(effect.id, effect); } - StatusEffectController.getInstance().customEffects = StatusEffectController.getInstance().customEffectsSync; - StatusEffectController.getInstance().customEffectsSync = new HashMap<>(); + CustomEffectController.getInstance().customEffects = CustomEffectController.getInstance().customEffectsSync; + CustomEffectController.getInstance().customEffectsSync = new HashMap<>(); break; } } @@ -480,7 +481,7 @@ public class SyncController { effect.readFromNBT(compound); ClientCacheHandler.getImageData(effect.icon); - StatusEffectController.Instance.customEffects.put(effect.id, effect); + CustomEffectController.Instance.customEffects.put(effect.id, effect); break; } } @@ -553,7 +554,7 @@ public class SyncController { case MAGIC: break; case CUSTOM_EFFECTS: - StatusEffectController.Instance.customEffects.remove(id); + CustomEffectController.Instance.customEffects.remove(id); break; } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectGetPacket.java index 0bf3d6df3..4e9449efe 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectGetPacket.java @@ -9,7 +9,7 @@ import kamkeel.npcs.network.packets.data.large.GuiDataPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.CustomEffectController; import noppes.npcs.controllers.data.CustomEffect; import java.io.IOException; @@ -44,8 +44,8 @@ public final class EffectGetPacket extends AbstractPacket { public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { effectID = in.readInt(); NBTTagCompound compound = new NBTTagCompound(); - if (effectID != -1 && StatusEffectController.getInstance().has(effectID)) { - CustomEffect Effect = (CustomEffect) StatusEffectController.getInstance().get(effectID); + if (effectID != -1 && CustomEffectController.getInstance().has(effectID)) { + CustomEffect Effect = (CustomEffect) CustomEffectController.getInstance().get(effectID); if (Effect != null) { compound = Effect.writeToNBT(false); compound.setString("Type", "ViewEffect"); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectRemovePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectRemovePacket.java index 4b7ea79d6..772a0c92b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectRemovePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectRemovePacket.java @@ -10,7 +10,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NoppesUtilServer; -import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.CustomEffectController; import noppes.npcs.controllers.data.CustomEffect; import java.io.IOException; @@ -44,7 +44,7 @@ public class EffectRemovePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { effectID = in.readInt(); - StatusEffectController.getInstance().delete(effectID); + CustomEffectController.getInstance().delete(effectID); NoppesUtilServer.sendCustomEffectDataAll((EntityPlayerMP) player); NBTTagCompound compound = (new CustomEffect()).writeToNBT(false); GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectSavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectSavePacket.java index f0f729860..33bf554c0 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectSavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectSavePacket.java @@ -10,7 +10,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NoppesUtilServer; -import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.CustomEffectController; import noppes.npcs.controllers.data.CustomEffect; import java.io.IOException; @@ -51,10 +51,10 @@ public class EffectSavePacket extends AbstractPacket { CustomEffect effect = new CustomEffect(); effect.readFromNBT(ByteBufUtils.readNBT(in)); - StatusEffectController.getInstance().saveEffect(effect); + CustomEffectController.getInstance().saveEffect(effect); if(!prevName.isEmpty() && !prevName.equals(effect.name)){ - StatusEffectController.getInstance().deleteEffectFile(prevName); + CustomEffectController.getInstance().deleteEffectFile(prevName); } NoppesUtilServer.sendCustomEffectDataAll((EntityPlayerMP) player); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectsGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectsGetPacket.java index 93834a848..fee4e0517 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectsGetPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/effects/EffectsGetPacket.java @@ -10,7 +10,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NoppesUtilServer; -import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.CustomEffectController; import noppes.npcs.controllers.data.CustomEffect; import java.io.IOException; @@ -45,7 +45,7 @@ public final class EffectsGetPacket extends AbstractPacket { this.effectID = in.readInt(); if (effectID != -1) { - CustomEffect effect = (CustomEffect) StatusEffectController.getInstance().get(effectID); + CustomEffect effect = (CustomEffect) CustomEffectController.getInstance().get(effectID); if (effect != null) { NBTTagCompound compound = effect.writeToNBT(false); compound.setString("PACKETTYPE", "Effect"); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java index 111200e90..65b82d91c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/EffectScriptPacket.java @@ -5,7 +5,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.network.*; -import kamkeel.npcs.network.enums.EnumItemPacketType; import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; @@ -15,12 +14,10 @@ import noppes.npcs.CustomNpcsPermissions; import noppes.npcs.LogWriter; import noppes.npcs.config.ConfigDebug; import noppes.npcs.config.ConfigScript; -import noppes.npcs.controllers.ScriptController; -import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.CustomEffectController; import noppes.npcs.controllers.data.CustomEffect; import noppes.npcs.controllers.data.EffectScriptHandler; import noppes.npcs.controllers.data.IScriptHandler; -import noppes.npcs.controllers.data.PlayerDataScript; import java.io.IOException; @@ -80,7 +77,7 @@ public final class EffectScriptPacket extends AbstractPacket { return; Action requestedAction = Action.values()[in.readInt()]; - CustomEffect effect = StatusEffectController.getInstance().get(in.readInt()); + CustomEffect effect = CustomEffectController.getInstance().get(in.readInt()); if(effect == null) return; diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 1ad854679..19ec78efa 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -658,7 +658,7 @@ public class NoppesUtilServer { public static void sendCustomEffectDataAll(EntityPlayerMP player) { Map map = new HashMap(); - for (CustomEffect effect : StatusEffectController.getInstance().customEffects.values()) { + for (CustomEffect effect : CustomEffectController.getInstance().customEffects.values()) { map.put(effect.name, effect.id); } ScrollDataPacket.sendScrollData(player, map); diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java index 3056bfe9c..8e5c10739 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageEffects.java @@ -18,7 +18,7 @@ import noppes.npcs.client.NoppesUtil; import noppes.npcs.client.gui.SubGuiEffectGeneral; import noppes.npcs.client.gui.util.*; import noppes.npcs.client.renderer.ImageData; -import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.CustomEffectController; import noppes.npcs.controllers.data.CustomEffect; import noppes.npcs.entity.EntityNPCInterface; import org.lwjgl.opengl.GL11; @@ -112,7 +112,7 @@ public class GuiNPCManageEffects extends GuiNPCInterface2 implements ICustomScro effect.readFromNBT(compound); setSelected(effect.name); if (effect.id != -1) { - StatusEffectController.getInstance().customEffects.replace(effect.id, effect); + CustomEffectController.getInstance().customEffects.replace(effect.id, effect); } initGui(); } diff --git a/src/main/java/noppes/npcs/controllers/StatusEffectController.java b/src/main/java/noppes/npcs/controllers/CustomEffectController.java similarity index 97% rename from src/main/java/noppes/npcs/controllers/StatusEffectController.java rename to src/main/java/noppes/npcs/controllers/CustomEffectController.java index 27f3bd814..045bace4b 100644 --- a/src/main/java/noppes/npcs/controllers/StatusEffectController.java +++ b/src/main/java/noppes/npcs/controllers/CustomEffectController.java @@ -1,7 +1,6 @@ package noppes.npcs.controllers; import kamkeel.npcs.controllers.SyncController; -import kamkeel.npcs.network.PacketClient; import kamkeel.npcs.network.enums.EnumSyncType; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -12,13 +11,12 @@ import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; import noppes.npcs.NoppesUtilServer; import noppes.npcs.api.entity.IPlayer; -import noppes.npcs.api.handler.IStatusEffectHandler; +import noppes.npcs.api.handler.ICustomEffectHandler; import noppes.npcs.api.handler.data.ICustomEffect; import noppes.npcs.controllers.data.CustomEffect; import noppes.npcs.controllers.data.EffectKey; import noppes.npcs.controllers.data.EffectScriptHandler; import noppes.npcs.controllers.data.PlayerEffect; -import noppes.npcs.scripted.event.PlayerEvent; import noppes.npcs.util.NBTJsonUtil; import java.io.*; @@ -31,9 +29,9 @@ import java.util.zip.GZIPInputStream; import static noppes.npcs.scripted.event.PlayerEvent.EffectEvent.ExpirationType; -public class StatusEffectController implements IStatusEffectHandler { +public class CustomEffectController implements ICustomEffectHandler { - public static StatusEffectController Instance = new StatusEffectController(); + public static CustomEffectController Instance = new CustomEffectController(); public HashMap> indexMapper = new HashMap<>(); public HashMap customEffectsSync = new HashMap<>(); @@ -45,9 +43,9 @@ public class StatusEffectController implements IStatusEffectHandler { private int lastUsedID = 0; public ConcurrentHashMap> playerEffects = new ConcurrentHashMap<>(); - public StatusEffectController() {} + public CustomEffectController() {} - public static StatusEffectController getInstance() { + public static CustomEffectController getInstance() { return Instance; } @@ -402,7 +400,7 @@ public class StatusEffectController implements IStatusEffectHandler { if (effect.duration == -100) continue; if (effect.duration <= 0) { - CustomEffect parent = StatusEffectController.Instance.get(effect.id); + CustomEffect parent = CustomEffectController.Instance.get(effect.id); if (parent != null) { parent.onRemoved(player, effect, ExpirationType.RUN_OUT); } diff --git a/src/main/java/noppes/npcs/controllers/data/CustomEffect.java b/src/main/java/noppes/npcs/controllers/data/CustomEffect.java index 96b0c661a..b186d94d8 100644 --- a/src/main/java/noppes/npcs/controllers/data/CustomEffect.java +++ b/src/main/java/noppes/npcs/controllers/data/CustomEffect.java @@ -5,9 +5,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.Constants; import noppes.npcs.NoppesUtilServer; import noppes.npcs.api.entity.IPlayer; -import noppes.npcs.api.event.IPlayerEvent; import noppes.npcs.api.handler.data.ICustomEffect; -import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.CustomEffectController; import noppes.npcs.scripted.event.PlayerEvent; import java.util.function.Consumer; @@ -154,7 +153,7 @@ public class CustomEffect implements ICustomEffect { @Override public ICustomEffect save() { - return StatusEffectController.getInstance().saveEffect(this); + return CustomEffectController.getInstance().saveEffect(this); } @Override @@ -256,7 +255,7 @@ public class CustomEffect implements ICustomEffect { if (compound.hasKey("ID")) id = compound.getInteger("ID"); else - id = StatusEffectController.Instance.getUnusedId(); + id = CustomEffectController.Instance.getUnusedId(); name = compound.getString("name"); if (compound.hasKey("menuName", Constants.NBT.TAG_STRING)) @@ -298,10 +297,10 @@ public class CustomEffect implements ICustomEffect { } public EffectScriptHandler getScriptHandler() { - return StatusEffectController.getInstance().customEffectScriptHandlers.get(this.id); + return CustomEffectController.getInstance().customEffectScriptHandlers.get(this.id); } public void setScriptHandler(EffectScriptHandler handler) { - StatusEffectController.getInstance().customEffectScriptHandlers.put(this.id, handler); + CustomEffectController.getInstance().customEffectScriptHandlers.put(this.id, handler); } public EffectScriptHandler getOrCreateScriptHandler() { diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerEffect.java b/src/main/java/noppes/npcs/controllers/data/PlayerEffect.java index ec0e35302..b06aec95e 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerEffect.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerEffect.java @@ -4,7 +4,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.api.entity.IPlayer; import noppes.npcs.api.handler.data.IPlayerEffect; -import noppes.npcs.controllers.StatusEffectController; +import noppes.npcs.controllers.CustomEffectController; public class PlayerEffect implements IPlayerEffect { public int id; @@ -22,7 +22,7 @@ public class PlayerEffect implements IPlayerEffect { int id = nbt.getInteger("Id"); int index = nbt.getInteger("Index"); if (id > 0) { - StatusEffectController controller = StatusEffectController.getInstance(); + CustomEffectController controller = CustomEffectController.getInstance(); boolean found = controller.has(id); // StatusEffectController.getInstance().customEffects.containsKey(id); if (found) { @@ -74,7 +74,7 @@ public class PlayerEffect implements IPlayerEffect { @Override public String getName() { - CustomEffect effect = StatusEffectController.getInstance().get(this.id); + CustomEffect effect = CustomEffectController.getInstance().get(this.id); if(effect != null) return effect.getName(); @@ -84,7 +84,7 @@ public class PlayerEffect implements IPlayerEffect { @Override public void performEffect(IPlayer player) { if (player != null && player.getMCEntity() != null && player.getMCEntity() instanceof EntityPlayer) { - CustomEffect effect = StatusEffectController.getInstance().get(this.id); + CustomEffect effect = CustomEffectController.getInstance().get(this.id); if(effect != null) effect.onTick((EntityPlayer) player.getMCEntity(), this); } From 324097025287d55a0969e2821400172e70a6f1d9 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 18:12:58 -0500 Subject: [PATCH 143/157] Hook up some more things --- build.gradle | 2 +- .../noppes/npcs/ScriptPlayerEventHandler.java | 10 +++ .../controllers/CustomEffectController.java | 50 ++++++++--- .../npcs/controllers/data/PlayerData.java | 14 ++- .../controllers/data/PlayerEffectData.java | 87 +++++++++++++++++++ 5 files changed, 147 insertions(+), 16 deletions(-) create mode 100644 src/main/java/noppes/npcs/controllers/data/PlayerEffectData.java diff --git a/build.gradle b/build.gradle index e1c581324..409a3d12e 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { id 'idea' } -version = "1.9.4-beta1" +version = "1.9.4-beta2.2" group= "kamkeel.customnpc-plus" archivesBaseName = "CustomNPC-Plus" diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index e9afafd53..df59cb7ee 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -23,6 +23,7 @@ import net.minecraftforge.event.entity.player.*; import net.minecraftforge.event.world.BlockEvent; import noppes.npcs.api.entity.IPlayer; import noppes.npcs.constants.EnumQuestType; +import noppes.npcs.controllers.CustomEffectController; import noppes.npcs.controllers.PartyController; import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.controllers.ScriptController; @@ -71,6 +72,13 @@ public class ScriptPlayerEventHandler { playerData.timers.update(); } + // TODO: Fix Config + // player.ticksExisted % ConfigDBCGameplay.CheckEffectsTick == 0 + if (player.ticksExisted % 10 == 0) + CustomEffectController.Instance.runEffects(player); + + if (player.ticksExisted % 20 == 0) + CustomEffectController.Instance.decrementEffects(player); Party party = playerData.getPlayerParty(); boolean trackingPartyQuest = playerData.questData.getTrackedQuest() != null && party != null && party.getQuest() != null && party.getQuest().getId() == playerData.questData.getTrackedQuest().getId(); @@ -422,6 +430,8 @@ public class ScriptPlayerEventHandler { PlayerDataScript handler = ScriptController.Instance.playerScripts; if(event.entityLiving instanceof EntityPlayer) { try { + CustomEffectController.getInstance().killEffects((EntityPlayer) event.entityLiving); + IPlayer scriptPlayer = (IPlayer) NpcAPI.Instance().getIEntity(event.entityLiving); EventHooks.onPlayerDeath(handler,scriptPlayer, event.source, source); } catch (Exception ignored) {} diff --git a/src/main/java/noppes/npcs/controllers/CustomEffectController.java b/src/main/java/noppes/npcs/controllers/CustomEffectController.java index 045bace4b..f68b73a52 100644 --- a/src/main/java/noppes/npcs/controllers/CustomEffectController.java +++ b/src/main/java/noppes/npcs/controllers/CustomEffectController.java @@ -92,14 +92,6 @@ public class CustomEffectController implements ICustomEffectHandler { } } - public boolean has(String name) { - return get(name) != null; - } - - public boolean has(int id) { - return get(id) != null; - } - @Override public ICustomEffect createEffect(String name) { if (has(name)) @@ -176,17 +168,47 @@ public class CustomEffectController implements ICustomEffectHandler { return lastUsedID; } - public CustomEffect get(String name) { - for (CustomEffect effect : customEffects.values()) { - if (effect.getName().equalsIgnoreCase(name)) { - return effect; + + public CustomEffect get(int id, int index) { + HashMap effectMap = indexMapper.get(index); + return effectMap != null ? effectMap.get(id) : null; + } + + public CustomEffect get(int id) { + return get(id, 0); + } + + public boolean has(int id, int index) { + HashMap effectMap = indexMapper.get(index); + return effectMap != null && effectMap.containsKey(id); + } + + public boolean has(int id) { + return has(id, 0); + } + + public CustomEffect get(String name, int index) { + HashMap effectMap = indexMapper.get(index); + if (effectMap != null) { + for (CustomEffect effect : effectMap.values()) { + if (effect.getName().equalsIgnoreCase(name)) { + return effect; + } } } return null; } - public CustomEffect get(int id) { - return customEffects.get(id); + public CustomEffect get(String name) { + return get(name, 0); + } + + public boolean has(String name, int index) { + return get(name, index) != null; + } + + public boolean has(String name) { + return has(name, 0); } public Map getPlayerEffects(EntityPlayer player) { diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerData.java b/src/main/java/noppes/npcs/controllers/data/PlayerData.java index 3852fffea..92e32e654 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerData.java @@ -43,7 +43,7 @@ public class PlayerData implements IExtendedEntityProperties, IPlayerData { public PlayerItemGiverData itemgiverData = new PlayerItemGiverData(this); public PlayerMailData mailData = new PlayerMailData(this); public AnimationData animationData = new AnimationData(this); - + public PlayerEffectData effectData = new PlayerEffectData(this); public DataTimers timers = new DataTimers(this); public DataSkinOverlays skinOverlays = new DataSkinOverlays(this); @@ -96,6 +96,7 @@ public class PlayerData implements IExtendedEntityProperties, IPlayerData { timers.readFromNBT(data); skinOverlays.readFromNBT(data); animationData.readFromNBT(data); + effectData.readFromNBT(data); if(player != null){ playername = player.getCommandSenderName(); @@ -135,6 +136,7 @@ public class PlayerData implements IExtendedEntityProperties, IPlayerData { timers.writeToNBT(compound); skinOverlays.writeToNBT(compound); animationData.writeToNBT(compound); + effectData.writeToNBT(compound); compound.setString("PlayerName", playername); compound.setString("UUID", uuid); @@ -164,6 +166,16 @@ public class PlayerData implements IExtendedEntityProperties, IPlayerData { factionData.loadNBTData(data); } + public NBTTagCompound getPlayerEffects(){ + NBTTagCompound compound = new NBTTagCompound(); + effectData.writeToNBT(compound); + return compound; + } + + public void setPlayerEffects(NBTTagCompound data){ + effectData.readFromNBT(data); + } + public NBTTagCompound getSyncNBTFull() { if(player != null){ playername = player.getCommandSenderName(); diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerEffectData.java b/src/main/java/noppes/npcs/controllers/data/PlayerEffectData.java new file mode 100644 index 000000000..7cde61002 --- /dev/null +++ b/src/main/java/noppes/npcs/controllers/data/PlayerEffectData.java @@ -0,0 +1,87 @@ +package noppes.npcs.controllers.data; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class PlayerEffectData { + private final PlayerData parent; + private ConcurrentHashMap effects = new ConcurrentHashMap<>(); + + public PlayerEffectData(PlayerData playerData){ + this.parent = playerData; + } + + public NBTTagCompound writeToNBT(NBTTagCompound compound) { + NBTTagList list = new NBTTagList(); + for (Map.Entry entry : effects.entrySet()) { + NBTTagCompound effectCompound = new NBTTagCompound(); + effectCompound.setInteger("id", entry.getKey().getId()); + effectCompound.setInteger("index", entry.getKey().getIndex()); + effectCompound.setInteger("duration", entry.getValue().duration); + effectCompound.setByte("level", entry.getValue().level); + list.appendTag(effectCompound); + } + compound.setTag("Effects", list); + return compound; + } + + public void readFromNBT(NBTTagCompound compound) { + HashSet newKeys = new HashSet<>(); + if (compound.hasKey("Effects")) { + NBTTagList list = compound.getTagList("Effects", 10); + for (int i = 0; i < list.tagCount(); i++) { + NBTTagCompound effectCompound = list.getCompoundTagAt(i); + int id = effectCompound.getInteger("id"); + int index = effectCompound.getInteger("index"); + int duration = effectCompound.getInteger("duration"); + byte level = effectCompound.getByte("level"); + EffectKey key = new EffectKey(id, index); + newKeys.add(key); + PlayerEffect effect = effects.get(key); + if (effect != null) { + effect.duration = duration; + effect.level = level; + } else { + effect = new PlayerEffect(id, duration, level); + effect.index = index; + effects.put(key, effect); + } + } + } + Iterator it = effects.keySet().iterator(); + while (it.hasNext()) { + EffectKey key = it.next(); + if (!newKeys.contains(key)) { + it.remove(); + } + } + } + + public ConcurrentHashMap getEffects() { + return effects; + } + + public void setEffects(ConcurrentHashMap effects) { + this.effects = effects; + } + + public PlayerEffect getPlayerEffect(int id, int index) { + return effects.get(new EffectKey(id, index)); + } + + public PlayerEffect getPlayerEffect(int id) { + return getPlayerEffect(id, 0); + } + + public boolean hasPlayerEffect(int id, int index) { + return effects.containsKey(new EffectKey(id, index)); + } + + public boolean hasPlayerEffect(int id) { + return hasPlayerEffect(id, 0); + } +} From 58cf52fd1f54cb16a8b41605a4024242800f4187 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 10 Feb 2025 18:33:05 -0500 Subject: [PATCH 144/157] Effect Map Register + Effect Command WIP --- build.gradle | 2 +- .../kamkeel/npcs/command/EffectCommand.java | 139 ++++++++++++++++++ .../controllers/CustomEffectController.java | 5 +- 3 files changed, 143 insertions(+), 3 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/command/EffectCommand.java diff --git a/build.gradle b/build.gradle index 409a3d12e..a726d1bf7 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { id 'idea' } -version = "1.9.4-beta2.2" +version = "1.9.4-beta2.3" group= "kamkeel.customnpc-plus" archivesBaseName = "CustomNPC-Plus" diff --git a/src/main/java/kamkeel/npcs/command/EffectCommand.java b/src/main/java/kamkeel/npcs/command/EffectCommand.java new file mode 100644 index 000000000..9286a30a9 --- /dev/null +++ b/src/main/java/kamkeel/npcs/command/EffectCommand.java @@ -0,0 +1,139 @@ +package kamkeel.npcs.command; + +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.CustomEffect; +import noppes.npcs.controllers.data.PlayerData; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class EffectCommand extends CommandKamkeelBase { + + @Override + public String getDescription() { + return "Custom Effect operations"; + } + + @Override + public String getCommandName() { + return "effect"; + } + + // info all + @SubCommand(desc = "Lists all effects") + public void infoAll(ICommandSender sender, String[] args) throws CommandException { + // TODO: FIX EFFECT COMMAND +// Set> effects = DBCEffectController.getInstance().standardEffects.entrySet(); +// Set> customEffects = DBCEffectController.getInstance().customEffects.entrySet(); +// +// if (effects.isEmpty() && customEffects.isEmpty()) { +// sendError(sender, "No effects found."); +// return; +// } +// +// sendResult(sender, "--------------------"); +// +// for (Map.Entry entry : effects) { +// sendResult(sender, String.format("\u00a7b%2$s \u00a77(ID%3$s: %1$s)", entry.getKey(), entry.getValue().getName(), entry.getValue().isCustom() ? " - CUSTOM" : " ")); +// } +// for (Map.Entry entry : customEffects) { +// sendResult(sender, String.format("\u00a7b%2$s \u00a77(ID%3$s: %1$s)", entry.getKey(), entry.getValue().getName(), entry.getValue().isCustom() ? " - CUSTOM" : " ")); +// } +// +// sendResult(sender, "--------------------"); + } + + @SubCommand(desc = "Gives a effect to a player", usage = "