summaryrefslogtreecommitdiff
path: root/src/main/java/com/redstoner/modules/misc
diff options
context:
space:
mode:
authorDavid <david@panic.tk>2018-11-07 23:50:06 +0100
committerDavid <david@panic.tk>2018-11-07 23:50:06 +0100
commit604cf01967ede98bf5024e4926bb0777fc4e8eee (patch)
treee2fa63d7e683769ee3bf3eddc75280648e92eb04 /src/main/java/com/redstoner/modules/misc
parente86c52ef7c0e1e33c6af0e8674b038976bec11cc (diff)
Converted Modules to gradle
Diffstat (limited to 'src/main/java/com/redstoner/modules/misc')
-rw-r--r--src/main/java/com/redstoner/modules/misc/Misc.cmd66
-rw-r--r--src/main/java/com/redstoner/modules/misc/Misc.java336
2 files changed, 402 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/modules/misc/Misc.cmd b/src/main/java/com/redstoner/modules/misc/Misc.cmd
new file mode 100644
index 0000000..53e73ad
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/misc/Misc.cmd
@@ -0,0 +1,66 @@
+command tempadd {
+ perm pex;
+ [string:user] [string:group] {
+ help Adds a user to a group for 1w.;
+ run tempadddef user group;
+ }
+ [string:user] [string:group] [string:duration] {
+ help Adds a user to a group for a specified duration.;
+ run tempadd user group duration;
+ }
+}
+command echo {
+ [string:text...] {
+ help Echoes back to you.;
+ run echo text;
+ }
+}
+command ping {
+ [empty] {
+ help Pongs :D;
+ run ping;
+ }
+ [string:password] {
+ help Pongs :D;
+ run ping2 password;
+ }
+}
+command sudo {
+ perm utils.sudo;
+ [string:name] [string:command...] {
+ help Sudo'es another user (or console);
+ run sudo name command;
+ }
+}
+command hasperm {
+ [flag:-f] [string:name] [string:node] {
+ perm utils.hasperm;
+ run hasperm -f name node;
+ help Checks if a player has a given permission node or not. Returns \"true/false\" in chat. When -f is set, it returns it unformatted.;
+ }
+}
+command nightvision {
+alias nv;
+ [empty] {
+ run illuminate;
+ type player;
+ help Gives the player infinte night vision;
+ perm utils.illuminate;
+ }
+}
+command minecart {
+ alias cart;
+ perm utils.spawncart;
+ help Spawn's a Minecart;
+ type player;
+
+ deafult [string type] {
+ run minecart_default type;
+ }
+ [string type] {
+ run minecart_type type;
+ }
+ [empty] {
+ run minecart;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/com/redstoner/modules/misc/Misc.java b/src/main/java/com/redstoner/modules/misc/Misc.java
new file mode 100644
index 0000000..88e72ea
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/misc/Misc.java
@@ -0,0 +1,336 @@
+package com.redstoner.modules.misc;
+
+import java.util.UUID;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.command.CommandSender;
+import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
+import org.bukkit.event.block.BlockBreakEvent;
+import org.bukkit.event.block.BlockFromToEvent;
+import org.bukkit.event.player.PlayerJoinEvent;
+import org.bukkit.event.player.PlayerTeleportEvent;
+import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.potion.PotionEffectType;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+
+import com.nemez.cmdmgr.Command;
+import com.redstoner.annotations.AutoRegisterListener;
+import com.redstoner.annotations.Commands;
+import com.redstoner.annotations.Version;
+import com.redstoner.misc.CommandHolderType;
+import com.redstoner.misc.Utils;
+import com.redstoner.modules.Module;
+import com.redstoner.modules.datamanager.DataManager;
+
+import net.nemez.chatapi.ChatAPI;
+import net.nemez.chatapi.click.Message;
+
+@Commands(CommandHolderType.File)
+@AutoRegisterListener
+@Version(major = 4, minor = 1, revision = 0, compatible = 4)
+public class Misc implements Module, Listener
+{
+ private final String[] sudoBlacklist = new String[] {"(.*:)?e?sudo", "(.*:)?script.*", "(.*:)?stop",
+ "(.*:)?modules", "(.*:)?sayn", "(.*:)?pex", "(.*:)?console_.*", "(.*:)?op", "(.*:)?login", "(.*:)?register",
+ "(.*:)?.*pass"};
+ JSONObject config;
+ JSONArray unprotectedRegions;
+
+ @EventHandler
+ public void onFirstJoin(PlayerJoinEvent event)
+ {
+ Player player = event.getPlayer();
+ if (!player.hasPlayedBefore())
+ {
+ Utils.broadcast("", "\n§a§lPlease welcome §f" + player.getDisplayName() + " §a§lto Redstoner!\n", null);
+ String[] message = new String[] {" \n \n \n \n \n \n \n \n \n \n \n \n ",
+ " &4Welcome to the Redstoner Server!", " &6Before you ask us things, take a quick",
+ " &6look at &a&nredstoner.com/info", " \n&6thank you and happy playing ;)", " \n \n"};
+ getLogger().message(player, message);
+ }
+ Material spawnBlock = player.getLocation().getBlock().getType();
+ if (spawnBlock == Material.PORTAL || spawnBlock == Material.ENDER_PORTAL)
+ {
+ getLogger().message(player, "&4Looks like you spawned in a portal... Let me help you out");
+ getLogger().message(player, "&6You can use /back if you &nreally&6 want to go back");
+ player.teleport(player.getWorld().getSpawnLocation());
+ }
+ }
+
+ // Disables spectator teleportation
+ @EventHandler(priority = EventPriority.LOWEST)
+ public void onTeleport(PlayerTeleportEvent event)
+ {
+ Player player = event.getPlayer();
+ if (!event.isCancelled() && event.getCause() == TeleportCause.SPECTATE && !player.hasPermission("utils.tp"))
+ {
+ event.setCancelled(true);
+ getLogger().message(event.getPlayer(), true, "Spectator teleportation is disabled!");
+ }
+ }
+
+ // Disables water and lava breaking stuff
+ @EventHandler
+ public void onLiquidFlow(BlockFromToEvent event)
+ {
+ Material m = event.getToBlock().getType();
+ switch (m)
+ {
+ case AIR:
+ case WATER:
+ case STATIONARY_WATER:
+ case LAVA:
+ case STATIONARY_LAVA:
+ return;
+ default:
+ {
+ event.setCancelled(true);
+ }
+ }
+ }
+
+ @Command(hook = "tempadddef")
+ public boolean tempAddDef(CommandSender sender, String user, String group)
+ {
+ return tempAdd(sender, user, group, "604800");
+ }
+
+ @Command(hook = "tempadd")
+ public boolean tempAdd(CommandSender sender, String user, String group, String duration)
+ {
+ // Use it to make a proper duration output later. Too lazy rn.
+ @SuppressWarnings("unused")
+ int i = 0;
+ try
+ {
+ i = Integer.valueOf(duration);
+ }
+ catch (NumberFormatException e)
+ {
+ getLogger().message(sender, true, "That is not a valid number!");
+ return true;
+ }
+ Bukkit.dispatchCommand(sender, "pex user " + user + " group add " + group + " * " + duration);
+ getLogger().message(sender, "Added to group " + group + "for " + duration + " seconds.");
+ return true;
+ }
+
+ @Command(hook = "echo")
+ public boolean echo(CommandSender sender, String text)
+ {
+ sender.sendMessage(ChatAPI.colorify(null, text));
+ return true;
+ }
+
+ @Command(hook = "ping")
+ public boolean ping(CommandSender sender)
+ {
+ if (sender instanceof Player)
+ {
+ int ping = getPing((Player) sender);
+ getLogger().message(sender, "Your ping is " + ping + "ms.");
+ }
+ else
+ {
+ sender.sendMessage("Pong!");
+ }
+ return true;
+ }
+
+ @Command(hook = "ping2")
+ public boolean ping(CommandSender sender, String password)
+ {
+ if (password.equals("pong"))
+ if (sender instanceof Player)
+ {
+ int ping = getPing((Player) sender);
+ getLogger().message(sender, new String[] {"Your ping is " + ping + "ms.", ping < 20
+ ? "&aThat's gr8 m8 r8 8/8"
+ : (ping < 50 ? "F&eair enough you cunt!"
+ : (ping < 100 ? "&eShite, but not shite enough."
+ : "&cLooks like the server is about two months ahead of you. GET A NEW FRIGGIN' ISP ALREADY"))});
+ }
+ else
+ getLogger().message(sender, true,
+ "M8 you shitty cunt are not supposed to run this shit it's for players only!!!");
+ else
+ getLogger().message(sender, true, "&4WRONG PASSWORD, 4/3 ATTEMPTS FAILED! BAN COMMENCING!");
+ return true;
+ }
+
+ public int getPing(Player player)
+ {
+ return ((CraftPlayer) player).getHandle().ping;
+ }
+
+ @Command(hook = "sudo")
+ public boolean sudo(CommandSender sender, String name, String command)
+ {
+ CommandSender target;
+ if (name.equalsIgnoreCase("console"))
+ {
+ target = Bukkit.getConsoleSender();
+ }
+ else
+ target = Bukkit.getPlayer(name);
+ if (target == null)
+ {
+ getLogger().message(sender, false, "That player couldn't be found!");
+ return true;
+ }
+ if (command.startsWith("/") || target.equals(Bukkit.getConsoleSender()))
+ {
+ String[] args = command.split(" ");
+ for (String regex : sudoBlacklist)
+ {
+ if (args[0].matches((target.equals(Bukkit.getConsoleSender()) ? "" : "\\/") + regex))
+ {
+ getLogger().message(sender, true, "You can't sudo anyone into using that command!");
+ return true;
+ }
+ }
+ Bukkit.dispatchCommand(target, command.replaceFirst("/", ""));
+ getLogger().message(sender, "Sudoed " + Utils.getName(target) + "&7 into running " + command);
+ }
+ else
+ {
+ ((Player) target).chat(command);
+ getLogger().message(sender, "Sudoed " + Utils.getName(target) + "&7 into saying " + command);
+ }
+ return true;
+ }
+
+ @Command(hook = "hasperm")
+ public boolean hasPerm(CommandSender sender, boolean noformat, String name, String node)
+ {
+ Player p;
+ if (name.contains("-"))
+ try
+ {
+ p = Bukkit.getPlayer(UUID.fromString(name));
+ }
+ catch (Exception e)
+ {
+ if (noformat)
+ sender.sendMessage("ERR: Invalid UUID");
+ else
+ getLogger().message(sender, "That UUID is not valid!");
+ return true;
+ }
+ else
+ p = Bukkit.getPlayer(name);
+ if (p == null)
+ {
+ if (noformat)
+ {
+ Message m = new Message(sender, null);
+ m.appendText("ERR: Invalid player");
+ m.send();
+ }
+ else
+ {
+ getLogger().message(sender, "That player couldn't be found!");
+ }
+ return true;
+ }
+
+ if (noformat)
+ {
+ Message m = new Message(sender, null);
+ m.appendText("" + p.hasPermission(node));
+ m.send();
+ }
+ else
+ {
+ getLogger().message(sender, "" + p.hasPermission(node));
+ }
+
+ return true;
+ }
+
+ public boolean canBuild(Player player, Location location)
+ {
+ BlockBreakEvent event = new BlockBreakEvent(location.getBlock(), player);
+ Bukkit.getPluginManager().callEvent(event);
+ return event.isCancelled();
+ }
+
+ PotionEffect nightvision = new PotionEffect(PotionEffectType.NIGHT_VISION, Integer.MAX_VALUE, 0, false, false);
+
+ @Command(hook = "illuminate")
+ public void illuminate(CommandSender sender)
+ {
+ Player player = (Player) sender;
+ if (player.hasPotionEffect(PotionEffectType.NIGHT_VISION))
+ {
+ player.removePotionEffect(PotionEffectType.NIGHT_VISION);
+ getLogger().message(sender, "Night Vision Disabled.");
+ }
+ else
+ {
+ player.addPotionEffect(nightvision, true);
+ getLogger().message(sender, "Night Vision Enabled.");
+ }
+ }
+
+ @Command(hook = "minecart")
+ public void minecart(CommandSender sender) {
+ String type = (String) DataManager.getOrDefault(sender, "minecart_default", "normal");
+ minecartDefault(sender, type);
+ }
+
+ @Command(hook = "minecart_type")
+ public void minecartType(CommandSender sender, String type) {
+ Player p = (Player) sender;
+ if (!canBuild(p, p.getLocation())) {
+ ChatAPI.sendActionBar(sender, "&cYou do not have permission to build here!");
+ return;
+ }
+
+ EntityType typeE = convertMinecartTypeString(type);
+
+ if (typeE != null) {
+ p.getWorld().spawnEntity(p.getLocation(), typeE);
+ ChatAPI.sendActionBar(sender, "&aMinecart Spawned!");
+ }
+ else
+ ChatAPI.sendActionBar(sender, "&cThe type of Minecart you've requested does not exist.");
+ }
+
+ @Command(hook = "minecart_default")
+ public void minecartDefault(CommandSender sender, String type) {
+ EntityType typeE = convertMinecartTypeString(type);
+
+ if (typeE != null) {
+ DataManager.setData(sender, "minecart_default", type);
+ ChatAPI.sendActionBar(sender, "&aMinecart Spawned!");
+ }
+ else
+ ChatAPI.sendActionBar(sender, "&cThe type of Minecart you've requested does not exist.");
+ }
+
+ public EntityType convertMinecartTypeString(String type) {
+ EntityType typeE = null;
+
+ switch (type) {
+ case "normal": typeE = EntityType.MINECART;
+ case "chest": typeE = EntityType.MINECART_CHEST;
+ case "furnace": typeE = EntityType.MINECART_FURNACE;
+ case "hopper": typeE = EntityType.MINECART_HOPPER;
+ case "tnt": typeE = EntityType.MINECART_TNT;
+ case "command": typeE = EntityType.MINECART_COMMAND;
+ case "spawner": typeE = EntityType.MINECART_MOB_SPAWNER;
+ }
+
+ return typeE;
+ }
+} \ No newline at end of file