Skip to content

Commit 2c0e6b1

Browse files
committed
Adds boolean enabled to SCComponents
disabled components are not added to frames Adds getComponentFromConfig to SCFrame Fetches MainFrame's components from config
1 parent 94380ea commit 2c0e6b1

4 files changed

Lines changed: 90 additions & 32 deletions

File tree

src/main/java/net/sacredlabyrinth/phaed/simpleclans/ui/SCComponent.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
*/
2121
public abstract class SCComponent {
2222

23+
private boolean enabled = true;
2324
private final HashMap<ClickType, Runnable> listeners = new HashMap<>();
2425
private final HashMap<ClickType, Object> permissions = new HashMap<>();
2526
private final Set<ClickType> verified = new HashSet<>();
@@ -31,6 +32,14 @@ public abstract class SCComponent {
3132

3233
public abstract int getSlot();
3334

35+
public boolean isEnabled() {
36+
return enabled;
37+
}
38+
39+
public void setEnabled(boolean enabled) {
40+
this.enabled = enabled;
41+
}
42+
3443
@Nullable
3544
public ItemMeta getItemMeta() {
3645
return getItem().getItemMeta();

src/main/java/net/sacredlabyrinth/phaed/simpleclans/ui/SCFrame.java

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
import java.io.File;
44
import java.io.InputStream;
55
import java.io.InputStreamReader;
6+
import java.util.Collections;
7+
import java.util.List;
68
import java.util.Set;
79
import java.util.concurrent.ConcurrentHashMap;
810

11+
import com.cryptomorin.xseries.XMaterial;
12+
913
import org.bukkit.configuration.file.FileConfiguration;
1014
import org.bukkit.configuration.file.YamlConfiguration;
1115
import org.bukkit.entity.Player;
@@ -45,7 +49,9 @@ public SCFrame getParent() {
4549
return parent;
4650
}
4751

48-
public abstract int getSize();
52+
public int getSize() {
53+
return getConfig().getInt("size");
54+
}
4955

5056
public abstract void createComponents();
5157

@@ -60,6 +66,9 @@ public SCComponent getComponent(int slot) {
6066
}
6167

6268
public void add(@NotNull SCComponent c) {
69+
if (!c.isEnabled()) {
70+
return;
71+
}
6372
components.add(c);
6473
}
6574

@@ -92,9 +101,24 @@ public int hashCode() {
92101
return getTitle().hashCode() + Integer.hashCode(getSize()) + getComponents().hashCode();
93102
}
94103

104+
protected @NotNull SCComponent getComponentFromConfig(String key, String displayName, List<String> lore) {
105+
int slot = getConfig().getInt("components." + key + ".slot");
106+
XMaterial material = XMaterial.matchXMaterial(getConfig().getString("components." + key + ".material"))
107+
.orElse(XMaterial.STONE);
108+
109+
SCComponent component = new SCComponentImpl(displayName, lore, material, slot);
110+
component.setEnabled(getConfig().getBoolean("components." + key + ".enabled"));
111+
112+
return component;
113+
}
114+
115+
protected @NotNull SCComponent getComponentFromConfig(String key, String displayName, String lore) {
116+
return getComponentFromConfig(key, displayName, Collections.singletonList(lore));
117+
}
118+
95119
private YamlConfiguration readConfig() {
96120
SimpleClans plugin = SimpleClans.getInstance();
97-
File externalFile = new File(plugin.getDataFolder(), getConfigPath());
121+
File externalFile = new File(plugin.getDataFolder(), getConfigPath()); // TODO Create file if it doesn't exist?
98122
InputStream resource = plugin.getResource(getConfigPath());
99123
YamlConfiguration config = YamlConfiguration.loadConfiguration(externalFile);
100124
if (resource != null) {
@@ -105,8 +129,11 @@ private YamlConfiguration readConfig() {
105129
}
106130

107131
private String getConfigPath() {
108-
return getClass().getName().replace("net.sacredlabyrinth.phaed.simpleclans.ui.", "")
109-
.replace(".", File.pathSeparator);
132+
return ("frames." + getFrameName()).replace(".", File.pathSeparator);
133+
}
134+
135+
private String getFrameName() { // TODO Still necessary?
136+
return getClass().getName().replace("net.sacredlabyrinth.phaed.simpleclans.ui.frames.", "");
110137
}
111138

112139
}
Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
22

3-
import com.cryptomorin.xseries.XMaterial;
43
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
54
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
65
import net.sacredlabyrinth.phaed.simpleclans.ui.frames.staff.StaffFrame;
@@ -25,9 +24,9 @@ public MainFrame(Player viewer) {
2524

2625
@Override
2726
public void createComponents() {
28-
add(Components.getPlayerComponent(this, getViewer(), getViewer(), 0, false));
27+
add(Components.getPlayerComponent(this, getViewer(), getViewer(), 0, false)); // TODO
2928
add(Components.getClanComponent(this, getViewer(),
30-
plugin.getClanManager().getCreateClanPlayer(getViewer().getUniqueId()).getClan(), 1, true));
29+
plugin.getClanManager().getCreateClanPlayer(getViewer().getUniqueId()).getClan(), 1, true)); // TODO
3130
addLeaderboard();
3231
addClanList();
3332
addResetKdr();
@@ -37,45 +36,47 @@ public void createComponents() {
3736
}
3837

3938
private void addOtherCommands() {
40-
SCComponent otherCommands = new SCComponentImpl(lang("gui.main.other.commands.title",getViewer()),
41-
Collections.singletonList(lang("gui.main.other.commands.lore",getViewer())), XMaterial.BOOK, 8);
39+
SCComponent otherCommands = getComponentFromConfig("other_commands",
40+
lang("gui.main.other.commands.title", getViewer()), lang("gui.main.other.commands.lore", getViewer()));
4241
otherCommands.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(), "help", false));
4342
add(otherCommands);
4443
}
4544

4645
private void addStaff() {
4746
if (plugin.getPermissionsManager().has(getViewer(), "simpleclans.mod.staffgui")) {
48-
SCComponent staff = new SCComponentImpl.Builder(XMaterial.COMMAND_BLOCK).withSlot(6).withDisplayName(
49-
lang("gui.main.staff.title", getViewer())).withLore(Collections.singletonList(lang("gui.main.staff.lore", getViewer()))).build();
47+
SCComponent staff = getComponentFromConfig("staff", lang("gui.main.staff.title", getViewer()),
48+
lang("gui.main.staff.lore", getViewer()));
5049
staff.setPermission(ClickType.LEFT, "simpleclans.mod.staffgui");
5150
staff.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new StaffFrame(this, getViewer())));
5251
add(staff);
52+
5353
}
5454
}
5555

5656
private void addLeaderboard() {
57-
SCComponent leaderboard = new SCComponentImpl(lang("gui.main.leaderboard.title",getViewer()),
58-
Collections.singletonList(lang("gui.main.leaderboard.lore",getViewer())), XMaterial.PAINTING, 3);
59-
leaderboard.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new LeaderboardFrame(getViewer(), this)));
57+
SCComponent leaderboard = getComponentFromConfig("leaderboard", lang("gui.main.leaderboard.title", getViewer()),
58+
lang("gui.main.leaderboard.lore", getViewer()));
59+
leaderboard.setListener(ClickType.LEFT,
60+
() -> InventoryDrawer.open(new LeaderboardFrame(getViewer(), this)));
6061
leaderboard.setPermission(ClickType.LEFT, "simpleclans.anyone.leaderboard");
6162
add(leaderboard);
63+
6264
}
6365

6466
private void addClanList() {
65-
SCComponent clanList = new SCComponentImpl(lang("gui.main.clan.list.title", getViewer()),
66-
Collections.singletonList(lang("gui.main.clan.list.lore", getViewer())), XMaterial.PURPLE_BANNER,
67-
4);
67+
SCComponent clanList = getComponentFromConfig("clan_list", lang("gui.main.clan.list.title", getViewer()),
68+
lang("gui.main.clan.list.lore", getViewer()));
6869
clanList.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new ClanListFrame(this, getViewer())));
6970
clanList.setPermission(ClickType.LEFT, "simpleclans.anyone.list");
7071
add(clanList);
7172
}
7273

7374
private void addLanguageSelector() {
7475
if (plugin.getSettingsManager().is(LANGUAGE_SELECTOR)) {
75-
SCComponent language = new SCComponentImpl.Builder(XMaterial.MAP)
76-
.withDisplayName(lang("gui.main.languageselector.title", getViewer()))
77-
.withSlot(7).withLore(Arrays.asList(lang("gui.main.languageselector.lore.left.click", getViewer())
78-
, lang("gui.main.languageselector.lore.right.click", getViewer()))).build();
76+
List<String> lore = Arrays.asList(lang("gui.main.languageselector.lore.left.click", getViewer()),
77+
lang("gui.main.languageselector.lore.right.click", getViewer()));
78+
SCComponent language = getComponentFromConfig("language_selector",
79+
lang("gui.main.languageselector.title", getViewer()), lore);
7980
language.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new LanguageSelectorFrame(this, getViewer())));
8081
language.setListener(ClickType.RIGHT, () -> {
8182
getViewer().sendMessage(lang("click.to.help.translating", getViewer(),
@@ -87,17 +88,15 @@ private void addLanguageSelector() {
8788
}
8889

8990
public void addResetKdr() {
90-
List<String> resetKrLore;
91+
List<String> lore;
9192
if (plugin.getSettingsManager().is(ECONOMY_PURCHASE_RESET_KDR)) {
92-
resetKrLore = Arrays.asList(
93+
lore = Arrays.asList(
9394
lang("gui.main.reset.kdr.lore.price", getViewer(), plugin.getSettingsManager().getString(ECONOMY_RESET_KDR_PRICE)),
9495
lang("gui.main.reset.kdr.lore", getViewer()));
9596
} else {
96-
resetKrLore = Collections.singletonList(lang("gui.main.reset.kdr.lore", getViewer()));
97+
lore = Collections.singletonList(lang("gui.main.reset.kdr.lore", getViewer()));
9798
}
98-
SCComponent resetKdr = new SCComponentImpl(lang("gui.main.reset.kdr.title", getViewer()),
99-
resetKrLore, XMaterial.ANVIL, 5);
100-
resetKdr.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(), "resetkdr", false));
99+
SCComponent resetKdr = getComponentFromConfig("reset_kdr", lang("gui.main.reset.kdr.title", getViewer()), lore);
101100
resetKdr.setConfirmationRequired(ClickType.LEFT);
102101
resetKdr.setPermission(ClickType.LEFT, "simpleclans.vip.resetkdr");
103102
add(resetKdr);
@@ -108,9 +107,4 @@ public void addResetKdr() {
108107
return lang("gui.main.title", getViewer(), plugin.getSettingsManager().getColored(SERVER_NAME));
109108
}
110109

111-
@Override
112-
public int getSize() {
113-
return 9;
114-
}
115-
116110
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
size: 9
2+
components:
3+
player:
4+
clan:
5+
leaderboard:
6+
enabled: true
7+
slot: 3
8+
material: PAINTING
9+
clan_list:
10+
enabled: true
11+
slot: 4
12+
material: PURPLE_BANNER
13+
reset_kdr:
14+
enabled: true
15+
slot: 5
16+
material: ANVIL
17+
staff:
18+
enabled: true
19+
slot: 6
20+
material: COMMAND_BLOCK
21+
language_selector:
22+
enabled: true
23+
slot: 7
24+
material: MAP
25+
other_commands:
26+
enabled: true
27+
slot: 8
28+
material: BOOK

0 commit comments

Comments
 (0)