Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package dev.lrxh.api.features.cosmetics.shieldpatterns;

import dev.lrxh.api.features.cosmetics.ICosmetic;

import java.util.Map;

public interface IShieldPatternCosmetic extends ICosmetic {
Map<String, ? extends IShieldPatternPackage> getPackages();
IShieldPatternPackage getDefault();
IShieldPatternPackage getOrDefault(String packageName);
void addPackage(IShieldPatternPackage killMessagePackage);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package dev.lrxh.api.features.cosmetics.shieldpatterns;

import dev.lrxh.api.features.cosmetics.ICosmeticPackage;
import org.bukkit.block.banner.Pattern;

import java.util.List;

public interface IShieldPatternPackage extends ICosmeticPackage {
List<Pattern> getPatterns();
String permission();
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public class ConfigService {
private ConfigFile cosmeticsConfig;
private ConfigFile killMessagesConfig;
private ConfigFile armorTrimsConfig;
private ConfigFile shieldPatternsConfig;
private ConfigFile soundsConfig;

public static ConfigService get() {
Expand All @@ -40,7 +41,7 @@ public void load() {
killMessagesConfig = new ConfigFile("kill-messages");
armorTrimsConfig = new ConfigFile("armor-trims");
soundsConfig = new ConfigFile("sounds");

shieldPatternsConfig = new ConfigFile("shield-patterns");

initialize();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -442,7 +442,7 @@ public enum MenusLocale implements IDataAccessor {
"&7Set Max ping you",
"&7can match against.",
"",
" &7Current Ping-range: &b<ping>",
" &7Current Ping-range: &b<max-ping>",
" ",
"&a + Left Click to increase",
"&c - Right Click to decrease"),
Expand All @@ -455,6 +455,7 @@ public enum MenusLocale implements IDataAccessor {
" &7Current Kill Effect: &b<kill-effect>",
" &7Current Kill Message: &b<kill-message>",
" &7Current Armor Trim: &b<armor-trim>",
" &7Current Shield Pattern: &b<shield-pattern>",
" ",
"&aClick to open cosmetics menu"),
SETTINGS_COSMETICS_SLOT("SETTINGS.SETTINGS.COSMETICS.SLOT", DataType.INT, "15"),
Expand Down Expand Up @@ -551,6 +552,32 @@ public enum MenusLocale implements IDataAccessor {
" ",
"<description>",
" ",
"&cNo permission"),
SHIELD_PATTERNS_TITLE("SETTINGS.SHIELD-PATTERNS.TITLE", DataType.STRING, "&7Shield Patterns"),
SHIELD_PATTERNS_SIZE("SETTINGS.SHIELD-PATTERNS.SIZE", DataType.INT, "27"),
SHIELD_PATTERNS_FILTER("SETTINGS.SHIELD-PATTERNS.FILTER-TYPE", "FILL, BORDER, NONE", DataType.STRING, "FILL"),
SHIELD_PATTERNS_SLOT("SETTINGS.COSMETICS.SHIELD-PATTERNS.SLOT", DataType.INT, "13"),
SHIELD_PATTERNS_NAME("SETTINGS.COSMETICS.SHIELD-PATTERNS.NAME", DataType.STRING, "&bShield Patterns"),
SHIELD_PATTERNS_MATERIAL("SETTINGS.COSMETICS.SHIELD-PATTERNS.MATERIAL", DataType.STRING, "SHIELD"),
SHIELD_PATTERNS_LORE("SETTINGS.COSMETICS.SHIELD-PATTERNS.LORE", DataType.STRING_LIST,
"&7View all available shield pattern", " ", "&aClick to open"),
SHIELD_PATTERNS_NAME_SELECTED("SETTINGS.SHIELD-PATTERNS.SELECTED.NAME", DataType.STRING,
"<display-name> &7&o(Selected)"),
SHIELD_PATTERNS_NAME_NOT_SELECTED("SETTINGS.SHIELD-PATTERNS.UNSELECTED.NAME", DataType.STRING, "<display-name>"),
SHIELD_PATTERNS_SELECTED_LORE("SETTINGS.SHIELD-PATTERNS.SELECTED.LORE", DataType.STRING_LIST,
" ",
"<description> ",
" ",
"&eCurrently Selected"),
SHIELD_PATTERNS_UNSELECTED_LORE("SETTINGS.SHIELD-PATTERNS.UNSELECTED.LORE", DataType.STRING_LIST,
" ",
"<description> ",
" ",
"&aClick to select"),
SHIELD_PATTERNS_NO_PERMISSION_LORE("SETTINGS.SHIELD-PATTERNS.NO-PERMISSION.LORE", DataType.STRING_LIST,
" ",
"<description> ",
" ",
"&cNo permission");

private final String path;
Expand Down Expand Up @@ -597,6 +624,12 @@ public void update() {
.replaceAll("<kill_death_ratio>", "<kdr>")
).toList()
);
SETTINGS_PING_RANGE_LORE.set(
SETTINGS_PING_RANGE_LORE.getStringList().stream().map(str ->
str
.replaceAll("<ping>", "<max-ping>")
).toList()
);
if (MATCH_LIST_SIZE.getInt() == 36) MATCH_LIST_SIZE.set(54);
if (MATCH_LIST_STARTING_SLOT.getInt() == 10 && MATCH_LIST_FILTER.getString().equals("FILTER")) MATCH_LIST_FILTER.set("BORDER");
if (MATCH_LIST_STARTING_SLOT.getInt() == 10) MATCH_LIST_STARTING_SLOT.set(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ public enum DataType {
BOOLEAN,
STRING,
STRING_LIST,
LIST,
INT
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;

Expand All @@ -25,6 +26,14 @@ default int getInt() {
return getConfigFile().getConfiguration().getInt(getPath());
}

default <T> List<T> getList(Class<T> type) {
return Objects.requireNonNull(getConfigFile().getConfiguration().getList(getPath()))
.stream()
.filter(type::isInstance)
.map(type::cast)
.toList();
}

default boolean getBoolean() {
return getConfigFile().getConfiguration().getBoolean(getPath());
}
Expand Down Expand Up @@ -52,12 +61,13 @@ default void applyHeader() {
}
}

default void setValue(String path, List<String> rawValue, DataType type) {
default void setValue(String path, List<?> rawValue, DataType type) {
switch (type) {
case STRING_LIST -> getConfigFile().getConfiguration().set(path, rawValue);
case STRING -> getConfigFile().getConfiguration().set(path, rawValue.get(0));
case INT -> getConfigFile().getConfiguration().set(path, Integer.parseInt(rawValue.get(0)));
case BOOLEAN -> getConfigFile().getConfiguration().set(path, Boolean.parseBoolean(rawValue.get(0)));
case LIST -> getConfigFile().getConfiguration().set(path, rawValue);
case STRING_LIST -> getConfigFile().getConfiguration().set(path, rawValue.stream().map(String::valueOf).toList());
case STRING -> getConfigFile().getConfiguration().set(path, String.valueOf(rawValue.getFirst()));
case INT -> getConfigFile().getConfiguration().set(path, Integer.parseInt(String.valueOf(rawValue.getFirst())));
case BOOLEAN -> getConfigFile().getConfiguration().set(path, Boolean.parseBoolean(String.valueOf(rawValue.getFirst())));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
import dev.lrxh.neptune.configs.ConfigService;
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.feature.cosmetics.impl.cosmetics.armortrims.ArmorTrimCosmetic;
import dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.armortrims.ArmorTrimPackage;
import dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.killmessage.KillMessageCosmetic;
import dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.killmessage.KillMessagePackage;
import dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.shieldpatterns.ShieldPatternCosmetic;
import dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.shieldpatterns.ShieldPatternPackage;
import dev.lrxh.neptune.providers.manager.IService;
import dev.lrxh.neptune.utils.ConfigFile;

Expand All @@ -31,11 +33,12 @@ public static CosmeticService get() {
public void load() {
KillMessageCosmetic.get().load();
ArmorTrimCosmetic.get().load();
ShieldPatternCosmetic.get().load();
}

@Override
public void save() {

ShieldPatternCosmetic.get().getConfigFile().save();
}

public void registerCosmetic(ICosmetic cosmetic) {
Expand All @@ -51,6 +54,9 @@ public Map<String, KillMessagePackage> getKillMessagePackages() {
public Map<String, ArmorTrimPackage> getArmorTrimPackages() {
return (Map<String, ArmorTrimPackage>) getPackages(ArmorTrimCosmetic.get());
}
public Map<String, ShieldPatternPackage> getShieldPatternPackages() {
return (Map<String, ShieldPatternPackage>) getPackages(ShieldPatternCosmetic.get());
}

@Override
public ConfigFile getConfigFile() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.lrxh.neptune.feature.cosmetics.impl.armortrims;
package dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.armortrims;

import dev.lrxh.api.features.cosmetics.armortrims.IArmorTrimCosmetic;
import dev.lrxh.api.features.cosmetics.armortrims.IArmorTrimPackage;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.lrxh.neptune.feature.cosmetics.impl.armortrims;
package dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.armortrims;

import dev.lrxh.api.features.cosmetics.armortrims.IArmorTrimPackage;
import dev.lrxh.neptune.feature.cosmetics.impl.CosmeticPackage;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package dev.lrxh.neptune.feature.cosmetics.impl.killmessage;
package dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.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.CosmeticService;
import dev.lrxh.neptune.feature.cosmetics.impl.Cosmetic;
import lombok.Getter;
import org.bukkit.Material;
Expand Down Expand Up @@ -42,6 +43,7 @@ public void load() {
packages.put(packageName, new KillMessagePackage(packageName, displayName, material, description, slot, messages));
}
}
CosmeticService.get().registerCosmetic(this);
}

public KillMessagePackage getDefault() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.lrxh.neptune.feature.cosmetics.impl.killmessage;
package dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.killmessage;

import dev.lrxh.api.features.cosmetics.killmessages.IKillMessagePackage;
import dev.lrxh.neptune.feature.cosmetics.impl.CosmeticPackage;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.shieldpatterns;

import dev.lrxh.api.features.cosmetics.shieldpatterns.IShieldPatternCosmetic;
import dev.lrxh.api.features.cosmetics.shieldpatterns.IShieldPatternPackage;
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.ConfigFile;
import dev.lrxh.neptune.utils.ItemUtils;
import io.papermc.paper.registry.RegistryAccess;
import io.papermc.paper.registry.RegistryKey;
import lombok.Getter;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.block.banner.Pattern;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;

import java.util.*;

@Getter
public class ShieldPatternCosmetic extends Cosmetic implements IShieldPatternCosmetic {
private static ShieldPatternCosmetic instance;
public static ShieldPatternCosmetic get() {
if (instance == null) instance = new ShieldPatternCosmetic();
return instance;
}

public String key() {
return "shieldpatterns";
}

public Map<String, ShieldPatternPackage> packages = new HashMap<>();
public void load() {
packages.clear();
FileConfiguration shieldPatternsConfig = getConfig();
if (shieldPatternsConfig.contains("SHIELD_PATTERNS")) {
for (String packageName : getKeys(shieldPatternsConfig, "SHIELD_PATTERNS")) {
String path = "SHIELD_PATTERNS." + packageName + ".";
String displayName = shieldPatternsConfig.getString(path + "DISPLAY_NAME");
Material material = ItemUtils.getMaterial(Objects.requireNonNull(shieldPatternsConfig.getString(path + "MATERIAL")));
List<String> description = shieldPatternsConfig.getStringList(path + "DESCRIPTION");
int slot = shieldPatternsConfig.getInt(path + "SLOT");
List<Pattern> patterns = new ArrayList<>();
List<?> configPatterns = shieldPatternsConfig.getList(path + "PATTERNS");
if (configPatterns != null) {
for (Object pattern : configPatterns) {
Map<String, String> map = (Map<String, String>) pattern;
patterns.add(new Pattern(DyeColor.valueOf(map.get("DYE")),
Objects.requireNonNull(RegistryAccess.registryAccess().getRegistry(RegistryKey.BANNER_PATTERN)
.get(Objects.requireNonNull(NamespacedKey.fromString((map.get("PATTERN"))))))));
}
}

packages.put(packageName, new ShieldPatternPackage(packageName, displayName, material, description, slot, patterns));
}
}
CosmeticService.get().registerCosmetic(this);
}

public ShieldPatternPackage getDefault() {
return packages.get("DEFAULT");
}
public ShieldPatternPackage getOrDefault(String packageName) {
if (packages.containsKey(packageName)) return packages.get(packageName);
return getDefault();
}

public void addPackage(IShieldPatternPackage shieldPatternPackage) {
packages.put(shieldPatternPackage.getName(), (ShieldPatternPackage) shieldPatternPackage);
}
public YamlConfiguration getConfig() {
return getConfigFile().getConfiguration();
}
public ConfigFile getConfigFile() {
return ConfigService.get().getShieldPatternsConfig();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.shieldpatterns;

import dev.lrxh.api.features.cosmetics.shieldpatterns.IShieldPatternPackage;
import dev.lrxh.neptune.feature.cosmetics.impl.CosmeticPackage;
import lombok.Getter;
import org.bukkit.Material;
import org.bukkit.block.banner.Pattern;

import java.util.List;

@Getter
public class ShieldPatternPackage extends CosmeticPackage implements IShieldPatternPackage {
private final List<Pattern> patterns;

public ShieldPatternPackage(
String name,
String displayName,
Material material,
List<String> description,
int slot,
List<Pattern> patterns
) {
super(name, displayName, material, description, slot);
this.patterns = patterns;
}

public String permission() {
return "neptune.cosmetics.killmessages." + name.toLowerCase();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
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.feature.cosmetics.menu.shieldPatterns.ShieldPatternMenu;
import dev.lrxh.neptune.utils.menu.Button;
import dev.lrxh.neptune.utils.menu.Filter;
import dev.lrxh.neptune.utils.menu.Menu;
Expand Down Expand Up @@ -42,6 +43,13 @@ public List<Button> getButtons(Player player) {
MenusLocale.ARMOR_TRIMS_LORE.getStringList(),
Material.valueOf(MenusLocale.ARMOR_TRIMS_MATERIAL.getString()),
new ArmorTrimsMenu()));

buttons.add(new CosmeticsManagementButton(
MenusLocale.SHIELD_PATTERNS_SLOT.getInt(),
MenusLocale.SHIELD_PATTERNS_NAME.getString(),
MenusLocale.SHIELD_PATTERNS_LORE.getStringList(),
Material.valueOf(MenusLocale.SHIELD_PATTERNS_MATERIAL.getString()),
new ShieldPatternMenu()));
return buttons;
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
package dev.lrxh.neptune.feature.cosmetics.menu;

import dev.lrxh.neptune.API;
import dev.lrxh.neptune.profile.impl.Profile;
import dev.lrxh.neptune.utils.ItemBuilder;
import dev.lrxh.neptune.utils.ItemUtils;
import dev.lrxh.neptune.utils.menu.Button;
import dev.lrxh.neptune.utils.menu.Menu;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;

import org.bukkit.Material;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -37,11 +33,6 @@ public void onClick(ClickType type, Player player) {

@Override
public ItemStack getItemStack(Player player) {
Profile profile = API.getProfile(player);
return new ItemBuilder(material).name(title).componentLore(ItemUtils.getLore(lore, TagResolver.resolver(
Placeholder.parsed("kill-effect", profile.getSettingData().getKillEffect().getDisplayName()),
Placeholder.parsed("kill-message", profile.getSettingData().getKillMessagePackage().getDisplayName()),
Placeholder.parsed("armor-trim", profile.getSettingData().getArmorTrimPackage().getDisplayName())
)), player).build();
return new ItemBuilder(material).name(title).componentLore(ItemUtils.getLore(lore), player).build();
}
}
Loading