From 3759d53cc7ff4425f6630fd2e25dece628b5943a Mon Sep 17 00:00:00 2001 From: copokbl Date: Sat, 13 Apr 2024 19:19:12 +1000 Subject: [PATCH] Refactor everything :) --- .../net/serble/estools/Commands/Back.java | 36 ++-- .../net/serble/estools/Commands/CChest.java | 81 ++++---- .../net/serble/estools/Commands/ClearInv.java | 21 +- .../net/serble/estools/Commands/EditSign.java | 63 +++--- .../java/net/serble/estools/Commands/Eff.java | 43 ++-- .../net/serble/estools/Commands/Ench.java | 47 ++--- .../net/serble/estools/Commands/EsTools.java | 41 ++-- .../net/serble/estools/Commands/Feed.java | 23 +-- .../java/net/serble/estools/Commands/Fix.java | 34 ++-- .../java/net/serble/estools/Commands/Fly.java | 39 ++-- .../{GM.java => GameModeCommand.java} | 7 +- .../Commands/GameMode/{gma.java => Gma.java} | 2 +- .../Commands/GameMode/{gmc.java => Gmc.java} | 2 +- .../Commands/GameMode/{gms.java => Gms.java} | 2 +- .../GameMode/{gmsp.java => Gmsp.java} | 2 +- .../net/serble/estools/Commands/GetInfo.java | 25 +-- .../estools/Commands/GetPersistentData.java | 25 ++- .../serble/estools/Commands/Give/Give.java | 161 +++++++++++++++ .../estools/Commands/Give/GiveItem.java | 38 ++++ .../estools/Commands/Give/SetHandItem.java | 39 ++++ .../java/net/serble/estools/Commands/God.java | 25 +-- .../java/net/serble/estools/Commands/H.java | 50 ----- .../net/serble/estools/Commands/Heal.java | 24 ++- .../serble/estools/Commands/HideFlags.java | 19 +- .../java/net/serble/estools/Commands/I.java | 49 ----- .../net/serble/estools/Commands/Infinite.java | 33 ++-- .../Commands/{Invsee.java => InvSee.java} | 19 +- .../net/serble/estools/Commands/Lore.java | 21 +- .../estools/Commands/MoveSpeed/FlySpeed.java | 33 ++++ .../MoveSpeed.java} | 45 ++--- .../estools/Commands/MoveSpeed/WalkSpeed.java | 33 ++++ .../net/serble/estools/Commands/Music.java | 28 ++- .../net/serble/estools/Commands/Night.java | 12 +- .../net/serble/estools/Commands/Potion.java | 24 ++- .../estools/Commands/PowerPick/PowerAxe.java | 7 +- .../estools/Commands/PowerPick/PowerHoe.java | 7 +- .../estools/Commands/PowerPick/PowerPick.java | 8 +- .../Commands/PowerPick/PowerShovel.java | 8 +- .../Commands/PowerPick/PowerSword.java | 7 +- .../estools/Commands/PowerPick/PowerTool.java | 9 +- .../Commands/RemovePersistentData.java | 12 +- .../net/serble/estools/Commands/Rename.java | 28 ++- .../Commands/{SafeTP.java => SafeTp.java} | 25 ++- .../serble/estools/Commands/SetHealth.java | 55 +++--- .../serble/estools/Commands/SetHunger.java | 51 ++--- .../serble/estools/Commands/SetMaxHealth.java | 34 ++-- .../estools/Commands/SetPersistentData.java | 16 +- .../estools/Commands/SetSaturation.java | 51 ++--- .../net/serble/estools/Commands/SetStack.java | 22 +-- .../estools/Commands/SetUnbreakable.java | 43 ++-- .../net/serble/estools/Commands/Smite.java | 13 +- .../net/serble/estools/Commands/Sudo.java | 22 +-- .../net/serble/estools/Commands/Suicide.java | 9 +- .../java/net/serble/estools/Commands/Sun.java | 13 +- .../Teleport/{TPAll.java => TpAll.java} | 7 +- .../Teleport/{TPHere.java => TpHere.java} | 14 +- .../serble/estools/Commands/WalkSpeed.java | 72 ------- .../serble/estools/Commands/Warps/Warp.java | 12 +- .../estools/Commands/Warps/WarpManager.java | 44 ++--- .../serble/estools/Commands/WrongVersion.java | 7 +- .../net/serble/estools/ConfigManager.java | 8 +- src/main/java/net/serble/estools/Effects.java | 9 +- .../java/net/serble/estools/Enchantments.java | 14 +- .../net/serble/estools/EntityCommand.java | 19 +- .../estools/{CMD.java => EsToolsCommand.java} | 103 +++++----- .../serble/estools/EsToolsTabCompleter.java | 2 - src/main/java/net/serble/estools/Give.java | 185 ------------------ src/main/java/net/serble/estools/Main.java | 110 +++++------ .../java/net/serble/estools/MetaHandler.java | 18 +- .../serble/estools/MultiPlayerCommand.java | 12 +- .../net/serble/estools/PlayerCommand.java | 3 +- .../net/serble/estools/Signs/Balance.java | 2 +- .../net/serble/estools/Signs/Disposal.java | 4 +- .../java/net/serble/estools/Signs/Feed.java | 5 +- .../java/net/serble/estools/Signs/Give.java | 15 +- .../java/net/serble/estools/Signs/Heal.java | 10 +- .../java/net/serble/estools/Signs/Repair.java | 28 +-- .../java/net/serble/estools/Signs/Sell.java | 25 ++- .../net/serble/estools/Signs/SignMain.java | 43 ++-- .../net/serble/estools/Signs/SignType.java | 21 +- .../serble/estools/TabCompleteGenerator.java | 2 - src/main/java/net/serble/estools/Vault.java | 69 +++---- 82 files changed, 1162 insertions(+), 1287 deletions(-) rename src/main/java/net/serble/estools/Commands/GameMode/{GM.java => GameModeCommand.java} (76%) rename src/main/java/net/serble/estools/Commands/GameMode/{gma.java => Gma.java} (89%) rename src/main/java/net/serble/estools/Commands/GameMode/{gmc.java => Gmc.java} (89%) rename src/main/java/net/serble/estools/Commands/GameMode/{gms.java => Gms.java} (89%) rename src/main/java/net/serble/estools/Commands/GameMode/{gmsp.java => Gmsp.java} (88%) create mode 100644 src/main/java/net/serble/estools/Commands/Give/Give.java create mode 100644 src/main/java/net/serble/estools/Commands/Give/GiveItem.java create mode 100644 src/main/java/net/serble/estools/Commands/Give/SetHandItem.java delete mode 100644 src/main/java/net/serble/estools/Commands/H.java delete mode 100644 src/main/java/net/serble/estools/Commands/I.java rename src/main/java/net/serble/estools/Commands/{Invsee.java => InvSee.java} (67%) create mode 100644 src/main/java/net/serble/estools/Commands/MoveSpeed/FlySpeed.java rename src/main/java/net/serble/estools/Commands/{FlySpeed.java => MoveSpeed/MoveSpeed.java} (50%) create mode 100644 src/main/java/net/serble/estools/Commands/MoveSpeed/WalkSpeed.java rename src/main/java/net/serble/estools/Commands/{SafeTP.java => SafeTp.java} (63%) rename src/main/java/net/serble/estools/Commands/Teleport/{TPAll.java => TpAll.java} (80%) rename src/main/java/net/serble/estools/Commands/Teleport/{TPHere.java => TpHere.java} (73%) delete mode 100644 src/main/java/net/serble/estools/Commands/WalkSpeed.java rename src/main/java/net/serble/estools/{CMD.java => EsToolsCommand.java} (67%) delete mode 100644 src/main/java/net/serble/estools/Give.java diff --git a/src/main/java/net/serble/estools/Commands/Back.java b/src/main/java/net/serble/estools/Commands/Back.java index 0bf5d39..6db555a 100644 --- a/src/main/java/net/serble/estools/Commands/Back.java +++ b/src/main/java/net/serble/estools/Commands/Back.java @@ -14,47 +14,45 @@ import org.bukkit.event.entity.EntityEvent; import org.bukkit.event.entity.PlayerDeathEvent; -import net.serble.estools.CMD; +import net.serble.estools.EsToolsCommand; import org.bukkit.event.player.PlayerTeleportEvent; -public class Back extends CMD implements Listener { - - private static HashMap tpLoc = new HashMap(); +public class Back extends EsToolsCommand implements Listener { + private static final HashMap prevLocations = new HashMap<>(); @Override public void onEnable() { - Bukkit.getServer().getPluginManager().registerEvents(this, Main.current); + Bukkit.getServer().getPluginManager().registerEvents(this, Main.plugin); } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - - if (isNotPlayer(sender)) - return false; + if (isNotPlayer(sender)) { + return false; + } Player p = (Player) sender; - - if (tpLoc.containsKey(p.getUniqueId())) { - p.teleport(tpLoc.get(p.getUniqueId())); - s(sender, "&aTeleported to last location!"); + if (prevLocations.containsKey(p.getUniqueId())) { + p.teleport(prevLocations.get(p.getUniqueId())); + send(sender, "&aTeleported to last location!"); } else { - s(sender, "&cYou do not have a last location"); + send(sender, "&cYou do not have a last location"); } + return true; } @EventHandler public void onDeath(PlayerDeathEvent e) { - if (Main.version > 1) { - tpLoc.put(e.getEntity().getUniqueId(), e.getEntity().getLocation()); + if (Main.majorVersion > 1) { + prevLocations.put(e.getEntity().getUniqueId(), e.getEntity().getLocation()); return; } try { Player p = (Player)EntityEvent.class.getMethod("getEntity").invoke(e); - tpLoc.put(p.getUniqueId(), p.getLocation()); - } - catch (Exception ex) { + prevLocations.put(p.getUniqueId(), p.getLocation()); + } catch (Exception ex) { Bukkit.getLogger().severe(ex.toString()); } } @@ -62,7 +60,7 @@ public void onDeath(PlayerDeathEvent e) { @EventHandler public void onTeleport(PlayerTeleportEvent e) { if (equalsOr(e.getCause(), PlayerTeleportEvent.TeleportCause.COMMAND, PlayerTeleportEvent.TeleportCause.PLUGIN)) { - tpLoc.put(e.getPlayer().getUniqueId(), e.getPlayer().getLocation()); + prevLocations.put(e.getPlayer().getUniqueId(), e.getPlayer().getLocation()); } } } diff --git a/src/main/java/net/serble/estools/Commands/CChest.java b/src/main/java/net/serble/estools/Commands/CChest.java index 8067805..46d29a0 100644 --- a/src/main/java/net/serble/estools/Commands/CChest.java +++ b/src/main/java/net/serble/estools/Commands/CChest.java @@ -1,6 +1,6 @@ package net.serble.estools.Commands; -import net.serble.estools.CMD; +import net.serble.estools.EsToolsCommand; import net.serble.estools.ConfigManager; import net.serble.estools.Main; import org.bukkit.Bukkit; @@ -17,56 +17,58 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import org.bukkit.scheduler.BukkitRunnable; import java.util.*; -public class CChest extends CMD implements Listener { +public class CChest extends EsToolsCommand implements Listener { - public static HashMap cchests = new HashMap<>(); + public static HashMap cChests = new HashMap<>(); @Override public void onEnable() { - if (Main.version > 4) { - Bukkit.getServer().getPluginManager().registerEvents(this, Main.current); + if (Main.majorVersion > 4) { + Bukkit.getServer().getPluginManager().registerEvents(this, Main.plugin); } } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (isNotPlayer(sender)) - return true; + if (isNotPlayer(sender)) { + return false; + } - if (Main.version < 7) { - s(sender, "&cWarning: CChest doesn't work to full capacity"); + if (Main.majorVersion < 7) { + send(sender, "&cWarning: CChest doesn't work to full capacity"); } Player p = (Player)sender; if (p.getGameMode().equals(GameMode.CREATIVE)) { - if (checkPerms(sender, "cchest.creative")) - return false; + if (checkPerms(sender, "cchest.creative")) { + return false; + } } else { - if (checkPerms(sender, "cchest.survival")) - return false; + if (checkPerms(sender, "cchest.survival")) { + return false; + } } UUID uid = p.getUniqueId(); - Inventory inv = cchests.get(uid); + Inventory inv = cChests.get(uid); if (inv == null) { Inventory loaded = loadPlayer(p); if (loaded != null) { inv = loaded; } else { - inv = Bukkit.createInventory(null, 54, t("&1Creative Chest")); + inv = Bukkit.createInventory(null, 54, translate("&1Creative Chest")); } } p.closeInventory(); p.openInventory(inv); - cchests.put(uid, inv); + cChests.put(uid, inv); return true; } @@ -75,8 +77,8 @@ public void inventoryClick(final InventoryClickEvent e) { UUID uid = e.getWhoClicked().getUniqueId(); ItemStack currentItem = e.getCurrentItem(); - // check if inventory is cchest - if (!cchests.containsKey(uid) || !cchests.get(uid).equals(e.getInventory()) || e.getClickedInventory() == null) { + // Check if inventory is cChest + if (!cChests.containsKey(uid) || !cChests.get(uid).equals(e.getInventory()) || e.getClickedInventory() == null) { return; } @@ -110,9 +112,9 @@ public void inventoryClick(final InventoryClickEvent e) { return; } - // if player inventory - if (!e.getClickedInventory().equals(cchests.get(uid))) { - // shift click into cchest + // If player inventory + if (!e.getClickedInventory().equals(cChests.get(uid))) { + // Shift click into cChest if (equalsOr(e.getClick(), ClickType.SHIFT_LEFT, ClickType.SHIFT_RIGHT) && currentItem != null) { e.setCancelled(true); @@ -122,14 +124,14 @@ public void inventoryClick(final InventoryClickEvent e) { return; } - // right click in cchest (clear item) + // Right click in cChest (clear item) if (e.getClick().equals(ClickType.RIGHT) && currentItem != null) { e.setCancelled(true); e.getClickedInventory().setItem(e.getSlot(), null); return; } - // add to chest + // Add to chest if (equalsOr(e.getAction(), InventoryAction.PLACE_ALL, InventoryAction.PLACE_ONE, InventoryAction.PLACE_SOME)) { e.setCancelled(true); ItemStack item = e.getCursor(); @@ -147,7 +149,7 @@ public void inventoryClick(final InventoryClickEvent e) { return; } - // remove from cchest + // Remove from cChest if (equalsOr(e.getClick(), ClickType.LEFT, ClickType.DROP, ClickType.CONTROL_DROP, ClickType.SHIFT_LEFT, ClickType.SHIFT_RIGHT) && currentItem != null) { ItemStack item = currentItem.clone(); @@ -156,21 +158,16 @@ public void inventoryClick(final InventoryClickEvent e) { } private static void setItemTask(Inventory inv, int slot, ItemStack item) { - new BukkitRunnable() { - @Override - public void run() { - inv.setItem(slot, item); - } - }.runTask(Main.current); + Bukkit.getScheduler().runTask(Main.plugin, () -> inv.setItem(slot, item)); } - // cancel drag if inside cchest + // Cancel drag if inside cChest @EventHandler public void onInventoryDrag(final InventoryDragEvent e) { - Inventory inv = cchests.get(e.getWhoClicked().getUniqueId()); + Inventory inv = cChests.get(e.getWhoClicked().getUniqueId()); if (inv.equals(e.getInventory())) { - // check if any of the slots dragged are in the cchest + // Check if any of the slots dragged are in the cChest for (int slot : e.getRawSlots()) { if (inv.equals(e.getView().getInventory(slot))) { e.setCancelled(true); @@ -192,22 +189,22 @@ public static Inventory loadPlayer(Player p) { @SuppressWarnings("unchecked") ItemStack[] content = ((ArrayList) Objects.requireNonNull(f.get("items"))).toArray(new ItemStack[0]); - Inventory inv = Bukkit.createInventory(null, 54, t("&1Creative Chest")); + Inventory inv = Bukkit.createInventory(null, 54, translate("&1Creative Chest")); inv.setContents(content); - cchests.put(uid, inv); + cChests.put(uid, inv); return inv; } - public static void savePlayer(Player p) { + public static void savePlayer(Player p) { UUID uid = p.getUniqueId(); - if (!cchests.containsKey(uid)) { + if (!cChests.containsKey(uid)) { return; } FileConfiguration f = new YamlConfiguration(); - f.set("items", cchests.get(uid).getContents()); + f.set("items", cChests.get(uid).getContents()); ConfigManager.save("cchests/" + uid + ".yml", f); } @@ -215,7 +212,7 @@ public static void savePlayer(Player p) { public void onClose(InventoryCloseEvent e) { UUID uid = e.getPlayer().getUniqueId(); - if (e.getInventory().equals(cchests.get(uid))) { + if (e.getInventory().equals(cChests.get(uid))) { savePlayer((Player)e.getPlayer()); } } @@ -223,12 +220,12 @@ public void onClose(InventoryCloseEvent e) { @EventHandler public void onQuit(PlayerQuitEvent e) { savePlayer(e.getPlayer()); - cchests.remove(e.getPlayer().getUniqueId()); + cChests.remove(e.getPlayer().getUniqueId()); } @EventHandler public void onKick(PlayerKickEvent e) { savePlayer(e.getPlayer()); - cchests.remove(e.getPlayer().getUniqueId()); + cChests.remove(e.getPlayer().getUniqueId()); } } diff --git a/src/main/java/net/serble/estools/Commands/ClearInv.java b/src/main/java/net/serble/estools/Commands/ClearInv.java index 1d56ae4..99983b7 100644 --- a/src/main/java/net/serble/estools/Commands/ClearInv.java +++ b/src/main/java/net/serble/estools/Commands/ClearInv.java @@ -12,26 +12,27 @@ public class ClearInv extends MultiPlayerCommand { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - - ArrayList ps = new ArrayList<>(); + ArrayList players = new ArrayList<>(); if (args.length == 0) { - if (isNotPlayer(sender, usage)) - return true; + if (isNotPlayer(sender, usage)) { + return false; + } - ps.add((Player)sender); + players.add((Player)sender); } else { - ps = getPlayers(sender, args); + players = getPlayers(sender, args); - if (ps.isEmpty()) - return true; + if (players.isEmpty()) { + return false; + } } - for (Player p : ps) { + for (Player p : players) { p.getInventory().clear(); } - s(sender, "&aCleared Inventory!"); + send(sender, "&aCleared Inventory!"); return true; } } diff --git a/src/main/java/net/serble/estools/Commands/EditSign.java b/src/main/java/net/serble/estools/Commands/EditSign.java index e7bf46d..521d8ee 100644 --- a/src/main/java/net/serble/estools/Commands/EditSign.java +++ b/src/main/java/net/serble/estools/Commands/EditSign.java @@ -1,6 +1,6 @@ package net.serble.estools.Commands; -import net.serble.estools.CMD; +import net.serble.estools.EsToolsCommand; import net.serble.estools.Main; import org.bukkit.Bukkit; import org.bukkit.block.Block; @@ -15,17 +15,17 @@ import java.util.HashSet; import java.util.List; -public class EditSign extends CMD { +public class EditSign extends EsToolsCommand { private static final String usage = genUsage("/editsign [line]"); @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - - if (isNotPlayer(sender)) - return false; + if (isNotPlayer(sender)) { + return false; + } if (args.length < 1) { - s(sender, usage); + send(sender, usage); return false; } @@ -34,7 +34,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St Block signB = getTargetBlock(p); if (signB == null || !(signB.getState() instanceof Sign)) { - s(sender, "&cYou must be looking at a sign!"); + send(sender, "&cYou must be looking at a sign!"); return false; } @@ -43,7 +43,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St switch (args[0].toLowerCase()) { case "glow": if (setGlow(sign, p, true)) { - s(sender, "&aMade the sign &6glow!"); + send(sender, "&aMade the sign &6glow!"); return true; } @@ -51,7 +51,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St case "unglow": if (setGlow(sign, p, false)) { - s(sender, "&aMade the sign no longer &6glow."); + send(sender, "&aMade the sign no longer &6glow."); return true; } @@ -59,16 +59,15 @@ public boolean onCommand(CommandSender sender, Command command, String label, St } int lineNum; - try { lineNum = Integer.parseInt(args[0]); } catch (Exception e) { - s(sender, usage); + send(sender, usage); return false; } if (lineNum < 1 || lineNum > 4) { - s(sender, "&cline number must be between 1 and 4"); + send(sender, "&cline number must be between 1 and 4"); return false; } @@ -78,23 +77,23 @@ public boolean onCommand(CommandSender sender, Command command, String label, St lineTextBuilder.append(args[i]).append(" "); } - String lineText = t(lineTextBuilder.toString()).trim(); + String lineText = translate(lineTextBuilder.toString()).trim(); - if (Main.version >= 20) { + if (Main.majorVersion >= 20) { SignSide side = sign.getTargetSide(p); side.setLine(lineNum - 1, lineText); - } - else { - sign.setLine(lineNum - 1, lineText); + } else { + //noinspection deprecation + sign.setLine(lineNum - 1, lineText); } sign.update(); if (lineText.isEmpty()) { - s(sender, "&aEmptied line &6%d&a successfully!", lineNum); + send(sender, "&aEmptied line &6%d&a successfully!", lineNum); return true; } - s(sender, "&aAdded &6%s&ato line &6%d&a successfully!", lineTextBuilder.toString(), lineNum); + send(sender, "&aAdded &6%s&ato line &6%d&a successfully!", lineTextBuilder.toString(), lineNum); return true; } @@ -108,7 +107,7 @@ public List tabComplete(CommandSender sender, String[] args, String lArg tab.add("3"); tab.add("4"); - if (Main.version >= 17) { // only add glow autocomplete if it exists + if (Main.majorVersion >= 17) { // only add glow autocomplete if it exists tab.add("glow"); tab.add("unglow"); } @@ -118,13 +117,14 @@ public List tabComplete(CommandSender sender, String[] args, String lArg } public Block getTargetBlock(Player p) { - if (Main.version > 12) { + if (Main.majorVersion > 12) { return p.getTargetBlockExact(5); - } else if (Main.version > 7) { + } else if (Main.majorVersion > 7) { return p.getTargetBlock(null, 5); } else { try { - return (Block) LivingEntity.class.getMethod("getTargetBlock", HashSet.class, int.class).invoke(p, null, 5); + //noinspection JavaReflectionMemberAccess + return (Block) LivingEntity.class.getMethod("getTargetBlock", HashSet.class, int.class).invoke(p, null, 5); } catch (Exception e) { Bukkit.getLogger().severe(e.toString()); @@ -133,29 +133,30 @@ public Block getTargetBlock(Player p) { } } - public boolean setGlow(Sign sign, Player p, boolean glow) { - if (Main.version >= 20) { + @SuppressWarnings("deprecation") + public boolean setGlow(Sign sign, Player p, boolean glow) { + if (Main.majorVersion >= 20) { SignSide side = sign.getTargetSide(p); if (side.isGlowingText() == glow) { if (glow) { - s(p, "&cThis sign is already &6glowing!"); + send(p, "&cThis sign is already &6glowing!"); } else { - s(p, "&cThis sign is already not &6glowing!"); + send(p, "&cThis sign is already not &6glowing!"); } return false; } side.setGlowingText(glow); } - else if (Main.version >= 17) { + else if (Main.majorVersion >= 17) { if (sign.isGlowingText() == glow) { if (glow) { - s(p, "&cThis sign is already &6glowing!"); + send(p, "&cThis sign is already &6glowing!"); } else { - s(p, "&cThis sign is already not &6glowing!"); + send(p, "&cThis sign is already not &6glowing!"); } return false; } @@ -163,7 +164,7 @@ else if (Main.version >= 17) { sign.setGlowingText(glow); } else { - s(p, "&cGlowing signs do not exist in this version!"); + send(p, "&cGlowing signs do not exist in this version!"); return false; } diff --git a/src/main/java/net/serble/estools/Commands/Eff.java b/src/main/java/net/serble/estools/Commands/Eff.java index 18e21e9..772c2d7 100644 --- a/src/main/java/net/serble/estools/Commands/Eff.java +++ b/src/main/java/net/serble/estools/Commands/Eff.java @@ -14,32 +14,29 @@ import java.util.Map; public class Eff extends MultiPlayerCommand { - private static final String usage = genUsage("/eff "); @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (args.length == 0) { - s(sender, usage); - return true; + send(sender, usage); + return false; } PotionEffectType effect = Effects.getByName(args[0]); if (effect == null) { - s(sender, "&cEffect not found!"); - return true; + send(sender, "&cEffect not found!"); + return false; } int amplifier = 0; - if (args.length > 1) { try { amplifier = Integer.parseInt(args[1]) - 1; } catch (Exception x) { - s(sender, usage); - return true; + send(sender, usage); + return false; } } @@ -50,14 +47,14 @@ public boolean onCommand(CommandSender sender, Command command, String label, St duration = calculateDuration(args[2]); if (duration == -1) { - s(sender, usage); + send(sender, usage); return false; } durationStr = String.format("%s seconds", duration / 20); if (duration == 32767) { - if (Main.version >= 19) { + if (Main.majorVersion >= 19) { duration = -1; } @@ -65,26 +62,28 @@ public boolean onCommand(CommandSender sender, Command command, String label, St } } - ArrayList ps = new ArrayList<>(); + ArrayList players = new ArrayList<>(); if (args.length < 4) { - if (isNotPlayer(sender, usage)) - return true; + if (isNotPlayer(sender, usage)) { + return false; + } - ps.add((Player)sender); + players.add((Player)sender); } else { - ps = getPlayers(sender, removeArgs(args, 3)); + players = getPlayers(sender, removeArgs(args, 3)); - if (ps.isEmpty()) - return true; + if (players.isEmpty()) { + return false; + } } - for (Player p : ps) { + for (Player p : players) { p.removePotionEffect(effect); p.addPotionEffect(new PotionEffect(effect, duration, amplifier)); } - s(sender, "&aAdded effect &6%s&a at level &6%s&a for &6%s", Effects.getName(effect), amplifier + 1, durationStr); + send(sender, "&aAdded effect &6%s&a at level &6%s&a for &6%s", Effects.getName(effect), amplifier + 1, durationStr); return true; } @@ -94,14 +93,14 @@ private int calculateDuration(String input) { } try { - int duration = Integer.parseInt(input) * 20; + int duration = (int)(Double.parseDouble(input) * 20); if (duration >= 0) { return duration; } return 32767; - } catch (Exception x) { + } catch (NumberFormatException x) { return -1; } } diff --git a/src/main/java/net/serble/estools/Commands/Ench.java b/src/main/java/net/serble/estools/Commands/Ench.java index 3c7e3cb..a10285a 100644 --- a/src/main/java/net/serble/estools/Commands/Ench.java +++ b/src/main/java/net/serble/estools/Commands/Ench.java @@ -6,7 +6,6 @@ import net.serble.estools.Enchantments; import net.serble.estools.Main; -import org.bukkit.Bukkit; import org.bukkit.NamespacedKey; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -14,77 +13,79 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import net.serble.estools.CMD; +import net.serble.estools.EsToolsCommand; -public class Ench extends CMD { +public class Ench extends EsToolsCommand { private static final String usage = genUsage("/ench [level] [player]"); @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (args.length == 0) { - s(sender, usage); + send(sender, usage); return false; } ItemStack is; int level = 1; - if (args.length > 1) { try { level = Integer.parseInt(args[1]); } catch (Exception e) { - s(sender, usage); + send(sender, usage); return false; } } if (args.length <= 2) { - if (isNotPlayer(sender, usage)) - return false; + if (isNotPlayer(sender, usage)) { + return false; + } is = getMainHand(((Player) sender)); } else { Player p = getPlayer(sender, args[2]); - if (p == null) - return false; + if (p == null) { + return false; + } is = getMainHand(p); } Enchantment ench; - try { - if (Main.version > 12) - ench = Enchantment.getByKey(NamespacedKey.minecraft(args[0].toLowerCase())); - else - ench = Enchantments.getByName(args[0].toLowerCase()); + if (Main.majorVersion > 12) { + // TODO: Fix for versions that use Registry + ench = Enchantment.getByKey(NamespacedKey.minecraft(args[0].toLowerCase())); + } else { + ench = Enchantments.getByName(args[0].toLowerCase()); + } } catch (IllegalArgumentException e) { - s(sender, usage); - return true; + send(sender, usage); + return false; } if (ench != null && is != null) { is.addUnsafeEnchantment(ench, level); - s(sender, "&aEnchantment &6%s&a at level &6%s&a was added!", args[0].toLowerCase(), level); + send(sender, "&aEnchantment &6%s&a at level &6%s&a was added!", args[0].toLowerCase(), level); } else { - s(sender, usage); + send(sender, usage); } return true; } @Override public List tabComplete(CommandSender sender, String[] args, String lArg) { - List tab = new ArrayList(); + List tab = new ArrayList<>(); switch (args.length) { case 1: - if (Main.version > 12) { - for (Enchantment e : Enchantment.values()) { + if (Main.majorVersion > 12) { + // TODO: Fix for versions that use Registry + for (Enchantment e : Enchantment.values()) { tab.add(e.getKey().getKey()); } } else { diff --git a/src/main/java/net/serble/estools/Commands/EsTools.java b/src/main/java/net/serble/estools/Commands/EsTools.java index 500efe4..e2bdf23 100644 --- a/src/main/java/net/serble/estools/Commands/EsTools.java +++ b/src/main/java/net/serble/estools/Commands/EsTools.java @@ -4,30 +4,29 @@ import java.util.ArrayList; import java.util.List; -import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import net.serble.estools.CMD; -import net.serble.estools.Give; +import net.serble.estools.EsToolsCommand; +import net.serble.estools.Commands.Give.Give; import net.serble.estools.Main; -public class EsTools extends CMD { +public class EsTools extends EsToolsCommand { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (args.length == 0) { - s(sender, "&aEsTools v" + Main.current.getDescription().getVersion()); + send(sender, "&aEsTools v" + Main.plugin.getDescription().getVersion()); return true; } - if (args[0].equalsIgnoreCase("reload")) { - if (checkPerms(sender, "reload")) - return false; + if (args[0].equalsIgnoreCase("reload")) { // Reloads the plugin + if (checkPerms(sender, "reload")) { + return false; + } - s(sender, "&aReloading..."); + send(sender, "&aReloading..."); Give.enable(); @@ -39,25 +38,27 @@ public boolean onCommand(CommandSender sender, Command command, String label, St CChest.loadPlayer(p); } - s(sender, "&aReloaded!"); - } else if (args[0].equalsIgnoreCase("reset")) { - if (checkPerms(sender, "reset")) - return false; + send(sender, "&aReloaded!"); + } else if (args[0].equalsIgnoreCase("reset")) { // Resets all configuration files + if (checkPerms(sender, "reset")) { + return false; + } if (args.length > 1 && args[1].equalsIgnoreCase("confirm")) { - File f = new File(Main.current.getDataFolder(), "give.yml"); + File f = new File(Main.plugin.getDataFolder(), "give.yml"); if (!f.delete()) { - s(sender, "&cFailed to delete data."); + send(sender, "&cFailed to delete data."); return false; } Give.enable(); - s(sender, "&cAll data deleted!"); + send(sender, "&cAll data deleted!"); return true; } - s(sender, "&cWarning, you will lose data, use /estools reset confirm to reset"); + + send(sender, "&cWarning, this will reset all configuration files, use /estools reset confirm to reset"); } else { - s(sender, "&aEsTools v" + Main.current.getDescription().getVersion()); + send(sender, "&aEsTools v" + Main.plugin.getDescription().getVersion()); } return true; @@ -65,7 +66,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St @Override public List tabComplete(CommandSender sender, String[] args, String lArg) { - List tab = new ArrayList(); + List tab = new ArrayList<>(); if (args.length == 1) { tab.add("reload"); diff --git a/src/main/java/net/serble/estools/Commands/Feed.java b/src/main/java/net/serble/estools/Commands/Feed.java index 8f94733..3a80dcd 100644 --- a/src/main/java/net/serble/estools/Commands/Feed.java +++ b/src/main/java/net/serble/estools/Commands/Feed.java @@ -12,30 +12,31 @@ public class Feed extends MultiPlayerCommand { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - - ArrayList ps = new ArrayList<>(); + ArrayList players = new ArrayList<>(); if (args.length == 0) { - if (isNotPlayer(sender, usage)) - return false; + if (isNotPlayer(sender, usage)) { + return false; + } - ps.add((Player) sender); + players.add((Player) sender); } else { - ps = getPlayers(sender, args); + players = getPlayers(sender, args); - if (ps.isEmpty()) - return false; + if (players.isEmpty()) { + return false; + } } - for (Player p : ps) { + for (Player p : players) { p.setFoodLevel(20); p.setSaturation(20); } if (args.length == 0) { - s(sender, "&aFed!"); + send(sender, "&aFed!"); } else { - s(sender, "&aFed &6%s&a!", args[0]); + send(sender, "&aFed &6%s&a!", args[0]); } return true; } diff --git a/src/main/java/net/serble/estools/Commands/Fix.java b/src/main/java/net/serble/estools/Commands/Fix.java index 69b66c2..9a51911 100644 --- a/src/main/java/net/serble/estools/Commands/Fix.java +++ b/src/main/java/net/serble/estools/Commands/Fix.java @@ -19,19 +19,20 @@ public class Fix extends PlayerCommand { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - Player p; if (args.length < 2) { - if (isNotPlayer(sender, usage)) - return false; + if (isNotPlayer(sender, usage)) { + return false; + } p = (Player) sender; } else { p = getPlayer(sender, args[1]); - if (p == null) - return false; + if (p == null) { + return false; + } } PlayerInventory pInv = p.getInventory(); @@ -42,7 +43,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St if (args.length > 0) { switch (args[0].toLowerCase()) { case "offhand": - if (Main.version > 8) { + if (Main.majorVersion > 8) { is = pInv.getItemInOffHand(); } break; @@ -68,32 +69,29 @@ public boolean onCommand(CommandSender sender, Command command, String label, St break; } } - if (all) { ItemStack[] contents = p.getInventory().getContents(); - for (ItemStack i : contents) { - Repair(i); + repair(i); } p.getInventory().setContents(contents); } else { - Repair(is); + repair(is); } - s(sender, "&aRepaired &6%s's &aitem(s)!", getEntityName(p)); + send(sender, "&aRepaired &6%s's &aitem(s)!", getEntityName(p)); return true; } - private void Repair(ItemStack is) { + public static void repair(ItemStack is) { if (is == null) { return; } - if (Main.version > 12) { + if (Main.majorVersion > 12) { ItemMeta im = is.getItemMeta(); - if (im == null) return; ((Damageable) im).setDamage(0); @@ -103,22 +101,20 @@ private void Repair(ItemStack is) { //noinspection deprecation is.setDurability((short) 0); } - } @Override public List tabComplete(CommandSender sender, String[] args, String lArg) { - List tab = new ArrayList(); + List tab = new ArrayList<>(); if (args.length == 1) { tab.add("hand"); tab.add("helmet"); tab.add("chestplate"); tab.add("leggings"); tab.add("boots"); tab.add("all"); - if (Main.version > 8) { + if (Main.majorVersion > 8) { tab.add("offhand"); } - } - else if (args.length == 2) { + } else if (args.length == 2) { return super.tabComplete(sender, args, lArg); } diff --git a/src/main/java/net/serble/estools/Commands/Fly.java b/src/main/java/net/serble/estools/Commands/Fly.java index 3545c6d..62ca1eb 100644 --- a/src/main/java/net/serble/estools/Commands/Fly.java +++ b/src/main/java/net/serble/estools/Commands/Fly.java @@ -13,39 +13,42 @@ public class Fly extends MultiPlayerCommand { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - - ArrayList ps = new ArrayList<>(); + ArrayList players = new ArrayList<>(); if (args.length == 0) { - if (isNotPlayer(sender, usage)) - return false; + if (isNotPlayer(sender, usage)) { + return false; + } - ps.add((Player) sender); + players.add((Player) sender); } else { - ps = getPlayers(sender, args[0]); + players = getPlayers(sender, args[0]); - if (ps.isEmpty()) - return false; + if (players.isEmpty()) { + return false; + } } - for (Player p : ps) { + for (Player p : players) { boolean isFly = p.getAllowFlight(); if (args.length != 0 && !Objects.equals(args[0], "*")) { - if (isFly) - s(sender, "&aFly Disabled for &6%s", p.getName()); - else - s(sender, "&aFly Enabled for &6%s", p.getName()); + if (isFly) { + send(sender, "&aFly Disabled for &6%s", p.getName()); + } else { + send(sender, "&aFly Enabled for &6%s", p.getName()); + } } p.setAllowFlight(!isFly); - if (isFly) - s(p, "&aFly Disabled!"); - else - s(p, "&aFly Enabled!"); + if (isFly) { + send(p, "&aFly Disabled!"); + } else { + send(p, "&aFly Enabled!"); + } } + return true; } - } diff --git a/src/main/java/net/serble/estools/Commands/GameMode/GM.java b/src/main/java/net/serble/estools/Commands/GameMode/GameModeCommand.java similarity index 76% rename from src/main/java/net/serble/estools/Commands/GameMode/GM.java rename to src/main/java/net/serble/estools/Commands/GameMode/GameModeCommand.java index fe3374e..9ba1286 100644 --- a/src/main/java/net/serble/estools/Commands/GameMode/GM.java +++ b/src/main/java/net/serble/estools/Commands/GameMode/GameModeCommand.java @@ -7,7 +7,8 @@ import java.util.ArrayList; -public abstract class GM extends MultiPlayerCommand { +public abstract class GameModeCommand extends MultiPlayerCommand { + public static void setGamemode(CommandSender sender, String label, String[] args, GameMode gm) { ArrayList ps = new ArrayList<>(); @@ -17,14 +18,14 @@ public static void setGamemode(CommandSender sender, String label, String[] args ps.add((Player) sender); - s(sender, "&aGamemode set to &6%s", gm.toString()); + send(sender, "&aGamemode set to &6%s", gm.toString()); } else { ps = getPlayers(sender, args); if (ps.isEmpty()) return; - s(sender, "&aGamemode set to &6%s&a for &6%s", gm.toString(), argsToString(args, 0)); + send(sender, "&aGamemode set to &6%s&a for &6%s", gm.toString(), argsToString(args, 0)); } for (Player p : ps) { diff --git a/src/main/java/net/serble/estools/Commands/GameMode/gma.java b/src/main/java/net/serble/estools/Commands/GameMode/Gma.java similarity index 89% rename from src/main/java/net/serble/estools/Commands/GameMode/gma.java rename to src/main/java/net/serble/estools/Commands/GameMode/Gma.java index a6a2a42..8426c0c 100644 --- a/src/main/java/net/serble/estools/Commands/GameMode/gma.java +++ b/src/main/java/net/serble/estools/Commands/GameMode/Gma.java @@ -4,7 +4,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -public class gma extends GM { +public class Gma extends GameModeCommand { @Override public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) { setGamemode(sender, s, strings, GameMode.ADVENTURE); diff --git a/src/main/java/net/serble/estools/Commands/GameMode/gmc.java b/src/main/java/net/serble/estools/Commands/GameMode/Gmc.java similarity index 89% rename from src/main/java/net/serble/estools/Commands/GameMode/gmc.java rename to src/main/java/net/serble/estools/Commands/GameMode/Gmc.java index 08db8b5..5c0a2d7 100644 --- a/src/main/java/net/serble/estools/Commands/GameMode/gmc.java +++ b/src/main/java/net/serble/estools/Commands/GameMode/Gmc.java @@ -4,7 +4,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -public class gmc extends GM { +public class Gmc extends GameModeCommand { @Override public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) { setGamemode(sender, s, strings, GameMode.CREATIVE); diff --git a/src/main/java/net/serble/estools/Commands/GameMode/gms.java b/src/main/java/net/serble/estools/Commands/GameMode/Gms.java similarity index 89% rename from src/main/java/net/serble/estools/Commands/GameMode/gms.java rename to src/main/java/net/serble/estools/Commands/GameMode/Gms.java index dd67e7e..b365c04 100644 --- a/src/main/java/net/serble/estools/Commands/GameMode/gms.java +++ b/src/main/java/net/serble/estools/Commands/GameMode/Gms.java @@ -4,7 +4,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -public class gms extends GM { +public class Gms extends GameModeCommand { @Override public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) { setGamemode(sender, s, strings, GameMode.SURVIVAL); diff --git a/src/main/java/net/serble/estools/Commands/GameMode/gmsp.java b/src/main/java/net/serble/estools/Commands/GameMode/Gmsp.java similarity index 88% rename from src/main/java/net/serble/estools/Commands/GameMode/gmsp.java rename to src/main/java/net/serble/estools/Commands/GameMode/Gmsp.java index 420c905..78f4490 100644 --- a/src/main/java/net/serble/estools/Commands/GameMode/gmsp.java +++ b/src/main/java/net/serble/estools/Commands/GameMode/Gmsp.java @@ -4,7 +4,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -public class gmsp extends GM { +public class Gmsp extends GameModeCommand { @Override public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) { setGamemode(sender, s, strings, GameMode.SPECTATOR); diff --git a/src/main/java/net/serble/estools/Commands/GetInfo.java b/src/main/java/net/serble/estools/Commands/GetInfo.java index 415f835..d6116a9 100644 --- a/src/main/java/net/serble/estools/Commands/GetInfo.java +++ b/src/main/java/net/serble/estools/Commands/GetInfo.java @@ -19,19 +19,17 @@ public class GetInfo extends EntityCommand { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (args.length == 0) { - s(sender, usage); + send(sender, usage); return false; } Entity entity = getNonLivingEntity(sender, args[0]); - - if (entity == null) - return false; + if (entity == null) { + return false; + } Location loc = entity.getLocation(); - String name = getEntityName(entity); // Global Values @@ -42,6 +40,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St "&aLocation: &6%s, %s, %s\n" + "&aWorld: &6%s\n" + "&aUUID: &6%s\n"; + info = String.format(info, name, entity.getType().name(), @@ -52,13 +51,14 @@ public boolean onCommand(CommandSender sender, Command command, String label, St entity.getUniqueId()); // Passengers - if (Main.version > 12) { + if (Main.majorVersion > 12) { StringBuilder passengerText = new StringBuilder("&aPassengers: &6"); boolean passengersExist = false; for (Entity passenger : entity.getPassengers()) { passengerText.append(getEntityName(passenger)).append(" (").append(passenger.getType()).append("), "); passengersExist = true; } + if (passengersExist) { passengerText.deleteCharAt(passengerText.length() - 1); passengerText.deleteCharAt(passengerText.length() - 1); @@ -73,7 +73,6 @@ public boolean onCommand(CommandSender sender, Command command, String label, St String maxHealth = String.valueOf(Math.round(getMaxHealth(le))); StringBuilder potionEffects = new StringBuilder(); - { Object[] pos = le.getActivePotionEffects().toArray(); @@ -97,9 +96,10 @@ public boolean onCommand(CommandSender sender, Command command, String label, St getHealth(le), maxHealth, potionEffects); + info += livingEntityInfo; - if (Main.version > 12) { + if (Main.majorVersion > 12) { // Scoreboard tags StringBuilder tags = new StringBuilder("&aScoreboard Tags: &6"); boolean tagsExist = false; @@ -107,6 +107,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St tags.append(tag).append(", "); tagsExist = true; } + if (!tagsExist) { info += "&aScoreboard Tags: &6None\n"; } else { @@ -115,7 +116,6 @@ public boolean onCommand(CommandSender sender, Command command, String label, St info += tags + "\n"; } } - } if (entity instanceof Player) { // Players @@ -129,7 +129,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St player.getFoodLevel(), player.getSaturation()); - if (Main.version > 1) { + if (Main.majorVersion > 1) { playerInfo += "&aCan Fly: &6%s\n" + "&aIs Flying: &6%s\n"; @@ -140,7 +140,8 @@ public boolean onCommand(CommandSender sender, Command command, String label, St info += playerInfo; } - s(sender, info); + + send(sender, info); return true; } diff --git a/src/main/java/net/serble/estools/Commands/GetPersistentData.java b/src/main/java/net/serble/estools/Commands/GetPersistentData.java index bcf09ce..d1e356b 100644 --- a/src/main/java/net/serble/estools/Commands/GetPersistentData.java +++ b/src/main/java/net/serble/estools/Commands/GetPersistentData.java @@ -1,6 +1,6 @@ package net.serble.estools.Commands; -import net.serble.estools.CMD; +import net.serble.estools.EsToolsCommand; import net.serble.estools.Main; import net.serble.estools.Tuple; import org.apache.commons.lang.ArrayUtils; @@ -16,7 +16,7 @@ import java.util.ArrayList; import java.util.List; -public class GetPersistentData extends CMD { +public class GetPersistentData extends EsToolsCommand { public static final String usage = genUsage("/getpersistentdata "); @Override @@ -25,7 +25,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St return false; if (args.length < 2) { - s(sender, usage); + send(sender, usage); return false; } @@ -35,13 +35,13 @@ public boolean onCommand(CommandSender sender, Command command, String label, St ItemStack item = getMainHand((Player) sender); NamespacedKey key = getNamespacedKey(tagString); if (key == null) { - s(sender, "&cInvalid key! examples: 'estools:count', 'backpacks:size', etc"); + send(sender, "&cInvalid key! examples: 'estools:count', 'backpacks:size', etc"); return false; } ItemMeta meta = item.getItemMeta(); if (meta == null) { - s(sender, "&cItem does not have nbt tags!"); + send(sender, "&cItem does not have nbt tags!"); return false; } @@ -49,21 +49,21 @@ public boolean onCommand(CommandSender sender, Command command, String label, St Tuple value = getData(typeString, key, data); if (value.a() == 3) { - s(sender, "&cNBT tag &e\"" + tagString + "\"&c does not exist!"); + send(sender, "&cNBT tag &e\"" + tagString + "\"&c does not exist!"); return false; } if (value.a() == 1) { - s(sender, "&cNBT tag type &e\"" + typeString + "\"&c is unsupported!"); + send(sender, "&cNBT tag type &e\"" + typeString + "\"&c is unsupported!"); return false; } if (value.a() == 2) { - s(sender, "&cNBT tag &e\"" + tagString + "\"&c exists, but is not a " + typeString + "!"); + send(sender, "&cNBT tag &e\"" + tagString + "\"&c exists, but is not a " + typeString + "!"); return false; } - s(sender, "&aNBT tag &e\"" + tagString + "\"&a is &e" + value.b() + "&a!"); + send(sender, "&aNBT tag &e\"" + tagString + "\"&a is &e" + value.b() + "&a!"); return true; } @@ -161,18 +161,17 @@ private static Tuple getData(String type, NamespacedKey key, Pe return new Tuple<>(1, null); } + @SuppressWarnings("UnstableApiUsage") public static NamespacedKey getNamespacedKey(String keyString) { - if (Main.version >= 16) { - return NamespacedKey.fromString(keyString, Main.current); + if (Main.majorVersion >= 16) { + return NamespacedKey.fromString(keyString, Main.plugin); } String[] parts = keyString.split(":"); if (parts.length == 2) { - //noinspection deprecation (This is the only way to create a NamespacedKey pre 1.16) return new NamespacedKey(parts[0], parts[1]); } else if (parts.length == 1) { // Incorrectly formatted key String pluginName = Main.getPlugin(Main.class).getName(); - //noinspection deprecation return new NamespacedKey(pluginName, parts[0]); } diff --git a/src/main/java/net/serble/estools/Commands/Give/Give.java b/src/main/java/net/serble/estools/Commands/Give/Give.java new file mode 100644 index 0000000..cc1d615 --- /dev/null +++ b/src/main/java/net/serble/estools/Commands/Give/Give.java @@ -0,0 +1,161 @@ +package net.serble.estools.Commands.Give; + +import net.serble.estools.*; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.inventory.ItemStack; + +import java.io.*; +import java.nio.file.Files; +import java.util.*; +import java.util.Map.Entry; + +public class Give implements EsToolsTabCompleter { + private static HashMap materialNames; + + public static ItemStack getItem(String name, int amount) { + name = name.toUpperCase(); + Material mat = materialNames.get(name); + + if (mat == null) { + return null; + } + + return new ItemStack(mat, amount); + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + List tab = new ArrayList<>(); + + if (args.length == 1) { + for (String mat : materialNames.keySet()) { + tab.add(mat.toLowerCase()); + } + + Collections.sort(tab); + } else if (args.length == 2) { + tab.add("64"); + } + + return EsToolsCommand.fixTabComplete(tab, args[args.length - 1]); + } + + @SuppressWarnings("DataFlowIssue") // Not possible + public static void enable() { + // initialise hashmaps + //noinspection Convert2Diamond + materialNames = new HashMap(); + + // Load config + FileConfiguration f = ConfigManager.load("give.yml"); + + // check if it has settings + HashMap materials = new HashMap<>(); + + if ( f.contains("settings") && + f.contains("settings.addWithoutUnderscores") && + f.contains("settings.removeWithUnderscores")) { // if it has these values then load files + + materials = loadItems(f); + } + + if (materials.isEmpty()) { // if it hasn't loaded or if it cant load anything + Bukkit.getLogger().info("Creating new give.yml"); + + try { + copyDefaultGiveYML(); + f = ConfigManager.load(new File(Main.plugin.getDataFolder(), "give.yml")); + materials = loadItems(f); + } catch (Exception ignored) { } + } + + // Load normal items + boolean addWithoutUnderscores = (boolean) f.get("settings.addWithoutUnderscores"); + boolean removeWithUnderscores = (boolean) f.get("settings.removeWithUnderscores"); + + for (Material mat : Material.values()) { + if (!mat.isItem()) continue; + + String name = mat.toString().toUpperCase(); + + if (name.contains("_") && addWithoutUnderscores) { + materialNames.put(name.replace("_",""), mat); + + if (removeWithUnderscores) { + continue; + } + } + + materialNames.put(name, mat); + } + + // Load custom items + for (Entry s : materials.entrySet()) { + Material mat = Material.getMaterial(s.getValue().toUpperCase()); + + if (mat != null) { + materialNames.put(s.getKey().toUpperCase(), mat); + } + } + } + + private static HashMap loadItems(FileConfiguration f) { + HashMap ms = new HashMap<>(); + + if (f.contains("items")) { + ConfigurationSection itemsSection = f.getConfigurationSection("items"); + assert itemsSection != null; + + itemsSection.getKeys(false).forEach(key -> { + String content = (String) f.get("items." + key); + ms.put(key, content); + }); + } + + return ms; + } + + private static void copyDefaultGiveYML() throws IOException { + // The class loader that loaded the class + ClassLoader classLoader = Give.class.getClassLoader(); + InputStream inputStream = classLoader.getResourceAsStream("give.yml"); + + // the stream holding the file content + if (inputStream == null) { + return; + } + + byte[] buffer = new byte[inputStream.available()]; + //noinspection ResultOfMethodCallIgnored + inputStream.read(buffer); + + File targetFile = new File(Main.plugin.getDataFolder(), "give.yml"); + OutputStream outStream = Files.newOutputStream(targetFile.toPath()); + outStream.write(buffer); + + inputStream.close(); + outStream.close(); + } + + public static ItemStack parseArgs(String[] args) { + if (args.length == 0) { + throw new IllegalArgumentException(); + } + + int amount = 1; + if (args.length > 1) { + try { + amount = Integer.parseInt(args[1]); + } catch (Exception e) { + throw new IllegalArgumentException(); + } + } + + return getItem(args[0], amount); + } +} diff --git a/src/main/java/net/serble/estools/Commands/Give/GiveItem.java b/src/main/java/net/serble/estools/Commands/Give/GiveItem.java new file mode 100644 index 0000000..5bbae96 --- /dev/null +++ b/src/main/java/net/serble/estools/Commands/Give/GiveItem.java @@ -0,0 +1,38 @@ +package net.serble.estools.Commands.Give; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import net.serble.estools.EsToolsCommand; + +public class GiveItem extends EsToolsCommand { + private static final String usage = genUsage("/i [amount]"); + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (isNotPlayer(sender)) { + return false; + } + + ItemStack item; + try { + item = Give.parseArgs(args); + } catch (IllegalArgumentException e) { + send(sender, usage); + return false; + } + + Player p = (Player) sender; + + if (item != null) { + p.getInventory().addItem(item); + send(sender, "&aGave &6%s", item.getType().name()); + } else { + send(sender, "&cItem &6%s&c not found", args[0]); + } + + return true; + } +} diff --git a/src/main/java/net/serble/estools/Commands/Give/SetHandItem.java b/src/main/java/net/serble/estools/Commands/Give/SetHandItem.java new file mode 100644 index 0000000..617bc7d --- /dev/null +++ b/src/main/java/net/serble/estools/Commands/Give/SetHandItem.java @@ -0,0 +1,39 @@ +package net.serble.estools.Commands.Give; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import net.serble.estools.EsToolsCommand; + +public class SetHandItem extends EsToolsCommand { + private static final String usage = genUsage("/h [amount]"); + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (isNotPlayer(sender)) { + return false; + } + + ItemStack item; + try { + item = Give.parseArgs(args); + } catch (IllegalArgumentException e) { + send(sender, usage); + return false; + } + + Player p = (Player) sender; + + if (item != null) { + setMainHand(p, item); + send(sender, "&aGave &6%s", item.getType().name()); + } else { + send(sender, "&cItem &6%s&c not found", args[0]); + } + + return true; + } + +} diff --git a/src/main/java/net/serble/estools/Commands/God.java b/src/main/java/net/serble/estools/Commands/God.java index 9a0f86a..e03953d 100644 --- a/src/main/java/net/serble/estools/Commands/God.java +++ b/src/main/java/net/serble/estools/Commands/God.java @@ -17,12 +17,11 @@ public class God extends EntityCommand implements Listener { private static final HashMap currentPlayers = new HashMap<>(); - private static final String usage = genUsage("/god