Skip to content
This repository has been archived by the owner on Jan 20, 2024. It is now read-only.

Commit

Permalink
Project: add listeners.yml
Browse files Browse the repository at this point in the history
  • Loading branch information
TheFaser committed Dec 3, 2023
1 parent 6954d5d commit 490234e
Show file tree
Hide file tree
Showing 30 changed files with 178 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public ChatBubbleSpawnListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public FPlayerActionListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler(priority = EventPriority.LOWEST)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public MarkSpawnListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public SpitHitListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down
6 changes: 5 additions & 1 deletion src/main/java/net/flectone/chat/manager/FileManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ public class FileManager {
@Getter
private FConfiguration modules;
@Getter
private FConfiguration listeners;
@Getter
private FConfiguration commands;
@Getter
private FConfiguration sounds;
Expand All @@ -58,6 +60,7 @@ public void init() {
sounds = Type.SOUNDS.load();
integrations = Type.INTEGRATIONS.load();
cooldowns = Type.COOLDOWNS.load();
listeners = Type.LISTENERS.load();

if (modules.getBoolean("player-message.swear-protection.enable")) {
swears = Type.SWEARS.load();
Expand Down Expand Up @@ -170,7 +173,8 @@ public enum Type {
SOUNDS(SETTINGS_FOLDER, "sounds"),
INTEGRATIONS(SETTINGS_FOLDER, "integrations"),
SWEARS(SETTINGS_FOLDER, "swears", false),
COOLDOWNS(SETTINGS_FOLDER, "cooldowns");
COOLDOWNS(SETTINGS_FOLDER, "cooldowns"),
LISTENERS(SETTINGS_FOLDER, "listeners");

@Getter
private FConfiguration file;
Expand Down
54 changes: 51 additions & 3 deletions src/main/java/net/flectone/chat/module/FListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,14 @@
import net.flectone.chat.model.file.FConfiguration;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.*;
import org.bukkit.plugin.EventExecutor;
import org.bukkit.plugin.PluginManager;
import org.jetbrains.annotations.NotNull;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

@Getter
public abstract class FListener implements Listener, FAction {

Expand Down Expand Up @@ -41,7 +46,50 @@ public String getPermission() {
return "flectonechat." + getModule();
}

public void register() {
Bukkit.getServer().getPluginManager().registerEvents(this, FlectoneChat.getPlugin());
// https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/browse/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java#228
public void registerEvents() {
PluginManager pluginManager = Bukkit.getServer().getPluginManager();

for (final Method method : this.getClass().getMethods()) {
final EventHandler eh = method.getAnnotation(EventHandler.class);
if (eh == null) continue;

if (method.isBridge() || method.isSynthetic()) {
continue;
}

final Class<? extends Event> eventClass = method.getParameterTypes()[0].asSubclass(Event.class);
method.setAccessible(true);

EventExecutor executor = (listener, event) -> {
try {
if (!eventClass.isAssignableFrom(event.getClass())) {
return;
}
method.invoke(listener, event);
} catch (InvocationTargetException ex) {
throw new EventException(ex.getCause());
} catch (Throwable t) {
throw new EventException(t);
}
};

EventPriority eventPriority = getEventPriority(eventClass.getSimpleName());

pluginManager.registerEvent(eventClass, this, eventPriority, executor,
FlectoneChat.getPlugin(), false);
}
}

public EventPriority getEventPriority(@NotNull String eventName) {

if (getModule() == null || eventName.isEmpty()) return EventPriority.NORMAL;

String priorityName = plugin.getFileManager().getListeners().getString(getModule() + "." + eventName);

return !priorityName.isEmpty()
? EventPriority.valueOf(priorityName.toUpperCase())
: EventPriority.NORMAL;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public void init() {
public void send(@NotNull Player player) {
FPlayer fPlayer = playerManager.get(player);
if (fPlayer == null) return;
if (hasNoPermission(player)) return;

String autoMessage = fPlayer.getSettings().getValue(Settings.Type.AUTO_MESSAGE);
boolean enabled = autoMessage == null || Integer.parseInt(autoMessage) != -1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import net.flectone.chat.builder.MessageBuilder;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.jetbrains.annotations.NotNull;

Expand All @@ -19,10 +18,10 @@ public ChatBubbleListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler
public void playerChatEvent(@NotNull AsyncPlayerChatEvent event) {
if (event.isCancelled() || event.getRecipients().isEmpty()) return;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public MaintenanceListener(FModule module) {

@Override
public void init() {
register();
registerEvents();

fileManager = FlectoneChat.getPlugin().getFileManager();
commands = fileManager.getCommands();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public SpyListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public ItemSignListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public ItemUnsignListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.jetbrains.annotations.NotNull;
Expand All @@ -24,10 +23,10 @@ public KnockingListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler(priority = EventPriority.LOWEST)
@EventHandler
public void playerKnockingEvent(@NotNull PlayerInteractEvent event) {
Player player = event.getPlayer();
if (!event.getAction().equals(Action.LEFT_CLICK_BLOCK)) return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public MarkListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public SpitListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import net.flectone.chat.module.FListener;
import net.flectone.chat.module.FModule;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerInteractEvent;
Expand All @@ -17,10 +16,10 @@ public AfkTimeoutListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler(priority = EventPriority.LOWEST)
@EventHandler
public void playerChatEvent(@NotNull AsyncPlayerChatEvent event) {
((AfkTimeoutModule) getModule()).setAfk(event.getPlayer(), false, "chat");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@ public RightClickListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
public void rightClickEvent(@NotNull PlayerInteractAtEntityEvent event) {
if (event.isCancelled()) return;
if (!(event.getRightClicked() instanceof Player player)) return;
if (!getModule().isEnabledFor(player)) return;
if (hasNoPermission(player)) return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public WorldListener(FModule module) {

@Override
public void init() {
register();
registerEvents();

Bukkit.getScheduler().runTaskLater(FlectoneChat.getPlugin(), () ->
Bukkit.getOnlinePlayers().forEach(this::setWorld), 20L);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public AnvilListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public BookListener(FModule module) {

@Override
public void init() {
register();
registerEvents();

playerManager = FlectoneChat.getPlugin().getPlayerManager();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.jetbrains.annotations.NotNull;

Expand All @@ -28,10 +27,10 @@ public ChatListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler(priority = EventPriority.LOWEST)
@EventHandler
public void playerChatEvent(@NotNull AsyncPlayerChatEvent event) {
if (event.isCancelled()) return;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public SignListener(FModule module) {

@Override
public void init() {
register();
registerEvents();

playerManager = FlectoneChat.getPlugin().getPlayerManager();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import net.flectone.chat.module.FModule;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerJoinEvent;
import org.jetbrains.annotations.NotNull;

Expand All @@ -21,12 +20,12 @@ public BrandListener(FModule module) {

@Override
public void init() {
register();
registerEvents();

moduleManager = FlectoneChat.getPlugin().getModuleManager();
}

@EventHandler(priority = EventPriority.LOWEST)
@EventHandler
public void brandEvent(@NotNull PlayerJoinEvent event) {
Player player = event.getPlayer();
if (!getModule().isEnabledFor(player)) return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public StatusListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public TabListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public AdvancementListener(FModule module) {

@Override
public void init() {
register();
registerEvents();
}

@EventHandler
Expand Down

0 comments on commit 490234e

Please sign in to comment.