#Access player from variety of events

1 messages · Page 1 of 1 (latest)

gray oyster
#

I have this code:

public static void registerEvent(Class<? extends Event> eventClass, EventExecutor executor) {
    Bukkit.getPluginManager().registerEvent(eventClass, listener,
            EventPriority.NORMAL, executor, plugin);
}

that is used by this code:

public void registerEvent(Class<? extends Event> eventClass, EventExecutor executor, String charmID) {
    CharmEventManager.getInstance().registerEvent(eventClass, (listener, event) -> {
        ArrayList<String> equippedCharms = CharmManager.getEquippedCharms(player);

        if (!equippedCharms.contains(id)) return;

        executor.execute(listener, event);
    });
}

In the second code, where it says getEquippedCharms(player) I need to pass a player, and all events that use that code will have access to a player through one of their methods, the issue is I'm not sure how to get that player
is there a way?

gray oyster
#

i have a sort of dumb solution

#
public void registerEvent(Class<? extends Event> eventClass, EventExecutor executor) {
    CharmEventManager.getInstance().registerEvent(eventClass, (listener, event) -> {

        Player player;
        if (event instanceof PlayerEvent) {
            player = ((PlayerEvent) event).getPlayer();
        } else if (event instanceof EntityEvent) {
            Entity entity = ((EntityEvent) event).getEntity();
            if (entity instanceof Player) {
                player = (Player) entity;
            } else {
                return;
            }
        } else {
            return;
        }

        Map<String, Boolean> equippedCharms = CharmManager.generateEquippedCharms(player);

        if (!equippedCharms.get(id)) return;

        executor.execute(listener, event);
    });
}