From c0245fa014aaedf9c522ef1ea4b49e6a4b59a33c Mon Sep 17 00:00:00 2001 From: unurled Date: Thu, 14 Mar 2024 17:58:47 +0100 Subject: [PATCH] level up event --- .../sr/commands/admin/LevelCommand.java | 2 + .../sr/components/player/PlayerManager.java | 10 +++ .../sr/events/player/PlayerLevelUpEvent.java | 67 +++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 src/main/java/me/unurled/sacredrealms/sr/events/player/PlayerLevelUpEvent.java diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/LevelCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/LevelCommand.java index c0670e5..d09382f 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/LevelCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/LevelCommand.java @@ -50,9 +50,11 @@ public class LevelCommand implements TabExecutor { SRPlayer player = pm.getPlayer(target.getUniqueId()); if (player != null) { + int level = player.getLevel(); player.setLevel(Integer.parseInt(args[1])); // save player data pm.savePlayer(player); + pm.levelUp(player, level); } else { sender.sendMessage("Player not found."); } diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/player/PlayerManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/player/PlayerManager.java index c948fcf..1ae8252 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/player/PlayerManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/player/PlayerManager.java @@ -15,6 +15,7 @@ import me.unurled.sacredrealms.sr.data.gson.InventoryDeserializer; import me.unurled.sacredrealms.sr.data.gson.InventorySerializer; import me.unurled.sacredrealms.sr.data.gson.PotionEffectDeserializer; import me.unurled.sacredrealms.sr.data.gson.PotionEffectSerializer; +import me.unurled.sacredrealms.sr.events.player.PlayerLevelUpEvent; import me.unurled.sacredrealms.sr.managers.Manager; import me.unurled.sacredrealms.sr.utils.Items; import org.bukkit.Bukkit; @@ -201,4 +202,13 @@ public class PlayerManager extends Manager { e.setCancelled(true); } } + + public void levelUp(SRPlayer p, int previousLevel) { + PlayerLevelUpEvent event = new PlayerLevelUpEvent(p, previousLevel); + event.callEvent(); + Player player = Bukkit.getPlayer(p.getUuid()); + if (player != null) { + player.sendMessage(event.getMessage()); + } + } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/events/player/PlayerLevelUpEvent.java b/src/main/java/me/unurled/sacredrealms/sr/events/player/PlayerLevelUpEvent.java new file mode 100644 index 0000000..67d9b28 --- /dev/null +++ b/src/main/java/me/unurled/sacredrealms/sr/events/player/PlayerLevelUpEvent.java @@ -0,0 +1,67 @@ +package me.unurled.sacredrealms.sr.events.player; + +import static me.unurled.sacredrealms.sr.utils.Component.comp; + +import me.unurled.sacredrealms.sr.components.player.SRPlayer; +import net.kyori.adventure.text.Component; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +public class PlayerLevelUpEvent extends Event { + + private static final HandlerList HANDLER_LIST = new HandlerList(); + private final SRPlayer p; + private final int previousLevel; + private Component message; + + public PlayerLevelUpEvent(SRPlayer p, int previousLevel) { + super(true); + this.p = p; + this.previousLevel = previousLevel; + OfflinePlayer pa = Bukkit.getOfflinePlayer(p.getUuid()); + /* + * -------------------------------------------------- + * + * You have leveled up from 1 to 2! + * + * -------------------------------------------------- + */ + message = + comp( + "--------------------------------------------------
" + + "
You have leveled up from " + + previousLevel + + " to " + + p.getLevel() + + "!
" + + "
--------------------------------------------------"); + } + + public static HandlerList getHandlerList() { + return HANDLER_LIST; + } + + @Override + public @NotNull HandlerList getHandlers() { + return HANDLER_LIST; + } + + public SRPlayer getPlayer() { + return p; + } + + public int getPreviousLevel() { + return previousLevel; + } + + public Component getMessage() { + return message; + } + + public void setMessage(Component message) { + this.message = message; + } +}