Skip to content

Commit 9e5e248

Browse files
Shield cosmetics (#172)
* Shield cosmetics * Cast object lists to class
1 parent e770ef4 commit 9e5e248

32 files changed

Lines changed: 438 additions & 49 deletions
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package dev.lrxh.api.features.cosmetics.shieldpatterns;
2+
3+
import dev.lrxh.api.features.cosmetics.ICosmetic;
4+
5+
import java.util.Map;
6+
7+
public interface IShieldPatternCosmetic extends ICosmetic {
8+
Map<String, ? extends IShieldPatternPackage> getPackages();
9+
IShieldPatternPackage getDefault();
10+
IShieldPatternPackage getOrDefault(String packageName);
11+
void addPackage(IShieldPatternPackage killMessagePackage);
12+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package dev.lrxh.api.features.cosmetics.shieldpatterns;
2+
3+
import dev.lrxh.api.features.cosmetics.ICosmeticPackage;
4+
import org.bukkit.block.banner.Pattern;
5+
6+
import java.util.List;
7+
8+
public interface IShieldPatternPackage extends ICosmeticPackage {
9+
List<Pattern> getPatterns();
10+
String permission();
11+
}

Plugin/src/main/java/dev/lrxh/neptune/configs/ConfigService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class ConfigService {
1919
private ConfigFile cosmeticsConfig;
2020
private ConfigFile killMessagesConfig;
2121
private ConfigFile armorTrimsConfig;
22+
private ConfigFile shieldPatternsConfig;
2223
private ConfigFile soundsConfig;
2324

2425
public static ConfigService get() {
@@ -40,7 +41,7 @@ public void load() {
4041
killMessagesConfig = new ConfigFile("kill-messages");
4142
armorTrimsConfig = new ConfigFile("armor-trims");
4243
soundsConfig = new ConfigFile("sounds");
43-
44+
shieldPatternsConfig = new ConfigFile("shield-patterns");
4445

4546
initialize();
4647
}

Plugin/src/main/java/dev/lrxh/neptune/configs/impl/MenusLocale.java

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ public enum MenusLocale implements IDataAccessor {
442442
"&7Set Max ping you",
443443
"&7can match against.",
444444
"",
445-
" &7Current Ping-range: &b<ping>",
445+
" &7Current Ping-range: &b<max-ping>",
446446
" ",
447447
"&a + Left Click to increase",
448448
"&c - Right Click to decrease"),
@@ -455,6 +455,7 @@ public enum MenusLocale implements IDataAccessor {
455455
" &7Current Kill Effect: &b<kill-effect>",
456456
" &7Current Kill Message: &b<kill-message>",
457457
" &7Current Armor Trim: &b<armor-trim>",
458+
" &7Current Shield Pattern: &b<shield-pattern>",
458459
" ",
459460
"&aClick to open cosmetics menu"),
460461
SETTINGS_COSMETICS_SLOT("SETTINGS.SETTINGS.COSMETICS.SLOT", DataType.INT, "15"),
@@ -551,6 +552,32 @@ public enum MenusLocale implements IDataAccessor {
551552
" ",
552553
"<description>",
553554
" ",
555+
"&cNo permission"),
556+
SHIELD_PATTERNS_TITLE("SETTINGS.SHIELD-PATTERNS.TITLE", DataType.STRING, "&7Shield Patterns"),
557+
SHIELD_PATTERNS_SIZE("SETTINGS.SHIELD-PATTERNS.SIZE", DataType.INT, "27"),
558+
SHIELD_PATTERNS_FILTER("SETTINGS.SHIELD-PATTERNS.FILTER-TYPE", "FILL, BORDER, NONE", DataType.STRING, "FILL"),
559+
SHIELD_PATTERNS_SLOT("SETTINGS.COSMETICS.SHIELD-PATTERNS.SLOT", DataType.INT, "13"),
560+
SHIELD_PATTERNS_NAME("SETTINGS.COSMETICS.SHIELD-PATTERNS.NAME", DataType.STRING, "&bShield Patterns"),
561+
SHIELD_PATTERNS_MATERIAL("SETTINGS.COSMETICS.SHIELD-PATTERNS.MATERIAL", DataType.STRING, "SHIELD"),
562+
SHIELD_PATTERNS_LORE("SETTINGS.COSMETICS.SHIELD-PATTERNS.LORE", DataType.STRING_LIST,
563+
"&7View all available shield pattern", " ", "&aClick to open"),
564+
SHIELD_PATTERNS_NAME_SELECTED("SETTINGS.SHIELD-PATTERNS.SELECTED.NAME", DataType.STRING,
565+
"<display-name> &7&o(Selected)"),
566+
SHIELD_PATTERNS_NAME_NOT_SELECTED("SETTINGS.SHIELD-PATTERNS.UNSELECTED.NAME", DataType.STRING, "<display-name>"),
567+
SHIELD_PATTERNS_SELECTED_LORE("SETTINGS.SHIELD-PATTERNS.SELECTED.LORE", DataType.STRING_LIST,
568+
" ",
569+
"<description> ",
570+
" ",
571+
"&eCurrently Selected"),
572+
SHIELD_PATTERNS_UNSELECTED_LORE("SETTINGS.SHIELD-PATTERNS.UNSELECTED.LORE", DataType.STRING_LIST,
573+
" ",
574+
"<description> ",
575+
" ",
576+
"&aClick to select"),
577+
SHIELD_PATTERNS_NO_PERMISSION_LORE("SETTINGS.SHIELD-PATTERNS.NO-PERMISSION.LORE", DataType.STRING_LIST,
578+
" ",
579+
"<description> ",
580+
" ",
554581
"&cNo permission");
555582

556583
private final String path;
@@ -597,6 +624,12 @@ public void update() {
597624
.replaceAll("<kill_death_ratio>", "<kdr>")
598625
).toList()
599626
);
627+
SETTINGS_PING_RANGE_LORE.set(
628+
SETTINGS_PING_RANGE_LORE.getStringList().stream().map(str ->
629+
str
630+
.replaceAll("<ping>", "<max-ping>")
631+
).toList()
632+
);
600633
if (MATCH_LIST_SIZE.getInt() == 36) MATCH_LIST_SIZE.set(54);
601634
if (MATCH_LIST_STARTING_SLOT.getInt() == 10 && MATCH_LIST_FILTER.getString().equals("FILTER")) MATCH_LIST_FILTER.set("BORDER");
602635
if (MATCH_LIST_STARTING_SLOT.getInt() == 10) MATCH_LIST_STARTING_SLOT.set(1);

Plugin/src/main/java/dev/lrxh/neptune/configs/impl/handler/DataType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ public enum DataType {
44
BOOLEAN,
55
STRING,
66
STRING_LIST,
7+
LIST,
78
INT
89
}

Plugin/src/main/java/dev/lrxh/neptune/configs/impl/handler/IDataAccessor.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import java.util.Collections;
88
import java.util.List;
9+
import java.util.Objects;
910
import java.util.Set;
1011
import java.util.stream.Collectors;
1112

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

29+
default <T> List<T> getList(Class<T> type) {
30+
return Objects.requireNonNull(getConfigFile().getConfiguration().getList(getPath()))
31+
.stream()
32+
.filter(type::isInstance)
33+
.map(type::cast)
34+
.toList();
35+
}
36+
2837
default boolean getBoolean() {
2938
return getConfigFile().getConfiguration().getBoolean(getPath());
3039
}
@@ -52,12 +61,13 @@ default void applyHeader() {
5261
}
5362
}
5463

55-
default void setValue(String path, List<String> rawValue, DataType type) {
64+
default void setValue(String path, List<?> rawValue, DataType type) {
5665
switch (type) {
57-
case STRING_LIST -> getConfigFile().getConfiguration().set(path, rawValue);
58-
case STRING -> getConfigFile().getConfiguration().set(path, rawValue.get(0));
59-
case INT -> getConfigFile().getConfiguration().set(path, Integer.parseInt(rawValue.get(0)));
60-
case BOOLEAN -> getConfigFile().getConfiguration().set(path, Boolean.parseBoolean(rawValue.get(0)));
66+
case LIST -> getConfigFile().getConfiguration().set(path, rawValue);
67+
case STRING_LIST -> getConfigFile().getConfiguration().set(path, rawValue.stream().map(String::valueOf).toList());
68+
case STRING -> getConfigFile().getConfiguration().set(path, String.valueOf(rawValue.getFirst()));
69+
case INT -> getConfigFile().getConfiguration().set(path, Integer.parseInt(String.valueOf(rawValue.getFirst())));
70+
case BOOLEAN -> getConfigFile().getConfiguration().set(path, Boolean.parseBoolean(String.valueOf(rawValue.getFirst())));
6171
}
6272
}
6373

Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/CosmeticService.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
import dev.lrxh.neptune.configs.ConfigService;
66
import dev.lrxh.neptune.feature.cosmetics.impl.Cosmetic;
77
import dev.lrxh.neptune.feature.cosmetics.impl.CosmeticPackage;
8-
import dev.lrxh.neptune.feature.cosmetics.impl.armortrims.ArmorTrimCosmetic;
9-
import dev.lrxh.neptune.feature.cosmetics.impl.armortrims.ArmorTrimPackage;
10-
import dev.lrxh.neptune.feature.cosmetics.impl.killmessage.KillMessageCosmetic;
11-
import dev.lrxh.neptune.feature.cosmetics.impl.killmessage.KillMessagePackage;
8+
import dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.armortrims.ArmorTrimCosmetic;
9+
import dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.armortrims.ArmorTrimPackage;
10+
import dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.killmessage.KillMessageCosmetic;
11+
import dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.killmessage.KillMessagePackage;
12+
import dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.shieldpatterns.ShieldPatternCosmetic;
13+
import dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.shieldpatterns.ShieldPatternPackage;
1214
import dev.lrxh.neptune.providers.manager.IService;
1315
import dev.lrxh.neptune.utils.ConfigFile;
1416

@@ -31,11 +33,12 @@ public static CosmeticService get() {
3133
public void load() {
3234
KillMessageCosmetic.get().load();
3335
ArmorTrimCosmetic.get().load();
36+
ShieldPatternCosmetic.get().load();
3437
}
3538

3639
@Override
3740
public void save() {
38-
41+
ShieldPatternCosmetic.get().getConfigFile().save();
3942
}
4043

4144
public void registerCosmetic(ICosmetic cosmetic) {
@@ -51,6 +54,9 @@ public Map<String, KillMessagePackage> getKillMessagePackages() {
5154
public Map<String, ArmorTrimPackage> getArmorTrimPackages() {
5255
return (Map<String, ArmorTrimPackage>) getPackages(ArmorTrimCosmetic.get());
5356
}
57+
public Map<String, ShieldPatternPackage> getShieldPatternPackages() {
58+
return (Map<String, ShieldPatternPackage>) getPackages(ShieldPatternCosmetic.get());
59+
}
5460

5561
@Override
5662
public ConfigFile getConfigFile() {

Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/armortrims/ArmorTrimCosmetic.java renamed to Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/cosmetics/armortrims/ArmorTrimCosmetic.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.lrxh.neptune.feature.cosmetics.impl.armortrims;
1+
package dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.armortrims;
22

33
import dev.lrxh.api.features.cosmetics.armortrims.IArmorTrimCosmetic;
44
import dev.lrxh.api.features.cosmetics.armortrims.IArmorTrimPackage;

Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/armortrims/ArmorTrimPackage.java renamed to Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/cosmetics/armortrims/ArmorTrimPackage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.lrxh.neptune.feature.cosmetics.impl.armortrims;
1+
package dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.armortrims;
22

33
import dev.lrxh.api.features.cosmetics.armortrims.IArmorTrimPackage;
44
import dev.lrxh.neptune.feature.cosmetics.impl.CosmeticPackage;

Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/killmessage/KillMessageCosmetic.java renamed to Plugin/src/main/java/dev/lrxh/neptune/feature/cosmetics/impl/cosmetics/killmessage/KillMessageCosmetic.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
package dev.lrxh.neptune.feature.cosmetics.impl.killmessage;
1+
package dev.lrxh.neptune.feature.cosmetics.impl.cosmetics.killmessage;
22

33
import dev.lrxh.api.features.cosmetics.killmessages.IKillMessageCosmetic;
44
import dev.lrxh.api.features.cosmetics.killmessages.IKillMessagePackage;
55
import dev.lrxh.neptune.configs.ConfigService;
6+
import dev.lrxh.neptune.feature.cosmetics.CosmeticService;
67
import dev.lrxh.neptune.feature.cosmetics.impl.Cosmetic;
78
import lombok.Getter;
89
import org.bukkit.Material;
@@ -42,6 +43,7 @@ public void load() {
4243
packages.put(packageName, new KillMessagePackage(packageName, displayName, material, description, slot, messages));
4344
}
4445
}
46+
CosmeticService.get().registerCosmetic(this);
4547
}
4648

4749
public KillMessagePackage getDefault() {

0 commit comments

Comments
 (0)