Files
CustomNPC-Plus/src/main/java/kamkeel/npcs/network/PacketHandler.java
T

566 lines
26 KiB
Java
Raw Normal View History

2025-01-29 13:20:04 -05:00
package kamkeel.npcs.network;
2025-01-28 13:39:46 -05:00
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;
2025-02-01 21:23:49 -05:00
import cpw.mods.fml.relauncher.Side;
2025-01-28 14:37:07 -05:00
import io.netty.buffer.ByteBuf;
2025-01-30 13:58:09 -05:00
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.*;
import kamkeel.npcs.network.packets.data.npc.*;
import kamkeel.npcs.network.packets.data.script.ScriptOverlayClosePacket;
import kamkeel.npcs.network.packets.data.script.ScriptOverlayDataPacket;
import kamkeel.npcs.network.packets.data.script.ScriptedParticlePacket;
2025-02-03 03:31:04 +01:00
import kamkeel.npcs.network.packets.player.*;
2025-02-02 16:07:16 -05:00
import kamkeel.npcs.network.packets.request.*;
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;
2025-02-01 23:43:06 -05:00
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;
2025-02-02 22:31:39 -05:00
import kamkeel.npcs.network.packets.request.clone.*;
2025-02-02 03:01:12 -05:00
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;
2025-02-01 23:43:06 -05:00
import kamkeel.npcs.network.packets.request.dialog.*;
2025-02-10 16:42:03 -05:00
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;
2025-02-02 19:08:18 -05:00
import kamkeel.npcs.network.packets.request.faction.*;
2025-02-02 22:47:40 -05:00
import kamkeel.npcs.network.packets.request.feather.DimensionTeleportPacket;
2025-02-13 17:40:16 -05:00
import kamkeel.npcs.network.packets.request.item.ColorBrushPacket;
2025-02-13 02:09:50 -05:00
import kamkeel.npcs.network.packets.request.item.ColorSetPacket;
2025-02-02 03:28:13 -05:00
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;
2025-02-01 21:44:22 -05:00
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;
2025-02-02 02:25:21 -05:00
import kamkeel.npcs.network.packets.request.mainmenu.*;
2025-02-01 23:43:06 -05:00
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.*;
2025-02-02 17:38:42 -05:00
import kamkeel.npcs.network.packets.request.party.*;
2025-02-02 19:23:14 -05:00
import kamkeel.npcs.network.packets.request.pather.MovingPathGetPacket;
import kamkeel.npcs.network.packets.request.pather.MovingPathSavePacket;
2025-02-02 02:25:21 -05:00
import kamkeel.npcs.network.packets.request.playerdata.PlayerDataGetPacket;
import kamkeel.npcs.network.packets.request.playerdata.PlayerDataMapRegenPacket;
import kamkeel.npcs.network.packets.request.playerdata.PlayerDataRemovePacket;
2025-02-01 23:43:06 -05:00
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;
2025-02-02 16:07:16 -05:00
import kamkeel.npcs.network.packets.request.role.RoleCompanionUpdatePacket;
import kamkeel.npcs.network.packets.request.role.RoleGetPacket;
import kamkeel.npcs.network.packets.request.role.RoleSavePacket;
2025-02-02 23:15:53 -05:00
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;
2025-02-02 17:00:32 -05:00
import kamkeel.npcs.network.packets.request.tags.*;
2025-02-02 16:07:16 -05:00
import kamkeel.npcs.network.packets.request.transform.TransformGetPacket;
import kamkeel.npcs.network.packets.request.transform.TransformLoadPacket;
import kamkeel.npcs.network.packets.request.transform.TransformSavePacket;
2025-02-02 02:25:21 -05:00
import kamkeel.npcs.network.packets.request.transport.*;
2025-01-29 21:50:55 -05:00
import net.minecraft.entity.Entity;
2025-01-28 14:37:07 -05:00
import net.minecraft.entity.player.EntityPlayer;
2025-01-28 13:39:46 -05:00
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.NetHandlerPlayServer;
import noppes.npcs.CustomNpcs;
2025-01-30 18:13:04 -05:00
import noppes.npcs.CustomNpcsPermissions;
2025-01-29 15:08:24 -05:00
import noppes.npcs.LogWriter;
2025-01-30 18:13:04 -05:00
import noppes.npcs.NoppesUtilServer;
2025-02-01 21:44:22 -05:00
import noppes.npcs.config.ConfigMain;
2025-01-30 18:13:04 -05:00
import noppes.npcs.entity.EntityNPCInterface;
2025-01-28 13:39:46 -05:00
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
2025-01-28 13:39:46 -05:00
2025-02-01 21:44:22 -05:00
public class PacketHandler {
2025-01-28 13:39:46 -05:00
public static PacketHandler Instance;
2025-01-29 18:25:34 -05:00
// Channels
2025-01-30 13:58:09 -05:00
public Map<EnumChannelType, FMLEventChannel> channels = new Hashtable<>();
2025-01-28 13:39:46 -05:00
2025-01-30 14:16:39 -05:00
// Client to Server
public static final PacketChannel REQUEST_PACKET = new PacketChannel("CNPC+|Req", EnumChannelType.REQUEST);
// Client to Server - Typically information
2025-01-30 13:58:09 -05:00
public static final PacketChannel PLAYER_PACKET = new PacketChannel("CNPC+|Player", EnumChannelType.PLAYER);
2025-01-30 14:16:39 -05:00
// Server to Client
2025-01-30 13:58:09 -05:00
public static final PacketChannel DATA_PACKET = new PacketChannel("CNPC+|Data", EnumChannelType.DATA);
2025-01-28 14:37:07 -05:00
2025-02-06 12:26:09 -05:00
public static final List<PacketChannel> packetChannels = new ArrayList<>();
2025-01-28 13:39:46 -05:00
public PacketHandler() {
// Register Channels
2025-01-30 14:16:39 -05:00
packetChannels.add(REQUEST_PACKET);
packetChannels.add(PLAYER_PACKET);
2025-01-28 14:37:07 -05:00
packetChannels.add(DATA_PACKET);
2025-01-30 11:03:52 -05:00
2025-01-30 13:58:09 -05:00
this.registerDataPackets();
2025-02-01 23:43:06 -05:00
this.registerRequestPackets();
2025-02-02 23:03:34 +01:00
this.registerPlayerPackets();
2025-01-30 11:03:52 -05:00
}
2025-01-28 18:19:58 -05:00
2025-02-01 21:44:22 -05:00
public void registerRequestPackets(){
2025-02-02 16:07:16 -05:00
// NPC Packets
REQUEST_PACKET.registerPacket(new NpcClosePacket());
REQUEST_PACKET.registerPacket(new NpcDeletePacket());
2025-02-02 23:15:53 -05:00
// 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 ItemScriptErrorPacket());
2025-02-02 23:15:53 -05:00
REQUEST_PACKET.registerPacket(new NPCScriptPacket());
REQUEST_PACKET.registerPacket(new PlayerScriptPacket());
REQUEST_PACKET.registerPacket(new ScriptInfoPacket());
2025-02-10 16:38:50 -05:00
REQUEST_PACKET.registerPacket(new EffectScriptPacket());
2025-02-02 23:15:53 -05:00
2025-02-02 19:49:36 -05:00
// Cloner Packets
REQUEST_PACKET.registerPacket(new CloneListPacket());
REQUEST_PACKET.registerPacket(new SpawnMobPacket());
REQUEST_PACKET.registerPacket(new MobSpawnerPacket());
2025-02-02 22:31:39 -05:00
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());
2025-02-02 19:49:36 -05:00
2025-02-01 21:44:22 -05:00
// Linked Packets
REQUEST_PACKET.registerPacket(new LinkedGetAllPacket());
REQUEST_PACKET.registerPacket(new LinkedRemovePacket());
REQUEST_PACKET.registerPacket(new LinkedSetPacket());
REQUEST_PACKET.registerPacket(new LinkedAddPacket());
2025-02-01 23:43:06 -05:00
// 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());
2025-02-02 18:10:57 -05:00
REQUEST_PACKET.registerPacket(new DialogCategoriesGetPacket());
2025-02-01 23:43:06 -05:00
// Dialog Packets
REQUEST_PACKET.registerPacket(new DialogSavePacket());
REQUEST_PACKET.registerPacket(new DialogRemovePacket());
2025-02-02 18:10:57 -05:00
REQUEST_PACKET.registerPacket(new DialogsGetPacket());
REQUEST_PACKET.registerPacket(new DialogGetPacket());
2025-02-01 23:43:06 -05:00
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());
2025-02-02 19:08:18 -05:00
REQUEST_PACKET.registerPacket(new QuestCategoriesGetPacket());
2025-02-01 23:43:06 -05:00
// Quest Packets
2025-02-02 17:00:32 -05:00
REQUEST_PACKET.registerPacket(new QuestOpenGuiPacket());
2025-02-01 23:43:06 -05:00
REQUEST_PACKET.registerPacket(new QuestSavePacket());
REQUEST_PACKET.registerPacket(new QuestRemovePacket());
REQUEST_PACKET.registerPacket(new QuestDialogGetTitlePacket());
2025-02-02 17:38:42 -05:00
REQUEST_PACKET.registerPacket(new QuestLogToServerPacket());
REQUEST_PACKET.registerPacket(new QuestUntrackPacket());
2025-02-02 18:14:52 -05:00
REQUEST_PACKET.registerPacket(new QuestGetPacket());
2025-02-02 19:08:18 -05:00
REQUEST_PACKET.registerPacket(new QuestsGetPacket());
2025-02-01 23:43:06 -05:00
2025-02-02 02:25:21 -05:00
// Faction Packets
REQUEST_PACKET.registerPacket(new FactionSavePacket());
REQUEST_PACKET.registerPacket(new FactionRemovePacket());
REQUEST_PACKET.registerPacket(new FactionSetPacket());
2025-02-02 19:08:18 -05:00
REQUEST_PACKET.registerPacket(new FactionGetPacket());
REQUEST_PACKET.registerPacket(new FactionsGetPacket());
2025-02-02 02:25:21 -05:00
// Tag Packets
2025-02-02 17:00:32 -05:00
REQUEST_PACKET.registerPacket(new TagsGetPacket());
2025-02-02 18:10:57 -05:00
REQUEST_PACKET.registerPacket(new TagGetPacket());
2025-02-02 17:00:32 -05:00
REQUEST_PACKET.registerPacket(new TagsNpcGetPacket());
2025-02-02 02:25:21 -05:00
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());
2025-02-02 16:07:16 -05:00
// Remote Packets Packets
2025-02-01 23:43:06 -05:00
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());
2025-02-02 16:07:16 -05:00
// CustomGUI Packets
2025-02-02 03:01:12 -05:00
REQUEST_PACKET.registerPacket(new CustomGuiButtonPacket());
REQUEST_PACKET.registerPacket(new CustomGuiClosePacket());
REQUEST_PACKET.registerPacket(new CustomGuiUnfocusedPacket());
REQUEST_PACKET.registerPacket(new CustomScrollClickPacket());
2025-02-01 23:43:06 -05:00
2025-02-02 16:07:16 -05:00
// Job Packets
2025-02-02 03:28:13 -05:00
REQUEST_PACKET.registerPacket(new JobGetPacket());
REQUEST_PACKET.registerPacket(new JobSavePacket());
REQUEST_PACKET.registerPacket(new JobSpawnerAddPacket());
REQUEST_PACKET.registerPacket(new JobSpawnerRemovePacket());
2025-02-02 16:07:16 -05:00
// 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());
2025-02-02 17:00:32 -05:00
// Trader Packets
REQUEST_PACKET.registerPacket(new TraderMarketSavePacket());
2025-02-02 17:38:42 -05:00
// 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 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());
2025-02-02 17:00:32 -05:00
// Animation Packets
REQUEST_PACKET.registerPacket(new AnimationsGetPacket());
REQUEST_PACKET.registerPacket(new AnimationGetPacket());
REQUEST_PACKET.registerPacket(new AnimationRemovePacket());
REQUEST_PACKET.registerPacket(new AnimationSavePacket());
2025-02-02 19:23:14 -05:00
// Moving Path
REQUEST_PACKET.registerPacket(new MovingPathSavePacket());
REQUEST_PACKET.registerPacket(new MovingPathGetPacket());
2025-02-02 17:00:32 -05:00
2025-02-13 02:09:50 -05:00
// Tool Packets
2025-02-13 17:40:16 -05:00
REQUEST_PACKET.registerPacket(new ColorBrushPacket());
2025-02-13 02:09:50 -05:00
REQUEST_PACKET.registerPacket(new ColorSetPacket());
2025-02-10 16:42:03 -05:00
// Custom Effect Packets
REQUEST_PACKET.registerPacket(new EffectGetPacket());
REQUEST_PACKET.registerPacket(new EffectsGetPacket());
REQUEST_PACKET.registerPacket(new EffectSavePacket());
REQUEST_PACKET.registerPacket(new EffectRemovePacket());
2025-02-02 16:07:16 -05:00
// Other Packets
2025-02-02 16:09:46 -05:00
REQUEST_PACKET.registerPacket(new IsGuiOpenInform());
2025-02-01 23:43:06 -05:00
REQUEST_PACKET.registerPacket(new GuiRequestPacket());
2025-02-02 03:04:03 -05:00
REQUEST_PACKET.registerPacket(new DimensionsGetPacket());
2025-02-02 16:07:16 -05:00
REQUEST_PACKET.registerPacket(new MerchantUpdatePacket());
REQUEST_PACKET.registerPacket(new ModelDataSavePacket());
REQUEST_PACKET.registerPacket(new MailOpenSetupPacket());
2025-02-02 17:00:32 -05:00
REQUEST_PACKET.registerPacket(new TileEntityGetPacket());
2025-02-02 17:03:45 -05:00
REQUEST_PACKET.registerPacket(new TileEntitySavePacket());
2025-02-02 19:23:14 -05:00
REQUEST_PACKET.registerPacket(new MountPacket());
2025-02-02 22:47:40 -05:00
REQUEST_PACKET.registerPacket(new DimensionTeleportPacket());
2025-02-01 21:44:22 -05:00
}
2025-01-30 13:58:09 -05:00
public void registerDataPackets(){
2025-02-02 03:01:12 -05:00
// Data Packets
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());
2025-01-29 22:56:28 -05:00
2025-02-02 03:01:12 -05:00
// Data | GUI Packets
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());
2025-01-29 23:33:35 -05:00
2025-02-02 03:01:12 -05:00
// Data | NPC Packets
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());
2025-01-30 11:03:52 -05:00
2025-02-02 03:01:12 -05:00
// Data | Script Packets
DATA_PACKET.registerPacket(new ScriptedParticlePacket());
DATA_PACKET.registerPacket(new ScriptOverlayClosePacket());
DATA_PACKET.registerPacket(new ScriptOverlayDataPacket());
2025-01-30 12:16:16 -05:00
2025-02-02 03:01:12 -05:00
// Data | Large Packets
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());
2025-02-10 21:41:54 -05:00
DATA_PACKET.registerPacket(new SyncEffectPacket());
DATA_PACKET.registerPacket(new GuiDataPacket());
DATA_PACKET.registerPacket(new PartyDataPacket());
2025-01-28 13:39:46 -05:00
}
2025-02-02 23:03:34 +01:00
public void registerPlayerPackets() {
PLAYER_PACKET.registerPacket(new FollowerPacket());
2025-02-02 23:19:29 +01:00
PLAYER_PACKET.registerPacket(new TransportPacket());
2025-02-03 01:47:47 +01:00
PLAYER_PACKET.registerPacket(new BankActionPacket());
2025-02-03 01:32:49 +01:00
2025-02-03 04:16:24 +01:00
PLAYER_PACKET.registerPacket(new DialogSelectPacket());
2025-02-03 03:57:40 +01:00
PLAYER_PACKET.registerPacket(new CheckPlayerValue());
2025-02-03 03:31:04 +01:00
PLAYER_PACKET.registerPacket(new MailActionPacket());
PLAYER_PACKET.registerPacket(new MailActionPacket.MailSendPacket());
2025-02-03 04:45:03 +01:00
PLAYER_PACKET.registerPacket(new SaveSignPacket());
PLAYER_PACKET.registerPacket(new SaveBookPacket());
2025-02-03 04:29:07 +01:00
PLAYER_PACKET.registerPacket(new CompanionActionPacket());
2025-02-03 04:32:59 +01:00
PLAYER_PACKET.registerPacket(new GetNPCRole());
2025-02-03 01:32:49 +01:00
PLAYER_PACKET.registerPacket(new InputDevicePacket());
2025-02-03 03:41:01 +01:00
PLAYER_PACKET.registerPacket(new ScreenSizePacket());
2025-02-02 23:03:34 +01:00
}
2025-02-06 12:26:09 -05:00
public void registerChannels() {
2025-01-28 14:37:07 -05:00
for (PacketChannel channel : packetChannels) {
2025-01-29 18:25:34 -05:00
FMLEventChannel eventChannel =
NetworkRegistry.INSTANCE.newEventDrivenChannel(channel.getChannelName());
2025-01-28 13:39:46 -05:00
eventChannel.register(this);
2025-01-28 14:37:07 -05:00
channels.put(channel.getChannelType(), eventChannel);
2025-01-28 13:39:46 -05:00
}
}
2025-01-30 13:58:09 -05:00
public PacketChannel getPacketChannel(EnumChannelType type) {
2025-01-29 15:04:19 -05:00
return packetChannels.stream()
.filter(channel -> channel.getChannelType() == type)
.findFirst()
.orElse(null);
2025-01-28 13:39:46 -05:00
}
2025-01-28 18:14:18 -05:00
public FMLEventChannel getEventChannel(AbstractPacket abstractPacket){
2025-01-29 15:04:19 -05:00
PacketChannel packetChannel = getPacketChannel(abstractPacket.getChannel().getChannelType());
if (packetChannel == null) {
return null;
}
return channels.get(packetChannel.getChannelType());
2025-01-28 18:14:18 -05:00
}
@SubscribeEvent
public void onServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) {
2025-02-01 21:23:49 -05:00
handlePacket(event.packet, ((NetHandlerPlayServer) event.handler).playerEntity, Side.SERVER);
2025-01-28 18:14:18 -05:00
}
@SubscribeEvent
public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) {
2025-02-01 21:23:49 -05:00
handlePacket(event.packet, CustomNpcs.proxy.getPlayer(), Side.CLIENT);
2025-01-28 18:14:18 -05:00
}
2025-02-01 21:23:49 -05:00
private void handlePacket(FMLProxyPacket packet, EntityPlayer player, Side side) {
2025-01-28 18:14:18 -05:00
ByteBuf buf = packet.payload();
try {
int packetTypeOrdinal = buf.readInt();
2025-01-30 13:58:09 -05:00
EnumChannelType packetType = EnumChannelType.values()[packetTypeOrdinal];
2025-01-29 18:25:34 -05:00
2025-01-29 15:04:19 -05:00
PacketChannel packetChannel = getPacketChannel(packetType);
if (packetChannel == null) {
2025-01-29 15:08:24 -05:00
LogWriter.error("Error: Packet channel is null for packet type: " + packetType);
2025-01-29 15:04:19 -05:00
return;
}
2025-01-29 18:25:34 -05:00
2025-01-29 15:04:19 -05:00
int packetId = buf.readInt();
AbstractPacket abstractPacket = packetChannel.packets.get(packetId);
if (abstractPacket == null) {
2025-01-29 15:08:24 -05:00
LogWriter.error("Error: Abstract packet is null for packet ID: " + packetId);
2025-01-29 15:04:19 -05:00
return;
2025-01-28 18:14:18 -05:00
}
2025-01-29 18:25:34 -05:00
2025-02-01 21:23:49 -05:00
if(side == Side.SERVER){
2025-02-01 21:44:22 -05:00
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;
}
2025-02-01 21:23:49 -05:00
// Check if permission is allowed
if(abstractPacket.getPermission() != null && !CustomNpcsPermissions.hasPermission(player, abstractPacket.getPermission())){
return;
}
2025-01-30 18:13:04 -05:00
2025-02-01 21:23:49 -05:00
// Check for required NPC
2025-01-30 18:13:04 -05:00
EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player);
2025-02-01 21:23:49 -05:00
if(abstractPacket.needsNPC() && npc == null){
2025-01-30 18:13:04 -05:00
return;
2025-02-01 21:23:49 -05:00
}
2025-01-30 18:13:04 -05:00
abstractPacket.setNPC(npc);
2025-01-30 14:16:39 -05:00
}
2025-01-29 18:25:34 -05:00
// Let the packet parse the rest
2025-01-29 15:04:19 -05:00
abstractPacket.receiveData(buf, player);
2025-01-29 18:25:34 -05:00
2025-01-29 15:04:19 -05:00
} catch (IndexOutOfBoundsException e) {
2025-01-29 15:08:24 -05:00
LogWriter.error("Error: IndexOutOfBoundsException in handlePacket: " + e.getMessage());
2025-01-29 19:43:45 -05:00
e.printStackTrace();
2025-01-28 18:14:18 -05:00
} catch (Exception e) {
2025-01-29 15:08:24 -05:00
LogWriter.error("Error: Exception in handlePacket: " + e.getMessage());
2025-01-29 19:43:45 -05:00
e.printStackTrace();
2025-01-28 18:14:18 -05:00
}
}
2025-01-29 18:25:34 -05:00
/**
* 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<FMLProxyPacket> proxyPackets = packet.generatePackets();
if (proxyPackets.isEmpty()) {
LogWriter.error("Warning: No packets generated for " + packet.getClass().getName());
}
for (FMLProxyPacket proxy : proxyPackets) {
action.send(proxy);
2025-01-28 18:14:18 -05:00
}
}
2025-01-29 18:25:34 -05:00
// ------------------------------------------------------------------------
// Public API methods for sending
2025-01-29 13:28:14 -05:00
public void sendToPlayer(AbstractPacket packet, EntityPlayerMP player) {
2025-01-29 15:04:19 -05:00
FMLEventChannel eventChannel = getEventChannel(packet);
if (eventChannel == null) {
2025-01-29 15:08:24 -05:00
LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName());
2025-01-29 15:04:19 -05:00
return;
}
2025-01-29 18:25:34 -05:00
sendAllPackets(packet, p -> eventChannel.sendTo(p, player));
2025-01-29 13:28:14 -05:00
}
2025-01-28 18:14:18 -05:00
public void sendToServer(AbstractPacket packet) {
2025-01-29 15:04:19 -05:00
FMLEventChannel eventChannel = getEventChannel(packet);
if (eventChannel == null) {
2025-01-29 15:08:24 -05:00
LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName());
2025-01-29 15:04:19 -05:00
return;
}
2025-01-29 18:25:34 -05:00
sendAllPackets(packet, eventChannel::sendToServer);
2025-01-28 18:14:18 -05:00
}
public void sendToAll(AbstractPacket packet) {
2025-01-29 15:04:19 -05:00
FMLEventChannel eventChannel = getEventChannel(packet);
if (eventChannel == null) {
2025-01-29 15:08:24 -05:00
LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName());
2025-01-29 15:04:19 -05:00
return;
}
2025-01-29 18:25:34 -05:00
sendAllPackets(packet, eventChannel::sendToAll);
2025-01-28 18:14:18 -05:00
}
2025-01-29 21:50:55 -05:00
public void sendToDimension(AbstractPacket packet, final int dimensionId) {
2025-01-29 15:04:19 -05:00
FMLEventChannel eventChannel = getEventChannel(packet);
if (eventChannel == null) {
2025-01-29 15:08:24 -05:00
LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName());
2025-01-29 15:04:19 -05:00
return;
}
2025-01-29 21:50:55 -05:00
sendAllPackets(packet, p -> eventChannel.sendToDimension(p, dimensionId));
2025-01-28 18:14:18 -05:00
}
2025-01-29 21:50:55 -05:00
public void sendTracking(AbstractPacket packet, final Entity entity) {
2025-01-29 15:04:19 -05:00
FMLEventChannel eventChannel = getEventChannel(packet);
if (eventChannel == null) {
2025-01-29 15:08:24 -05:00
LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName());
2025-01-29 15:04:19 -05:00
return;
}
2025-01-29 21:50:55 -05:00
final NetworkRegistry.TargetPoint point = new NetworkRegistry.TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 60);
sendAllPackets(packet, p -> eventChannel.sendToAllAround(p, point));
2025-01-29 18:25:34 -05:00
}
// Simple functional interface to unify the "send" action
private interface SendAction {
void send(FMLProxyPacket proxy);
2025-01-28 18:14:18 -05:00
}
2025-01-28 13:39:46 -05:00
}