diff --git a/src/main/java/au/lupine/quarters/api/event/QuarterEntryNotificationEvent.java b/src/main/java/au/lupine/quarters/api/event/QuarterEntryNotificationEvent.java new file mode 100644 index 0000000..53dd52e --- /dev/null +++ b/src/main/java/au/lupine/quarters/api/event/QuarterEntryNotificationEvent.java @@ -0,0 +1,49 @@ +package au.lupine.quarters.api.event; + +import au.lupine.quarters.object.entity.Quarter; +import net.kyori.adventure.text.Component; +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class QuarterEntryNotificationEvent extends Event { + private static final HandlerList HANDLER_LIST = new HandlerList(); + + private final Player player; + private final Quarter quarter; + private List messageComponents; + + public QuarterEntryNotificationEvent(@NotNull Player player, @NotNull Quarter quarter, @NotNull List messageComponents) { + this.player = player; + this.quarter = quarter; + this.messageComponents = messageComponents; + } + + public @NotNull Player getPlayer() { + return player; + } + + public @NotNull Quarter getQuarter() { + return quarter; + } + + public List getMessageComponents() { + return messageComponents; + } + + public void setMessageComponents(@NotNull List messageComponents) { + this.messageComponents = messageComponents; + } + + @Override + public @NotNull HandlerList getHandlers() { + return HANDLER_LIST; + } + + public static HandlerList getHandlerList() { + return HANDLER_LIST; + } +} diff --git a/src/main/java/au/lupine/quarters/listener/QuarterEntryListener.java b/src/main/java/au/lupine/quarters/listener/QuarterEntryListener.java index 35d95c8..22dcf22 100644 --- a/src/main/java/au/lupine/quarters/listener/QuarterEntryListener.java +++ b/src/main/java/au/lupine/quarters/listener/QuarterEntryListener.java @@ -1,6 +1,7 @@ package au.lupine.quarters.listener; import au.lupine.quarters.api.QuartersMessaging; +import au.lupine.quarters.api.event.QuarterEntryNotificationEvent; import au.lupine.quarters.api.manager.ConfigManager; import au.lupine.quarters.api.manager.QuarterManager; import au.lupine.quarters.api.manager.ResidentMetadataManager; @@ -99,14 +100,18 @@ private void sendEntryNotification(Quarter quarter, Resident resident) { components.add(price); } + Player player = resident.getPlayer(); + if (player == null) return; + + QuarterEntryNotificationEvent event = new QuarterEntryNotificationEvent(player, quarter, components); + event.callEvent(); + components = event.getMessageComponents(); + JoinConfiguration jc = JoinConfiguration.separator(Component.text(" - ", TextColor.color(QuartersMessaging.PLUGIN_COLOUR.getRGB()))); Component notification = Component.join(jc, components); EntryNotificationType notificationType = ResidentMetadataManager.getInstance().getEntryNotificationType(resident); - Player player = resident.getPlayer(); - if (player == null) return; - switch (notificationType) { case ACTION_BAR -> player.sendActionBar(notification); case CHAT -> QuartersMessaging.sendMessage(player, notification);