From fe83919200035d4c2d11eb8095b7e8be7d1b9562 Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Sat, 27 Jul 2024 23:39:55 +0200 Subject: [PATCH] Refactor --- .../{ => api}/events/EssentiaEvent.java | 2 +- .../api/events/EssentiaUserLoadEvent.java | 32 +++++++++++++++ .../events/PlayerRemoveHomeEvent.java | 2 +- .../{ => api}/events/PlayerSetHomeEvent.java | 2 +- .../events/PlayerTeleportBackEvent.java | 2 +- .../events/PlayerTeleportHomeEvent.java | 2 +- .../events/PlayerTeleportSpawnEvent.java | 2 +- .../com/alttd/essentia/api/model/Home.java | 10 +++++ .../essentia/api/model/UserSettings.java | 16 ++++++++ .../essentia/{ => api}/request/Request.java | 2 +- .../alttd/essentia/{ => api}/user/User.java | 15 ++++--- .../essentia/{ => api}/user/UserManager.java | 2 +- .../com/alttd/essentia/EssentiaPlugin.java | 2 +- .../essentia/commands/PlayerSubCommand.java | 2 +- .../alttd/essentia/commands/SubCommand.java | 2 +- .../essentia/commands/admin/BurnCommand.java | 39 ++++++++++++++++++ .../essentia/commands/admin/InfoCommand.java | 40 ++++++++++++++++++ .../essentia/commands/admin/smiteCommand.java | 40 ++++++++++++++++++ .../essentia/commands/player/BackCommand.java | 6 +-- .../commands/player/DeathBackCommand.java | 6 +-- .../commands/player/DelHomeCommand.java | 6 +-- .../essentia/commands/player/HomeCommand.java | 17 +++++--- .../commands/player/HomeListCommand.java | 2 +- .../commands/player/SetHomeCommand.java | 6 +-- .../commands/player/SpawnCommand.java | 6 +-- .../player/TeleportAcceptCommand.java | 5 +-- .../commands/player/TeleportDenyCommand.java | 5 +-- .../player/TeleportRequestCommand.java | 4 +- .../player/TeleportRequestHereCommand.java | 4 +- .../player/TeleportToggleCommand.java | 6 +-- .../alttd/essentia/configuration/Config.java | 4 ++ .../essentia/listeners/PlayerListener.java | 4 +- .../alttd/essentia/model/EssentiaHome.java | 5 +++ .../essentia/model/EssentiaUserSettings.java | 36 ++++++++++++++++ .../java/com/alttd/essentia/model/Kit.java | 3 ++ .../alttd/essentia/model/PlayerInventory.java | 4 ++ .../essentia/request/EssentiaRequest.java | 1 + .../essentia/storage/StorageManager.java | 2 +- .../essentia/storage/StorageProvider.java | 8 +++- .../storage/mysql/SQLStorageProvider.java | 41 +++++++++---------- .../storage/yaml/YamlStorageProvider.java | 14 ++++--- .../com/alttd/essentia/user/EssentiaUser.java | 37 ++++++++--------- .../essentia/user/EssentiaUserManager.java | 7 +++- 43 files changed, 346 insertions(+), 107 deletions(-) rename api/src/main/java/com/alttd/essentia/{ => api}/events/EssentiaEvent.java (90%) create mode 100644 api/src/main/java/com/alttd/essentia/api/events/EssentiaUserLoadEvent.java rename api/src/main/java/com/alttd/essentia/{ => api}/events/PlayerRemoveHomeEvent.java (95%) rename api/src/main/java/com/alttd/essentia/{ => api}/events/PlayerSetHomeEvent.java (96%) rename api/src/main/java/com/alttd/essentia/{ => api}/events/PlayerTeleportBackEvent.java (95%) rename api/src/main/java/com/alttd/essentia/{ => api}/events/PlayerTeleportHomeEvent.java (96%) rename api/src/main/java/com/alttd/essentia/{ => api}/events/PlayerTeleportSpawnEvent.java (95%) create mode 100644 api/src/main/java/com/alttd/essentia/api/model/Home.java create mode 100644 api/src/main/java/com/alttd/essentia/api/model/UserSettings.java rename api/src/main/java/com/alttd/essentia/{ => api}/request/Request.java (68%) rename api/src/main/java/com/alttd/essentia/{ => api}/user/User.java (67%) rename api/src/main/java/com/alttd/essentia/{ => api}/user/UserManager.java (90%) create mode 100644 plugin/src/main/java/com/alttd/essentia/commands/admin/BurnCommand.java create mode 100644 plugin/src/main/java/com/alttd/essentia/commands/admin/InfoCommand.java create mode 100644 plugin/src/main/java/com/alttd/essentia/commands/admin/smiteCommand.java create mode 100644 plugin/src/main/java/com/alttd/essentia/model/EssentiaHome.java create mode 100644 plugin/src/main/java/com/alttd/essentia/model/EssentiaUserSettings.java create mode 100644 plugin/src/main/java/com/alttd/essentia/model/Kit.java create mode 100644 plugin/src/main/java/com/alttd/essentia/model/PlayerInventory.java diff --git a/api/src/main/java/com/alttd/essentia/events/EssentiaEvent.java b/api/src/main/java/com/alttd/essentia/api/events/EssentiaEvent.java similarity index 90% rename from api/src/main/java/com/alttd/essentia/events/EssentiaEvent.java rename to api/src/main/java/com/alttd/essentia/api/events/EssentiaEvent.java index 1187c8f..8ff3b1d 100644 --- a/api/src/main/java/com/alttd/essentia/events/EssentiaEvent.java +++ b/api/src/main/java/com/alttd/essentia/api/events/EssentiaEvent.java @@ -1,4 +1,4 @@ -package com.alttd.essentia.events; +package com.alttd.essentia.api.events; import org.bukkit.event.Cancellable; import org.bukkit.event.Event; diff --git a/api/src/main/java/com/alttd/essentia/api/events/EssentiaUserLoadEvent.java b/api/src/main/java/com/alttd/essentia/api/events/EssentiaUserLoadEvent.java new file mode 100644 index 0000000..2f3e9cf --- /dev/null +++ b/api/src/main/java/com/alttd/essentia/api/events/EssentiaUserLoadEvent.java @@ -0,0 +1,32 @@ +package com.alttd.essentia.api.events; + +import com.alttd.essentia.api.user.User; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +public class EssentiaUserLoadEvent extends EssentiaEvent { + + private static final HandlerList handlerList = new HandlerList(); + + private final User user; + + public EssentiaUserLoadEvent(User user) { + this.user = user; + } + + public User getUser() { + return user; + } + + @NotNull + @Override + public HandlerList getHandlers() { + return handlerList; + } + + @NotNull + public static HandlerList getHandlerList() { + return handlerList; + } + +} diff --git a/api/src/main/java/com/alttd/essentia/events/PlayerRemoveHomeEvent.java b/api/src/main/java/com/alttd/essentia/api/events/PlayerRemoveHomeEvent.java similarity index 95% rename from api/src/main/java/com/alttd/essentia/events/PlayerRemoveHomeEvent.java rename to api/src/main/java/com/alttd/essentia/api/events/PlayerRemoveHomeEvent.java index 25cfc45..b8ca66a 100644 --- a/api/src/main/java/com/alttd/essentia/events/PlayerRemoveHomeEvent.java +++ b/api/src/main/java/com/alttd/essentia/api/events/PlayerRemoveHomeEvent.java @@ -1,4 +1,4 @@ -package com.alttd.essentia.events; +package com.alttd.essentia.api.events; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; diff --git a/api/src/main/java/com/alttd/essentia/events/PlayerSetHomeEvent.java b/api/src/main/java/com/alttd/essentia/api/events/PlayerSetHomeEvent.java similarity index 96% rename from api/src/main/java/com/alttd/essentia/events/PlayerSetHomeEvent.java rename to api/src/main/java/com/alttd/essentia/api/events/PlayerSetHomeEvent.java index 785052f..2d8723c 100644 --- a/api/src/main/java/com/alttd/essentia/events/PlayerSetHomeEvent.java +++ b/api/src/main/java/com/alttd/essentia/api/events/PlayerSetHomeEvent.java @@ -1,4 +1,4 @@ -package com.alttd.essentia.events; +package com.alttd.essentia.api.events; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/api/src/main/java/com/alttd/essentia/events/PlayerTeleportBackEvent.java b/api/src/main/java/com/alttd/essentia/api/events/PlayerTeleportBackEvent.java similarity index 95% rename from api/src/main/java/com/alttd/essentia/events/PlayerTeleportBackEvent.java rename to api/src/main/java/com/alttd/essentia/api/events/PlayerTeleportBackEvent.java index 400d1de..2a01cc4 100644 --- a/api/src/main/java/com/alttd/essentia/events/PlayerTeleportBackEvent.java +++ b/api/src/main/java/com/alttd/essentia/api/events/PlayerTeleportBackEvent.java @@ -1,4 +1,4 @@ -package com.alttd.essentia.events; +package com.alttd.essentia.api.events; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/api/src/main/java/com/alttd/essentia/events/PlayerTeleportHomeEvent.java b/api/src/main/java/com/alttd/essentia/api/events/PlayerTeleportHomeEvent.java similarity index 96% rename from api/src/main/java/com/alttd/essentia/events/PlayerTeleportHomeEvent.java rename to api/src/main/java/com/alttd/essentia/api/events/PlayerTeleportHomeEvent.java index c8c4bc7..540b8be 100644 --- a/api/src/main/java/com/alttd/essentia/events/PlayerTeleportHomeEvent.java +++ b/api/src/main/java/com/alttd/essentia/api/events/PlayerTeleportHomeEvent.java @@ -1,4 +1,4 @@ -package com.alttd.essentia.events; +package com.alttd.essentia.api.events; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/api/src/main/java/com/alttd/essentia/events/PlayerTeleportSpawnEvent.java b/api/src/main/java/com/alttd/essentia/api/events/PlayerTeleportSpawnEvent.java similarity index 95% rename from api/src/main/java/com/alttd/essentia/events/PlayerTeleportSpawnEvent.java rename to api/src/main/java/com/alttd/essentia/api/events/PlayerTeleportSpawnEvent.java index 9183e29..1344641 100644 --- a/api/src/main/java/com/alttd/essentia/events/PlayerTeleportSpawnEvent.java +++ b/api/src/main/java/com/alttd/essentia/api/events/PlayerTeleportSpawnEvent.java @@ -1,4 +1,4 @@ -package com.alttd.essentia.events; +package com.alttd.essentia.api.events; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/api/src/main/java/com/alttd/essentia/api/model/Home.java b/api/src/main/java/com/alttd/essentia/api/model/Home.java new file mode 100644 index 0000000..31e0842 --- /dev/null +++ b/api/src/main/java/com/alttd/essentia/api/model/Home.java @@ -0,0 +1,10 @@ +package com.alttd.essentia.api.model; + +import org.bukkit.Location; + +public interface Home { + + String name(); + + Location location(); +} diff --git a/api/src/main/java/com/alttd/essentia/api/model/UserSettings.java b/api/src/main/java/com/alttd/essentia/api/model/UserSettings.java new file mode 100644 index 0000000..8d083d1 --- /dev/null +++ b/api/src/main/java/com/alttd/essentia/api/model/UserSettings.java @@ -0,0 +1,16 @@ +package com.alttd.essentia.api.model; + +public interface UserSettings { + + boolean godMode(); + + void godMode(boolean godMode); + + boolean allowTeleports(); + + void allowTeleports(boolean allowTeleports); + + boolean flying(); + + void flying(boolean flying); +} diff --git a/api/src/main/java/com/alttd/essentia/request/Request.java b/api/src/main/java/com/alttd/essentia/api/request/Request.java similarity index 68% rename from api/src/main/java/com/alttd/essentia/request/Request.java rename to api/src/main/java/com/alttd/essentia/api/request/Request.java index a6a2a97..d473fd9 100644 --- a/api/src/main/java/com/alttd/essentia/request/Request.java +++ b/api/src/main/java/com/alttd/essentia/api/request/Request.java @@ -1,4 +1,4 @@ -package com.alttd.essentia.request; +package com.alttd.essentia.api.request; public interface Request { diff --git a/api/src/main/java/com/alttd/essentia/user/User.java b/api/src/main/java/com/alttd/essentia/api/user/User.java similarity index 67% rename from api/src/main/java/com/alttd/essentia/user/User.java rename to api/src/main/java/com/alttd/essentia/api/user/User.java index 240351b..5c9a767 100644 --- a/api/src/main/java/com/alttd/essentia/user/User.java +++ b/api/src/main/java/com/alttd/essentia/api/user/User.java @@ -1,8 +1,9 @@ -package com.alttd.essentia.user; +package com.alttd.essentia.api.user; -import com.alttd.essentia.request.Request; +import com.alttd.essentia.api.model.Home; +import com.alttd.essentia.api.model.UserSettings; +import com.alttd.essentia.api.request.Request; import org.bukkit.Location; -import org.jetbrains.annotations.ApiStatus; import java.util.List; import java.util.Map; @@ -19,7 +20,7 @@ public interface User { boolean hasHome(String name); - Location getHome(String name); + Home getHome(String name); void setHome(String name, Location location); @@ -29,13 +30,11 @@ public interface User { List getMatchingHomeNames(String homeName); - Map getHomeData(); + Map getHomeData(); Set getHomes(); - boolean allowTeleports(); - - void allowTeleports(boolean allowTeleports); + UserSettings getUserSettings(); Request request(); diff --git a/api/src/main/java/com/alttd/essentia/user/UserManager.java b/api/src/main/java/com/alttd/essentia/api/user/UserManager.java similarity index 90% rename from api/src/main/java/com/alttd/essentia/user/UserManager.java rename to api/src/main/java/com/alttd/essentia/api/user/UserManager.java index 58e2616..f2160dc 100644 --- a/api/src/main/java/com/alttd/essentia/user/UserManager.java +++ b/api/src/main/java/com/alttd/essentia/api/user/UserManager.java @@ -1,4 +1,4 @@ -package com.alttd.essentia.user; +package com.alttd.essentia.api.user; import org.bukkit.entity.Player; diff --git a/plugin/src/main/java/com/alttd/essentia/EssentiaPlugin.java b/plugin/src/main/java/com/alttd/essentia/EssentiaPlugin.java index eb70cb9..49f025a 100644 --- a/plugin/src/main/java/com/alttd/essentia/EssentiaPlugin.java +++ b/plugin/src/main/java/com/alttd/essentia/EssentiaPlugin.java @@ -8,7 +8,7 @@ import com.alttd.essentia.storage.StorageManager; import com.alttd.essentia.storage.StorageProvider; import com.alttd.essentia.storage.StorageType; import com.alttd.essentia.user.EssentiaUserManager; -import com.alttd.essentia.user.UserManager; +import com.alttd.essentia.api.user.UserManager; import lombok.Getter; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; diff --git a/plugin/src/main/java/com/alttd/essentia/commands/PlayerSubCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/PlayerSubCommand.java index 2397b51..c60c41c 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/PlayerSubCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/PlayerSubCommand.java @@ -2,7 +2,7 @@ package com.alttd.essentia.commands; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.configuration.Config; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.user.User; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/plugin/src/main/java/com/alttd/essentia/commands/SubCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/SubCommand.java index 95fcb3c..55dabc5 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/SubCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/SubCommand.java @@ -15,7 +15,7 @@ import java.util.stream.Collectors; public abstract class SubCommand implements TabExecutor { protected EssentiaPlugin plugin; - private final String name; + protected final String name; private final String[] aliases; private final Map subCommands = new LinkedHashMap<>(); diff --git a/plugin/src/main/java/com/alttd/essentia/commands/admin/BurnCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/admin/BurnCommand.java new file mode 100644 index 0000000..3febfb9 --- /dev/null +++ b/plugin/src/main/java/com/alttd/essentia/commands/admin/BurnCommand.java @@ -0,0 +1,39 @@ +package com.alttd.essentia.commands.admin; + +import com.alttd.essentia.EssentiaPlugin; +import com.alttd.essentia.commands.AdminSubCommand; +import com.alttd.essentia.configuration.Config; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class BurnCommand extends AdminSubCommand { + + public BurnCommand(EssentiaPlugin plugin) { + super(plugin, "burn"); + } + + @Override + protected boolean execute(CommandSender sender, String... args) { + Player target = args.length > 0 ? org.bukkit.Bukkit.getPlayer(args[0]) : sender instanceof Player player ? player : null; + if (target == null) { + sender.sendRichMessage(Config.PLAYER_NOT_FOUND); + return true; + } + if (!sender.hasPermission("essentia.command." + name + (target != sender ? ".other" : "")) ) { + sender.sendRichMessage(Config.COMMAND_NO_PERMISSION); + return true; + } + + TagResolver placeholders = TagResolver.resolver( + Placeholder.component("requester", sender.name()), + Placeholder.component("target", target.displayName()) + ); + target.setFireTicks((int) (3000L / 50)); + sender.sendRichMessage(target == sender ? Config.BURN_SELF : Config.BURN_OTHER, placeholders); + if (target != sender) + target.sendRichMessage(Config.BURN_BY_OTHER, placeholders); + return true; + } +} diff --git a/plugin/src/main/java/com/alttd/essentia/commands/admin/InfoCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/admin/InfoCommand.java new file mode 100644 index 0000000..50b5b81 --- /dev/null +++ b/plugin/src/main/java/com/alttd/essentia/commands/admin/InfoCommand.java @@ -0,0 +1,40 @@ +package com.alttd.essentia.commands.admin; + +import com.alttd.essentia.EssentiaPlugin; +import com.alttd.essentia.commands.AdminSubCommand; +import com.alttd.essentia.configuration.Config; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class InfoCommand extends AdminSubCommand { + + public InfoCommand(EssentiaPlugin plugin) { + super(plugin, "info"); + } + + @Override + protected boolean execute(CommandSender sender, String... args) { + Player target = args.length > 0 ? org.bukkit.Bukkit.getPlayer(args[0]) : sender instanceof Player player ? player : null; + if (target == null) { + sender.sendRichMessage(Config.PLAYER_NOT_FOUND); + return true; + } + if (!sender.hasPermission("essentia.command." + name + (target != sender ? ".other" : "")) ) { + sender.sendRichMessage(Config.COMMAND_NO_PERMISSION); + return true; + } + + TagResolver placeholders = TagResolver.resolver( + Placeholder.component("requester", sender.name()), + Placeholder.component("target", target.displayName()) + ); + // Todo Show player info +// target.setHealth(20); +// sender.sendRichMessage(target == sender ? Config.HEAL_SELF : Config.HEAL_OTHER, placeholders); +// if (target != sender) +// target.sendRichMessage(Config.HEAL_BY_OTHER, placeholders); + return true; + } +} diff --git a/plugin/src/main/java/com/alttd/essentia/commands/admin/smiteCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/admin/smiteCommand.java new file mode 100644 index 0000000..232a32d --- /dev/null +++ b/plugin/src/main/java/com/alttd/essentia/commands/admin/smiteCommand.java @@ -0,0 +1,40 @@ +package com.alttd.essentia.commands.admin; + +import com.alttd.essentia.EssentiaPlugin; +import com.alttd.essentia.commands.AdminSubCommand; +import com.alttd.essentia.configuration.Config; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class smiteCommand extends AdminSubCommand { + + public smiteCommand(EssentiaPlugin plugin) { + super(plugin, "smite"); + } + + @Override + protected boolean execute(CommandSender sender, String... args) { + Player target = args.length > 0 ? org.bukkit.Bukkit.getPlayer(args[0]) : sender instanceof Player player ? player : null; + if (target == null) { + sender.sendRichMessage(Config.PLAYER_NOT_FOUND); + return true; + } + if (!sender.hasPermission("essentia.command." + name + (target != sender ? ".other" : "")) ) { + sender.sendRichMessage(Config.COMMAND_NO_PERMISSION); + return true; + } + + TagResolver placeholders = TagResolver.resolver( + Placeholder.component("requester", sender.name()), + Placeholder.component("target", target.displayName()) + ); + // Todo smite the user xD +// target.setHealth(20); +// sender.sendRichMessage(target == sender ? Config.HEAL_SELF : Config.HEAL_OTHER, placeholders); +// if (target != sender) +// target.sendRichMessage(Config.HEAL_BY_OTHER, placeholders); + return true; + } +} diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/BackCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/BackCommand.java index 77d48e2..7b69539 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/BackCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/BackCommand.java @@ -3,10 +3,10 @@ package com.alttd.essentia.commands.player; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; -import com.alttd.essentia.events.EssentiaEvent; -import com.alttd.essentia.events.PlayerTeleportBackEvent; +import com.alttd.essentia.api.events.EssentiaEvent; +import com.alttd.essentia.api.events.PlayerTeleportBackEvent; import com.alttd.essentia.tasks.TeleportSounds; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.user.User; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/DeathBackCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/DeathBackCommand.java index 1e360fc..e482dcd 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/DeathBackCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/DeathBackCommand.java @@ -3,10 +3,10 @@ package com.alttd.essentia.commands.player; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; -import com.alttd.essentia.events.EssentiaEvent; -import com.alttd.essentia.events.PlayerTeleportBackEvent; +import com.alttd.essentia.api.events.EssentiaEvent; +import com.alttd.essentia.api.events.PlayerTeleportBackEvent; import com.alttd.essentia.tasks.TeleportSounds; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.user.User; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/DelHomeCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/DelHomeCommand.java index 3cdbd5c..28149bb 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/DelHomeCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/DelHomeCommand.java @@ -3,9 +3,9 @@ package com.alttd.essentia.commands.player; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; -import com.alttd.essentia.events.EssentiaEvent; -import com.alttd.essentia.events.PlayerRemoveHomeEvent; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.events.EssentiaEvent; +import com.alttd.essentia.api.events.PlayerRemoveHomeEvent; +import com.alttd.essentia.api.user.User; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.entity.Player; diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/HomeCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/HomeCommand.java index 4395438..cd79bfd 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/HomeCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/HomeCommand.java @@ -1,12 +1,13 @@ package com.alttd.essentia.commands.player; import com.alttd.essentia.EssentiaPlugin; +import com.alttd.essentia.api.model.Home; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; -import com.alttd.essentia.events.EssentiaEvent; -import com.alttd.essentia.events.PlayerTeleportHomeEvent; +import com.alttd.essentia.api.events.EssentiaEvent; +import com.alttd.essentia.api.events.PlayerTeleportHomeEvent; import com.alttd.essentia.tasks.TeleportSounds; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.user.User; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.Location; import org.bukkit.command.Command; @@ -24,7 +25,7 @@ public class HomeCommand extends PlayerSubCommand { @Override protected boolean execute(Player player, User user, String... args) { - String home = null; + String home; if (args.length == 0) { int count = user.getHomeCount(); if (count <= 1) { @@ -47,8 +48,12 @@ public class HomeCommand extends PlayerSubCommand { // return true // } // } - - Location homeLoc = user.getHome(home); + Home essentiaHome = user.getHome(home); + if (essentiaHome == null) { + player.sendRichMessage(Config.HOME_DOES_NOT_EXIST, Placeholder.parsed("home", home)); + return true; + } + Location homeLoc = essentiaHome.location(); if (homeLoc == null) { player.sendRichMessage(Config.HOME_DOES_NOT_EXIST, Placeholder.parsed("home", home)); return true; diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/HomeListCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/HomeListCommand.java index 3882f50..4bf1e5f 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/HomeListCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/HomeListCommand.java @@ -3,7 +3,7 @@ package com.alttd.essentia.commands.player; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.user.User; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.entity.Player; diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/SetHomeCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/SetHomeCommand.java index a94c317..a3e3aea 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/SetHomeCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/SetHomeCommand.java @@ -3,9 +3,9 @@ package com.alttd.essentia.commands.player; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; -import com.alttd.essentia.events.EssentiaEvent; -import com.alttd.essentia.events.PlayerSetHomeEvent; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.events.EssentiaEvent; +import com.alttd.essentia.api.events.PlayerSetHomeEvent; +import com.alttd.essentia.api.user.User; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/SpawnCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/SpawnCommand.java index f0d7821..a515e89 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/SpawnCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/SpawnCommand.java @@ -3,10 +3,10 @@ package com.alttd.essentia.commands.player; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; -import com.alttd.essentia.events.EssentiaEvent; -import com.alttd.essentia.events.PlayerTeleportSpawnEvent; +import com.alttd.essentia.api.events.EssentiaEvent; +import com.alttd.essentia.api.events.PlayerTeleportSpawnEvent; import com.alttd.essentia.tasks.TeleportSounds; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.user.User; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportAcceptCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportAcceptCommand.java index c743bd2..44305be 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportAcceptCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportAcceptCommand.java @@ -3,9 +3,8 @@ package com.alttd.essentia.commands.player; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; -import com.alttd.essentia.request.EssentiaRequest; -import com.alttd.essentia.request.Request; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.request.Request; +import com.alttd.essentia.api.user.User; import org.bukkit.entity.Player; public class TeleportAcceptCommand extends PlayerSubCommand { diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportDenyCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportDenyCommand.java index 70af433..a89dc8c 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportDenyCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportDenyCommand.java @@ -3,9 +3,8 @@ package com.alttd.essentia.commands.player; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; -import com.alttd.essentia.request.EssentiaRequest; -import com.alttd.essentia.request.Request; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.request.Request; +import com.alttd.essentia.api.user.User; import org.bukkit.entity.Player; public class TeleportDenyCommand extends PlayerSubCommand { diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportRequestCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportRequestCommand.java index 72ac7b8..3cbc5d8 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportRequestCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportRequestCommand.java @@ -4,7 +4,7 @@ import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; import com.alttd.essentia.request.TeleportEssentiaRequest; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.user.User; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.bukkit.Bukkit; @@ -50,7 +50,7 @@ public class TeleportRequestCommand extends PlayerSubCommand { return true; } - if (!targetUser.allowTeleports()) { + if (!targetUser.getUserSettings().allowTeleports()) { player.sendRichMessage(Config.TELEPORT_TOGGLED_OFF, placeholders); return true; } diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportRequestHereCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportRequestHereCommand.java index c99054c..b576dbf 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportRequestHereCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportRequestHereCommand.java @@ -4,7 +4,7 @@ import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; import com.alttd.essentia.request.TeleportHereEssentiaRequest; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.user.User; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.bukkit.Bukkit; @@ -50,7 +50,7 @@ public class TeleportRequestHereCommand extends PlayerSubCommand { return true; } - if (!targetUser.allowTeleports()) { + if (!targetUser.getUserSettings().allowTeleports()) { player.sendRichMessage(Config.TELEPORT_TOGGLED_OFF, placeholders); return true; } diff --git a/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportToggleCommand.java b/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportToggleCommand.java index 7c0f8fa..c2fe22c 100644 --- a/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportToggleCommand.java +++ b/plugin/src/main/java/com/alttd/essentia/commands/player/TeleportToggleCommand.java @@ -3,7 +3,7 @@ package com.alttd.essentia.commands.player; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.configuration.Config; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.user.User; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.apache.commons.lang3.BooleanUtils; @@ -17,9 +17,9 @@ public class TeleportToggleCommand extends PlayerSubCommand { @Override protected boolean execute(Player player, User user, String... args) { - user.allowTeleports(!user.allowTeleports()); + user.getUserSettings().allowTeleports(!user.getUserSettings().allowTeleports()); TagResolver placeholders = TagResolver.resolver( - Placeholder.parsed("toggle", BooleanUtils.toStringOnOff(user.allowTeleports())) + Placeholder.parsed("toggle", BooleanUtils.toStringOnOff(user.getUserSettings().allowTeleports())) ); player.sendRichMessage(Config.TELEPORT_TOGGLE_SET, placeholders); return true; diff --git a/plugin/src/main/java/com/alttd/essentia/configuration/Config.java b/plugin/src/main/java/com/alttd/essentia/configuration/Config.java index 46bdcad..1c74088 100755 --- a/plugin/src/main/java/com/alttd/essentia/configuration/Config.java +++ b/plugin/src/main/java/com/alttd/essentia/configuration/Config.java @@ -187,6 +187,10 @@ public class Config { public static String FEED_SELF = "You just fed yourself."; public static String FEED_OTHER = "You have fed ."; public static String FEED_BY_OTHER = " has fed you."; + + public static String BURN_SELF = "You have set yourself on fire."; + public static String BURN_OTHER = "'s has been set in fire."; + public static String BURN_BY_OTHER = " has set you on fire."; private static void messages() { REQUEST_TIMED_OUT = getString("messages.request.time-out", REQUEST_TIMED_OUT); TELEPORT_ACCEPT_TARGET = getString("messages.request.teleport-accept-target", TELEPORT_ACCEPT_TARGET); diff --git a/plugin/src/main/java/com/alttd/essentia/listeners/PlayerListener.java b/plugin/src/main/java/com/alttd/essentia/listeners/PlayerListener.java index d21d40a..b74988b 100644 --- a/plugin/src/main/java/com/alttd/essentia/listeners/PlayerListener.java +++ b/plugin/src/main/java/com/alttd/essentia/listeners/PlayerListener.java @@ -3,8 +3,8 @@ package com.alttd.essentia.listeners; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.configuration.Config; import com.alttd.essentia.user.EssentiaUser; -import com.alttd.essentia.user.User; -import com.alttd.essentia.user.UserManager; +import com.alttd.essentia.api.user.User; +import com.alttd.essentia.api.user.UserManager; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; diff --git a/plugin/src/main/java/com/alttd/essentia/model/EssentiaHome.java b/plugin/src/main/java/com/alttd/essentia/model/EssentiaHome.java new file mode 100644 index 0000000..bcf7877 --- /dev/null +++ b/plugin/src/main/java/com/alttd/essentia/model/EssentiaHome.java @@ -0,0 +1,5 @@ +package com.alttd.essentia.model; + +import org.bukkit.Location; + +public record EssentiaHome(String name, Location location) implements com.alttd.essentia.api.model.Home {} diff --git a/plugin/src/main/java/com/alttd/essentia/model/EssentiaUserSettings.java b/plugin/src/main/java/com/alttd/essentia/model/EssentiaUserSettings.java new file mode 100644 index 0000000..3b2ed43 --- /dev/null +++ b/plugin/src/main/java/com/alttd/essentia/model/EssentiaUserSettings.java @@ -0,0 +1,36 @@ +package com.alttd.essentia.model; + +import com.alttd.essentia.api.model.UserSettings; +import lombok.Getter; + +@Getter +public class EssentiaUserSettings implements UserSettings { + + boolean godMode; + boolean flying; + double flySpeed; + double walkSpeed; + boolean pTime; + boolean pWeather; + boolean allowTeleports; + + private boolean needsSaving; + + @Override + public void godMode(boolean godMode) { + this.godMode = godMode; + this.needsSaving = true; + } + + @Override + public void allowTeleports(boolean allowTeleports) { + this.allowTeleports = allowTeleports; + this.needsSaving = true; + } + + @Override + public void flying(boolean flying) { + this.flying = flying; + this.needsSaving = true; + } +} diff --git a/plugin/src/main/java/com/alttd/essentia/model/Kit.java b/plugin/src/main/java/com/alttd/essentia/model/Kit.java new file mode 100644 index 0000000..20ce2e2 --- /dev/null +++ b/plugin/src/main/java/com/alttd/essentia/model/Kit.java @@ -0,0 +1,3 @@ +package com.alttd.essentia.model; + +public record Kit() {} diff --git a/plugin/src/main/java/com/alttd/essentia/model/PlayerInventory.java b/plugin/src/main/java/com/alttd/essentia/model/PlayerInventory.java new file mode 100644 index 0000000..21e524d --- /dev/null +++ b/plugin/src/main/java/com/alttd/essentia/model/PlayerInventory.java @@ -0,0 +1,4 @@ +package com.alttd.essentia.model; + +public record PlayerInventory() { +} diff --git a/plugin/src/main/java/com/alttd/essentia/request/EssentiaRequest.java b/plugin/src/main/java/com/alttd/essentia/request/EssentiaRequest.java index 45dd83e..9d6dcf1 100644 --- a/plugin/src/main/java/com/alttd/essentia/request/EssentiaRequest.java +++ b/plugin/src/main/java/com/alttd/essentia/request/EssentiaRequest.java @@ -1,6 +1,7 @@ package com.alttd.essentia.request; import com.alttd.essentia.EssentiaPlugin; +import com.alttd.essentia.api.request.Request; import com.alttd.essentia.configuration.Config; import com.alttd.essentia.tasks.RequestTimeout; import com.alttd.essentia.tasks.TeleportSounds; diff --git a/plugin/src/main/java/com/alttd/essentia/storage/StorageManager.java b/plugin/src/main/java/com/alttd/essentia/storage/StorageManager.java index 83f0308..b22ddcf 100644 --- a/plugin/src/main/java/com/alttd/essentia/storage/StorageManager.java +++ b/plugin/src/main/java/com/alttd/essentia/storage/StorageManager.java @@ -18,7 +18,7 @@ public class StorageManager { return switch (type) { case MYSQL -> new SQLStorageProvider(plugin); case YAML -> new YamlStorageProvider(plugin, plugin.getDataFolder().getPath() + File.separator + "PlayerData"); - case SQLITE -> throw new UnsupportedOperationException(); // TODO + case SQLITE -> throw new UnsupportedOperationException(); // FIXME }; } diff --git a/plugin/src/main/java/com/alttd/essentia/storage/StorageProvider.java b/plugin/src/main/java/com/alttd/essentia/storage/StorageProvider.java index 28b30cf..5c5c463 100644 --- a/plugin/src/main/java/com/alttd/essentia/storage/StorageProvider.java +++ b/plugin/src/main/java/com/alttd/essentia/storage/StorageProvider.java @@ -1,9 +1,11 @@ package com.alttd.essentia.storage; import com.alttd.essentia.EssentiaPlugin; +import com.alttd.essentia.api.events.EssentiaUserLoadEvent; import com.alttd.essentia.configuration.Config; import com.alttd.essentia.user.EssentiaUser; -import com.alttd.essentia.user.User; +import com.alttd.essentia.api.user.User; +import lombok.Getter; import org.bukkit.scheduler.BukkitRunnable; import org.jetbrains.annotations.NotNull; @@ -12,6 +14,8 @@ import java.util.UUID; public abstract class StorageProvider { protected final EssentiaPlugin plugin; + + @Getter private AutoSaveTask autoSaveTask; public StorageProvider(EssentiaPlugin plugin) { @@ -27,7 +31,7 @@ public abstract class StorageProvider { plugin.userManager().addUser(user); - // TODO -- UserLoadEvent? + new EssentiaUserLoadEvent(user).callEvent(); return user; } diff --git a/plugin/src/main/java/com/alttd/essentia/storage/mysql/SQLStorageProvider.java b/plugin/src/main/java/com/alttd/essentia/storage/mysql/SQLStorageProvider.java index 592e33b..99b099c 100644 --- a/plugin/src/main/java/com/alttd/essentia/storage/mysql/SQLStorageProvider.java +++ b/plugin/src/main/java/com/alttd/essentia/storage/mysql/SQLStorageProvider.java @@ -2,6 +2,8 @@ package com.alttd.essentia.storage.mysql; import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.configuration.Config; +import com.alttd.essentia.api.model.Home; +import com.alttd.essentia.model.EssentiaHome; import com.alttd.essentia.storage.StorageProvider; import com.alttd.essentia.user.EssentiaUser; import org.bukkit.Bukkit; @@ -34,14 +36,27 @@ public class SQLStorageProvider extends StorageProvider { private void createTables() { // TODO -- create table String userTable = "CREATE TABLE IF NOT EXISTS users(" + - "uuid VARCHAR(36) NOT NULL, " + + "UUID VARCHAR(36) NOT NULL, " + "DeathLocation mediumtext DEFAULT NULL, " + "BackLocation mediumtext DEFAULT NULL, " + "TeleportToggled tinyint(1) DEFAULT NULL, " + - "HomesLocation mediumtext DEFAULT NULL, "+ + "PRIMARY KEY (uuid)" + + ")"; + String homeTable = "CREATE TABLE IF NOT EXISTS homes(" + + "UUID VARCHAR(36) NOT NULL, " + + "Name mediumtext DEFAULT NULL, " + + "HomeLocation mediumtext DEFAULT NULL, "+ + ")"; + String settingsTable = "CREATE TABLE IF NOT EXISTS homes(" + + "UUID VARCHAR(36) NOT NULL, " + + "TeleportToggled tinyint(1) DEFAULT NULL, " + + "GodMode tinyint(1) DEFAULT NULL, " + + "Flying tinyint(1) DEFAULT NULL, " + "PRIMARY KEY (uuid)" + ")"; addDatabaseQuery(new DatabaseQuery(userTable), false); + addDatabaseQuery(new DatabaseQuery(homeTable), false); + addDatabaseQuery(new DatabaseQuery(settingsTable), false); } public DatabaseConnection getDatabaseConnection() { @@ -108,22 +123,6 @@ public class SQLStorageProvider extends StorageProvider { } } - boolean hasTable(String table) { - DatabaseConnection connection = getDatabaseConnection(); - boolean match = false; - try (ResultSet rs = connection.get().getMetaData().getTables(null, null, table, null)) { - while (rs.next()) { - if (table.equalsIgnoreCase(rs.getString("TABLE_NAME"))) { - match = true; - break; - } - } - } catch (SQLException e) { - return match; - } - return match; - } - // TODO -- make this async @Override protected EssentiaUser load(UUID uuid) { @@ -221,12 +220,12 @@ public class SQLStorageProvider extends StorageProvider { return stringBuilder.toString(); } - private Map locationMapStringToLocationMap(String locationMapString) { - Map locationMap = new HashMap<>(); + private Map locationMapStringToLocationMap(String locationMapString) { + Map locationMap = new HashMap<>(); String[] entries = locationMapString.split(";"); for (String entry : entries) { String[] data = entry.split("%"); - locationMap.put(data[0], locationStringToLocation(data[1])); + locationMap.put(data[0], new EssentiaHome(data[0], locationStringToLocation(data[1]))); } return locationMap; } diff --git a/plugin/src/main/java/com/alttd/essentia/storage/yaml/YamlStorageProvider.java b/plugin/src/main/java/com/alttd/essentia/storage/yaml/YamlStorageProvider.java index f332cd3..cab5160 100644 --- a/plugin/src/main/java/com/alttd/essentia/storage/yaml/YamlStorageProvider.java +++ b/plugin/src/main/java/com/alttd/essentia/storage/yaml/YamlStorageProvider.java @@ -1,6 +1,8 @@ package com.alttd.essentia.storage.yaml; import com.alttd.essentia.EssentiaPlugin; +import com.alttd.essentia.api.model.Home; +import com.alttd.essentia.model.EssentiaHome; import com.alttd.essentia.storage.StorageProvider; import com.alttd.essentia.user.EssentiaUser; import org.bukkit.Bukkit; @@ -47,10 +49,10 @@ public class YamlStorageProvider extends StorageProvider { setStoredLocation(config, "teleports.back", user.getBackLocation(false)); setStoredLocation(config, "teleports.death", user.getBackLocation(true)); - for (Map.Entry entry : user.getHomeData().entrySet()) { - setStoredLocation(config, "home." + entry.getKey(), entry.getValue()); + for (Map.Entry entry : user.getHomeData().entrySet()) { + setStoredLocation(config, "home." + entry.getKey(), entry.getValue().location()); } - config.set("allow-teleports", user.allowTeleports()); + config.set("allow-teleports", user.getUserSettings().allowTeleports()); config.save(configFile); } @@ -90,14 +92,14 @@ public class YamlStorageProvider extends StorageProvider { return new Location(world, x, y, z, yaw, pitch); } - public Map getHomeData(YamlConfiguration config) { + public Map getHomeData(YamlConfiguration config) { ConfigurationSection section = config.getConfigurationSection("home"); if (section == null) { return null; } - Map map = new HashMap<>(); + Map map = new HashMap<>(); for (String key : section.getValues(false).keySet()) { - map.put(key, getStoredLocation(config, "home." + key)); + map.put(key, new EssentiaHome(key, getStoredLocation(config, "home." + key))); } return map; diff --git a/plugin/src/main/java/com/alttd/essentia/user/EssentiaUser.java b/plugin/src/main/java/com/alttd/essentia/user/EssentiaUser.java index 3ae51f7..83119d0 100644 --- a/plugin/src/main/java/com/alttd/essentia/user/EssentiaUser.java +++ b/plugin/src/main/java/com/alttd/essentia/user/EssentiaUser.java @@ -1,6 +1,11 @@ package com.alttd.essentia.user; -import com.alttd.essentia.request.Request; +import com.alttd.essentia.api.model.Home; +import com.alttd.essentia.api.model.UserSettings; +import com.alttd.essentia.api.request.Request; +import com.alttd.essentia.api.user.User; +import com.alttd.essentia.model.EssentiaHome; +import com.alttd.essentia.model.EssentiaUserSettings; import org.bukkit.Location; import java.util.*; @@ -12,8 +17,8 @@ public class EssentiaUser implements User { protected Location backLocation; protected Location deathLocation; - protected Map homes; - protected boolean allowTeleports; + protected Map homes; + protected UserSettings userSettings; protected Request request; private boolean saving; @@ -24,7 +29,7 @@ public class EssentiaUser implements User { this.backLocation = builder.backLocation; this.deathLocation = builder.deathLocation; this.homes = builder.homes; - this.allowTeleports = builder.allowTeleports; + this.userSettings = builder.userSettings; } @Override @@ -53,13 +58,13 @@ public class EssentiaUser implements User { } @Override - public Location getHome(String name) { + public Home getHome(String name) { return homes.get(name); } @Override public void setHome(String name, Location location) { - homes.put(name, location); + homes.put(name, new EssentiaHome(name, location)); needsSaving = true; } @@ -82,7 +87,7 @@ public class EssentiaUser implements User { } @Override - public Map getHomeData() { + public Map getHomeData() { return homes; } @@ -92,14 +97,8 @@ public class EssentiaUser implements User { } @Override - public boolean allowTeleports() { - return allowTeleports; - } - - @Override - public void allowTeleports(boolean allowTeleports) { - this.allowTeleports = allowTeleports; - needsSaving = true; + public UserSettings getUserSettings() { + return userSettings; } public boolean saving() { @@ -133,8 +132,8 @@ public class EssentiaUser implements User { protected UUID uuid; protected Location backLocation = null; protected Location deathLocation = null; - protected Map homes = new HashMap<>(); - protected boolean allowTeleports; + protected Map homes = new HashMap<>(); + protected EssentiaUserSettings userSettings = new EssentiaUserSettings(); public Builder uuid(UUID uuid) { this.uuid = uuid; @@ -151,13 +150,13 @@ public class EssentiaUser implements User { return this; } - public Builder homes(Map homes) { + public Builder homes(Map homes) { this.homes = homes; return this; } public Builder allowTeleports(boolean allowTeleports) { - this.allowTeleports = allowTeleports; + this.userSettings.allowTeleports(allowTeleports); return this; } diff --git a/plugin/src/main/java/com/alttd/essentia/user/EssentiaUserManager.java b/plugin/src/main/java/com/alttd/essentia/user/EssentiaUserManager.java index 6aa0733..8027202 100644 --- a/plugin/src/main/java/com/alttd/essentia/user/EssentiaUserManager.java +++ b/plugin/src/main/java/com/alttd/essentia/user/EssentiaUserManager.java @@ -1,6 +1,9 @@ package com.alttd.essentia.user; import com.alttd.essentia.EssentiaPlugin; +import com.alttd.essentia.api.user.User; +import com.alttd.essentia.api.user.UserManager; +import com.alttd.essentia.model.EssentiaUserSettings; import org.bukkit.entity.Player; import java.util.Map; @@ -60,9 +63,9 @@ public class EssentiaUserManager implements UserManager { @Override public void saveAllUsers() { for (User user : getUsers().values()) { - if (user instanceof EssentiaUser essentiaUser) { + if (user instanceof EssentiaUser essentiaUser && essentiaUser.getUserSettings() instanceof EssentiaUserSettings essentiaUserSettings) { try { - if (essentiaUser.saving() || !essentiaUser.needsSaving()) { + if (essentiaUser.saving() || !essentiaUser.needsSaving() || !essentiaUserSettings.needsSaving()) { continue; } plugin.storageProvider().startSaving(essentiaUser);