Skip to content

Commit b0c609b

Browse files
committed
Implemented Experimental Features - Member Skulls
1 parent a2e2cfe commit b0c609b

5 files changed

Lines changed: 66 additions & 24 deletions

File tree

src/main/java/me/glaremasters/guilds/configuration/GuildConfigurationBuilder.java

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,7 @@
2626
import ch.jalu.configme.configurationdata.ConfigurationData;
2727
import ch.jalu.configme.configurationdata.ConfigurationDataBuilder;
2828
import me.glaremasters.guilds.conf.GuildBuffSettings;
29-
import me.glaremasters.guilds.configuration.sections.ClaimSettings;
30-
import me.glaremasters.guilds.configuration.sections.CodeSettings;
31-
import me.glaremasters.guilds.configuration.sections.CooldownSettings;
32-
import me.glaremasters.guilds.configuration.sections.CostSettings;
33-
import me.glaremasters.guilds.configuration.sections.GuildInfoMemberSettings;
34-
import me.glaremasters.guilds.configuration.sections.GuildInfoSettings;
35-
import me.glaremasters.guilds.configuration.sections.GuildListSettings;
36-
import me.glaremasters.guilds.configuration.sections.GuildSettings;
37-
import me.glaremasters.guilds.configuration.sections.GuildVaultSettings;
38-
import me.glaremasters.guilds.configuration.sections.HooksSettings;
39-
import me.glaremasters.guilds.configuration.sections.PluginSettings;
40-
import me.glaremasters.guilds.configuration.sections.RoleSettings;
41-
import me.glaremasters.guilds.configuration.sections.StorageSettings;
42-
import me.glaremasters.guilds.configuration.sections.TicketSettings;
43-
import me.glaremasters.guilds.configuration.sections.TierSettings;
44-
import me.glaremasters.guilds.configuration.sections.VaultPickerSettings;
45-
import me.glaremasters.guilds.configuration.sections.WarSettings;
29+
import me.glaremasters.guilds.configuration.sections.*;
4630

4731
/**
4832
* Created by GlareMasters
@@ -56,7 +40,7 @@ private GuildConfigurationBuilder() {
5640

5741
public static ConfigurationData buildConfigurationData() {
5842
return ConfigurationDataBuilder.createConfiguration(
59-
PluginSettings.class, StorageSettings.class, HooksSettings.class, GuildListSettings.class,
43+
PluginSettings.class, ExperimentalSettings.class, StorageSettings.class, HooksSettings.class, GuildListSettings.class,
6044
VaultPickerSettings.class, GuildVaultSettings.class, GuildInfoSettings.class,
6145
GuildInfoMemberSettings.class, GuildSettings.class,
6246
WarSettings.class, CooldownSettings.class, CostSettings.class,
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package me.glaremasters.guilds.configuration.sections;
2+
3+
import ch.jalu.configme.Comment;
4+
import ch.jalu.configme.SettingsHolder;
5+
import ch.jalu.configme.configurationdata.CommentsConfiguration;
6+
import ch.jalu.configme.properties.Property;
7+
8+
import static ch.jalu.configme.properties.PropertyInitializer.newProperty;
9+
10+
public class ExperimentalSettings implements SettingsHolder {
11+
12+
@Comment({"Enable this to use member skulls instead of player heads for the guild member list.", "This is experimental because large amounts of members may cause lag."})
13+
public static final Property<Boolean> MEMBER_HEAD_SKILLS =
14+
newProperty("experimental.member-skulls", false);
15+
16+
private ExperimentalSettings() {
17+
}
18+
19+
@Override
20+
public void registerComments(CommentsConfiguration conf) {
21+
String[] experimentalHeader = {
22+
"The following are experimental features that are not fully tested. Use at your own risk. Feedback is appreciated."
23+
};
24+
conf.setComment("experimental", experimentalHeader);
25+
}
26+
}

src/main/java/me/glaremasters/guilds/configuration/sections/PluginSettings.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,14 @@ public final class PluginSettings implements SettingsHolder {
6161
newProperty("settings.update-check", true);
6262

6363
@Comment({"What would you like the command aliases for the plugin to be?",
64-
"You can have as many as your want, just separate each with | and NO SPACES."})
64+
"You can have as many as your want, just separate each with | and NO SPACES."})
6565
public static final Property<String> PLUGIN_ALIASES =
6666
newProperty("settings.plugin-aliases", "guild|guilds|g");
6767

6868
@Comment({"Would you like to run vault permission changes async? (Will be less stress on the main thread and prevent lag)",
69-
"Async is used by LuckPerms.",
70-
"Set this to false if you are using PEx.",
71-
"I do suggest you switch to LuckPerms so that you can keep it async, but ultimately the choice is yours."})
69+
"Async is used by LuckPerms.",
70+
"Set this to false if you are using PEx.",
71+
"I do suggest you switch to LuckPerms so that you can keep it async, but ultimately the choice is yours."})
7272
public static final Property<Boolean> RUN_VAULT_ASYNC =
7373
newProperty("settings.run-vault-async", true);
7474

src/main/java/me/glaremasters/guilds/utils/GuiUtils.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,13 @@
2323
*/
2424
package me.glaremasters.guilds.utils;
2525

26+
import com.cryptomorin.xseries.SkullUtils;
2627
import com.cryptomorin.xseries.XMaterial;
28+
import me.glaremasters.guilds.guild.GuildMember;
2729
import org.bukkit.Material;
2830
import org.bukkit.inventory.ItemFlag;
2931
import org.bukkit.inventory.ItemStack;
32+
import org.bukkit.inventory.meta.ItemMeta;
3033

3134
import java.util.Arrays;
3235
import java.util.HashSet;
@@ -55,9 +58,30 @@ public static ItemStack createItem(String material, String name, List<String> lo
5558
ItemBuilder builder = new ItemBuilder(item);
5659
builder.setName(StringUtils.color(name));
5760
if (!lore.isEmpty()) {
58-
builder.setLore(lore.stream().map(StringUtils ::color).collect(Collectors.toList()));
61+
builder.setLore(lore.stream().map(StringUtils::color).collect(Collectors.toList()));
5962
}
6063
builder.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
6164
return builder.build();
6265
}
66+
67+
/**
68+
* Create a skull item
69+
*
70+
* @param member the member to get the skull from
71+
* @param name the name of the item
72+
* @param lore the lore of the item
73+
* @return the skull item
74+
*/
75+
public static ItemStack createSkullItem(final GuildMember member, final String name, final List<String> lore) {
76+
final ItemStack skull = SkullUtils.getSkull(member.getUuid());
77+
final ItemMeta meta = skull.getItemMeta();
78+
79+
meta.setDisplayName(StringUtils.color(name));
80+
if (!lore.isEmpty()) {
81+
meta.setLore(lore.stream().map(StringUtils::color).collect(Collectors.toList()));
82+
}
83+
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
84+
skull.setItemMeta(meta);
85+
return skull;
86+
}
6387
}

src/main/kotlin/me/glaremasters/guilds/guis/MembersGUI.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,16 @@
2424
package me.glaremasters.guilds.guis
2525

2626
import ch.jalu.configme.SettingsManager
27+
import com.cryptomorin.xseries.SkullUtils
2728
import dev.triumphteam.gui.guis.Gui
2829
import dev.triumphteam.gui.guis.GuiItem
2930
import dev.triumphteam.gui.guis.PaginatedGui
3031
import me.glaremasters.guilds.Guilds
3132
import me.glaremasters.guilds.conf.GuildBuffSettings
33+
import me.glaremasters.guilds.configuration.sections.ExperimentalSettings
3234
import me.glaremasters.guilds.configuration.sections.GuildInfoMemberSettings
3335
import me.glaremasters.guilds.configuration.sections.GuildListSettings
36+
import me.glaremasters.guilds.configuration.sections.PluginSettings
3437
import me.glaremasters.guilds.exte.addBackground
3538
import me.glaremasters.guilds.exte.addBottom
3639
import me.glaremasters.guilds.guild.Guild
@@ -122,7 +125,12 @@ class MembersGUI(private val guilds: Guilds, private val settingsManager: Settin
122125
.replace("{status}", status))
123126
}
124127

125-
val item = GuiItem(GuiUtils.createItem(settingsManager.getProperty(GuildInfoMemberSettings.MEMBERS_MATERIAL), settingsManager.getProperty(GuildInfoMemberSettings.MEMBERS_NAME).replace("{player}", name.toString()), updated))
128+
val item = if (settingsManager.getProperty(ExperimentalSettings.MEMBER_HEAD_SKILLS)) {
129+
GuiItem(GuiUtils.createSkullItem(member, settingsManager.getProperty(GuildInfoMemberSettings.MEMBERS_NAME).replace("{player}", name.toString()), updated))
130+
} else {
131+
GuiItem(GuiUtils.createItem(settingsManager.getProperty(GuildInfoMemberSettings.MEMBERS_MATERIAL), settingsManager.getProperty(GuildInfoMemberSettings.MEMBERS_NAME).replace("{player}", name.toString()), updated))
132+
}
133+
126134
item.setAction { event ->
127135
event.isCancelled = true
128136
}

0 commit comments

Comments
 (0)