New settings inventory framework

Currently in a developement stage of making a inventory based settings system like AdvancedModreq.
This commit is contained in:
SuperRonanCraft 2020-03-05 21:03:27 -05:00
parent 07dae8fbc5
commit bb1c402c42
22 changed files with 765 additions and 90 deletions

View File

@ -1,21 +1,21 @@
package me.SuperRonanCraft.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.Commands;
import me.SuperRonanCraft.BetterRTP.player.PlayerInfo;
import me.SuperRonanCraft.BetterRTP.player.RTP;
import me.SuperRonanCraft.BetterRTP.player.commands.Commands;
import me.SuperRonanCraft.BetterRTP.player.events.Listener;
import me.SuperRonanCraft.BetterRTP.references.Econ;
import me.SuperRonanCraft.BetterRTP.references.Permissions;
import me.SuperRonanCraft.BetterRTP.references.Updater;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.references.file.Files;
import me.SuperRonanCraft.BetterRTP.references.file.Messages;
import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories;
import me.SuperRonanCraft.BetterRTP.references.settings.Settings;
import me.SuperRonanCraft.BetterRTP.references.web.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
import java.util.List;
public class Main extends JavaPlugin {
@ -25,9 +25,11 @@ public class Main extends JavaPlugin {
private Commands cmd = new Commands(this);
private RTP rtp = new RTP(this);
private Listener listener = new Listener();
private boolean worldguard = false, griefprevention = false, savagefactions = false;
private static Main instance;
private Files files = new Files();
private RTPInventories invs = new RTPInventories();
private PlayerInfo pInfo = new PlayerInfo();
private Settings settings = new Settings();
public void onEnable() {
instance = this;
@ -37,6 +39,10 @@ public class Main extends JavaPlugin {
listener.registerEvents(this);
}
public void onDisable() {
invs.closeAll();
}
public Files getFiles() {
return files;
}
@ -81,67 +87,31 @@ public class Main extends JavaPlugin {
return rtp;
}
public boolean isWorldguard() {
return worldguard;
}
public boolean isGriefprevention() {
return griefprevention;
public Settings getSettings() {
return settings;
}
public void reload(CommandSender sendi) {
invs.closeAll();
loadAll();
text.getReload(sendi);
}
public RTPInventories getInvs() {
return invs;
}
public PlayerInfo getpInfo() {
return pInfo;
}
//Load
private void loadAll() {
//recreatePermissions();
//registerConfig(reload);
files.loadAll();
settings.load();
invs.load();
rtp.load();
cmd.load();
listener.load();
loadSettings();
}
//private void registerConfig(boolean reload) {
//if (reload)
// reloadConfig();
//getConfig().options().copyDefaults(true);
//saveConfig();
//}
private void loadSettings() {
FileBasics.FILETYPE config = getFiles().getType(FileBasics.FILETYPE.CONFIG);
if (config.getBoolean("Settings.RespectWorldGuard"))
registerWorldguard();
else if (worldguard)
worldguard = false;
if (config.getBoolean("Settings.RespectGriefPrevention"))
registerGriefPrevention();
else if (griefprevention)
griefprevention = false;
if (config.getBoolean("Settings.RespectSavageFactions"))
registerSavageFactions();
else if (savagefactions)
savagefactions = false;
}
private void recreatePermissions() {
//Permissions File
saveResource(new File(getDataFolder(), "permissions.yml").getName(), true);
}
private void registerWorldguard() {
worldguard = Bukkit.getPluginManager().isPluginEnabled("WorldGuard");
}
private void registerGriefPrevention() {
griefprevention = Bukkit.getPluginManager().isPluginEnabled("GriefPrevention");
}
private void registerSavageFactions() {
savagefactions = Bukkit.getPluginManager().isPluginEnabled("Factions");
}
}

View File

@ -0,0 +1,61 @@
package me.SuperRonanCraft.BetterRTP.player;
import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import java.util.HashMap;
public class PlayerInfo {
private HashMap<Player, Inventory> invs = new HashMap<>();
private HashMap<Player, RTP_INV_SETTINGS> invType = new HashMap<>();
private HashMap<Player, World> invWorld = new HashMap<>();
private HashMap<Player, RTP_INV_SETTINGS> invNextInv = new HashMap<>();
public Inventory getInv(Player p) {
return invs.get(p);
}
public RTP_INV_SETTINGS getInvType(Player p) {
return invType.get(p);
}
public World getInvWorld(Player p) {
return invWorld.get(p);
}
public RTP_INV_SETTINGS getNextInv(Player p) {
return invNextInv.get(p);
}
public void setInv(Player p, Inventory inv) {
invs.put(p, inv);
}
public void setInvType(Player p, RTP_INV_SETTINGS type) {
invType.put(p, type);
}
public void setInvWorld(Player p, World type) {
invWorld.put(p, type);
}
public void setNextInv(Player p, RTP_INV_SETTINGS type) {
invNextInv.put(p, type);
}
//--Logic--
public Boolean playerExists(Player p) {
return invs.containsKey(p);
}
public void clear(Player p) {
invs.remove(p);
invType.remove(p);
//invWorld.remove(p);
}
}

View File

@ -155,17 +155,6 @@ public class RTP {
pl.getText().getSuccessPaid(sendi, price, x, y, z, world, attempts);
} else
pl.getText().getOtherSuccess(sendi, player, x, y, z, world, attempts);
// Organize which message to output respecting what x and z was chosen
/*
* if (posOrNeg == 0) msg = msg.replaceAll("%x%",
* Integer.toString(x)).replaceAll("%z%", Integer.toString(z)); else if
* (posOrNeg == 1) msg = msg.replaceAll("%x%",
* Integer.toString(x2)).replaceAll("%z%", Integer.toString(z2)); else
* if (posOrNeg == 2) msg = msg.replaceAll("%x%",
* Integer.toString(x2)).replaceAll("%z%", Integer.toString(z)); else
* msg = msg.replaceAll("%x%", Integer.toString(x)).replaceAll("%z%",
* Integer.toString(z2));
*/
}
@SuppressWarnings({"deprecation"})
@ -216,7 +205,7 @@ public class RTP {
float yaw = p.getLocation().getYaw(), pitch = p.getLocation().getPitch();
boolean normal;
try {
//1.13
//1.13+
normal = !world.getBiome(0, 0).equals(Biome.valueOf("NETHER"));
} catch (Exception e) {
//1.8-1.12
@ -327,14 +316,14 @@ public class RTP {
@SuppressWarnings("all")
private boolean checkDepends(Location loc) {
try {
if (pl.isWorldguard()) {
if (pl.getSettings().getsDepends().isWorldguard()) {
WorldGuardPlugin plugin = WGBukkit.getPlugin();
RegionContainer container = plugin.getRegionContainer();
RegionManager regions = container.get(loc.getWorld());
// Check to make sure that "regions" is not null
return regions.getApplicableRegions(loc).size() == 0;
}
return !pl.isGriefprevention() || GriefPrevention.instance.dataStore.getClaimAt(loc, true, null) == null;
return !pl.getSettings().getsDepends().isGriefprevention() || GriefPrevention.instance.dataStore.getClaimAt(loc, true, null) == null;
} catch (NoClassDefFoundError e) {
return true;
}
@ -355,26 +344,4 @@ public class RTP {
return true;
//FALSE MEANS NO BAD BLOCKS WHERE FOUND!
}
/*if (CenterX >= 0) {
x = rn.nextInt(borderRad - minVal) + CenterX + minVal;
x2 = -rn.nextInt(borderRad - minVal) + CenterX - minVal;
} else {
x = rn.nextInt(borderRad - minVal) + CenterX + minVal;
x2 = -(rn.nextInt(borderRad - minVal) + CenterX + minVal);
}
// Will Check is CenterZ is negative or positive, then set 2 z's
// up for choosing up next
if (CenterZ >= 0) {
z = rn.nextInt((borderRad) - minVal) + CenterZ + minVal;
z2 = -(rn.nextInt(borderRad - minVal) - CenterZ - minVal);
//sendi.sendMessage("Radius: " + borderRad + " MinRad: " + minVal + " CenterZ: " + CenterZ + " " + "World:"
+ " " + pWorld.getWorld() + " TOP Z: " + z + " BOTTOM Z: " + z2);
//sendi.sendMessage("Max: " + ((borderRad - minVal) + CenterX + minVal));
//sendi.sendMessage("Min: " + (-(borderRad - minVal) + CenterX - minVal));
//sendi.sendMessage("QUADRANT: " + posOrNeg);
} else {
z = (rn.nextInt(borderRad - minVal)) - CenterZ + minVal;
z2 = -(rn.nextInt(borderRad - minVal) + CenterZ + minVal);
}*/
}

View File

@ -8,6 +8,7 @@ public enum CommandTypes {
INFO(new CmdInfo()),
PLAYER(new CmdPlayer()),
RELOAD(new CmdReload()),
SETTINGS(new CmdSettings()),
VERSION(new CmdVersion()),
WORLD(new CmdWorld());

View File

@ -0,0 +1,24 @@
package me.SuperRonanCraft.BetterRTP.player.commands.types;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.List;
public class CmdSettings implements RTPCommand {
public void execute(CommandSender sendi, String label, String[] args) {
Main.getInstance().getInvs().getInv(RTP_INV_SETTINGS.MAIN).show((Player) sendi);
}
public List<String> tabComplete(CommandSender sendi, String[] args) {
return null;
}
public boolean permission(CommandSender sendi) {
return Main.getInstance().getPerms().getSettings(sendi);
}
}

View File

@ -0,0 +1,50 @@
package me.SuperRonanCraft.BetterRTP.player.events;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.player.PlayerInfo;
import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
public class Click {
public void click(InventoryClickEvent e) {
if (!validClick(e))
return;
e.setCancelled(true);
handler(e);
}
private void handler(InventoryClickEvent e) {
try {
PlayerInfo pInfo = Main.getInstance().getpInfo();
Player p = (Player) e.getWhoClicked();
RTPInventories menu = Main.getInstance().getInvs();
menu.getInv(pInfo.getInvType(p)).clickEvent(e);
} catch (NullPointerException ex) {
//ex.printStackTrace();
}
}
private boolean validClick(InventoryClickEvent e) {
//Not a player, or Not our inventory
if (!(e.getWhoClicked() instanceof Player) || e.isCancelled())
return false;
// Item is clicked
else if (e.getCurrentItem() == null || e.getCurrentItem().getType().equals(Material.AIR))
return false;
else if (e.getWhoClicked() instanceof Player) {
// Clicks the inventory
if (!e.getInventory().equals(Main.getInstance().getpInfo().getInv((Player) e.getWhoClicked())))
return false;
// Clicks their own inventory
else if (!e.getClickedInventory().equals(Main.getInstance().getpInfo().getInv((Player) e
.getWhoClicked()))) {
e.setCancelled(true);
return false;
}
}
return true;
}
}

View File

@ -3,6 +3,7 @@ package me.SuperRonanCraft.BetterRTP.player.events;
import me.SuperRonanCraft.BetterRTP.Main;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
@ -12,6 +13,7 @@ public class Listener implements org.bukkit.event.Listener {
private Join join = new Join();
private Leave leave = new Leave();
private Interact interact = new Interact();
private Click click = new Click();
public void registerEvents(Main pl) {
PluginManager pm = pl.getServer().getPluginManager();
@ -45,4 +47,10 @@ public class Listener implements org.bukkit.event.Listener {
private void interact(SignChangeEvent e) {
interact.createSign(e);
}
@EventHandler
@SuppressWarnings("unused")
private void click(InventoryClickEvent e) {
click.click(e);
}
}

View File

@ -28,6 +28,10 @@ public class Permissions {
return perm(pre + "reload", sendi);
}
public boolean getSettings(CommandSender sendi) {
return perm(pre + "settings", sendi);
}
public boolean getInfo(CommandSender sendi) {
return perm(pre + "info", sendi);
}

View File

@ -75,6 +75,10 @@ public class FileBasics {
return config;
}
public void setValue(String path, Object value) {
config.set(path, value);
}
//PROCCESSING
private void load() {
Main pl = Main.getInstance();

View File

@ -0,0 +1,35 @@
package me.SuperRonanCraft.BetterRTP.references.invs;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory_Defaults;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.HashMap;
public class RTPInventories {
private HashMap<RTP_INV_SETTINGS, RTPInventory_Defaults> invs = new HashMap<>();
public void load() {
invs.clear();
for (RTP_INV_SETTINGS type : RTP_INV_SETTINGS.values()) {
type.load(type);
invs.put(type, type.getInv());
}
}
public void closeAll() {
Main main = Main.getInstance();
for (Player p : Bukkit.getOnlinePlayers())
if (main.getpInfo().playerExists(p)) {
//main.getText().getReloadMenu(p);
main.getpInfo().clear(p);
p.closeInventory();
}
}
public RTPInventory_Defaults getInv(RTP_INV_SETTINGS type) {
return invs.get(type);
}
}

View File

@ -0,0 +1,34 @@
package me.SuperRonanCraft.BetterRTP.references.invs;
import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory;
import me.SuperRonanCraft.BetterRTP.references.invs.types.RTPInvBlacklist;
import me.SuperRonanCraft.BetterRTP.references.invs.types.RTPInvCoordinates;
import me.SuperRonanCraft.BetterRTP.references.invs.types.RTPInvMain;
import me.SuperRonanCraft.BetterRTP.references.invs.types.RTPInvWorlds;
public enum RTP_INV_SETTINGS {
MAIN(new RTPInvMain(), false),
BLACKLIST(new RTPInvBlacklist(), true),
COORDINATES(new RTPInvCoordinates(), true),
WORLDS(new RTPInvWorlds(), false);
private RTPInventory inv;
private boolean showInMain;
RTP_INV_SETTINGS(RTPInventory inv, boolean showInMain) {
this.inv = inv;
this.showInMain = showInMain;
}
public RTPInventory getInv() {
return inv;
}
public Boolean getShowMain() {
return showInMain;
}
void load(RTP_INV_SETTINGS type) {
inv.load(type);
}
}

View File

@ -0,0 +1,82 @@
package me.SuperRonanCraft.BetterRTP.references.invs;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics.FILETYPE;
public enum RTP_SETTINGS {
BLACKLIST( SETTINGS_TYPE.BOOLEAN, FILETYPE.CONFIG, "Template.Enabled",
new Object[]{true, "Templates", "&7Toggle Templates system", "paper"});
SETTINGS_TYPE type;
FILETYPE filetype;
String path;
String[] condition = null;
Object[] info; // = new Object[]{false}; //ENABLED, NAME, DESCRIPTION, ITEM
RTP_SETTINGS(SETTINGS_TYPE type, FILETYPE filetype, String path, Object[] info) {
this.type = type;
this.filetype = filetype;
this.path = path;
this.info = info;
}
RTP_SETTINGS(SETTINGS_TYPE type, FILETYPE filetype, String[] arry, Object[] info) {
this.type = type;
this.filetype = filetype;
this.path = null;
this.info = info;
//Condition
this.condition = arry;
}
void setValue(Object value) {
Main.getInstance().getFiles().getType(filetype).setValue(path, value);
}
public Object[] getInfo() {return info;}
public Object getValue() {
String path = this.path;
if (path == null && condition != null) {
if (Main.getInstance().getFiles().getType(filetype).getBoolean(condition[0]))
path = condition[1];
else
path = condition[2];
}
return getValuePath(path);
}
private Object getValuePath(String path) {
if (path != null) {
if (getType() == SETTINGS_TYPE.BOOLEAN)
return Main.getInstance().getFiles().getType(filetype).getBoolean(path);
else if (getType() == SETTINGS_TYPE.STRING)
return Main.getInstance().getFiles().getType(filetype).getString(path);
else if (getType() == SETTINGS_TYPE.INTEGER)
return Main.getInstance().getFiles().getType(filetype).getInt(path);
}
return null;
}
public SETTINGS_TYPE getType() {
return type;
}
public FILETYPE getFiletype() {
return filetype;
}
}
enum SETTINGS_TYPE {
BOOLEAN(Boolean.class), STRING(String.class), INTEGER(Integer.class);
private Class cla;
SETTINGS_TYPE(Class cla) {
this.cla = cla;
}
Class getCla() {
return cla;
}
}

View File

@ -0,0 +1,12 @@
package me.SuperRonanCraft.BetterRTP.references.invs.enums;
import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS;
public abstract class RTPInventory implements RTPInventory_Defaults {
public RTP_INV_SETTINGS type;
public void load(RTP_INV_SETTINGS type) {
this.type = type;
}
}

View File

@ -0,0 +1,46 @@
package me.SuperRonanCraft.BetterRTP.references.invs.enums;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.player.PlayerInfo;
import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.List;
public interface RTPInventory_Defaults {
void show(Player p);
void clickEvent(InventoryClickEvent event);
default ItemStack createItem(String item, int amount, String name, List<String> lore) {
Material mat = Material.valueOf(item.toUpperCase());
ItemStack _stack = new ItemStack(mat, amount);
ItemMeta _meta = _stack.getItemMeta();
if (_meta != null) {
if (lore != null)
_meta.setLore(lore);
if (name != null)
_meta.setDisplayName(name);
}
_stack.setItemMeta(_meta);
return _stack;
}
default void cacheInv(Player p, Inventory inv, RTP_INV_SETTINGS type) {
PlayerInfo info = Main.getInstance().getpInfo();
info.setInv(p, inv);
info.setInvType(p, type);
}
default Inventory createInv(int size, String title) {
title = Main.getInstance().getText().color(title);
return Bukkit.createInventory(null, size, title);
}
}

View File

@ -0,0 +1,21 @@
package me.SuperRonanCraft.BetterRTP.references.invs.enums;
public enum RTP_INV_ITEMS {
NORMAL("paper", 1),
BACK("book", 1, "Back", 0);
public String item, name;
public int amt, slot = -1;
RTP_INV_ITEMS(String item, int amt) {
this.item = item;
this.amt = amt;
}
RTP_INV_ITEMS(String item, int amt, String name, int slot) {
this.item = item;
this.amt = amt;
this.name = name;
this.slot = slot;
}
}

View File

@ -0,0 +1,50 @@
package me.SuperRonanCraft.BetterRTP.references.invs.types;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS;
import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory;
import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTP_INV_ITEMS;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class RTPInvBlacklist extends RTPInventory {
public void show(Player p) {
int slots = (Bukkit.getWorlds().size() - (Bukkit.getWorlds().size() % 9) + 1) * 9;
if (slots < 6 * 9)
slots += 9;
Inventory inv = this.createInv(slots, "Settings: &lBlacklist");
int _index = 0;
for (World world : Bukkit.getWorlds()) {
if (_index > 9 * 5)
break;
ItemStack _item = createItem(RTP_INV_ITEMS.NORMAL.item, RTP_INV_ITEMS.NORMAL.amt, world.getName(), null);
inv.setItem(_index, _item);
_index ++;
}
ItemStack _item = createItem(RTP_INV_ITEMS.BACK.item, RTP_INV_ITEMS.BACK.amt, RTP_INV_ITEMS.BACK.name, null);
inv.setItem(inv.getSize() - 9 + RTP_INV_ITEMS.BACK.slot, _item);
p.openInventory(inv);
this.cacheInv(p, inv, this.type);
}
@Override
public void clickEvent(InventoryClickEvent e) {
int slot = e.getSlot();
for (RTP_INV_ITEMS type : RTP_INV_ITEMS.values()) {
if (type.slot != -1) {
switch (type) {
case BACK:
if (slot == e.getInventory().getSize() - 9 + type.slot)
Main.getInstance().getInvs().getInv(RTP_INV_SETTINGS.MAIN).show((Player) e.getWhoClicked());
default:
break;
}
}
}
}
}

View File

@ -0,0 +1,139 @@
package me.SuperRonanCraft.BetterRTP.references.invs.types;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics.FILETYPE;
import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS;
import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory;
import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTP_INV_ITEMS;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
public class RTPInvCoordinates extends RTPInventory {
public void show(Player p) {
if (Main.getInstance().getpInfo().getInvWorld(p) == null) {
Main.getInstance().getpInfo().setNextInv(p, this.type);
Main.getInstance().getInvs().getInv(RTP_INV_SETTINGS.WORLDS).show(p);
return;
}
int slots = (Bukkit.getWorlds().size() - (Bukkit.getWorlds().size() % 9) + 1) * 9;
if (slots < 6 * 9)
slots += 9;
Inventory inv = this.createInv(slots, "Settings: &lCoordinates");
ItemStack _item = createItem(RTP_INV_ITEMS.BACK.item, RTP_INV_ITEMS.BACK.amt, RTP_INV_ITEMS.BACK.name, null);
inv.setItem(inv.getSize() - 9 + RTP_INV_ITEMS.BACK.slot, _item);
p.openInventory(inv);
this.cacheInv(p, inv, this.type);
}
@Override
public void clickEvent(InventoryClickEvent e) {
int slot = e.getSlot();
for (RTP_INV_ITEMS type : RTP_INV_ITEMS.values()) {
if (type.slot != -1) {
switch (type) {
case BACK:
if (slot == e.getInventory().getSize() - 9 + type.slot)
Main.getInstance().getInvs().getInv(RTP_INV_SETTINGS.MAIN).show((Player) e.getWhoClicked());
default:
break;
}
}
}
}
}
enum RTP_COORDINATES_SETTINGS {
CATEGORY( SETTINGS_TYPE.BOOLEAN, FILETYPE.CONFIG, "Settings.Importance.Enabled",
new Object[]{true, "Category", "&7Toggle Categories system", "paper"}),
COOLDOWN( SETTINGS_TYPE.BOOLEAN, FILETYPE.CONFIG, "Settings.Cooldown.Enabled",
new Object[]{true, "Cooldown", "&7Toggle Cooldown system", "paper"}),
COOLDOWN_TIME( SETTINGS_TYPE.INTEGER, FILETYPE.CONFIG, "Settings.Cooldown.Time",
new Object[]{true, "Cooldown Time", new ArrayList<String>() {{
add("&7Set the time (in minutes)");
add("&7between making a new ticket");
}}, "paper"}),
DEBUG( SETTINGS_TYPE.BOOLEAN, FILETYPE.CONFIG, "Settings.Debug",
new Object[]{true, "Debug", "&7Toggle debugger", "paper"}),
TEMPLATE( SETTINGS_TYPE.BOOLEAN, FILETYPE.CONFIG, "Template.Enabled",
new Object[]{true, "Templates", "&7Toggle Templates system", "paper"});
SETTINGS_TYPE type;
FILETYPE filetype;
String path;
String[] condition = null;
Object[] info; // = new Object[]{false}; //ENABLED, NAME, DESCRIPTION, ITEM
RTP_COORDINATES_SETTINGS(SETTINGS_TYPE type, FILETYPE filetype, String path, Object[] info) {
this.type = type;
this.filetype = filetype;
this.path = path;
this.info = info;
}
RTP_COORDINATES_SETTINGS(SETTINGS_TYPE type, FILETYPE filetype, String[] arry, Object[] info) {
this.type = type;
this.filetype = filetype;
this.path = null;
this.info = info;
//Condition
this.condition = arry;
}
void setValue(Object value) {
Main.getInstance().getFiles().getType(filetype).setValue(path, value);
}
public Object[] getInfo() {return info;}
public Object getValue() {
String path = this.path;
if (path == null && condition != null) {
if (Main.getInstance().getFiles().getType(filetype).getBoolean(condition[0]))
path = condition[1];
else
path = condition[2];
}
return getValuePath(path);
}
private Object getValuePath(String path) {
if (path != null) {
if (getType() == SETTINGS_TYPE.BOOLEAN)
return Main.getInstance().getFiles().getType(filetype).getBoolean(path);
else if (getType() == SETTINGS_TYPE.STRING)
return Main.getInstance().getFiles().getType(filetype).getString(path);
else if (getType() == SETTINGS_TYPE.INTEGER)
return Main.getInstance().getFiles().getType(filetype).getInt(path);
}
return null;
}
public SETTINGS_TYPE getType() {
return type;
}
public FILETYPE getFiletype() {
return filetype;
}
}
enum SETTINGS_TYPE {
BOOLEAN(Boolean.class), STRING(String.class), INTEGER(Integer.class);
private Class cla;
SETTINGS_TYPE(Class cla) {
this.cla = cla;
}
Class getCla() {
return cla;
}
}

View File

@ -0,0 +1,43 @@
package me.SuperRonanCraft.BetterRTP.references.invs.types;
import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS;
import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class RTPInvMain extends RTPInventory {
public void show(Player p) {
Inventory inv = this.createInv(9, "&lSettings");
int _index = 0;
for (RTP_INV_SETTINGS type : RTP_INV_SETTINGS.values()) {
if (type.getShowMain()) {
String _name = type.name();
_name = _name.substring(0, 1).toUpperCase() + _name.substring(1).toLowerCase();
ItemStack _item = createItem("paper", 1, _name, null);
inv.setItem(_index, _item);
_index ++;
}
}
p.openInventory(inv);
this.cacheInv(p, inv, this.type);
}
@Override
public void clickEvent(InventoryClickEvent event) {
Player p = (Player) event.getWhoClicked();
int slot = event.getSlot();
int _index = 0;
for (RTP_INV_SETTINGS type : RTP_INV_SETTINGS.values()) {
if (type.getShowMain()) {
if (_index == slot) {
type.getInv().show(p);
return;
}
_index++;
}
}
}
}

View File

@ -0,0 +1,62 @@
package me.SuperRonanCraft.BetterRTP.references.invs.types;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS;
import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory;
import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTP_INV_ITEMS;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class RTPInvWorlds extends RTPInventory {
public void show(Player p) {
int slots = (Bukkit.getWorlds().size() - (Bukkit.getWorlds().size() % 9) + 1) * 9;
if (slots < 6 * 9)
slots += 9;
Inventory inv = this.createInv(slots, "&lSelect a world to edit!");
int _index = 0;
for (World world : Bukkit.getWorlds()) {
if (_index > 9 * 5)
break;
ItemStack _item = createItem(RTP_INV_ITEMS.NORMAL.item, RTP_INV_ITEMS.NORMAL.amt, world.getName(), null);
inv.setItem(_index, _item);
_index ++;
}
ItemStack _item = createItem(RTP_INV_ITEMS.BACK.item, RTP_INV_ITEMS.BACK.amt, RTP_INV_ITEMS.BACK.name, null);
inv.setItem(inv.getSize() - 9 + RTP_INV_ITEMS.BACK.slot, _item);
p.openInventory(inv);
this.cacheInv(p, inv, this.type);
}
@Override
public void clickEvent(InventoryClickEvent e) {
Player p = (Player) e.getWhoClicked();
int slot = e.getSlot();
for (RTP_INV_ITEMS type : RTP_INV_ITEMS.values()) {
if (type.slot != -1) {
switch (type) {
case BACK:
if (slot == e.getInventory().getSize() - 9 + type.slot) {
Main.getInstance().getInvs().getInv(RTP_INV_SETTINGS.MAIN).show(p);
return;
}
default:
break;
}
}
}
int _index = 0;
for (World world : Bukkit.getWorlds()) {
if (_index == slot) {
Main.getInstance().getpInfo().setInvWorld(p, world);
Main.getInstance().getInvs().getInv(Main.getInstance().getpInfo().getNextInv(p)).show(p);
}
_index ++;
}
}
}

View File

@ -0,0 +1,15 @@
package me.SuperRonanCraft.BetterRTP.references.settings;
public class Settings {
private SoftDepends depends = new SoftDepends();
public void load() { //Load Settings
depends.load();
}
public SoftDepends getsDepends() {
return depends;
}
}

View File

@ -0,0 +1,46 @@
package me.SuperRonanCraft.BetterRTP.references.settings;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import org.bukkit.Bukkit;
public class SoftDepends {
private boolean worldguard = false, griefprevention = false, savagefactions = false;
public boolean isWorldguard() {
return worldguard;
}
public boolean isGriefprevention() {
return griefprevention;
}
void load() {
FileBasics.FILETYPE config = Main.getInstance().getFiles().getType(FileBasics.FILETYPE.CONFIG);
if (config.getBoolean("Settings.RespectWorldGuard"))
registerWorldguard();
else if (worldguard)
worldguard = false;
if (config.getBoolean("Settings.RespectGriefPrevention"))
registerGriefPrevention();
else if (griefprevention)
griefprevention = false;
if (config.getBoolean("Settings.RespectSavageFactions"))
registerSavageFactions();
else if (savagefactions)
savagefactions = false;
}
private void registerWorldguard() {
worldguard = Bukkit.getPluginManager().isPluginEnabled("WorldGuard");
}
private void registerGriefPrevention() {
griefprevention = Bukkit.getPluginManager().isPluginEnabled("GriefPrevention");
}
private void registerSavageFactions() {
savagefactions = Bukkit.getPluginManager().isPluginEnabled("Factions");
}
}

View File

@ -3,6 +3,7 @@ version: 2.10.0
name: BetterRTP
author: SuperRonanCraft
softdepend: [Vault, WorldGuard, GriefPrevention, Factions]
api-version: 1.13
commands:
betterrtp: