Skip to content

Commit

Permalink
Adds boolean enabled to SCComponents
Browse files Browse the repository at this point in the history
disabled components are not added to frames
Adds getComponentFromConfig to SCFrame
Fetches MainFrame's components from config
  • Loading branch information
RoinujNosde committed Dec 25, 2021
1 parent 94380ea commit 2c0e6b1
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
*/
public abstract class SCComponent {

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

public abstract int getSlot();

public boolean isEnabled() {
return enabled;
}

public void setEnabled(boolean enabled) {
this.enabled = enabled;
}

@Nullable
public ItemMeta getItemMeta() {
return getItem().getItemMeta();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,13 @@
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import com.cryptomorin.xseries.XMaterial;

import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -45,7 +49,9 @@ public SCFrame getParent() {
return parent;
}

public abstract int getSize();
public int getSize() {
return getConfig().getInt("size");
}

public abstract void createComponents();

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

public void add(@NotNull SCComponent c) {
if (!c.isEnabled()) {
return;
}
components.add(c);
}

Expand Down Expand Up @@ -92,9 +101,24 @@ public int hashCode() {
return getTitle().hashCode() + Integer.hashCode(getSize()) + getComponents().hashCode();
}

protected @NotNull SCComponent getComponentFromConfig(String key, String displayName, List<String> lore) {
int slot = getConfig().getInt("components." + key + ".slot");
XMaterial material = XMaterial.matchXMaterial(getConfig().getString("components." + key + ".material"))
.orElse(XMaterial.STONE);

SCComponent component = new SCComponentImpl(displayName, lore, material, slot);
component.setEnabled(getConfig().getBoolean("components." + key + ".enabled"));

return component;
}

protected @NotNull SCComponent getComponentFromConfig(String key, String displayName, String lore) {
return getComponentFromConfig(key, displayName, Collections.singletonList(lore));
}

private YamlConfiguration readConfig() {
SimpleClans plugin = SimpleClans.getInstance();
File externalFile = new File(plugin.getDataFolder(), getConfigPath());
File externalFile = new File(plugin.getDataFolder(), getConfigPath()); // TODO Create file if it doesn't exist?
InputStream resource = plugin.getResource(getConfigPath());
YamlConfiguration config = YamlConfiguration.loadConfiguration(externalFile);
if (resource != null) {
Expand All @@ -105,8 +129,11 @@ private YamlConfiguration readConfig() {
}

private String getConfigPath() {
return getClass().getName().replace("net.sacredlabyrinth.phaed.simpleclans.ui.", "")
.replace(".", File.pathSeparator);
return ("frames." + getFrameName()).replace(".", File.pathSeparator);
}

private String getFrameName() { // TODO Still necessary?
return getClass().getName().replace("net.sacredlabyrinth.phaed.simpleclans.ui.frames.", "");
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;

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

@Override
public void createComponents() {
add(Components.getPlayerComponent(this, getViewer(), getViewer(), 0, false));
add(Components.getPlayerComponent(this, getViewer(), getViewer(), 0, false)); // TODO
add(Components.getClanComponent(this, getViewer(),
plugin.getClanManager().getCreateClanPlayer(getViewer().getUniqueId()).getClan(), 1, true));
plugin.getClanManager().getCreateClanPlayer(getViewer().getUniqueId()).getClan(), 1, true)); // TODO
addLeaderboard();
addClanList();
addResetKdr();
Expand All @@ -37,45 +36,47 @@ public void createComponents() {
}

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

private void addStaff() {
if (plugin.getPermissionsManager().has(getViewer(), "simpleclans.mod.staffgui")) {
SCComponent staff = new SCComponentImpl.Builder(XMaterial.COMMAND_BLOCK).withSlot(6).withDisplayName(
lang("gui.main.staff.title", getViewer())).withLore(Collections.singletonList(lang("gui.main.staff.lore", getViewer()))).build();
SCComponent staff = getComponentFromConfig("staff", lang("gui.main.staff.title", getViewer()),
lang("gui.main.staff.lore", getViewer()));
staff.setPermission(ClickType.LEFT, "simpleclans.mod.staffgui");
staff.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new StaffFrame(this, getViewer())));
add(staff);

}
}

private void addLeaderboard() {
SCComponent leaderboard = new SCComponentImpl(lang("gui.main.leaderboard.title",getViewer()),
Collections.singletonList(lang("gui.main.leaderboard.lore",getViewer())), XMaterial.PAINTING, 3);
leaderboard.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new LeaderboardFrame(getViewer(), this)));
SCComponent leaderboard = getComponentFromConfig("leaderboard", lang("gui.main.leaderboard.title", getViewer()),
lang("gui.main.leaderboard.lore", getViewer()));
leaderboard.setListener(ClickType.LEFT,
() -> InventoryDrawer.open(new LeaderboardFrame(getViewer(), this)));
leaderboard.setPermission(ClickType.LEFT, "simpleclans.anyone.leaderboard");
add(leaderboard);

}

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

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

public void addResetKdr() {
List<String> resetKrLore;
List<String> lore;
if (plugin.getSettingsManager().is(ECONOMY_PURCHASE_RESET_KDR)) {
resetKrLore = Arrays.asList(
lore = Arrays.asList(
lang("gui.main.reset.kdr.lore.price", getViewer(), plugin.getSettingsManager().getString(ECONOMY_RESET_KDR_PRICE)),
lang("gui.main.reset.kdr.lore", getViewer()));
} else {
resetKrLore = Collections.singletonList(lang("gui.main.reset.kdr.lore", getViewer()));
lore = Collections.singletonList(lang("gui.main.reset.kdr.lore", getViewer()));
}
SCComponent resetKdr = new SCComponentImpl(lang("gui.main.reset.kdr.title", getViewer()),
resetKrLore, XMaterial.ANVIL, 5);
resetKdr.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(), "resetkdr", false));
SCComponent resetKdr = getComponentFromConfig("reset_kdr", lang("gui.main.reset.kdr.title", getViewer()), lore);
resetKdr.setConfirmationRequired(ClickType.LEFT);
resetKdr.setPermission(ClickType.LEFT, "simpleclans.vip.resetkdr");
add(resetKdr);
Expand All @@ -108,9 +107,4 @@ public void addResetKdr() {
return lang("gui.main.title", getViewer(), plugin.getSettingsManager().getColored(SERVER_NAME));
}

@Override
public int getSize() {
return 9;
}

}
28 changes: 28 additions & 0 deletions src/main/resources/frames/MainFrame.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
size: 9
components:
player:
clan:
leaderboard:
enabled: true
slot: 3
material: PAINTING
clan_list:
enabled: true
slot: 4
material: PURPLE_BANNER
reset_kdr:
enabled: true
slot: 5
material: ANVIL
staff:
enabled: true
slot: 6
material: COMMAND_BLOCK
language_selector:
enabled: true
slot: 7
material: MAP
other_commands:
enabled: true
slot: 8
material: BOOK

0 comments on commit 2c0e6b1

Please sign in to comment.