package net.diamonddominion.esaych.global; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import net.diamonddominion.esaych.CustomPlugin; import net.diamonddominion.esaych.util.SQL; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerCommandPreprocessEvent; public class CommandModifier { private CustomPlugin plugin; public CommandModifier(CustomPlugin plugin) { this.plugin = plugin; } public void enable() { log("Enabled"); } public void onCommandPreprocess(PlayerCommandPreprocessEvent event) { Player player = event.getPlayer(); String command = event.getMessage().toLowerCase(); if ((command.startsWith("/sg") || event.getMessage().toLowerCase().startsWith("/survivalgames")) && !event.getPlayer().getWorld().getName().equals("EventWorld")) { Bukkit.dispatchCommand(player, "warp sg"); event.setCancelled(true); } if (command.startsWith("/tempban ")) { if (player.hasPermission("customplugin.ban")) { String[] args = event.getMessage().split(" "); String arg = args[2]; long time = getTimeStamp(arg); if (time == -3) { event.setMessage("/tempban " + args[1] + " 5h"); event.getPlayer().sendMessage(ChatColor.GREEN + "Mods can only ban up to 5 hours."); } } } if (command.startsWith("/auc start") || command.startsWith("/auction start")) { String msg = event.getMessage(); if (msg.split(" ").length == 3 && event.getPlayer().getItemInHand() != null) { event.setMessage("/auc start " + event.getPlayer().getItemInHand().getAmount() + " " + msg.split(" ")[2] + " 10"); } } if (command.equalsIgnoreCase("/pl") || command.equalsIgnoreCase("/plugins")) { event.setMessage("/plugman list"); } if (command.equalsIgnoreCase("/hns")) { event.setMessage("/has"); } if (command.startsWith("/hns") || command.startsWith("/hidenseek") || command.startsWith("/bh") || command.startsWith("/hideandseek") || command.startsWith("/has") || command.startsWith("/ph") || command.startsWith("/blockhunt") || command.startsWith("/prophunt")) { if (!command.contains(" ")) { event.setCancelled(true); player.sendMessage(ChatColor.BLUE + "_______.[" + ChatColor.YELLOW + " HideNSeek " + ChatColor.BLUE + "]._______"); player.sendMessage(ChatColor.AQUA + "Welcome to HideNSeek"); player.sendMessage(ChatColor.AQUA + "Type " + ChatColor.YELLOW + "/hns join" + ChatColor.AQUA + " to join the fun!"); player.sendMessage(ChatColor.AQUA + "Type " + ChatColor.YELLOW + "/hns leave" + ChatColor.AQUA + " if you need to go."); player.sendMessage(ChatColor.AQUA + "Type " + ChatColor.YELLOW + "/hns shop" + ChatColor.AQUA + " to check out the shop."); player.sendMessage(ChatColor.BLUE + "_______.[" + ChatColor.YELLOW + " HideNSeek " + ChatColor.BLUE + "]._______"); } if (command.contains("j")) { event.setMessage("/has join Buried"); } if (command.contains("l")) { event.setCancelled(true); Bukkit.dispatchCommand(event.getPlayer(), "has leave"); } if (command.contains("shop")) { event.setMessage("/has shop"); } } if (command.startsWith("/tnt ")) { event.setCancelled(true); } if (command.startsWith("/baltop") || command.startsWith("/balancetop")) { event.setMessage("/money top"); } if (command.startsWith("/bal")) { event.setMessage("/money"); } if (command.startsWith("/listhomes")) { event.setMessage("/homes"); } if (command.startsWith("/warp ew") || command.startsWith("/warp event")) { // event.setMessage("/server events"); event.setCancelled(true); tpServer(player, "events"); } else if (command.startsWith("/warp sb") || command.startsWith("/warp sky")) { // event.setMessage("/server skyblock"); event.setCancelled(true); tpServer(player, "skyblock"); } else if (command.startsWith("/warp ds") || command.startsWith("/warp dest")) { // event.setMessage("/server destruction"); event.setCancelled(true); tpServer(player, "destruction"); } else if (command.startsWith("/warp b") || command.startsWith("/warp build")) { // event.setMessage("/server build"); event.setCancelled(true); tpServer(player, "creative"); } else if (command.startsWith("/warp sv") || command.startsWith("/warp surviv")) { // event.setMessage("/server survival"); // event.setCancelled(true); tpServer(player, "survival"); } else if (command.startsWith("/warp ")) { event.setCancelled(true); String warpName = command.split(" ")[1]; String server = ""; String world = ""; String x = ""; String y = ""; String z = ""; String yaw = ""; String pitch = ""; ResultSet result = null; Connection con = null; try { con = SQL.getConnection(); Statement st = (Statement) con.createStatement(); result = st.executeQuery("SELECT * FROM `BungeeWarps` WHERE `warpname`='" + warpName.toLowerCase() + "';"); while (result.next()) { server = result.getString("server"); world = result.getString("world"); x = result.getString("x"); y = result.getString("y"); z = result.getString("z"); yaw = result.getString("yaw"); pitch = result.getString("pitch"); } } catch (SQLException e) { e.printStackTrace(); } if (server.equals("")) { player.sendMessage(ChatColor.RED + "That warp does not exist"); } if (server.equals(plugin.detectedServer())) { player.teleport(new Location(Bukkit.getWorld(world), Double.parseDouble(x), Double.parseDouble(y), Double.parseDouble(z), Float.parseFloat(yaw), Float.parseFloat(pitch))); } else { ByteArrayOutputStream b = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(b); try { out.writeUTF("Forward"); out.writeUTF("ALL"); out.writeUTF("DDCustomPlugin_Homes"); ByteArrayOutputStream msgbytes = new ByteArrayOutputStream(); DataOutputStream msgout = new DataOutputStream(msgbytes); msgout.writeUTF(player.getName()); msgout.writeUTF(world + ";" + x + ";" + y + ";" + z + ";" + pitch + ";" + yaw); out.writeShort(msgbytes.toByteArray().length); out.write(msgbytes.toByteArray()); player.sendPluginMessage(plugin, "BungeeCord", b.toByteArray()); b = new ByteArrayOutputStream(); out = new DataOutputStream(b); out.writeUTF("Connect"); out.writeUTF(server); } catch (IOException e) { e.printStackTrace(); } player.sendPluginMessage(plugin, "BungeeCord", b.toByteArray()); } } if (event.getPlayer().hasPermission("permissions.manage")) { if (event.getMessage().startsWith("/promote ")) BungeeGlobalCommand.sendCommand("pex reload"); else if (event.getMessage().startsWith("/demote ")) BungeeGlobalCommand.sendCommand("pex reload"); else if (event.getMessage().startsWith("/pex user ")) BungeeGlobalCommand.sendCommand("pex reload"); } if (command.equalsIgnoreCase("/spawn")) { event.setMessage("/worldspawn"); } if (command.equalsIgnoreCase("/hub")) { event.setMessage("/globalspawn"); } } private long getTimeStamp(String time) { long timestamp = System.currentTimeMillis() / 1000; String unit = time.substring(time.length() - 1, time.length()); String input = time.substring(0, time.length() - 1); int add = 0; try { add = Integer.parseInt(input); } catch (Exception e) { return -1; } if (unit.equalsIgnoreCase("s")) { timestamp += add; } else if (unit.equalsIgnoreCase("m")) { timestamp += add*60; } else if (unit.equalsIgnoreCase("h")) { timestamp += add*60*60; } else if (unit.equalsIgnoreCase("d")) { timestamp += add*60*60*24; } else { return -2; } if (timestamp - System.currentTimeMillis() / 1000 > 60*60*5) return -3; return timestamp; } public void tpServer(Player player, String server) { ByteArrayOutputStream b = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(b); try { out.writeUTF("Connect"); out.writeUTF(server); } catch (IOException e) { e.printStackTrace(); } player.sendPluginMessage(plugin, "BungeeCord", b.toByteArray()); } public void log(String info) { plugin.getLogger().info("<CommandModifier> " + info); } }