diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d33521..00000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index b50771ba..00000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 47a3352b..00000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index 27954257..00000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index cff82f00..00000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml deleted file mode 100644 index 2b63946d..00000000 --- a/.idea/uiDesigner.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 83067447..00000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/API/pom.xml b/API/pom.xml index ae1a1e04..06cec5bf 100644 --- a/API/pom.xml +++ b/API/pom.xml @@ -42,7 +42,7 @@ io.papermc.paper paper-api - 1.21.5-R0.1-SNAPSHOT + 1.21.11-R0.1-SNAPSHOT provided diff --git a/API/src/main/java/dev/lrxh/api/NeptuneAPI.java b/API/src/main/java/dev/lrxh/api/NeptuneAPI.java index 2287df22..321563d7 100644 --- a/API/src/main/java/dev/lrxh/api/NeptuneAPI.java +++ b/API/src/main/java/dev/lrxh/api/NeptuneAPI.java @@ -1,7 +1,7 @@ package dev.lrxh.api; import dev.lrxh.api.arena.IArenaService; -import dev.lrxh.api.features.ICosmeticService; +import dev.lrxh.api.features.cosmetics.ICosmeticService; import dev.lrxh.api.features.IDivisionService; import dev.lrxh.api.features.IItemBrowserService; import dev.lrxh.api.kit.IKitService; diff --git a/API/src/main/java/dev/lrxh/api/NeptuneAPIImpl.java b/API/src/main/java/dev/lrxh/api/NeptuneAPIImpl.java index f7ff4fc3..789e8af7 100644 --- a/API/src/main/java/dev/lrxh/api/NeptuneAPIImpl.java +++ b/API/src/main/java/dev/lrxh/api/NeptuneAPIImpl.java @@ -1,7 +1,7 @@ package dev.lrxh.api; import dev.lrxh.api.arena.IArenaService; -import dev.lrxh.api.features.ICosmeticService; +import dev.lrxh.api.features.cosmetics.ICosmeticService; import dev.lrxh.api.features.IDivisionService; import dev.lrxh.api.features.IItemBrowserService; import dev.lrxh.api.kit.IKitService; diff --git a/API/src/main/java/dev/lrxh/api/features/ICosmeticService.java b/API/src/main/java/dev/lrxh/api/features/ICosmeticService.java deleted file mode 100644 index 62d4082b..00000000 --- a/API/src/main/java/dev/lrxh/api/features/ICosmeticService.java +++ /dev/null @@ -1,9 +0,0 @@ -package dev.lrxh.api.features; - -import java.util.Map; - -public interface ICosmeticService { - Map getDeathMessages(); - - void registerKillMessage(IKillMessagePackage killMessagePackage); -} diff --git a/API/src/main/java/dev/lrxh/api/features/cosmetics/ICosmetic.java b/API/src/main/java/dev/lrxh/api/features/cosmetics/ICosmetic.java new file mode 100644 index 00000000..38587cf1 --- /dev/null +++ b/API/src/main/java/dev/lrxh/api/features/cosmetics/ICosmetic.java @@ -0,0 +1,8 @@ +package dev.lrxh.api.features.cosmetics; + +import java.util.Map; + +public interface ICosmetic { + String key(); + Map getPackages(); +} diff --git a/API/src/main/java/dev/lrxh/api/features/IKillMessagePackage.java b/API/src/main/java/dev/lrxh/api/features/cosmetics/ICosmeticPackage.java similarity index 60% rename from API/src/main/java/dev/lrxh/api/features/IKillMessagePackage.java rename to API/src/main/java/dev/lrxh/api/features/cosmetics/ICosmeticPackage.java index 841a3a2d..5baca0c5 100644 --- a/API/src/main/java/dev/lrxh/api/features/IKillMessagePackage.java +++ b/API/src/main/java/dev/lrxh/api/features/cosmetics/ICosmeticPackage.java @@ -1,23 +1,14 @@ -package dev.lrxh.api.features; +package dev.lrxh.api.features.cosmetics; import org.bukkit.Material; import java.util.List; -public interface IKillMessagePackage { +public interface ICosmeticPackage { String getName(); - String getDisplayName(); - Material getMaterial(); - List getDescription(); - int getSlot(); - - List getMessages(); - - String getRandomMessage(); - String permission(); } diff --git a/API/src/main/java/dev/lrxh/api/features/cosmetics/ICosmeticService.java b/API/src/main/java/dev/lrxh/api/features/cosmetics/ICosmeticService.java new file mode 100644 index 00000000..bb41f89e --- /dev/null +++ b/API/src/main/java/dev/lrxh/api/features/cosmetics/ICosmeticService.java @@ -0,0 +1,13 @@ +package dev.lrxh.api.features.cosmetics; + +import dev.lrxh.api.features.cosmetics.armortrims.IArmorTrimPackage; +import dev.lrxh.api.features.cosmetics.killmessages.IKillMessagePackage; + +import java.util.Map; + +public interface ICosmeticService { + void registerCosmetic(ICosmetic cosmetic); + Map getPackages(ICosmetic cosmetic); + Map getKillMessagePackages(); + Map getArmorTrimPackages(); +} diff --git a/API/src/main/java/dev/lrxh/api/features/cosmetics/armortrims/IArmorTrimCosmetic.java b/API/src/main/java/dev/lrxh/api/features/cosmetics/armortrims/IArmorTrimCosmetic.java new file mode 100644 index 00000000..9c5fc0f1 --- /dev/null +++ b/API/src/main/java/dev/lrxh/api/features/cosmetics/armortrims/IArmorTrimCosmetic.java @@ -0,0 +1,12 @@ +package dev.lrxh.api.features.cosmetics.armortrims; + +import dev.lrxh.api.features.cosmetics.ICosmetic; + +import java.util.Map; + +public interface IArmorTrimCosmetic extends ICosmetic { + Map getPackages(); + IArmorTrimPackage getDefault(); + IArmorTrimPackage getOrDefault(String packageName); + void addPackage(IArmorTrimPackage cosmeticPackage); +} diff --git a/API/src/main/java/dev/lrxh/api/features/cosmetics/armortrims/IArmorTrimPackage.java b/API/src/main/java/dev/lrxh/api/features/cosmetics/armortrims/IArmorTrimPackage.java new file mode 100644 index 00000000..af98d128 --- /dev/null +++ b/API/src/main/java/dev/lrxh/api/features/cosmetics/armortrims/IArmorTrimPackage.java @@ -0,0 +1,15 @@ +package dev.lrxh.api.features.cosmetics.armortrims; + +import dev.lrxh.api.features.cosmetics.ICosmeticPackage; +import org.bukkit.inventory.meta.trim.ArmorTrim; + +public interface IArmorTrimPackage extends ICosmeticPackage { + ArmorTrim getHelmetTrim(); + String getHelmetName(); + ArmorTrim getChestplateTrim(); + String getChestplateName(); + ArmorTrim getLeggingsTrim(); + String getLeggingsName(); + ArmorTrim getBootsTrim(); + String getBootsName(); +} diff --git a/API/src/main/java/dev/lrxh/api/features/cosmetics/killmessages/IKillMessageCosmetic.java b/API/src/main/java/dev/lrxh/api/features/cosmetics/killmessages/IKillMessageCosmetic.java new file mode 100644 index 00000000..928c1be1 --- /dev/null +++ b/API/src/main/java/dev/lrxh/api/features/cosmetics/killmessages/IKillMessageCosmetic.java @@ -0,0 +1,12 @@ +package dev.lrxh.api.features.cosmetics.killmessages; + +import dev.lrxh.api.features.cosmetics.ICosmetic; + +import java.util.Map; + +public interface IKillMessageCosmetic extends ICosmetic { + Map getPackages(); + IKillMessagePackage getDefault(); + IKillMessagePackage getOrDefault(String packageName); + void addPackage(IKillMessagePackage killMessagePackage); +} diff --git a/API/src/main/java/dev/lrxh/api/features/cosmetics/killmessages/IKillMessagePackage.java b/API/src/main/java/dev/lrxh/api/features/cosmetics/killmessages/IKillMessagePackage.java new file mode 100644 index 00000000..d8cb9330 --- /dev/null +++ b/API/src/main/java/dev/lrxh/api/features/cosmetics/killmessages/IKillMessagePackage.java @@ -0,0 +1,11 @@ +package dev.lrxh.api.features.cosmetics.killmessages; + +import dev.lrxh.api.features.cosmetics.ICosmeticPackage; + +import java.util.List; + +public interface IKillMessagePackage extends ICosmeticPackage { + List getMessages(); + String getRandomMessage(); + String permission(); +} diff --git a/Plugin/src/main/java/dev/lrxh/neptune/Neptune.java b/Plugin/src/main/java/dev/lrxh/neptune/Neptune.java index 0511a8e3..a553d2d7 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/Neptune.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/Neptune.java @@ -124,11 +124,8 @@ private void loadManager() { KitService.get().load(); this.cache = new Cache(); HotbarService.get().load(); - CosmeticService.get().load(); - DivisionService.get().load(); - LeaderboardService.get().load(); registerListeners(); diff --git a/Plugin/src/main/java/dev/lrxh/neptune/configs/ConfigService.java b/Plugin/src/main/java/dev/lrxh/neptune/configs/ConfigService.java index 551ed1f3..d8f6cf73 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/configs/ConfigService.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/configs/ConfigService.java @@ -18,6 +18,7 @@ public class ConfigService { private ConfigFile divisionsConfig; private ConfigFile cosmeticsConfig; private ConfigFile killMessagesConfig; + private ConfigFile armorTrimsConfig; private ConfigFile soundsConfig; public static ConfigService get() { @@ -37,8 +38,10 @@ public void load() { divisionsConfig = new ConfigFile("divisions"); cosmeticsConfig = new ConfigFile("cosmetics"); killMessagesConfig = new ConfigFile("kill-messages"); + armorTrimsConfig = new ConfigFile("armor-trims"); soundsConfig = new ConfigFile("sounds"); + initialize(); } diff --git a/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/MenusLocale.java b/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/MenusLocale.java index 4ab2533a..31bca26e 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/MenusLocale.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/MenusLocale.java @@ -454,6 +454,7 @@ public enum MenusLocale implements IDataAccessor { "", " &7Current Kill Effect: &b", " &7Current Kill Message: &b", + " &7Current Armor Trim: &b", " ", "&aClick to open cosmetics menu"), SETTINGS_COSMETICS_SLOT("SETTINGS.SETTINGS.COSMETICS.SLOT", DataType.INT, "15"), @@ -521,6 +522,35 @@ public enum MenusLocale implements IDataAccessor { " ", "", " ", + "&cNo permission"), + ARMOR_TRIMS_TITLE("SETTINGS.ARMOR-TRIMS.TITLE", DataType.STRING, "&7Armor Trims"), + ARMOR_TRIMS_FILTER("SETTINGS.ARMOR-TRIMS.FILTER-TYPE", "FILL, BORDER, NONE", DataType.STRING, "FILL"), + ARMOR_TRIMS_SLOT("SETTINGS.COSMETICS.ARMOR-TRIMS.SLOT", DataType.INT, "12"), + ARMOR_TRIMS_NAME("SETTINGS.COSMETICS.ARMOR-TRIMS.NAME", DataType.STRING, "&bArmor Trims"), + ARMOR_TRIMS_MATERIAL("SETTINGS.COSMETICS.ARMOR-TRIMS.MATERIAL", DataType.STRING, "NETHERITE_CHESTPLATE"), + ARMOR_TRIMS_LORE("SETTINGS.COSMETICS.ARMOR-TRIMS.LORE", DataType.STRING_LIST, + "&7View all available armor trims", " ", "&aClick to open"), + ARMOR_TRIMS_NAME_SELECTED("SETTINGS.ARMOR-TRIMS.SELECTED.NAME", DataType.STRING, + " &7&o(Selected)"), + ARMOR_TRIMS_NAME_NOT_SELECTED("SETTINGS.ARMOR-TRIMS.UNSELECTED.NAME", DataType.STRING, ""), + ARMOR_TRIMS_DISPLAY_HELMET_MATERIAL("SETTINGS.ARMOR-TRIMS.DISPLAY.HELMET.MATERIAL", DataType.STRING, "netherite_helmet"), + ARMOR_TRIMS_DISPLAY_CHESTPLATE_MATERIAL("SETTINGS.ARMOR-TRIMS.DISPLAY.CHESTPLATE.MATERIAL", DataType.STRING, "netherite_chestplate"), + ARMOR_TRIMS_DISPLAY_LEGGINGS_MATERIAL("SETTINGS.ARMOR-TRIMS.DISPLAY.LEGGINGS.MATERIAL", DataType.STRING, "netherite_leggings"), + ARMOR_TRIMS_DISPLAY_BOOTS_MATERIAL("SETTINGS.ARMOR-TRIMS.DISPLAY.BOOTS.MATERIAL", DataType.STRING, "netherite_boots"), + ARMOR_TRIMS_SELECTED_LORE("SETTINGS.ARMOR-TRIMS.SELECTED.LORE", DataType.STRING_LIST, + " ", + "", + " ", + "&eCurrently Selected"), + ARMOR_TRIMS_UNSELECTED_LORE("SETTINGS.ARMOR-TRIMS.UNSELECTED.LORE", DataType.STRING_LIST, + " ", + "", + " ", + "&aClick to select"), + ARMOR_TRIMS_NO_PERMISSION_LORE("SETTINGS.ARMOR-TRIMS.NO-PERMISSION.LORE", DataType.STRING_LIST, + " ", + "", + " ", "&cNo permission"); private final String path; diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/CosmeticService.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/CosmeticService.java index 0d20790e..0e8b56dd 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/CosmeticService.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/CosmeticService.java @@ -1,27 +1,25 @@ package dev.lrxh.neptune.feature.cosmetics; -import dev.lrxh.api.features.ICosmeticService; -import dev.lrxh.api.features.IKillMessagePackage; +import dev.lrxh.api.features.cosmetics.ICosmetic; +import dev.lrxh.api.features.cosmetics.ICosmeticService; import dev.lrxh.neptune.configs.ConfigService; -import dev.lrxh.neptune.feature.cosmetics.impl.KillMessagePackage; +import dev.lrxh.neptune.feature.cosmetics.impl.Cosmetic; +import dev.lrxh.neptune.feature.cosmetics.impl.CosmeticPackage; +import dev.lrxh.neptune.feature.cosmetics.impl.armortrims.ArmorTrimCosmetic; +import dev.lrxh.neptune.feature.cosmetics.impl.armortrims.ArmorTrimPackage; +import dev.lrxh.neptune.feature.cosmetics.impl.killmessage.KillMessageCosmetic; +import dev.lrxh.neptune.feature.cosmetics.impl.killmessage.KillMessagePackage; import dev.lrxh.neptune.providers.manager.IService; import dev.lrxh.neptune.utils.ConfigFile; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; import java.util.HashMap; -import java.util.List; import java.util.Map; -import java.util.Objects; +@SuppressWarnings("ALL") public class CosmeticService extends IService implements ICosmeticService { private static CosmeticService instance; - public final Map deathMessages; - - public CosmeticService() { - this.deathMessages = new HashMap<>(); - load(); - } + public Map> cosmetics + = new HashMap<>(); public static CosmeticService get() { if (instance == null) instance = new CosmeticService(); @@ -29,29 +27,10 @@ public static CosmeticService get() { return instance; } - public Map getDeathMessages() { - return deathMessages.entrySet().stream().collect(HashMap::new, (map, entry) -> map.put(entry.getKey(), entry.getValue()), HashMap::putAll); - } - @Override public void load() { - FileConfiguration config = ConfigService.get().getKillMessagesConfig().getConfiguration(); - if (config.contains("KILL_MESSAGES")) { - for (String deathPackageName : getKeys(config, "KILL_MESSAGES")) { - String path = "KILL_MESSAGES." + deathPackageName + "."; - String displayName = config.getString(path + "DISPLAY_NAME"); - Material material = Material.getMaterial(Objects.requireNonNull(config.getString(path + "MATERIAL"))); - List description = config.getStringList(path + "DESCRIPTION"); - int slot = config.getInt(path + "SLOT"); - List messages = config.getStringList(path + "MESSAGES"); - - deathMessages.put(deathPackageName, new KillMessagePackage(deathPackageName, displayName, material, description, slot, messages)); - } - } - } - - public void registerKillMessage(IKillMessagePackage killMessagePackage) { - deathMessages.put(killMessagePackage.getName(), (KillMessagePackage) killMessagePackage); + KillMessageCosmetic.get().load(); + ArmorTrimCosmetic.get().load(); } @Override @@ -59,19 +38,22 @@ public void save() { } - @Override - public ConfigFile getConfigFile() { - return ConfigService.get().getCosmeticsConfig(); + public void registerCosmetic(ICosmetic cosmetic) { + cosmetics.put((Cosmetic) cosmetic, (Map) cosmetic.getPackages()); } - public KillMessagePackage getDeathMessagePackage(String packageName) { - if (!deathMessages.containsKey(packageName)) { - return getDefault(); - } - return deathMessages.get(packageName); + public Map getPackages(ICosmetic cosmetic) { + return cosmetics.getOrDefault((Cosmetic) cosmetic, null); + } + public Map getKillMessagePackages() { + return (Map) getPackages(KillMessageCosmetic.get()); + } + public Map getArmorTrimPackages() { + return (Map) getPackages(ArmorTrimCosmetic.get()); } - public KillMessagePackage getDefault() { - return deathMessages.get("DEFAULT"); + @Override + public ConfigFile getConfigFile() { + return ConfigService.get().getCosmeticsConfig(); } } diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/KillEffect.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/KillEffect.java similarity index 98% rename from Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/KillEffect.java rename to Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/KillEffect.java index 8f516306..eb6913b6 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/KillEffect.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/KillEffect.java @@ -1,4 +1,4 @@ -package dev.lrxh.neptune.feature.cosmetics.impl; +package dev.lrxh.neptune.feature.cosmetics; import dev.lrxh.neptune.configs.impl.CosmeticsLocale; import dev.lrxh.neptune.utils.RandomUtils; diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/Cosmetic.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/Cosmetic.java new file mode 100644 index 00000000..ed3cd522 --- /dev/null +++ b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/Cosmetic.java @@ -0,0 +1,22 @@ +package dev.lrxh.neptune.feature.cosmetics.impl; + +import dev.lrxh.api.features.cosmetics.ICosmetic; +import dev.lrxh.api.features.cosmetics.ICosmeticPackage; +import lombok.Getter; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +@Getter +public abstract class Cosmetic implements ICosmetic { + public abstract String key(); + public abstract Map getPackages(); + public abstract ICosmeticPackage getOrDefault(String packageName); + public Set getKeys(FileConfiguration config, String path) { + return Objects.requireNonNull(config.getConfigurationSection(path)).getKeys(false); + } + public abstract YamlConfiguration getConfig(); +} diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/CosmeticPackage.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/CosmeticPackage.java new file mode 100644 index 00000000..e06b44c5 --- /dev/null +++ b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/CosmeticPackage.java @@ -0,0 +1,20 @@ +package dev.lrxh.neptune.feature.cosmetics.impl; + +import dev.lrxh.api.features.cosmetics.ICosmeticPackage; +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.bukkit.Material; + +import java.util.List; + +@Getter +@AllArgsConstructor +public abstract class CosmeticPackage implements ICosmeticPackage { + protected final String name; + protected final String displayName; + protected final Material material; + protected final List description; + protected final int slot; + + public abstract String permission(); +} \ No newline at end of file diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/KillMessagePackage.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/KillMessagePackage.java deleted file mode 100644 index c76e52af..00000000 --- a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/KillMessagePackage.java +++ /dev/null @@ -1,28 +0,0 @@ -package dev.lrxh.neptune.feature.cosmetics.impl; - -import dev.lrxh.api.features.IKillMessagePackage; -import dev.lrxh.neptune.utils.RandomUtils; -import lombok.AllArgsConstructor; -import lombok.Getter; -import org.bukkit.Material; - -import java.util.List; - -@Getter -@AllArgsConstructor -public class KillMessagePackage implements IKillMessagePackage { - private String name; - private String displayName; - private Material material; - private List description; - private int slot; - private List messages; - - public String getRandomMessage() { - return messages.get(RandomUtils.getRandInt(messages.size())); - } - - public String permission() { - return "neptune.cosmetics.killmessages." + name.toLowerCase(); - } -} diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/armortrims/ArmorTrimCosmetic.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/armortrims/ArmorTrimCosmetic.java new file mode 100644 index 00000000..cacd27c1 --- /dev/null +++ b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/armortrims/ArmorTrimCosmetic.java @@ -0,0 +1,76 @@ +package dev.lrxh.neptune.feature.cosmetics.impl.armortrims; + +import dev.lrxh.api.features.cosmetics.armortrims.IArmorTrimCosmetic; +import dev.lrxh.api.features.cosmetics.armortrims.IArmorTrimPackage; +import dev.lrxh.neptune.configs.ConfigService; +import dev.lrxh.neptune.feature.cosmetics.CosmeticService; +import dev.lrxh.neptune.feature.cosmetics.impl.Cosmetic; +import dev.lrxh.neptune.utils.ItemUtils; +import lombok.Getter; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.inventory.meta.trim.ArmorTrim; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@Getter +public class ArmorTrimCosmetic extends Cosmetic implements IArmorTrimCosmetic { + private static ArmorTrimCosmetic instance; + public static ArmorTrimCosmetic get() { + if (instance == null) instance = new ArmorTrimCosmetic(); + return instance; + } + + public String key() { + return "armortrims"; + } + + private final Map packages = new HashMap<>(); + public void load() { + packages.clear(); + FileConfiguration armorTrimsConfig = ConfigService.get().getArmorTrimsConfig().getConfiguration(); + if (!armorTrimsConfig.contains("ARMOR_TRIMS")) return; + for (String armorTrimName : getKeys(armorTrimsConfig, "ARMOR_TRIMS")) { + String path = "ARMOR_TRIMS." + armorTrimName + "."; + String displayName = armorTrimsConfig.getString(path + "DISPLAY_NAME"); + Material material = ItemUtils.getMaterial(Objects.requireNonNull(armorTrimsConfig.getString(path + "MATERIAL"))); + List description = armorTrimsConfig.getStringList(path + "DESCRIPTION"); + int slot = armorTrimsConfig.getInt(path + "SLOT"); + ArmorTrim helmetTrim = ItemUtils.getArmorTrim(armorTrimsConfig.getString(path + "HELMET.MATERIAL"), armorTrimsConfig.getString(path + "HELMET.PATTERN")); + String helmetName = armorTrimsConfig.getString(path + "HELMET.DISPLAY_NAME"); + ArmorTrim chestplateTrim = ItemUtils.getArmorTrim(armorTrimsConfig.getString(path + "CHESTPLATE.MATERIAL"), armorTrimsConfig.getString(path + "CHESTPLATE.PATTERN")); + String chestplateName = armorTrimsConfig.getString(path + "CHESTPLATE.DISPLAY_NAME"); + ArmorTrim leggingsTrim = ItemUtils.getArmorTrim(armorTrimsConfig.getString(path + "LEGGINGS.MATERIAL"), armorTrimsConfig.getString(path + "LEGGINGS.PATTERN")); + String leggingsName = armorTrimsConfig.getString(path + "LEGGINGS.DISPLAY_NAME"); + ArmorTrim bootsTrim = ItemUtils.getArmorTrim(armorTrimsConfig.getString(path + "BOOTS.MATERIAL"), armorTrimsConfig.getString(path + "BOOTS.PATTERN")); + String bootsName = armorTrimsConfig.getString(path + "BOOTS.DISPLAY_NAME"); + + packages.put(armorTrimName, new ArmorTrimPackage( + armorTrimName, displayName, material, description, slot, + helmetTrim, helmetName, + chestplateTrim, chestplateName, + leggingsTrim, leggingsName, + bootsTrim, bootsName)); + } + CosmeticService.get().registerCosmetic(this); + } + + public ArmorTrimPackage getDefault() { + return packages.get("DEFAULT"); + } + public ArmorTrimPackage getOrDefault(String packageName) { + if (packages.containsKey(packageName)) return packages.get(packageName); + return getDefault(); + } + + public void addPackage(IArmorTrimPackage armorTrimPackage) { + packages.put(armorTrimPackage.getName(), (ArmorTrimPackage) armorTrimPackage); + } + public YamlConfiguration getConfig() { + return ConfigService.get().getArmorTrimsConfig().getConfiguration(); + } +} diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/armortrims/ArmorTrimPackage.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/armortrims/ArmorTrimPackage.java new file mode 100644 index 00000000..ee9b2ec3 --- /dev/null +++ b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/armortrims/ArmorTrimPackage.java @@ -0,0 +1,49 @@ +package dev.lrxh.neptune.feature.cosmetics.impl.armortrims; + +import dev.lrxh.api.features.cosmetics.armortrims.IArmorTrimPackage; +import dev.lrxh.neptune.feature.cosmetics.impl.CosmeticPackage; +import lombok.Getter; +import org.bukkit.Material; +import org.bukkit.inventory.meta.trim.ArmorTrim; + +import java.util.List; + +@Getter +public class ArmorTrimPackage extends CosmeticPackage implements IArmorTrimPackage { + private final ArmorTrim helmetTrim; + private final String helmetName; + private final ArmorTrim chestplateTrim; + private final String chestplateName; + private final ArmorTrim leggingsTrim; + private final String leggingsName; + private final ArmorTrim bootsTrim; + private final String bootsName; + + public ArmorTrimPackage( + String name, + String displayName, + Material material, + List description, + int slot, + ArmorTrim helmetTrim, + String helmetName, + ArmorTrim chestplateTrim, + String chestplateName, + ArmorTrim leggingsTrim, + String leggingsName, + ArmorTrim bootsTrim, + String bootsName + ) { + super(name, displayName, material, description, slot); + this.helmetTrim = helmetTrim; + this.helmetName = helmetName; + this.chestplateTrim = chestplateTrim; + this.chestplateName = chestplateName; + this.leggingsTrim = leggingsTrim; + this.leggingsName = leggingsName; + this.bootsTrim = bootsTrim; + this.bootsName = bootsName; + } + + public String permission() { return "neptune.cosmetics.armortrims." + name.toLowerCase(); } +} diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/killmessage/KillMessageCosmetic.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/killmessage/KillMessageCosmetic.java new file mode 100644 index 00000000..95024602 --- /dev/null +++ b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/killmessage/KillMessageCosmetic.java @@ -0,0 +1,61 @@ +package dev.lrxh.neptune.feature.cosmetics.impl.killmessage; + +import dev.lrxh.api.features.cosmetics.killmessages.IKillMessageCosmetic; +import dev.lrxh.api.features.cosmetics.killmessages.IKillMessagePackage; +import dev.lrxh.neptune.configs.ConfigService; +import dev.lrxh.neptune.feature.cosmetics.impl.Cosmetic; +import lombok.Getter; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@Getter +public class KillMessageCosmetic extends Cosmetic implements IKillMessageCosmetic { + private static KillMessageCosmetic instance; + public static KillMessageCosmetic get() { + if (instance == null) instance = new KillMessageCosmetic(); + return instance; + } + + public String key() { + return "killmessages"; + } + + public Map packages = new HashMap<>(); + public void load() { + packages.clear(); + FileConfiguration killMessagesConfig = ConfigService.get().getKillMessagesConfig().getConfiguration(); + if (killMessagesConfig.contains("KILL_MESSAGES")) { + for (String packageName : getKeys(killMessagesConfig, "KILL_MESSAGES")) { + String path = "KILL_MESSAGES." + packageName + "."; + String displayName = killMessagesConfig.getString(path + "DISPLAY_NAME"); + Material material = Material.getMaterial(Objects.requireNonNull(killMessagesConfig.getString(path + "MATERIAL"))); + List description = killMessagesConfig.getStringList(path + "DESCRIPTION"); + int slot = killMessagesConfig.getInt(path + "SLOT"); + List messages = killMessagesConfig.getStringList(path + "MESSAGES"); + + packages.put(packageName, new KillMessagePackage(packageName, displayName, material, description, slot, messages)); + } + } + } + + public KillMessagePackage getDefault() { + return packages.get("DEFAULT"); + } + public KillMessagePackage getOrDefault(String packageName) { + if (packages.containsKey(packageName)) return packages.get(packageName); + return getDefault(); + } + + public void addPackage(IKillMessagePackage killMessagePackage) { + packages.put(killMessagePackage.getName(), (KillMessagePackage) killMessagePackage); + } + public YamlConfiguration getConfig() { + return ConfigService.get().getKillMessagesConfig().getConfiguration(); + } +} diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/killmessage/KillMessagePackage.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/killmessage/KillMessagePackage.java new file mode 100644 index 00000000..8c90602e --- /dev/null +++ b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/killmessage/KillMessagePackage.java @@ -0,0 +1,33 @@ +package dev.lrxh.neptune.feature.cosmetics.impl.killmessage; + +import dev.lrxh.api.features.cosmetics.killmessages.IKillMessagePackage; +import dev.lrxh.neptune.feature.cosmetics.impl.CosmeticPackage; +import dev.lrxh.neptune.utils.RandomUtils; +import lombok.Getter; +import org.bukkit.Material; + +import java.util.List; + +@Getter +public class KillMessagePackage extends CosmeticPackage implements IKillMessagePackage { + private final List messages; + + public KillMessagePackage( + String name, + String displayName, + Material material, + List description, + int slot, + List messages + ) { + super(name, displayName, material, description, slot); + this.messages = messages; + } + + public String getRandomMessage() { + return messages.get(RandomUtils.getRandInt(messages.size())); + } + public String permission() { + return "neptune.cosmetics.killmessages." + name.toLowerCase(); + } +} diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/menu/CosmeticsManageMenu.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/menu/CosmeticsManageMenu.java index d41299db..ab5efc8d 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/menu/CosmeticsManageMenu.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/menu/CosmeticsManageMenu.java @@ -1,6 +1,7 @@ package dev.lrxh.neptune.feature.cosmetics.menu; import dev.lrxh.neptune.configs.impl.MenusLocale; +import dev.lrxh.neptune.feature.cosmetics.menu.armorTrims.ArmorTrimsMenu; import dev.lrxh.neptune.feature.cosmetics.menu.killEffects.KillEffectsMenu; import dev.lrxh.neptune.feature.cosmetics.menu.killMessages.KillMessagesMenu; import dev.lrxh.neptune.utils.menu.Button; @@ -34,6 +35,13 @@ public List