Skip to content

Instantly share code, notes, and snippets.

@Tomut0
Last active November 29, 2022 20:39
Show Gist options
  • Save Tomut0/9cfe052d6b68b0a09f6abbafddcfb007 to your computer and use it in GitHub Desktop.
Save Tomut0/9cfe052d6b68b0a09f6abbafddcfb007 to your computer and use it in GitHub Desktop.
private ClanHolder getHolder() {
try {
Clan clan = (Clan) event.getDeclaredMethod("getClan").invoke(event);
ClanPlayer sender = ((ClanPlayer) event.getDeclaredMethod("getSender").invoke(event));
ClanPlayer issuer = ((ClanPlayer) event.getDeclaredMethod("getIssuer").invoke(event));
Player player = (Player) event.getDeclaredMethod("getPlayer").invoke(event);
if (sender != null) return new ClanHolder(sender.toPlayer(), clan);
if (issuer != null) return new ClanHolder(issuer.toPlayer(), clan);
if (player != null) return new ClanHolder(player, clan);
// These methods require a unique way to retrieve issuer
return switch (eventName) {
case "CreateClanEvent" -> new ClanHolder(clan.getLeaders().get(0).toPlayer(), clan);
case "ClanBalanceUpdateEvent" -> {
Player updater = Bukkit.getPlayer(((BankOperator) event.getDeclaredMethod("getUpdater").invoke(event)).getName());
yield new ClanHolder(updater, clan);
}
case "RequestEvent", "RequestFinishedEvent" -> {
Player requester = ((Request) event.getDeclaredMethod("getRequest").invoke(event)).getRequester().toPlayer();
yield new ClanHolder(requester, clan);
}
case "ClanPlayerTeleportEvent" -> {
Player clanPlayer = ((ClanPlayer) event.getDeclaredMethod("getClanPlayer").invoke(event)).toPlayer();
yield new ClanHolder(clanPlayer, clan);
}
default -> null;
};
} catch (NoSuchMethodException ignored) {
} catch (InvocationTargetException | IllegalAccessException ex) {
SCDenizenBridge.getInstance().getLogger().log(Level.SEVERE, "Unexpected error while trying to get {} event data: {}", new String[]{event.getSimpleName(), ex.getMessage()});
}
return null;
}
private record ClanHolder(@Nullable Player player, @Nullable Clan clan) {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment