From 0019f276360abe731d9a11009696a2ca59fc5f1b Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Sat, 12 Aug 2023 16:49:21 +0200 Subject: [PATCH] Start implementing PlayerSettings.java and PlayerSettingsGui.java --- .../playershops/config/MessageConfig.java | 2 + .../com/alttd/playershops/gui/GuiIcon.java | 5 +- .../com/alttd/playershops/gui/HomeGui.java | 8 +- .../playershops/gui/PlayerSettingsGui.java | 62 +++++++++++ .../playershops/handler/ShopHandler.java | 12 +- .../playershops/shop/PlayerSettings.java | 103 ++++++++++++++++++ 6 files changed, 185 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/alttd/playershops/gui/PlayerSettingsGui.java create mode 100644 src/main/java/com/alttd/playershops/shop/PlayerSettings.java diff --git a/src/main/java/com/alttd/playershops/config/MessageConfig.java b/src/main/java/com/alttd/playershops/config/MessageConfig.java index 5bf5be0..2aebca1 100644 --- a/src/main/java/com/alttd/playershops/config/MessageConfig.java +++ b/src/main/java/com/alttd/playershops/config/MessageConfig.java @@ -70,12 +70,14 @@ public class MessageConfig extends AbstractConfiguration { public static String GUI_LIST_SHOPS_TITLE = "Players shops by /"; public static String GUI_LIST_TRANSACTIONS_TITLE = "Shop Transactions /"; public static String GUI_MANAGE_TITLE = "Shop Manager"; + public static String GUI_PLAYER_SETTINGS_TITLE = "Shop Settings Manager"; private static void guiTitles() { GUI_HOME_TITLE = config.getString("gui.home-title", GUI_HOME_TITLE); GUI_LIST_PLAYERS_TITLE = config.getString("gui.list-players-title", GUI_LIST_PLAYERS_TITLE); GUI_LIST_SHOPS_TITLE = config.getString("gui.list-shops-title", GUI_LIST_SHOPS_TITLE); GUI_LIST_TRANSACTIONS_TITLE = config.getString("gui.list-transactions-title", GUI_LIST_TRANSACTIONS_TITLE); GUI_MANAGE_TITLE = config.getString("gui.manage-title", GUI_MANAGE_TITLE); + GUI_PLAYER_SETTINGS_TITLE = config.getString("gui.player-settings-title", GUI_PLAYER_SETTINGS_TITLE); } } diff --git a/src/main/java/com/alttd/playershops/gui/GuiIcon.java b/src/main/java/com/alttd/playershops/gui/GuiIcon.java index 8618892..02a9f96 100644 --- a/src/main/java/com/alttd/playershops/gui/GuiIcon.java +++ b/src/main/java/com/alttd/playershops/gui/GuiIcon.java @@ -36,7 +36,10 @@ public enum GuiIcon { LIST_SHOP, LIST_PLAYER, LIST_PLAYER_ADMIN, - EMPTY_SHOP; + EMPTY_SHOP, + + SETTING_ON, + SETTING_OFF; @Getter private final int slot; diff --git a/src/main/java/com/alttd/playershops/gui/HomeGui.java b/src/main/java/com/alttd/playershops/gui/HomeGui.java index e45c63b..8262b67 100644 --- a/src/main/java/com/alttd/playershops/gui/HomeGui.java +++ b/src/main/java/com/alttd/playershops/gui/HomeGui.java @@ -35,8 +35,10 @@ public class HomeGui extends AbstractGui { ListPlayersGui listPlayersGui = new ListPlayersGui(uuid); listPlayersGui.setLastGui(this); listPlayersGui.open(); - } else if (slot == GuiIcon.HOME_SETTINGS.getSlot() && GuiIcon.HOME_SETTINGS.getItemStack().equals(item)) { - - } + }/* else if (slot == GuiIcon.HOME_SETTINGS.getSlot() && GuiIcon.HOME_SETTINGS.getItemStack().equals(item)) { + PlayerSettingsGui playerSettingsGui = new PlayerSettingsGui(uuid); + playerSettingsGui.setLastGui(this); + playerSettingsGui.open(); + }*/ } } diff --git a/src/main/java/com/alttd/playershops/gui/PlayerSettingsGui.java b/src/main/java/com/alttd/playershops/gui/PlayerSettingsGui.java new file mode 100644 index 0000000..0839693 --- /dev/null +++ b/src/main/java/com/alttd/playershops/gui/PlayerSettingsGui.java @@ -0,0 +1,62 @@ +package com.alttd.playershops.gui; + +import com.alttd.playershops.PlayerShops; +import com.alttd.playershops.config.MessageConfig; +import com.alttd.playershops.shop.PlayerSettings; +import com.alttd.playershops.utils.ShopUtil; +import com.alttd.playershops.utils.Util; +import it.unimi.dsi.fastutil.objects.Object2BooleanMap; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextReplacementConfig; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import org.bukkit.Bukkit; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class PlayerSettingsGui extends AbstractGui { + + public PlayerSettingsGui(UUID uuid) { + super(uuid); + this.inventory = Bukkit.createInventory(this, INV_SIZE, Util.parseMiniMessage(MessageConfig.GUI_PLAYER_SETTINGS_TITLE)); + initInvContents(); + } + + @Override + void initInvContents() { + super.initInvContents(); + int startIndex = pageIndex * 45; + ItemStack item; + + for(Object2BooleanMap.Entry entry : PlayerShops.getInstance().getShopHandler().getPlayerSettings(uuid).optionsMap.object2BooleanEntrySet()) { + item = entry.getBooleanValue() ? GuiIcon.SETTING_ON.getItemStack() : GuiIcon.SETTING_OFF.getItemStack(); + ItemMeta itemMeta = item.getItemMeta(); + if (itemMeta.hasDisplayName()) { + itemMeta.displayName( + itemMeta.displayName().replaceText( + TextReplacementConfig.builder() + .match("") + .replacement(entry.getKey().toString().toLowerCase().replace("_", " ")).build())); + } + item.setItemMeta(itemMeta); + + if (!addItem(item)) { + addNextPageItem(); + break; + } + } + if (pageIndex > 0) { + addPrevPageItem(); + } + } + + @Override + public void onClick(int slot, ItemStack item) { + super.onClick(slot, item); + } +} diff --git a/src/main/java/com/alttd/playershops/handler/ShopHandler.java b/src/main/java/com/alttd/playershops/handler/ShopHandler.java index 6032ac1..7cd05aa 100644 --- a/src/main/java/com/alttd/playershops/handler/ShopHandler.java +++ b/src/main/java/com/alttd/playershops/handler/ShopHandler.java @@ -2,6 +2,7 @@ package com.alttd.playershops.handler; import com.alttd.playershops.PlayerShops; import com.alttd.playershops.config.Config; +import com.alttd.playershops.shop.PlayerSettings; import com.alttd.playershops.shop.PlayerShop; import com.alttd.playershops.storage.database.DatabaseHelper; import com.alttd.playershops.utils.Logger; @@ -9,8 +10,6 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.Tag; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.DoubleChest; @@ -18,7 +17,6 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryHolder; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -31,12 +29,15 @@ public class ShopHandler { private final Map shopLocation; private final Map shopSignLocation; + private HashMap playerSettings; + public ShopHandler(PlayerShops instance) { plugin = instance; shopLocation = new ConcurrentHashMap<>(); shopSignLocation = new ConcurrentHashMap<>(); shopBuildLimits = new Object2IntOpenHashMap<>(); shopBuildLimits.defaultReturnValue(Config.shopLimit); + playerSettings = new HashMap<>(); loadShops(); } @@ -169,4 +170,9 @@ public class ShopHandler { return false; } + + public PlayerSettings getPlayerSettings(UUID uuid) { // TODO a manager for this, extracted and edited from unished PlayerSettingsPlugin + return playerSettings.computeIfAbsent(uuid, PlayerSettings::loadFromFile); + } + } diff --git a/src/main/java/com/alttd/playershops/shop/PlayerSettings.java b/src/main/java/com/alttd/playershops/shop/PlayerSettings.java new file mode 100644 index 0000000..dbf8d80 --- /dev/null +++ b/src/main/java/com/alttd/playershops/shop/PlayerSettings.java @@ -0,0 +1,103 @@ +package com.alttd.playershops.shop; + +import com.alttd.playershops.config.Config; +import it.unimi.dsi.fastutil.objects.Object2BooleanMap; +import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class PlayerSettings { + public enum Option { + SALE_OWNER_NOTIFICATIONS, SALE_USER_NOTIFICATIONS, + STOCK_NOTIFICATIONS, DISCORD_STOCK_NOTIFICATIONS + } + + private final UUID uuid; + public final Object2BooleanMap