diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/Main.java b/src/main/java/me/SuperRonanCraft/BetterRTP/Main.java index b7fa1ee..36d8b2b 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/Main.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/Main.java @@ -113,5 +113,6 @@ public class Main extends JavaPlugin { rtp.load(); cmd.load(); listener.load(); + eco.load(); } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/Delay.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/Delay.java index dd64c4c..e6f91ca 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/Delay.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/Delay.java @@ -5,34 +5,38 @@ import me.SuperRonanCraft.BetterRTP.Main; import org.bukkit.Bukkit; import org.bukkit.Sound; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.player.PlayerMoveEvent; class Delay implements Listener { private int run; private PlayerWorld pWorld; - private Main pl = Main.getInstance(); + private boolean cancelOnMove, cancelOnDamage; - Delay(CommandSender sendi, PlayerWorld pWorld, int delay, boolean cancelOnMove) { + Delay(CommandSender sendi, PlayerWorld pWorld, int delay, boolean cancelOnMove, boolean cancelOnDamage) { this.pWorld = pWorld; - delay(sendi, delay, cancelOnMove); + this.cancelOnMove = cancelOnMove; + this.cancelOnDamage = cancelOnDamage; + delay(sendi, delay); } @SuppressWarnings("deprecation") - private void delay(CommandSender sendi, int delay, boolean cancelOnMove) { + private void delay(CommandSender sendi, int delay) { Main pl = Main.getInstance(); - if (sendi.equals(pWorld.getPlayer()) && delay != 0 && pl.getText().getTitleDelayChat()) - pl.getText().getDelay(sendi, String.valueOf(delay)); - if (pl.getText().getSoundsEnabled()) { - Sound sound = pl.getText().getSoundsDelay(); + if (sendi.equals(pWorld.getPlayer()) && delay != 0 && getPl().getText().getTitleDelayChat()) + getPl().getText().getDelay(sendi, String.valueOf(delay)); + if (getPl().getText().getSoundsEnabled()) { + Sound sound = getPl().getText().getSoundsDelay(); if (sound != null) pWorld.getPlayer().playSound(pWorld.getPlayer().getLocation(), sound, 1F, 1F); } - if (pl.getText().getTitleEnabled()) { - String title = pl.getText().getTitleDelay(pWorld.getPlayer().getName(), String.valueOf(delay)); - String subTitle = pl.getText().getSubTitleDelay(pWorld.getPlayer().getName(), String.valueOf(delay)); + if (getPl().getText().getTitleEnabled()) { + String title = getPl().getText().getTitleDelay(pWorld.getPlayer().getName(), String.valueOf(delay)); + String subTitle = getPl().getText().getSubTitleDelay(pWorld.getPlayer().getName(), String.valueOf(delay)); pWorld.getPlayer().sendTitle(title, subTitle); // int fadeIn = text.getFadeIn(); // int stay = text.getStay(); @@ -42,39 +46,63 @@ class Delay implements Listener { } run = Bukkit.getScheduler().scheduleSyncDelayedTask(pl, run(sendi, this), delay * 2 * 10); //Bukkit.getScheduler().scheduleSyncRepeatingTask(pl, run(sendi, this), 0, 10); - if (cancelOnMove) + if (cancelOnMove || cancelOnDamage) Bukkit.getPluginManager().registerEvents(this, Main.getInstance()); } @EventHandler @SuppressWarnings("unused") private void event(PlayerMoveEvent e) { - if (e.getPlayer().equals(pWorld.getPlayer())) { - Bukkit.getScheduler().cancelTask(run); - if (!Bukkit.getScheduler().isCurrentlyRunning(run)) { - HandlerList.unregisterAll(this); - pl.getText().getMoved(pWorld.getPlayer()); - pl.getEco().unCharge(pWorld.getPlayer(), pWorld.getPrice()); - pl.getCmd().cooldowns.remove(pWorld.getPlayer().getUniqueId()); - pl.getCmd().rtping.put(pWorld.getPlayer().getUniqueId(), false); + if (cancelOnMove) + if (e.getPlayer().equals(pWorld.getPlayer()) && + (e.getTo() != null && + (e.getTo().getX() != e.getFrom().getX() || + e.getTo().getY() != e.getFrom().getY() || + e.getTo().getZ() != e.getFrom().getZ())) + ) { + cancel(); } + } + + @EventHandler + @SuppressWarnings("unused") + private void event(EntityDamageEvent e) { + if (cancelOnDamage) + if (e.getEntity() instanceof Player){ + if (e.getEntity().equals(pWorld.getPlayer())) + cancel(); + } + } + + private void cancel() { + Bukkit.getScheduler().cancelTask(run); + if (!Bukkit.getScheduler().isCurrentlyRunning(run)) { + HandlerList.unregisterAll(this); + getPl().getText().getMoved(pWorld.getPlayer()); + getPl().getEco().unCharge(pWorld.getPlayer(), pWorld.getPrice()); + getPl().getCmd().cooldowns.remove(pWorld.getPlayer().getUniqueId()); + getPl().getCmd().rtping.put(pWorld.getPlayer().getUniqueId(), false); } } private Runnable run(final CommandSender sendi, final Delay cls) { return () -> { HandlerList.unregisterAll(cls); - if (pl.getCmd().rtping.containsKey(pWorld.getPlayer().getUniqueId())) { + if (getPl().getCmd().rtping.containsKey(pWorld.getPlayer().getUniqueId())) { try { - pl.getRTP().tp(sendi, pWorld); + getPl().getRTP().tp(sendi, pWorld); } catch (NullPointerException e) { if (pWorld.getPrice() > 0) - pl.getEco().unCharge(pWorld.getPlayer(), pWorld.getPrice()); + getPl().getEco().unCharge(pWorld.getPlayer(), pWorld.getPrice()); } - pl.getCmd().rtping.put(pWorld.getPlayer().getUniqueId(), false); + getPl().getCmd().rtping.put(pWorld.getPlayer().getUniqueId(), false); } else if (pWorld.getPrice() > 0) - pl.getEco().unCharge(pWorld.getPlayer(), pWorld.getPrice()); + getPl().getEco().unCharge(pWorld.getPlayer(), pWorld.getPrice()); Bukkit.getScheduler().cancelTask(run); }; } + + private Main getPl() { + return Main.getInstance(); + } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java index 557d450..1b97443 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java @@ -29,7 +29,7 @@ public class RTP { private Random rn = new Random(); private List disabledWorlds, blockList; private int maxAttempts, delayTime; - private boolean cancelOnMove; + private boolean cancelOnMove, cancelOnDamage; public HashMap world_type = new HashMap<>(); public RTP(Main pl) { @@ -43,6 +43,7 @@ public class RTP { maxAttempts = config.getInt("Settings.MaxAttempts"); delayTime = config.getInt("Settings.Delay.Time"); cancelOnMove = config.getBoolean("Settings.Delay.CancelOnMove"); + cancelOnDamage = config.getBoolean("Settings.Delay.CancelOnDamage"); blockList = config.getStringList("BlacklistedBlocks"); //OVER-RIDES try { @@ -157,7 +158,7 @@ public class RTP { // Delaying? Else, just go if (delay) { pl.getCmd().rtping.put(p.getUniqueId(), true); - new Delay(sendi, pWorld, delayTime, cancelOnMove); + new Delay(sendi, pWorld, delayTime, cancelOnMove, cancelOnDamage); } else tp(sendi, pWorld); } @@ -314,15 +315,18 @@ public class RTP { private Location getLocAtNormal(int x, int z, World world, Float yaw, Float pitch, PlayerWorld pWorld) { Block b = world.getHighestBlockAt(x, z); - //System.out.println("-----------"); - //System.out.println(b.getType().isSolid() + " " + b.getType().name()); - if (b.getType() == Material.AIR || !b.getType().isSolid()) { //1.15.1 or less - int y = world.getHighestBlockYAt(x, z); - b = world.getBlockAt(x, y - 1, z); + if (b.getType().toString().endsWith("AIR")) //1.15.1 or less + b = world.getBlockAt(x, b.getY() - 1, z); + else if (!b.getType().isSolid()) { //Water, lava, shrubs... + if (!badBlock(b.getType().name(), x, z, pWorld.getWorld(), null)) { //Make sure it's not an invalid block (ex: water, lava...) + //int y = world.getHighestBlockYAt(x, z); + b = world.getBlockAt(x, b.getY() - 1, z); + } } - //System.out.println(b.getType().isSolid() + " " + b.getType().name()); - if (b.getY() > 0 && !badBlock(b.getType().name(), x, z, pWorld.getWorld(), pWorld.getBiomes())) + //System.out.println(b.getType().name()); + if (b.getY() > 0 && !badBlock(b.getType().name(), x, z, pWorld.getWorld(), pWorld.getBiomes())) { return new Location(world, (x + 0.5), b.getY() + 1, (z + 0.5), yaw, pitch); + } return null; } @@ -353,16 +357,25 @@ public class RTP { } private Location getLocAtNether(int x, int z, World world, Float yaw, Float pitch, PlayerWorld pWorld) { + //System.out.println("-----------"); for (int y = 0; y < world.getMaxHeight(); y++) { - Block b = world.getBlockAt(x, y, z); - if (b.getType().equals(Material.AIR) || !b.getType().isSolid()) { - String block = world.getBlockAt(x, y - 1, z).getType().name(); - if (!b.getType().isSolid()) { //Block is not a solid (ex: lava, water...) - String block_in = b.getType().name(); - if (badBlock(block_in, x, z, pWorld.getWorld(), pWorld.getBiomes())) - return null; + // System.out.println("--"); + Block block_current = world.getBlockAt(x, y, z); + //System.out.println(block_current.getType().name()); + if (block_current.getType().name().endsWith("AIR") || !block_current.getType().isSolid()) { + //System.out.println(block_current.getType().name()); + if (!block_current.getType().name().endsWith("AIR") && + !block_current.getType().isSolid()) { //Block is not a solid (ex: lava, water...) + String block_in = block_current.getType().name(); + if (badBlock(block_in, x, z, pWorld.getWorld(), null)) + continue;//return null; } - if (!badBlock(block, x, z, pWorld.getWorld(), pWorld.getBiomes())) + //System.out.println(block_current.getType().name()); + String block = world.getBlockAt(x, y - 1, z).getType().name(); + if (block.endsWith("AIR")) //Block below is air, skip + continue; + if (world.getBlockAt(x, y + 1, z).getType().name().endsWith("AIR") //Head space + && !badBlock(block, x, z, pWorld.getWorld(), pWorld.getBiomes())) //Valid block return new Location(world, (x + 0.5), y, (z + 0.5), yaw, pitch); } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/CommandTypes.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/CommandTypes.java index 260c951..dd2bca8 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/CommandTypes.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/CommandTypes.java @@ -8,7 +8,7 @@ public enum CommandTypes { INFO(new CmdInfo()), PLAYER(new CmdPlayer()), RELOAD(new CmdReload()), - SETTINGS(new CmdSettings()), + //SETTINGS(new CmdSettings()), VERSION(new CmdVersion()), WORLD(new CmdWorld()); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java index 7430866..4339605 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java @@ -1,7 +1,7 @@ package me.SuperRonanCraft.BetterRTP.player.commands; -import me.SuperRonanCraft.BetterRTP.Main; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; +import me.SuperRonanCraft.BetterRTP.Main; import org.bukkit.block.Biome; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -18,7 +18,6 @@ public class Commands { public HashMap rtping = new HashMap<>(); private boolean cooldownTimer; private int timer, cooldown; - public static String[] cmds = {"help", "player", "world", "version", "reload", "biome"}; public Commands(Main pl) { this.pl = pl; @@ -34,7 +33,7 @@ public class Commands { public void commandExecuted(CommandSender sendi, String label, String[] args) { if (pl.getPerms().getUse(sendi)) { - if (args.length > 0) { + if (args != null && args.length > 0) { for (CommandTypes cmd : CommandTypes.values()) { if (cmd.name().equalsIgnoreCase(args[0])) { if (cmd.getCmd().permission(sendi)) @@ -119,7 +118,7 @@ public class Commands { } public void tp(Player player, CommandSender sendi, String world, List biomes) { - if (cooldown(sendi, player)) { + if (canRtp(sendi, player)) { boolean delay = false; if (!pl.getPerms().getBypassDelay(player)) if (timer != 0) @@ -129,14 +128,17 @@ public class Commands { } } - private boolean cooldown(CommandSender sendi, Player player) { + private boolean canRtp(CommandSender sendi, Player player) { + //Bypassing/Forced? if (sendi != player || pl.getPerms().getBypassCooldown(player)) return true; + //Currently rtp'ing? else if (rtping.containsKey(player.getUniqueId())) if (rtping.get(player.getUniqueId())) { pl.getText().getAlready(player); return false; } + //Cooling down? if (cooldownTimer) { Player p = (Player) sendi; if (cooldowns.containsKey(p.getUniqueId())) { @@ -144,11 +146,12 @@ public class Commands { if (!pl.getPerms().getBypassDelay(p)) Left = Left + timer; if (Left > 0) { - // Still cooling down + //Still cooling down pl.getText().getCooldown(sendi, String.valueOf(Left)); return false; } else { - cooldowns.remove(p.getUniqueId()); + //Reset timer, but allow them to tp + cooldowns.put(p.getUniqueId(), System.currentTimeMillis()); return true; } } else diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java index cec172a..7a59e24 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java @@ -1,9 +1,11 @@ package me.SuperRonanCraft.BetterRTP.player.commands.types; +import me.SuperRonanCraft.BetterRTP.player.commands.Commands; import me.SuperRonanCraft.BetterRTP.Main; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import org.bukkit.command.CommandSender; +import java.util.ArrayList; import java.util.List; public class CmdBiome implements RTPCommand { @@ -17,7 +19,10 @@ public class CmdBiome implements RTPCommand { } public List tabComplete(CommandSender sendi, String[] args) { - return null; + List list = new ArrayList<>(); + if (args.length == 2) + getCmd().addBiomes(list, args); + return list; } public boolean permission(CommandSender sendi) { @@ -27,4 +32,8 @@ public class CmdBiome implements RTPCommand { public void usage(CommandSender sendi, String label) { Main.getInstance().getText().getUsageBiome(sendi, label); } + + private Commands getCmd() { + return Main.getInstance().getCmd(); + } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java index 3a70883..5645120 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java @@ -36,7 +36,6 @@ public class CmdPlayer implements RTPCommand { public List tabComplete(CommandSender sendi, String[] args) { List list = new ArrayList<>(); - System.out.println(this.toString()); if (args.length == 2) { for (Player p : Bukkit.getOnlinePlayers()) if (p.getDisplayName().toLowerCase().startsWith(args[1].toLowerCase())) diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdSettings.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdSettings.java index 5ca32f5..2919241 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdSettings.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdSettings.java @@ -1,8 +1,8 @@ package me.SuperRonanCraft.BetterRTP.player.commands.types; +import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; 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; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Click.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Click.java index 45d67f6..382232f 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Click.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Click.java @@ -1,8 +1,8 @@ package me.SuperRonanCraft.BetterRTP.player.events; +import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories; 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; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Interact.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Interact.java index 6bdaf29..78aa2b2 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Interact.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Interact.java @@ -1,8 +1,8 @@ package me.SuperRonanCraft.BetterRTP.player.events; +import me.SuperRonanCraft.BetterRTP.player.commands.CommandTypes; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.Main; -import me.SuperRonanCraft.BetterRTP.player.commands.Commands; import org.bukkit.block.Block; import org.bukkit.block.Sign; import org.bukkit.entity.Player; @@ -34,8 +34,8 @@ class Interact { action(e.getPlayer(), null); return; } else - for (String cmd : Commands.cmds) - if (command.equalsIgnoreCase(cmd)) { + for (CommandTypes cmd : CommandTypes.values()) + if (command.equalsIgnoreCase(cmd.name())) { action(e.getPlayer(), cmd(sign.getLines()).split(" ")); return; } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/Econ.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/Econ.java index f2fcd74..6ab9d7d 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/Econ.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/Econ.java @@ -12,7 +12,7 @@ public class Econ { private boolean checked = false; public boolean charge(Player player, int price) { - check(); + check(false); //player.sendMessage("Charging = " + (e != null) + " charge = " + price); if (e != null) if (price != 0) { @@ -31,8 +31,12 @@ public class Econ { e.depositPlayer(p, price); } - private void check() { - if (!checked) + public void load() { + check(true); + } + + private void check(boolean force) { + if (!checked || force) registerEconomy(); } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/RTPInventories.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/RTPInventories.java index 934be7f..ff62f28 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/RTPInventories.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/RTPInventories.java @@ -1,7 +1,7 @@ package me.SuperRonanCraft.BetterRTP.references.invs; -import me.SuperRonanCraft.BetterRTP.Main; import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory_Defaults; +import me.SuperRonanCraft.BetterRTP.Main; import org.bukkit.Bukkit; import org.bukkit.entity.Player; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/enums/RTPInventory_Defaults.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/enums/RTPInventory_Defaults.java index 13c578b..fbcd6f3 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/enums/RTPInventory_Defaults.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/enums/RTPInventory_Defaults.java @@ -1,8 +1,8 @@ package me.SuperRonanCraft.BetterRTP.references.invs.enums; +import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; 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; @@ -27,7 +27,7 @@ public interface RTPInventory_Defaults { if (lore != null) _meta.setLore(lore); if (name != null) - _meta.setDisplayName(name); + _meta.setDisplayName(Main.getInstance().getText().color(name)); } _stack.setItemMeta(_meta); return _stack; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/types/RTPInvCoordinates.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/types/RTPInvCoordinates.java index cb01430..a9fbdb7 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/types/RTPInvCoordinates.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/types/RTPInvCoordinates.java @@ -1,11 +1,10 @@ package me.SuperRonanCraft.BetterRTP.references.invs.types; +import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory; 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; @@ -21,11 +20,16 @@ public class RTPInvCoordinates extends RTPInventory { Main.getInstance().getInvs().getInv(RTP_INV_SETTINGS.WORLDS).show(p); return; } - int slots = (Bukkit.getWorlds().size() - (Bukkit.getWorlds().size() % 9) + 1) * 9; + int slots = (RTP_COORDINATES_SETTINGS.values().length - (RTP_COORDINATES_SETTINGS.values().length % 9) + 1) * 9; if (slots < 6 * 9) slots += 9; Inventory inv = this.createInv(slots, "Settings: &lCoordinates"); - + int index = 0; + for (RTP_COORDINATES_SETTINGS set : RTP_COORDINATES_SETTINGS.values()) { + ItemStack _item = createItem(RTP_INV_ITEMS.NORMAL.item, RTP_INV_ITEMS.NORMAL.amt, "&a&l" + set.getInfo()[1], 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); @@ -35,6 +39,9 @@ public class RTPInvCoordinates extends RTPInventory { @Override public void clickEvent(InventoryClickEvent e) { int slot = e.getSlot(); + for (RTP_COORDINATES_SETTINGS set : RTP_COORDINATES_SETTINGS.values()) { + + } for (RTP_INV_ITEMS type : RTP_INV_ITEMS.values()) { if (type.slot != -1) { switch (type) { @@ -50,19 +57,19 @@ public class RTPInvCoordinates extends RTPInventory { } 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", + CENTER_Z( SETTINGS_TYPE.INTEGER, FILETYPE.CONFIG, "Settings.Importance.Enabled", + new Object[]{true, "Center Z", "&7Toggle Categories system", "paper"}), + CENTER_X( SETTINGS_TYPE.INTEGER, FILETYPE.CONFIG, "Settings.Cooldown.Enabled", + new Object[]{true, "Center X", "&7Toggle Cooldown system", "paper"}), + USE_WORLDBORDER( SETTINGS_TYPE.BOOLEAN, FILETYPE.CONFIG, "Settings.Cooldown.Time", new Object[]{true, "Cooldown Time", new ArrayList() {{ add("&7Set the time (in minutes)"); add("&7between making a new ticket"); }}, "paper"}), - DEBUG( SETTINGS_TYPE.BOOLEAN, FILETYPE.CONFIG, "Settings.Debug", + /*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"}); + new Object[]{true, "Templates", "&7Toggle Templates system", "paper"});*/; SETTINGS_TYPE type; FILETYPE filetype; @@ -122,18 +129,18 @@ enum RTP_COORDINATES_SETTINGS { public FILETYPE getFiletype() { return filetype; } -} -enum SETTINGS_TYPE { - BOOLEAN(Boolean.class), STRING(String.class), INTEGER(Integer.class); + enum SETTINGS_TYPE { + BOOLEAN(Boolean.class), STRING(String.class), INTEGER(Integer.class); - private Class cla; + private Class cla; - SETTINGS_TYPE(Class cla) { - this.cla = cla; - } + SETTINGS_TYPE(Class cla) { + this.cla = cla; + } - Class getCla() { - return cla; + Class getCla() { + return cla; + } } } \ No newline at end of file diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/types/RTPInvMain.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/types/RTPInvMain.java index bdf49df..ef331f9 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/types/RTPInvMain.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/types/RTPInvMain.java @@ -1,7 +1,7 @@ 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 me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 452b2cf..d530fa5 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,5 +1,5 @@ # BetterRTP plugin by SuperRonanCraft! (Join my Public Server mc.RonanCraft.net) # -# Please give me credit, I'm a first time coder, and would love to see more discussions on my Spigot page! # +# Need help? go to https://ronancraft.net/discord! # Language-File: 'en.yml' @@ -26,17 +26,12 @@ Settings: CancelOnMove: true DisableUpdater: false -WorldType: # Available types are NORMAL, NETHER and END - - world: NORMAL - - world_nether: NETHER - - world_the_end: NORMAL - Default: - UseWorldBorder: true + UseWorldBorder: false ## "Biomes: []" means all biomes are allowed! # ## Biomes are optional, more biomes at https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/block/Biome.html # Biomes: [] - MaxRadius: 100 + MaxRadius: 1000 MinRadius: 10 ## If "UseWorldBorder" is set to true above, these values WILL be ignored! Except Biomes! # CenterX: 0 @@ -64,14 +59,14 @@ DisabledWorlds: ## Worlds you want to have a custom min/max and spawn center in # ## [MaxRadius] and [MinRadius] MUST be positive! These cannot be equal to each other! CustomWorlds: - - world: + - custom_world_1: UseWorldBorder: false ## If UseWorldBorder is true, everything will be ignored EXEPT "MinRadius"! MaxRadius: 1000 MinRadius: 100 CenterX: 0 CenterZ: 0 - - nether: + - other_custom_world: MaxRadius: 100000 MinRadius: 1000 CenterX: 123 @@ -83,7 +78,11 @@ CustomWorlds: ## Override a world and rtp a player executing the command in one world, to another Overrides: - #FORMAT : - - world_nether: 'world' - - creative: 'world' - + #FORMAT - : + - master_world: 'world' + - creative_world: 'world' + +WorldType: # Available types are NORMAL, NETHER + - world: NORMAL + - world_nether: NETHER + - world_the_end: NORMAL