diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/Command.java b/src/main/java/io/github/znetworkw/znpcservers/commands/Command.java index 1a53a2c..e6b68c9 100644 --- a/src/main/java/io/github/znetworkw/znpcservers/commands/Command.java +++ b/src/main/java/io/github/znetworkw/znpcservers/commands/Command.java @@ -1,9 +1,9 @@ package io.github.znetworkw.znpcservers.commands; import com.google.common.collect.Iterables; -import io.github.znetworkw.znpcservers.commands.exception.CommandException; -import io.github.znetworkw.znpcservers.commands.exception.CommandExecuteException; -import io.github.znetworkw.znpcservers.commands.exception.CommandPermissionException; +import io.github.znetworkw.znpcservers.exception.CommandException; +import io.github.znetworkw.znpcservers.exception.CommandExecuteException; +import io.github.znetworkw.znpcservers.exception.CommandPermissionException; import io.github.znetworkw.znpcservers.reflection.Reflections; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/CommandInvoker.java b/src/main/java/io/github/znetworkw/znpcservers/commands/CommandInvoker.java index 90fb902..b3f583c 100644 --- a/src/main/java/io/github/znetworkw/znpcservers/commands/CommandInvoker.java +++ b/src/main/java/io/github/znetworkw/znpcservers/commands/CommandInvoker.java @@ -1,8 +1,8 @@ package io.github.znetworkw.znpcservers.commands; -import io.github.znetworkw.znpcservers.commands.exception.CommandException; -import io.github.znetworkw.znpcservers.commands.exception.CommandExecuteException; -import io.github.znetworkw.znpcservers.commands.exception.CommandPermissionException; +import io.github.znetworkw.znpcservers.exception.CommandException; +import io.github.znetworkw.znpcservers.exception.CommandExecuteException; +import io.github.znetworkw.znpcservers.exception.CommandPermissionException; import org.bukkit.entity.Player; import java.lang.reflect.Method; diff --git a/src/main/java/io/github/znetworkw/znpcservers/exception/ChannelRegistrationException.java b/src/main/java/io/github/znetworkw/znpcservers/exception/ChannelRegistrationException.java new file mode 100644 index 0000000..c6b62eb --- /dev/null +++ b/src/main/java/io/github/znetworkw/znpcservers/exception/ChannelRegistrationException.java @@ -0,0 +1,23 @@ +package io.github.znetworkw.znpcservers.exception; + +import com.google.common.collect.ImmutableList; + +import java.util.List; + +public class ChannelRegistrationException extends Throwable { + private final Throwable throwable; + private final List channelNames; + + public ChannelRegistrationException(Throwable t, List channelNames) { + this.throwable = t; + this.channelNames = new ImmutableList.Builder().addAll(channelNames).build(); + } + + public Throwable getThrowable() { + return throwable; + } + + public List getChannelNames() { + return channelNames; + } +} diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandException.java b/src/main/java/io/github/znetworkw/znpcservers/exception/CommandException.java similarity index 86% rename from src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandException.java rename to src/main/java/io/github/znetworkw/znpcservers/exception/CommandException.java index 3b20571..ffc7fb8 100644 --- a/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandException.java +++ b/src/main/java/io/github/znetworkw/znpcservers/exception/CommandException.java @@ -1,4 +1,4 @@ -package io.github.znetworkw.znpcservers.commands.exception; +package io.github.znetworkw.znpcservers.exception; import java.io.Serial; diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandExecuteException.java b/src/main/java/io/github/znetworkw/znpcservers/exception/CommandExecuteException.java similarity index 74% rename from src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandExecuteException.java rename to src/main/java/io/github/znetworkw/znpcservers/exception/CommandExecuteException.java index 79661f4..126db39 100644 --- a/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandExecuteException.java +++ b/src/main/java/io/github/znetworkw/znpcservers/exception/CommandExecuteException.java @@ -1,4 +1,4 @@ -package io.github.znetworkw.znpcservers.commands.exception; +package io.github.znetworkw.znpcservers.exception; public class CommandExecuteException extends CommandException { public CommandExecuteException(String message, Throwable cause) { diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandPermissionException.java b/src/main/java/io/github/znetworkw/znpcservers/exception/CommandPermissionException.java similarity index 72% rename from src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandPermissionException.java rename to src/main/java/io/github/znetworkw/znpcservers/exception/CommandPermissionException.java index ab05159..6fb767d 100644 --- a/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandPermissionException.java +++ b/src/main/java/io/github/znetworkw/znpcservers/exception/CommandPermissionException.java @@ -1,4 +1,4 @@ -package io.github.znetworkw.znpcservers.commands.exception; +package io.github.znetworkw.znpcservers.exception; public class CommandPermissionException extends CommandException { public CommandPermissionException(String message) { diff --git a/src/main/java/io/github/znetworkw/znpcservers/user/ZUser.java b/src/main/java/io/github/znetworkw/znpcservers/user/ZUser.java index a9c55dc..bd01706 100644 --- a/src/main/java/io/github/znetworkw/znpcservers/user/ZUser.java +++ b/src/main/java/io/github/znetworkw/znpcservers/user/ZUser.java @@ -1,6 +1,7 @@ package io.github.znetworkw.znpcservers.user; import com.mojang.authlib.GameProfile; +import io.github.znetworkw.znpcservers.exception.ChannelRegistrationException; import io.github.znetworkw.znpcservers.npc.NPC; import io.github.znetworkw.znpcservers.npc.NPCAction; import io.github.znetworkw.znpcservers.npc.event.ClickType; @@ -59,7 +60,7 @@ public class ZUser { @Override public void run() { - Exception ex = user.tryRegisterChannel(); + ChannelRegistrationException ex = user.tryRegisterChannel(); Player player = user.toPlayer(); if (player == null) { tries--; @@ -75,20 +76,22 @@ public class ZUser { ChatColor.WHITE + "Couldn't inject interaction detector to channel\n" + ChatColor.WHITE + "Please report this at https://github.com/Pyrbu/ZNPCsPlus"); ZNPCsPlus.LOGGER.severe("Couldn't inject interaction detector to channel for player " + player.getName() + " (" + player.getUniqueId() + ")"); + ZNPCsPlus.LOGGER.severe("Channel names: " + ex.getChannelNames()); ex.printStackTrace(); } } - private Exception tryRegisterChannel() { + private ChannelRegistrationException tryRegisterChannel() { + Channel channel = null; try { - Channel channel = (Channel) Reflections.CHANNEL_FIELD.get().get(Reflections.NETWORK_MANAGER_FIELD.get().get(this.playerConnection)); + channel = (Channel) Reflections.CHANNEL_FIELD.get().get(Reflections.NETWORK_MANAGER_FIELD.get().get(this.playerConnection)); if (channel.pipeline().names().contains("npc_interact")) channel.pipeline().remove("npc_interact"); channel.pipeline().addAfter("decoder", "npc_interact", new ZNPCSocketDecoder()); return null; } catch (IllegalAccessException e) { throw new RuntimeException("illegal access exception while trying to register npc_interact channel"); } catch (NoSuchElementException e) { - return e; + return new ChannelRegistrationException(e, channel == null ? List.of() : channel.pipeline().names()); } }