mirror of
https://github.com/MassiveCraft/Factions.git
synced 2024-12-02 23:23:26 +01:00
F Perm GUI (#1045)
This commit is contained in:
parent
86f69ca304
commit
d490bb8366
@ -7,6 +7,8 @@ import com.massivecraft.factions.struct.Role;
|
|||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
import com.massivecraft.factions.zcore.fperms.Permissable;
|
import com.massivecraft.factions.zcore.fperms.Permissable;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.fperms.gui.PermissableActionGUI;
|
||||||
|
import com.massivecraft.factions.zcore.fperms.gui.PermissableRelationGUI;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -36,9 +38,10 @@ public class CmdPerm extends FCommand {
|
|||||||
@Override
|
@Override
|
||||||
public void perform() {
|
public void perform() {
|
||||||
if (args.size() == 0) {
|
if (args.size() == 0) {
|
||||||
for (String s : getLines()) {
|
me.openInventory(new PermissableRelationGUI(fme).getInventory());
|
||||||
msg(s);
|
return;
|
||||||
}
|
} else if (args.size() == 1 && getPermissable(argAsString(0)) != null) {
|
||||||
|
me.openInventory(new PermissableActionGUI(fme, getPermissable(argAsString(0))).getInventory());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,35 +112,6 @@ public class CmdPerm extends FCommand {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> getLines() {
|
|
||||||
List<String> lines = new ArrayList<>();
|
|
||||||
|
|
||||||
lines.add(TL.COMMAND_PERM_TOP.toString());
|
|
||||||
|
|
||||||
for (PermissableAction action : PermissableAction.values()) {
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
sb.append(action.getName()).append(" ");
|
|
||||||
|
|
||||||
// Roles except admin
|
|
||||||
for (Role role : Role.values()) {
|
|
||||||
if (role != Role.ADMIN) {
|
|
||||||
sb.append(myFaction.getAccess(role, action).getName()).append(" ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Relations except Member
|
|
||||||
for (Relation relation : Relation.values()) {
|
|
||||||
if (relation != Relation.MEMBER) {
|
|
||||||
sb.append(myFaction.getAccess(relation, action).getName()).append(" ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lines.add(sb.toString().trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
return lines;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TL getUsageTranslation() {
|
public TL getUsageTranslation() {
|
||||||
return TL.COMMAND_PERM_DESCRIPTION;
|
return TL.COMMAND_PERM_DESCRIPTION;
|
||||||
|
@ -12,6 +12,7 @@ import com.massivecraft.factions.struct.Role;
|
|||||||
import com.massivecraft.factions.util.VisualizeUtil;
|
import com.massivecraft.factions.util.VisualizeUtil;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.fperms.gui.PermissionGUI;
|
||||||
import com.massivecraft.factions.zcore.persist.MemoryFPlayer;
|
import com.massivecraft.factions.zcore.persist.MemoryFPlayer;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import com.massivecraft.factions.zcore.util.TextUtil;
|
import com.massivecraft.factions.zcore.util.TextUtil;
|
||||||
@ -24,6 +25,8 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryDragEvent;
|
||||||
import org.bukkit.event.player.*;
|
import org.bukkit.event.player.*;
|
||||||
import org.bukkit.util.NumberConversions;
|
import org.bukkit.util.NumberConversions;
|
||||||
|
|
||||||
@ -601,6 +604,25 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
|
public void onPlayerInteractGUI(InventoryClickEvent event) {
|
||||||
|
if (event.getClickedInventory() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (event.getClickedInventory().getHolder() instanceof PermissionGUI) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
((PermissionGUI) event.getClickedInventory().getHolder()).onClick(event.getRawSlot(), event.getClick());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
|
public void onPlayerMoveGUI(InventoryDragEvent event) {
|
||||||
|
if (event.getInventory().getHolder() instanceof PermissionGUI) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void onPlayerKick(PlayerKickEvent event) {
|
public void onPlayerKick(PlayerKickEvent event) {
|
||||||
FPlayer badGuy = FPlayers.getInstance().getByPlayer(event.getPlayer());
|
FPlayer badGuy = FPlayers.getInstance().getByPlayer(event.getPlayer());
|
||||||
|
@ -1,9 +1,17 @@
|
|||||||
package com.massivecraft.factions.struct;
|
package com.massivecraft.factions.struct;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.P;
|
||||||
import com.massivecraft.factions.zcore.fperms.Permissable;
|
import com.massivecraft.factions.zcore.fperms.Permissable;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
public enum Relation implements Permissable {
|
public enum Relation implements Permissable {
|
||||||
@ -21,11 +29,6 @@ public enum Relation implements Permissable {
|
|||||||
this.nicename = nicename;
|
this.nicename = nicename;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return this.nicename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Relation fromString(String s) {
|
public static Relation fromString(String s) {
|
||||||
// Because Java 6 doesn't allow String switches :(
|
// Because Java 6 doesn't allow String switches :(
|
||||||
if (s.equalsIgnoreCase(MEMBER.nicename)) {
|
if (s.equalsIgnoreCase(MEMBER.nicename)) {
|
||||||
@ -41,6 +44,11 @@ public enum Relation implements Permissable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return this.nicename;
|
||||||
|
}
|
||||||
|
|
||||||
public String getTranslation() {
|
public String getTranslation() {
|
||||||
try {
|
try {
|
||||||
return TL.valueOf("RELATION_" + name() + "_SINGULAR").toString();
|
return TL.valueOf("RELATION_" + name() + "_SINGULAR").toString();
|
||||||
@ -184,4 +192,42 @@ public enum Relation implements Permissable {
|
|||||||
return Conf.econCostNeutral;
|
return Conf.econCostNeutral;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Utility method to build items for F Perm GUI
|
||||||
|
@Override
|
||||||
|
public ItemStack buildItem() {
|
||||||
|
final ConfigurationSection RELATION_CONFIG = P.p.getConfig().getConfigurationSection("fperm-gui.relation");
|
||||||
|
|
||||||
|
String displayName = replacePlaceholders(RELATION_CONFIG.getString("placeholder-item.name", ""));
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
|
||||||
|
Material material = Material.matchMaterial(RELATION_CONFIG.getString("materials." + name().toLowerCase()));
|
||||||
|
if (material == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack item = new ItemStack(material);
|
||||||
|
ItemMeta itemMeta = item.getItemMeta();
|
||||||
|
|
||||||
|
for (String loreLine : RELATION_CONFIG.getStringList("placeholder-item.lore")) {
|
||||||
|
lore.add(replacePlaceholders(loreLine));
|
||||||
|
}
|
||||||
|
|
||||||
|
itemMeta.setDisplayName(displayName);
|
||||||
|
itemMeta.setLore(lore);
|
||||||
|
item.setItemMeta(itemMeta);
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String replacePlaceholders(String string) {
|
||||||
|
string = ChatColor.translateAlternateColorCodes('&', string);
|
||||||
|
|
||||||
|
String permissableName = nicename.substring(0, 1).toUpperCase() + nicename.substring(1);
|
||||||
|
|
||||||
|
string = string.replace("{relation-color}", getColor().toString());
|
||||||
|
string = string.replace("{relation}", permissableName);
|
||||||
|
|
||||||
|
return string;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,17 @@
|
|||||||
package com.massivecraft.factions.struct;
|
package com.massivecraft.factions.struct;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.P;
|
||||||
import com.massivecraft.factions.zcore.fperms.Permissable;
|
import com.massivecraft.factions.zcore.fperms.Permissable;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public enum Role implements Permissable {
|
public enum Role implements Permissable {
|
||||||
ADMIN(3, TL.ROLE_ADMIN),
|
ADMIN(3, TL.ROLE_ADMIN),
|
||||||
@ -13,6 +22,8 @@ public enum Role implements Permissable {
|
|||||||
public final int value;
|
public final int value;
|
||||||
public final String nicename;
|
public final String nicename;
|
||||||
public final TL translation;
|
public final TL translation;
|
||||||
|
private final ConfigurationSection RELATION_CONFIG = P.p.getConfig().getConfigurationSection("fperm-gui.relation");
|
||||||
|
|
||||||
|
|
||||||
Role(final int value, final TL translation) {
|
Role(final int value, final TL translation) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
@ -93,4 +104,44 @@ public enum Role implements Permissable {
|
|||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Utility method to build items for F Perm GUI
|
||||||
|
@Override
|
||||||
|
public ItemStack buildItem() {
|
||||||
|
final ConfigurationSection RELATION_CONFIG = P.p.getConfig().getConfigurationSection("fperm-gui.relation");
|
||||||
|
|
||||||
|
String displayName = replacePlaceholders(RELATION_CONFIG.getString("placeholder-item.name", ""));
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
|
||||||
|
Material material = Material.matchMaterial(RELATION_CONFIG.getString("materials." + name().toLowerCase()));
|
||||||
|
if (material == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack item = new ItemStack(material);
|
||||||
|
ItemMeta itemMeta = item.getItemMeta();
|
||||||
|
|
||||||
|
for (String loreLine : RELATION_CONFIG.getStringList("placeholder-item.lore")) {
|
||||||
|
lore.add(replacePlaceholders(loreLine));
|
||||||
|
}
|
||||||
|
|
||||||
|
itemMeta.setDisplayName(displayName);
|
||||||
|
itemMeta.setLore(lore);
|
||||||
|
item.setItemMeta(itemMeta);
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String replacePlaceholders(String string) {
|
||||||
|
string = ChatColor.translateAlternateColorCodes('&', string);
|
||||||
|
|
||||||
|
String permissableName = nicename.substring(0, 1).toUpperCase() + nicename.substring(1);
|
||||||
|
|
||||||
|
string = string.replace("{relation-color}", ChatColor.GREEN.toString());
|
||||||
|
string = string.replace("{relation}", permissableName);
|
||||||
|
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,14 +3,16 @@ package com.massivecraft.factions.zcore.fperms;
|
|||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
public enum Access {
|
public enum Access {
|
||||||
ALLOW("&aALLOW"),
|
ALLOW("Allow", ChatColor.GREEN),
|
||||||
DENY("&4DENY"),
|
DENY("Deny", ChatColor.DARK_RED),
|
||||||
UNDEFINED("&7UND");
|
UNDEFINED("Undefined", ChatColor.GRAY);
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
private ChatColor color;
|
||||||
|
|
||||||
Access(String name) {
|
Access(String name, ChatColor color) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
this.color = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,12 +32,16 @@ public enum Access {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return ChatColor.translateAlternateColorCodes('&', this.name);
|
return this.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ChatColor getColor() {
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return name();
|
return name();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,13 @@
|
|||||||
package com.massivecraft.factions.zcore.fperms;
|
package com.massivecraft.factions.zcore.fperms;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
public interface Permissable {
|
public interface Permissable {
|
||||||
|
|
||||||
|
public ItemStack buildItem();
|
||||||
|
|
||||||
|
public String replacePlaceholders(String string);
|
||||||
|
|
||||||
|
public String name();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,16 @@
|
|||||||
package com.massivecraft.factions.zcore.fperms;
|
package com.massivecraft.factions.zcore.fperms;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.P;
|
||||||
|
import org.bukkit.DyeColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public enum PermissableAction {
|
public enum PermissableAction {
|
||||||
BAN("ban"),
|
BAN("ban"),
|
||||||
BUILD("build"),
|
BUILD("build"),
|
||||||
@ -58,4 +69,65 @@ public enum PermissableAction {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Utility method to build items for F Perm GUI
|
||||||
|
public ItemStack buildItem(FPlayer fme, Permissable permissable) {
|
||||||
|
final ConfigurationSection ACTION_CONFIG = P.p.getConfig().getConfigurationSection("fperm-gui.action");
|
||||||
|
|
||||||
|
String displayName = replacePlaceholers(ACTION_CONFIG.getString("placeholder-item.name"), fme, permissable);
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
|
||||||
|
if (ACTION_CONFIG.getString("materials." + name().toLowerCase().replace('_', '-')) == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Material material = Material.matchMaterial(ACTION_CONFIG.getString("materials." + name().toLowerCase().replace('_', '-')));
|
||||||
|
if (material == null) {
|
||||||
|
material = Material.STAINED_CLAY;
|
||||||
|
}
|
||||||
|
|
||||||
|
Access access = fme.getFaction().getAccess(permissable, this);
|
||||||
|
if (access == null) {
|
||||||
|
access = Access.UNDEFINED;
|
||||||
|
}
|
||||||
|
DyeColor dyeColor = null;
|
||||||
|
try {
|
||||||
|
dyeColor = DyeColor.valueOf(ACTION_CONFIG.getString("access." + access.name().toLowerCase()));
|
||||||
|
} catch (Exception exception) {}
|
||||||
|
|
||||||
|
ItemStack item = new ItemStack(material);
|
||||||
|
ItemMeta itemMeta = item.getItemMeta();
|
||||||
|
|
||||||
|
if (dyeColor != null) {
|
||||||
|
item.setDurability(dyeColor.getWoolData());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String loreLine : ACTION_CONFIG.getStringList("placeholder-item.lore")) {
|
||||||
|
lore.add(replacePlaceholers(loreLine, fme, permissable));
|
||||||
|
}
|
||||||
|
|
||||||
|
itemMeta.setDisplayName(displayName);
|
||||||
|
itemMeta.setLore(lore);
|
||||||
|
item.setItemMeta(itemMeta);
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String replacePlaceholers(String string, FPlayer fme, Permissable permissable) {
|
||||||
|
// Run Permissable placeholders
|
||||||
|
string = permissable.replacePlaceholders(string);
|
||||||
|
|
||||||
|
String actionName = name.substring(0, 1).toUpperCase() + name.substring(1);
|
||||||
|
string = string.replace("{action}", actionName);
|
||||||
|
|
||||||
|
Access access = fme.getFaction().getAccess(permissable, this);
|
||||||
|
if (access == null) {
|
||||||
|
access = Access.UNDEFINED;
|
||||||
|
}
|
||||||
|
String actionAccess = access.getName();
|
||||||
|
string = string.replace("{action-access}", actionAccess);
|
||||||
|
string = string.replace("{action-access-color}", access.getColor().toString());
|
||||||
|
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,244 @@
|
|||||||
|
package com.massivecraft.factions.zcore.fperms.gui;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.P;
|
||||||
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
|
import com.massivecraft.factions.zcore.fperms.Permissable;
|
||||||
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.DyeColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.InventoryHolder;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
public class PermissableActionGUI implements InventoryHolder, PermissionGUI {
|
||||||
|
|
||||||
|
private Inventory actionGUI;
|
||||||
|
private FPlayer fme;
|
||||||
|
|
||||||
|
private int guiSize;
|
||||||
|
|
||||||
|
private Permissable permissable;
|
||||||
|
|
||||||
|
private HashMap<Integer, PermissableAction> actionSlots = new HashMap<>();
|
||||||
|
private HashMap<Integer, SpecialItem> specialSlots = new HashMap<>();
|
||||||
|
private ArrayList<Integer> usedDummySlots = new ArrayList<>();
|
||||||
|
|
||||||
|
private final ConfigurationSection ACTION_CONFIG = P.p.getConfig().getConfigurationSection("fperm-gui.action");
|
||||||
|
|
||||||
|
public PermissableActionGUI(FPlayer fme, Permissable permissable) {
|
||||||
|
this.fme = fme;
|
||||||
|
this.permissable = permissable;
|
||||||
|
|
||||||
|
guiSize = ACTION_CONFIG.getInt("rows", 3);
|
||||||
|
if (guiSize > 5) {
|
||||||
|
guiSize = 5;
|
||||||
|
P.p.log(Level.INFO, "Action GUI size out of bounds, defaulting to 5");
|
||||||
|
}
|
||||||
|
guiSize *= 9;
|
||||||
|
String guiName = ChatColor.translateAlternateColorCodes('&', ACTION_CONFIG.getString("name", "FactionPerms"));
|
||||||
|
actionGUI = Bukkit.createInventory(this, guiSize, guiName);
|
||||||
|
|
||||||
|
for (String key : ACTION_CONFIG.getConfigurationSection("slots").getKeys(false)) {
|
||||||
|
int slot = ACTION_CONFIG.getInt("slots." + key);
|
||||||
|
if (slot + 1 > guiSize || slot < 0) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid slot for: " + key.toUpperCase());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SpecialItem.isSpecial(key)) {
|
||||||
|
specialSlots.put(slot, SpecialItem.fromString(key));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
PermissableAction permissableAction = PermissableAction.fromString(key.toUpperCase().replace('-', '_'));
|
||||||
|
if (permissableAction == null) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid permissable action: " + key.toUpperCase());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
actionSlots.put(ACTION_CONFIG.getInt("slots." + key), permissableAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
buildDummyItems();
|
||||||
|
|
||||||
|
if (actionSlots.values().toArray().length != PermissableAction.values().length) {
|
||||||
|
// Missing actions add them forcefully to the GUI and log error
|
||||||
|
Set<PermissableAction> missingActions = new HashSet<>(Arrays.asList(PermissableAction.values()));
|
||||||
|
missingActions.removeAll(actionSlots.values());
|
||||||
|
|
||||||
|
for (PermissableAction action : missingActions) {
|
||||||
|
if (!usedDummySlots.isEmpty()) {
|
||||||
|
int slot = usedDummySlots.get(0);
|
||||||
|
actionSlots.put(slot, action);
|
||||||
|
} else {
|
||||||
|
int slot = actionGUI.firstEmpty();
|
||||||
|
if (slot != -1) {
|
||||||
|
actionSlots.put(slot, action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
P.p.log(Level.WARNING, "Missing action: " + action.name());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
buildSpecialItems();
|
||||||
|
buildItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Inventory getInventory() {
|
||||||
|
return actionGUI;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(int slot, ClickType click) {
|
||||||
|
if (specialSlots.containsKey(slot)) {
|
||||||
|
if (specialSlots.get(slot) == SpecialItem.BACK) {
|
||||||
|
fme.getPlayer().openInventory(new PermissableRelationGUI(fme).getInventory());
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!actionSlots.containsKey(slot)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
PermissableAction action = actionSlots.get(slot);
|
||||||
|
Access access;
|
||||||
|
if (click == ClickType.LEFT) {
|
||||||
|
access = Access.ALLOW;
|
||||||
|
fme.getFaction().setPermission(permissable, action, access);
|
||||||
|
} else if (click == ClickType.RIGHT) {
|
||||||
|
access = Access.DENY;
|
||||||
|
fme.getFaction().setPermission(permissable, action, access);
|
||||||
|
} else if (click == ClickType.MIDDLE) {
|
||||||
|
access = Access.UNDEFINED;
|
||||||
|
fme.getFaction().setPermission(permissable, action, access);
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
actionGUI.setItem(slot, action.buildItem(fme, permissable));
|
||||||
|
fme.msg(TL.COMMAND_PERM_SET, action.name(), access.name(), permissable.name());
|
||||||
|
P.p.log(String.format(TL.COMMAND_PERM_SET.toString(), action.name(), access.name(), permissable.name()) + " for faction " + fme.getTag());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buildItems() {
|
||||||
|
for (Map.Entry<Integer, PermissableAction> entry : actionSlots.entrySet()) {
|
||||||
|
PermissableAction permissableAction = entry.getValue();
|
||||||
|
|
||||||
|
ItemStack item = permissableAction.buildItem(fme, permissable);
|
||||||
|
|
||||||
|
if (item == null) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid item for: " + permissableAction.toString().toUpperCase());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
actionGUI.setItem(entry.getKey(), item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buildSpecialItems() {
|
||||||
|
for (Map.Entry<Integer, SpecialItem> entry : specialSlots.entrySet()) {
|
||||||
|
actionGUI.setItem(entry.getKey(), getSpecialItem(entry.getValue()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack getSpecialItem(SpecialItem specialItem) {
|
||||||
|
switch (specialItem) {
|
||||||
|
case RELATION:
|
||||||
|
return permissable.buildItem();
|
||||||
|
case BACK:
|
||||||
|
ConfigurationSection backButtonConfig = P.p.getConfig().getConfigurationSection("fperm-gui.back-item");
|
||||||
|
|
||||||
|
ItemStack backButton = new ItemStack(Material.matchMaterial(backButtonConfig.getString("material")));
|
||||||
|
ItemMeta backButtonMeta = backButton.getItemMeta();
|
||||||
|
|
||||||
|
backButtonMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', backButtonConfig.getString("name")));
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
for (String loreLine : backButtonConfig.getStringList("lore")) {
|
||||||
|
lore.add(ChatColor.translateAlternateColorCodes('&', loreLine));
|
||||||
|
}
|
||||||
|
backButtonMeta.setLore(lore);
|
||||||
|
|
||||||
|
backButton.setItemMeta(backButtonMeta);
|
||||||
|
|
||||||
|
return backButton;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buildDummyItems() {
|
||||||
|
for (String key : ACTION_CONFIG.getConfigurationSection("dummy-items").getKeys(false)) {
|
||||||
|
int dummyId;
|
||||||
|
try {
|
||||||
|
dummyId = Integer.parseInt(key);
|
||||||
|
} catch (NumberFormatException exception) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid dummy item id: " + key.toUpperCase());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack dummyItem = buildDummyItem(dummyId);
|
||||||
|
if (dummyItem == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Integer> dummySlots = ACTION_CONFIG.getIntegerList("dummy-items." + key);
|
||||||
|
for (Integer slot : dummySlots) {
|
||||||
|
if (slot+1 > guiSize || slot < 0) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid slot: " + slot + " for dummy item: " + key);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
usedDummySlots.add(slot);
|
||||||
|
actionGUI.setItem(slot, dummyItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack buildDummyItem(int id) {
|
||||||
|
final ConfigurationSection DUMMY_CONFIG = P.p.getConfig().getConfigurationSection("fperm-gui.dummy-items." + id);
|
||||||
|
|
||||||
|
Material material = Material.matchMaterial(DUMMY_CONFIG.getString("material", ""));
|
||||||
|
if (material == null) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid material for dummy item: " + id);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack itemStack = new ItemStack(material);
|
||||||
|
|
||||||
|
DyeColor color;
|
||||||
|
try {
|
||||||
|
color = DyeColor.valueOf(DUMMY_CONFIG.getString("color", ""));
|
||||||
|
} catch (Exception exception) {
|
||||||
|
color = null;
|
||||||
|
}
|
||||||
|
if (color != null) {
|
||||||
|
itemStack.setDurability(color.getWoolData());
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||||
|
|
||||||
|
itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', DUMMY_CONFIG.getString("name", " ")));
|
||||||
|
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
for (String loreLine : DUMMY_CONFIG.getStringList("lore")) {
|
||||||
|
lore.add(ChatColor.translateAlternateColorCodes('&', loreLine));
|
||||||
|
}
|
||||||
|
itemMeta.setLore(lore);
|
||||||
|
|
||||||
|
itemStack.setItemMeta(itemMeta);
|
||||||
|
|
||||||
|
return itemStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,173 @@
|
|||||||
|
package com.massivecraft.factions.zcore.fperms.gui;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.P;
|
||||||
|
import com.massivecraft.factions.struct.Relation;
|
||||||
|
import com.massivecraft.factions.struct.Role;
|
||||||
|
import com.massivecraft.factions.zcore.fperms.Permissable;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.DyeColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.InventoryHolder;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
public class PermissableRelationGUI implements InventoryHolder, PermissionGUI {
|
||||||
|
|
||||||
|
private Inventory relationGUI;
|
||||||
|
private FPlayer fme;
|
||||||
|
|
||||||
|
private int guiSize;
|
||||||
|
|
||||||
|
private HashMap<Integer, Permissable> relationSlots = new HashMap<>();
|
||||||
|
|
||||||
|
private final ConfigurationSection RELATION_CONFIG = P.p.getConfig().getConfigurationSection("fperm-gui.relation");
|
||||||
|
|
||||||
|
|
||||||
|
public PermissableRelationGUI(FPlayer fme) {
|
||||||
|
this.fme = fme;
|
||||||
|
|
||||||
|
// Build basic Inventory info
|
||||||
|
guiSize = RELATION_CONFIG.getInt("rows", 3);
|
||||||
|
if (guiSize > 5) {
|
||||||
|
guiSize = 5;
|
||||||
|
P.p.log(Level.INFO, "Relation GUI size out of bounds, defaulting to 5");
|
||||||
|
}
|
||||||
|
guiSize *= 9;
|
||||||
|
String guiName = ChatColor.translateAlternateColorCodes('&', RELATION_CONFIG.getString("name", "FactionPermissions"));
|
||||||
|
relationGUI = Bukkit.createInventory(this, guiSize, guiName);
|
||||||
|
|
||||||
|
for (String key : RELATION_CONFIG.getConfigurationSection("slots").getKeys(false)) {
|
||||||
|
int slot = RELATION_CONFIG.getInt("slots." + key);
|
||||||
|
if (slot + 1 > guiSize && slot > 0) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid slot of " + key.toUpperCase() + " in relation GUI skipping it");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getPermissable(key) == null) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid permissable " + key.toUpperCase() + " skipping it");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
relationSlots.put(slot, getPermissable(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
buildDummyItems();
|
||||||
|
buildItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Inventory getInventory() {
|
||||||
|
return relationGUI;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(int slot, ClickType clickType) {
|
||||||
|
if (!relationSlots.containsKey(slot)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fme.getPlayer().openInventory(new PermissableActionGUI(fme, relationSlots.get(slot)).getInventory());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Permissable getPermissable(String name) {
|
||||||
|
try {
|
||||||
|
return Relation.valueOf(name.toUpperCase());
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return Role.valueOf(name.toUpperCase());
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buildItems() {
|
||||||
|
for (Map.Entry<Integer, Permissable> entry : relationSlots.entrySet()) {
|
||||||
|
Permissable permissable = entry.getValue();
|
||||||
|
|
||||||
|
ItemStack item = permissable.buildItem();
|
||||||
|
|
||||||
|
if (item == null) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid material for " + permissable.toString().toUpperCase() + " skipping it");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
relationGUI.setItem(entry.getKey(), item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buildDummyItems() {
|
||||||
|
for (String key : RELATION_CONFIG.getConfigurationSection("dummy-items").getKeys(false)) {
|
||||||
|
int dummyId;
|
||||||
|
try {
|
||||||
|
dummyId = Integer.parseInt(key);
|
||||||
|
} catch (NumberFormatException exception) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid dummy item id: " + key.toUpperCase());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack dummyItem = buildDummyItem(dummyId);
|
||||||
|
if (dummyItem == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Integer> dummySlots = RELATION_CONFIG.getIntegerList("dummy-items." + key);
|
||||||
|
for (Integer slot : dummySlots) {
|
||||||
|
if (slot+1 > guiSize || slot < 0) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid slot: " + slot + " for dummy item: " + key);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
relationGUI.setItem(slot, dummyItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack buildDummyItem(int id) {
|
||||||
|
final ConfigurationSection DUMMY_CONFIG = P.p.getConfig().getConfigurationSection("fperm-gui.dummy-items." + id);
|
||||||
|
|
||||||
|
Material material = Material.matchMaterial(DUMMY_CONFIG.getString("material", ""));
|
||||||
|
if (material == null) {
|
||||||
|
P.p.log(Level.WARNING, "Invalid material for dummy item: " + id);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack itemStack = new ItemStack(material);
|
||||||
|
|
||||||
|
DyeColor color;
|
||||||
|
try {
|
||||||
|
color = DyeColor.valueOf(DUMMY_CONFIG.getString("color", ""));
|
||||||
|
} catch (Exception exception) {
|
||||||
|
color = null;
|
||||||
|
}
|
||||||
|
if (color != null) {
|
||||||
|
itemStack.setDurability(color.getWoolData());
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||||
|
|
||||||
|
itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', DUMMY_CONFIG.getString("name", " ")));
|
||||||
|
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
for (String loreLine : DUMMY_CONFIG.getStringList("lore")) {
|
||||||
|
lore.add(ChatColor.translateAlternateColorCodes('&', loreLine));
|
||||||
|
}
|
||||||
|
itemMeta.setLore(lore);
|
||||||
|
|
||||||
|
itemStack.setItemMeta(itemMeta);
|
||||||
|
|
||||||
|
return itemStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package com.massivecraft.factions.zcore.fperms.gui;
|
||||||
|
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.event.inventory.InventoryAction;
|
||||||
|
|
||||||
|
public interface PermissionGUI {
|
||||||
|
|
||||||
|
public void onClick(int slot, ClickType action);
|
||||||
|
|
||||||
|
public enum SpecialItem {
|
||||||
|
BACK,
|
||||||
|
RELATION;
|
||||||
|
|
||||||
|
static boolean isSpecial(String string) {
|
||||||
|
return fromString(string) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
static SpecialItem fromString(String string) {
|
||||||
|
for (SpecialItem specialItem : SpecialItem.values()) {
|
||||||
|
if (string.equalsIgnoreCase(specialItem.name())) {
|
||||||
|
return specialItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -333,6 +333,192 @@ help:
|
|||||||
- '&3/f version &e>> &7Display version information'
|
- '&3/f version &e>> &7Display version information'
|
||||||
- '&e&m--------------&r&2 End of /f help &e&m-----------------'
|
- '&e&m--------------&r&2 End of /f help &e&m-----------------'
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# +------------------------------------------------------+ #
|
||||||
|
# | F Permission GUI | #
|
||||||
|
# +------------------------------------------------------+ #
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
# This is the Faction permissions GUI, it consists of 2 inventories
|
||||||
|
#
|
||||||
|
# 1st: The Relation GUI, here you choose which relation you want to set the permission of
|
||||||
|
# 2nd: The Action GUI, here you define the permission of the clicked Action using click types,
|
||||||
|
# depending on the click type it will set the permission differently:
|
||||||
|
# Left Click: ALLOW
|
||||||
|
# Middle Click: UNDEFINED
|
||||||
|
# Right Click: DENY
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# The GUI configuration is based off of item placeholders these have specific placeholders that are
|
||||||
|
# replaced, for example {relation} will be replaced with the relation that the GUI/Item is based on.
|
||||||
|
# There is also 2 other types of GUI items
|
||||||
|
#
|
||||||
|
# 1st: Special items, these include Back button (Has its own item below), and Relation Item
|
||||||
|
# indicating the current relation (Uses relation item placeholder)
|
||||||
|
# 2nd: Dummy items, these items server no other purpose than to look good, they have their own
|
||||||
|
# items defined in dummy items, and can later be assigned to specific slots in the GUI's
|
||||||
|
fperm-gui:
|
||||||
|
relation:
|
||||||
|
# GUI Name
|
||||||
|
name: 'Factions Permissions'
|
||||||
|
# Amount of inventory rows, No larger than 5
|
||||||
|
rows: 3
|
||||||
|
|
||||||
|
# These are the slots where the relations are going to be placed on the first GUI
|
||||||
|
# Note: Slots start at 0 and end at one less that GUI size
|
||||||
|
slots:
|
||||||
|
recruit: 10
|
||||||
|
member: 11
|
||||||
|
moderator: 12
|
||||||
|
truce: 13
|
||||||
|
ally: 14
|
||||||
|
enemy: 15
|
||||||
|
neutral: 16
|
||||||
|
# Material to be displayed
|
||||||
|
materials:
|
||||||
|
recruit: WOOD_SWORD
|
||||||
|
member: STONE_SWORD
|
||||||
|
moderator: IRON_SWORD
|
||||||
|
truce: IRON_AXE
|
||||||
|
ally: DIAMOND_SWORD
|
||||||
|
enemy: DIAMOND_AXE
|
||||||
|
neutral: STONE
|
||||||
|
# Dummy items using the Items lower down
|
||||||
|
dummy-items:
|
||||||
|
'0':
|
||||||
|
- 0
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
- 4
|
||||||
|
- 5
|
||||||
|
- 6
|
||||||
|
- 7
|
||||||
|
- 8
|
||||||
|
- 9
|
||||||
|
- 17
|
||||||
|
- 18
|
||||||
|
- 19
|
||||||
|
- 20
|
||||||
|
- 21
|
||||||
|
- 22
|
||||||
|
- 23
|
||||||
|
- 24
|
||||||
|
- 25
|
||||||
|
- 26
|
||||||
|
# This is the item that all relation items are based off of
|
||||||
|
# Replacing {relation} with relation name eg: Moderator, Ally
|
||||||
|
# also replaces {relation-color} with relation color eg: Enemy;RED
|
||||||
|
placeholder-item:
|
||||||
|
name: '&8[{relation-color}{relation}&8]'
|
||||||
|
lore:
|
||||||
|
-
|
||||||
|
action:
|
||||||
|
name: 'Factions Permissions'
|
||||||
|
rows: 4
|
||||||
|
# If this field exists colorable materials will be updated
|
||||||
|
# https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/DyeColor.html
|
||||||
|
access:
|
||||||
|
allow: LIME
|
||||||
|
deny: RED
|
||||||
|
undefined: CYAN
|
||||||
|
slots:
|
||||||
|
# Uses same format as above to inform the player of clicked relation
|
||||||
|
relation: 4
|
||||||
|
# Back button slot
|
||||||
|
back: 0
|
||||||
|
|
||||||
|
# Start action slots
|
||||||
|
build: 9
|
||||||
|
destroy: 10
|
||||||
|
frost-walk: 11
|
||||||
|
pain-build: 12
|
||||||
|
door: 13
|
||||||
|
button: 14
|
||||||
|
lever: 15
|
||||||
|
container: 16
|
||||||
|
invite: 17
|
||||||
|
kick: 18
|
||||||
|
item: 19
|
||||||
|
sethome: 20
|
||||||
|
withdraw: 21
|
||||||
|
territory: 22
|
||||||
|
access: 23
|
||||||
|
promote: 24
|
||||||
|
setwarp: 25
|
||||||
|
warp: 26
|
||||||
|
ban: 27
|
||||||
|
disband: 28
|
||||||
|
perms: 29
|
||||||
|
# Material to show, if the material is colorable eg: Wool, Stained Clay it will update with it's access color
|
||||||
|
materials:
|
||||||
|
build: STAINED_CLAY
|
||||||
|
destroy: STAINED_CLAY
|
||||||
|
frost-walk: STAINED_CLAY
|
||||||
|
pain-build: STAINED_CLAY
|
||||||
|
door: STAINED_CLAY
|
||||||
|
button: STAINED_CLAY
|
||||||
|
lever: STAINED_CLAY
|
||||||
|
container: STAINED_CLAY
|
||||||
|
invite: STAINED_CLAY
|
||||||
|
kick: STAINED_CLAY
|
||||||
|
item: STAINED_CLAY
|
||||||
|
sethome: STAINED_CLAY
|
||||||
|
withdraw: STAINED_CLAY
|
||||||
|
territory: STAINED_CLAY
|
||||||
|
access: STAINED_CLAY
|
||||||
|
promote: STAINED_CLAY
|
||||||
|
setwarp: STAINED_CLAY
|
||||||
|
warp: STAINED_CLAY
|
||||||
|
ban: STAINED_CLAY
|
||||||
|
disband: STAINED_CLAY
|
||||||
|
perms: STAINED_CLAY
|
||||||
|
# Same dummy items format as above
|
||||||
|
dummy-items:
|
||||||
|
'0':
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
- 5
|
||||||
|
- 6
|
||||||
|
- 7
|
||||||
|
- 8
|
||||||
|
- 29
|
||||||
|
- 30
|
||||||
|
- 31
|
||||||
|
- 32
|
||||||
|
- 33
|
||||||
|
- 34
|
||||||
|
- 35
|
||||||
|
# {action} Action name eg: Setwarp, Kick
|
||||||
|
# {action-access} Access name eg: Allow, Deny
|
||||||
|
# {action-access-color} Access color eg: Allow;GREEN
|
||||||
|
placeholder-item:
|
||||||
|
name: '&8[&7{action}&8]'
|
||||||
|
lore:
|
||||||
|
- '&8Access:'
|
||||||
|
- '&8[{action-access-color}{action-access}&8]'
|
||||||
|
- ''
|
||||||
|
- '&8Left click to &lAllow'
|
||||||
|
- '&8Right click to &lDeny'
|
||||||
|
- '&8Middle click to &lUndefine'
|
||||||
|
# Back item will be take you to the previous GUI
|
||||||
|
back-item:
|
||||||
|
name: '&8&lBack'
|
||||||
|
material: ARROW
|
||||||
|
lore:
|
||||||
|
- '&7Back button'
|
||||||
|
# Dummy Items
|
||||||
|
dummy-items:
|
||||||
|
# Dummy Item id, used to set the slots above
|
||||||
|
'0':
|
||||||
|
material: STAINED_GLASS_PANE
|
||||||
|
# Color will only work on colorable materials
|
||||||
|
color: BLACK
|
||||||
|
name: ' '
|
||||||
|
lore:
|
||||||
|
-
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# +------------------------------------------------------+ #
|
# +------------------------------------------------------+ #
|
||||||
# | Big List of variables | #
|
# | Big List of variables | #
|
||||||
@ -374,6 +560,12 @@ help:
|
|||||||
# - {faction-kills} : # of kills the faction has
|
# - {faction-kills} : # of kills the faction has
|
||||||
# - {faction-deaths}: # of deaths the faction has
|
# - {faction-deaths}: # of deaths the faction has
|
||||||
# - {faction-bancount} : # of bans the faction has
|
# - {faction-bancount} : # of bans the faction has
|
||||||
|
# Faction Permissions GUI variables. Can only be used in GUI
|
||||||
|
# - {relation} : Shows relation name (Can be used in action and relation)
|
||||||
|
# - {relation-color} : Relation color
|
||||||
|
# - {action} : Shows action name (Can only be used in action)
|
||||||
|
# - {action-access} : Shows the action's access with current relation
|
||||||
|
# - {action-access-color} : Access color
|
||||||
# General variables. Can be used anywhere.
|
# General variables. Can be used anywhere.
|
||||||
# - {total-online} : Total # of players on the server
|
# - {total-online} : Total # of players on the server
|
||||||
# - {max-warps} : Max # of warps a faction can set
|
# - {max-warps} : Max # of warps a faction can set
|
||||||
|
Loading…
Reference in New Issue
Block a user