Fixed misc
This commit is contained in:
@@ -1,72 +1,91 @@
|
|||||||
command tempadd {
|
command tempadd {
|
||||||
perm pex;
|
perm pex;
|
||||||
[string:user] [string:group] {
|
|
||||||
help Adds a user to a group for 1w.;
|
[string:user] [string:group] {
|
||||||
run tempadddef user 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;
|
[string:user] [string:group] [string:duration] {
|
||||||
}
|
help Adds a user to a group for a specified duration.;
|
||||||
}
|
run tempadd user group duration;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
command echo {
|
command echo {
|
||||||
perm utils.misc.echo;
|
perm utils.misc.echo;
|
||||||
[string:text...] {
|
|
||||||
help Echoes back to you.;
|
[string:text...] {
|
||||||
run echo text;
|
help Echoes back to you.;
|
||||||
}
|
run echo text;
|
||||||
}
|
}
|
||||||
command ping {
|
}
|
||||||
perm utils.misc.ping
|
|
||||||
[empty] {
|
command ping {
|
||||||
help Pongs :D;
|
perm utils.misc.ping;
|
||||||
run ping;
|
|
||||||
}
|
[empty] {
|
||||||
[string:password] {
|
help Pongs :D;
|
||||||
help Pongs :D;
|
run ping;
|
||||||
run ping2 password;
|
}
|
||||||
}
|
|
||||||
}
|
[string:player] {
|
||||||
command sudo {
|
help Gets the specified player's ping.;
|
||||||
perm utils.misc.sudo;
|
run ping_player player;
|
||||||
[string:name] [string:command...] {
|
}
|
||||||
help Sudo'es another user (or console);
|
}
|
||||||
run sudo name command;
|
|
||||||
}
|
command sudo {
|
||||||
}
|
perm utils.misc.sudo;
|
||||||
|
|
||||||
|
[string:name] [string:command...] {
|
||||||
|
help Sudo'es another user (or console);
|
||||||
|
run sudo name command;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
command hasperm {
|
command hasperm {
|
||||||
perm utils.misc.hasperm;
|
perm utils.misc.hasperm;
|
||||||
[flag:-f] [string:name] [string:node] {
|
|
||||||
perm utils.hasperm;
|
[flag:-f] [string:name] [string: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.;
|
||||||
run hasperm -f name node;
|
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 {
|
command nightvision {
|
||||||
alias nv;
|
alias nv;
|
||||||
|
alias illuminate;
|
||||||
|
|
||||||
perm utils.misc.nightvision;
|
perm utils.misc.nightvision;
|
||||||
|
|
||||||
|
type player;
|
||||||
|
|
||||||
[empty] {
|
[empty] {
|
||||||
run illuminate;
|
help Gives the player infinte night vision;
|
||||||
type player;
|
run illuminate;
|
||||||
help Gives the player infinte night vision;
|
}
|
||||||
perm utils.illuminate;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
command minecart {
|
command minecart {
|
||||||
alias cart;
|
alias cart;
|
||||||
|
|
||||||
perm utils.misc.spawncart;
|
perm utils.misc.spawncart;
|
||||||
|
|
||||||
type player;
|
type player;
|
||||||
|
|
||||||
default [string:variation] {
|
default [string:variation] {
|
||||||
run minecart_default variation;
|
|
||||||
help Sets a default minecart variation.;
|
help Sets a default minecart variation.;
|
||||||
|
run minecart_default variation;
|
||||||
}
|
}
|
||||||
|
|
||||||
[string:variation] {
|
[string:variation] {
|
||||||
run minecart_variation variation;
|
|
||||||
help Spawns a certain minecart;
|
help Spawns a certain minecart;
|
||||||
|
run minecart_variation variation;
|
||||||
}
|
}
|
||||||
|
|
||||||
[empty] {
|
[empty] {
|
||||||
run minecart;
|
|
||||||
help Spawns a minecart;
|
help Spawns a minecart;
|
||||||
}
|
run minecart;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,27 +1,5 @@
|
|||||||
package com.redstoner.modules.misc;
|
package com.redstoner.modules.misc;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
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.nemez.cmdmgr.Command;
|
||||||
import com.redstoner.annotations.AutoRegisterListener;
|
import com.redstoner.annotations.AutoRegisterListener;
|
||||||
import com.redstoner.annotations.Commands;
|
import com.redstoner.annotations.Commands;
|
||||||
@@ -30,331 +8,330 @@ import com.redstoner.misc.CommandHolderType;
|
|||||||
import com.redstoner.misc.Utils;
|
import com.redstoner.misc.Utils;
|
||||||
import com.redstoner.modules.Module;
|
import com.redstoner.modules.Module;
|
||||||
import com.redstoner.modules.datamanager.DataManager;
|
import com.redstoner.modules.datamanager.DataManager;
|
||||||
|
|
||||||
import net.nemez.chatapi.ChatAPI;
|
import net.nemez.chatapi.ChatAPI;
|
||||||
import net.nemez.chatapi.click.Message;
|
import net.nemez.chatapi.click.Message;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
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.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;
|
||||||
|
|
||||||
@Commands(CommandHolderType.File)
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Commands (CommandHolderType.File)
|
||||||
@AutoRegisterListener
|
@AutoRegisterListener
|
||||||
@Version(major = 4, minor = 1, revision = 0, compatible = 4)
|
@Version (major = 4, minor = 1, revision = 0, compatible = 4)
|
||||||
public class Misc implements Module, Listener
|
public class Misc implements Module, Listener {
|
||||||
{
|
private static final String[] SUDO_BLACKLIST = new String[] {
|
||||||
private final String[] sudoBlacklist = new String[] {"(.*:)?e?sudo", "(.*:)?script.*", "(.*:)?stop",
|
"(.*:)?e?sudo",
|
||||||
"(.*:)?modules", "(.*:)?sayn", "(.*:)?pex", "(.*:)?console_.*", "(.*:)?op", "(.*:)?login", "(.*:)?register",
|
"(.*:)?script.*",
|
||||||
"(.*:)?.*pass"};
|
"(.*:)?stop",
|
||||||
JSONObject config;
|
"(.*:)?modules",
|
||||||
JSONArray unprotectedRegions;
|
"(.*:)?sayn",
|
||||||
|
"(.*:)?pex",
|
||||||
|
"(.*:)?console_.*",
|
||||||
|
"(.*:)?op",
|
||||||
|
"(.*:)?login",
|
||||||
|
"(.*:)?register",
|
||||||
|
"(.*:)?.*pass"
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final String[] WELCOME_MSG = new String[] {
|
||||||
|
"&4 Welcome to the Redstoner Server!\n",
|
||||||
|
"&6 Before you ask us things, take a quick look at &a&nredstoner.com/info\n",
|
||||||
|
"&6 Thank you and happy playing ;)\n\n"
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final PotionEffect NIGHT_VISION = new PotionEffect(PotionEffectType.NIGHT_VISION, Integer.MAX_VALUE, 0, false, false);
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onFirstJoin(PlayerJoinEvent event)
|
public void onFirstJoin(PlayerJoinEvent event) {
|
||||||
{
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
if (!player.hasPlayedBefore())
|
|
||||||
{
|
if (!player.hasPlayedBefore()) {
|
||||||
Utils.broadcast("", "\n§a§lPlease welcome §f" + player.getDisplayName() + " §a§lto Redstoner!\n", null);
|
Utils.broadcast("", "\n§a§lPlease welcome §f" + player.getDisplayName() + " §a§lto Redstoner!\n", recipient -> !recipient.equals(player));
|
||||||
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",
|
getLogger().message(player, WELCOME_MSG);
|
||||||
" &6look at &a&nredstoner.com/info", " \n&6thank you and happy playing ;)", " \n \n"};
|
|
||||||
getLogger().message(player, message);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Material spawnBlock = player.getLocation().getBlock().getType();
|
Material spawnBlock = player.getLocation().getBlock().getType();
|
||||||
if (spawnBlock == Material.END_PORTAL || spawnBlock == Material.NETHER_PORTAL)
|
|
||||||
{
|
if (spawnBlock == Material.END_PORTAL || spawnBlock == Material.NETHER_PORTAL) {
|
||||||
getLogger().message(player, "&4Looks like you spawned in a portal... Let me help you out");
|
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");
|
getLogger().message(player, "&6You can use /back if you &nreally&6 want to go back");
|
||||||
|
|
||||||
player.teleport(player.getWorld().getSpawnLocation());
|
player.teleport(player.getWorld().getSpawnLocation());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disables spectator teleportation
|
// Disables spectator teleportation
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
@EventHandler (priority = EventPriority.LOWEST)
|
||||||
public void onTeleport(PlayerTeleportEvent event)
|
public void onTeleport(PlayerTeleportEvent event) {
|
||||||
{
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
if (!event.isCancelled() && event.getCause() == TeleportCause.SPECTATE && !player.hasPermission("utils.tp"))
|
|
||||||
{
|
if (!event.isCancelled() && event.getCause() == TeleportCause.SPECTATE && !player.hasPermission("utils.tp")) {
|
||||||
event.setCancelled(true);
|
|
||||||
getLogger().message(event.getPlayer(), true, "Spectator teleportation is disabled!");
|
getLogger().message(event.getPlayer(), true, "Spectator teleportation is disabled!");
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disables water and lava breaking stuff
|
// Disables water and lava breaking stuff
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onLiquidFlow(BlockFromToEvent event)
|
public void onLiquidFlow(BlockFromToEvent event) {
|
||||||
{
|
|
||||||
Material m = event.getToBlock().getType();
|
Material m = event.getToBlock().getType();
|
||||||
switch (m)
|
|
||||||
{
|
switch (m) {
|
||||||
case AIR:
|
case AIR:
|
||||||
case WATER:
|
case WATER:
|
||||||
case LAVA:
|
case LAVA:
|
||||||
return;
|
return;
|
||||||
default:
|
default: {
|
||||||
{
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(hook = "tempadddef")
|
@Command (hook = "tempadddef")
|
||||||
public boolean tempAddDef(CommandSender sender, String user, String group)
|
public boolean tempAddDef(CommandSender sender, String user, String group) {
|
||||||
{
|
return tempAdd(sender, user, group, "7d");
|
||||||
return tempAdd(sender, user, group, "604800");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(hook = "tempadd")
|
@Command (hook = "tempadd")
|
||||||
public boolean tempAdd(CommandSender sender, String user, String group, String duration)
|
public boolean tempAdd(CommandSender sender, String user, String group, String duration) {
|
||||||
{
|
int parsed = MiscUtil.parseDuration(duration);
|
||||||
// Use it to make a proper duration output later. Too lazy rn.
|
|
||||||
@SuppressWarnings("unused")
|
if (parsed == -1) {
|
||||||
int i = 0;
|
getLogger().message(sender, true, "That is not a valid duration! (format: 1y2m3d4h5m6s)");
|
||||||
try
|
|
||||||
{
|
|
||||||
i = Integer.valueOf(duration);
|
|
||||||
}
|
|
||||||
catch (NumberFormatException e)
|
|
||||||
{
|
|
||||||
getLogger().message(sender, true, "That is not a valid number!");
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
Bukkit.dispatchCommand(sender, "pex user " + user + " group add " + group + " * " + duration);
|
|
||||||
getLogger().message(sender, "Added to group " + group + "for " + duration + " seconds.");
|
Bukkit.dispatchCommand(sender, "pex user " + user + " group add " + group + " * " + parsed);
|
||||||
|
getLogger().message(sender, "User " + user + " added to group " + group + " for " + duration);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(hook = "echo")
|
@Command (hook = "echo")
|
||||||
public boolean echo(CommandSender sender, String text)
|
public boolean echo(CommandSender sender, String text) {
|
||||||
{
|
|
||||||
sender.sendMessage(ChatAPI.colorify(null, text));
|
sender.sendMessage(ChatAPI.colorify(null, text));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(hook = "ping")
|
@Command (hook = "ping")
|
||||||
public boolean ping(CommandSender sender)
|
public boolean ping(CommandSender sender) {
|
||||||
{
|
if (sender instanceof Player) {
|
||||||
if (sender instanceof Player)
|
int ping = MiscUtil.getPing((Player) sender);
|
||||||
{
|
|
||||||
int ping = getPing((Player) sender);
|
|
||||||
|
|
||||||
if (ping == -1) {
|
if (ping == -1) {
|
||||||
getLogger().message(sender, "An error occured while getting your ping! Please message a staff member.");
|
getLogger().message(sender, "An error occured while getting your ping! Please message a staff member.");
|
||||||
} else {
|
} else {
|
||||||
getLogger().message(sender, "Your ping is " + ping + "ms.");
|
getLogger().message(sender, "Your ping is " + ping + "ms.");
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
sender.sendMessage("That's not how this works... <insert facepalm emoji here>");
|
||||||
{
|
|
||||||
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);
|
|
||||||
|
|
||||||
if (ping == -1) {
|
|
||||||
getLogger().message(sender, "An error occured while getting your ping! Please message a staff member.");
|
|
||||||
} else {
|
|
||||||
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)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
Object entityPlayer = player.getClass().getMethod("getHandle").invoke(player);
|
|
||||||
int ping = (int) entityPlayer.getClass().getField("ping").get(entityPlayer);
|
|
||||||
return ping;
|
|
||||||
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | NoSuchFieldException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(hook = "sudo")
|
@Command (hook = "ping_player")
|
||||||
public boolean sudo(CommandSender sender, String name, String command)
|
public boolean ping(CommandSender sender, String player) {
|
||||||
{
|
Player playerObj = Bukkit.getPlayer(player);
|
||||||
|
|
||||||
|
if (playerObj == null) {
|
||||||
|
getLogger().message(sender, "That player is not online!");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ping = MiscUtil.getPing(playerObj);
|
||||||
|
|
||||||
|
if (ping == -1) {
|
||||||
|
getLogger().message(sender, "An error occured while getting that player's ping! Please message a staff member.");
|
||||||
|
} else {
|
||||||
|
getLogger().message(sender, ChatColor.GRAY + playerObj.getDisplayName() + ChatColor.GRAY + "'s ping is " + ping + "ms.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command (hook = "sudo")
|
||||||
|
public boolean sudo(CommandSender sender, String name, String command) {
|
||||||
CommandSender target;
|
CommandSender target;
|
||||||
if (name.equalsIgnoreCase("console"))
|
|
||||||
{
|
if (name.equalsIgnoreCase("console")) {
|
||||||
target = Bukkit.getConsoleSender();
|
target = Bukkit.getConsoleSender();
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
target = Bukkit.getPlayer(name);
|
target = Bukkit.getPlayer(name);
|
||||||
if (target == null)
|
}
|
||||||
{
|
|
||||||
|
if (target == null) {
|
||||||
getLogger().message(sender, false, "That player couldn't be found!");
|
getLogger().message(sender, false, "That player couldn't be found!");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (command.startsWith("/") || target.equals(Bukkit.getConsoleSender()))
|
|
||||||
{
|
if (command.startsWith("/") || target.equals(Bukkit.getConsoleSender())) {
|
||||||
String[] args = command.split(" ");
|
String[] args = command.split(" ");
|
||||||
for (String regex : sudoBlacklist)
|
|
||||||
{
|
for (String regex : SUDO_BLACKLIST) {
|
||||||
if (args[0].matches((target.equals(Bukkit.getConsoleSender()) ? "" : "\\/") + regex))
|
if (args[0].matches((target.equals(Bukkit.getConsoleSender()) ? "" : "\\/") + regex)) {
|
||||||
{
|
|
||||||
getLogger().message(sender, true, "You can't sudo anyone into using that command!");
|
getLogger().message(sender, true, "You can't sudo anyone into using that command!");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Bukkit.dispatchCommand(target, command.replaceFirst("/", ""));
|
Bukkit.dispatchCommand(target, command.replaceFirst("/", ""));
|
||||||
getLogger().message(sender, "Sudoed " + Utils.getName(target) + "&7 into running " + command);
|
getLogger().message(sender, "Sudoed " + Utils.getName(target) + "&7 into running " + command);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
((Player) target).chat(command);
|
((Player) target).chat(command);
|
||||||
getLogger().message(sender, "Sudoed " + Utils.getName(target) + "&7 into saying " + command);
|
getLogger().message(sender, "Sudoed " + Utils.getName(target) + "&7 into saying " + command);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(hook = "hasperm")
|
@Command (hook = "hasperm")
|
||||||
public boolean hasPerm(CommandSender sender, boolean noformat, String name, String node)
|
public boolean hasPerm(CommandSender sender, boolean noformat, String name, String node) {
|
||||||
{
|
|
||||||
Player p;
|
Player p;
|
||||||
if (name.contains("-"))
|
|
||||||
try
|
if (name.contains("-")) {
|
||||||
{
|
try {
|
||||||
p = Bukkit.getPlayer(UUID.fromString(name));
|
p = Bukkit.getPlayer(UUID.fromString(name));
|
||||||
}
|
} catch (Exception e) {
|
||||||
catch (Exception e)
|
if (noformat) {
|
||||||
{
|
|
||||||
if (noformat)
|
|
||||||
sender.sendMessage("ERR: Invalid UUID");
|
sender.sendMessage("ERR: Invalid UUID");
|
||||||
else
|
} else {
|
||||||
getLogger().message(sender, "That UUID is not valid!");
|
getLogger().message(sender, "That UUID is not valid!");
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
} else {
|
||||||
p = Bukkit.getPlayer(name);
|
p = Bukkit.getPlayer(name);
|
||||||
if (p == null)
|
}
|
||||||
{
|
|
||||||
if (noformat)
|
if (p == null) {
|
||||||
{
|
if (noformat) {
|
||||||
Message m = new Message(sender, null);
|
Message m = new Message(sender, null);
|
||||||
m.appendText("ERR: Invalid player");
|
m.appendText("ERR: Invalid player");
|
||||||
m.send();
|
m.send();
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
getLogger().message(sender, "That player couldn't be found!");
|
getLogger().message(sender, "That player couldn't be found!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (noformat)
|
if (noformat) {
|
||||||
{
|
|
||||||
Message m = new Message(sender, null);
|
Message m = new Message(sender, null);
|
||||||
m.appendText("" + p.hasPermission(node));
|
m.appendText("" + p.hasPermission(node));
|
||||||
m.send();
|
m.send();
|
||||||
|
} else {
|
||||||
|
getLogger().message(sender, ChatColor.GRAY + p.getDisplayName() + ChatColor.GRAY + (
|
||||||
|
p.hasPermission(node)
|
||||||
|
? " has that permission."
|
||||||
|
: " does not have that permission."
|
||||||
|
));
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
getLogger().message(sender, "" + p.hasPermission(node));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBuild(Player player, Location location)
|
@Command (hook = "illuminate")
|
||||||
{
|
public void illuminate(CommandSender sender) {
|
||||||
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;
|
Player player = (Player) sender;
|
||||||
if (player.hasPotionEffect(PotionEffectType.NIGHT_VISION))
|
if (player.hasPotionEffect(PotionEffectType.NIGHT_VISION)) {
|
||||||
{
|
|
||||||
player.removePotionEffect(PotionEffectType.NIGHT_VISION);
|
player.removePotionEffect(PotionEffectType.NIGHT_VISION);
|
||||||
getLogger().message(sender, "Night Vision Disabled.");
|
getLogger().message(sender, "Night Vision Disabled.");
|
||||||
}
|
} else {
|
||||||
else
|
player.addPotionEffect(NIGHT_VISION, true);
|
||||||
{
|
|
||||||
player.addPotionEffect(nightvision, true);
|
|
||||||
getLogger().message(sender, "Night Vision Enabled.");
|
getLogger().message(sender, "Night Vision Enabled.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(hook = "minecart")
|
@Command (hook = "minecart")
|
||||||
public void minecart(CommandSender sender) {
|
public void minecart(CommandSender sender) {
|
||||||
String type = (String) DataManager.getOrDefault(sender, "minecart_default", "normal");
|
String type = (String) DataManager.getOrDefault(sender, "minecart_default", "normal");
|
||||||
minecartType(sender, type);
|
minecartType(sender, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(hook = "minecart_variation")
|
@Command (hook = "minecart_variation")
|
||||||
public boolean minecartType(CommandSender sender, String type) {
|
public boolean minecartType(CommandSender sender, String type) {
|
||||||
if (type.equals("help") || type.equals("h") || type.equals("?"))
|
if (type.equals("help") || type.equals("h") || type.equals("?")) return false;
|
||||||
return false;
|
|
||||||
|
|
||||||
Player p = (Player) sender;
|
Player p = (Player) sender;
|
||||||
if (!canBuild(p, p.getLocation())) {
|
|
||||||
|
if (!MiscUtil.canBuild(p, p.getLocation())) {
|
||||||
getLogger().message(sender, true, "You do not have permission to build here!");
|
getLogger().message(sender, true, "You do not have permission to build here!");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityType typeE = convertMinecartTypeString(type);
|
EntityType typeE = convertMinecartTypeString(type.toLowerCase());
|
||||||
|
|
||||||
if (typeE != null) {
|
if (typeE != null) {
|
||||||
p.getWorld().spawnEntity(p.getLocation(), typeE);
|
p.getWorld().spawnEntity(p.getLocation(), typeE);
|
||||||
getLogger().message(sender, "Minecart Spawned!");
|
getLogger().message(sender, "Minecart Spawned!");
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
getLogger().message(sender, true, "The type of Minecart you've requested does not exist.");
|
getLogger().message(sender, true, "The type of Minecart you've requested does not exist.");
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(hook = "minecart_default")
|
@Command (hook = "minecart_default")
|
||||||
public boolean minecartDefault(CommandSender sender, String type) {
|
public boolean minecartDefault(CommandSender sender, String type) {
|
||||||
EntityType typeE = convertMinecartTypeString(type);
|
EntityType typeE = convertMinecartTypeString(type.toLowerCase());
|
||||||
|
|
||||||
if (type.equals("help") || type.equals("h") || type.equals("?"))
|
if (type.equals("help") || type.equals("h") || type.equals("?")) return false;
|
||||||
return false;
|
|
||||||
|
|
||||||
if (typeE != null) {
|
if (typeE != null) {
|
||||||
DataManager.setData(sender, "minecart_default", type);
|
DataManager.setData(sender, "minecart_default", type);
|
||||||
getLogger().message(sender, "Minecart Spawned!");
|
getLogger().message(sender, "Set your default minecart to: " + type.toLowerCase());
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
getLogger().message(sender, true, "The type of Minecart you've requested does not exist.");
|
getLogger().message(sender, true, "The type of Minecart you've requested does not exist.");
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EntityType convertMinecartTypeString(String type) {
|
public EntityType convertMinecartTypeString(String type) {
|
||||||
EntityType typeE = null;
|
EntityType typeE = null;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "normal": typeE = EntityType.MINECART; break;
|
case "normal":
|
||||||
case "chest": typeE = EntityType.MINECART_CHEST; break;
|
typeE = EntityType.MINECART;
|
||||||
case "furnace": typeE = EntityType.MINECART_FURNACE; break;
|
break;
|
||||||
case "hopper": typeE = EntityType.MINECART_HOPPER; break;
|
case "chest":
|
||||||
case "tnt": typeE = EntityType.MINECART_TNT; break;
|
typeE = EntityType.MINECART_CHEST;
|
||||||
case "command": typeE = EntityType.MINECART_COMMAND; break;
|
break;
|
||||||
case "spawner": typeE = EntityType.MINECART_MOB_SPAWNER; break;
|
case "furnace":
|
||||||
|
typeE = EntityType.MINECART_FURNACE;
|
||||||
|
break;
|
||||||
|
case "hopper":
|
||||||
|
typeE = EntityType.MINECART_HOPPER;
|
||||||
|
break;
|
||||||
|
case "tnt":
|
||||||
|
typeE = EntityType.MINECART_TNT;
|
||||||
|
break;
|
||||||
|
case "command":
|
||||||
|
typeE = EntityType.MINECART_COMMAND;
|
||||||
|
break;
|
||||||
|
case "spawner":
|
||||||
|
typeE = EntityType.MINECART_MOB_SPAWNER;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return typeE;
|
return typeE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
55
src/main/java/com/redstoner/modules/misc/MiscUtil.java
Normal file
55
src/main/java/com/redstoner/modules/misc/MiscUtil.java
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
package com.redstoner.modules.misc;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
|
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
public class MiscUtil {
|
||||||
|
private static final Pattern durationPattern = Pattern.compile("^(?:(?:(\\d*)y)?(?:(\\d*)m)?(?:(\\d*)d)?(?:(\\d*)h)?(?:(\\d*)m)?(?:(\\d*)s)?){1}$");
|
||||||
|
|
||||||
|
private static int getIntGroup(Matcher matcher, int group) {
|
||||||
|
String strGroup = matcher.group(group);
|
||||||
|
return Integer.parseInt(strGroup == null ? "0" : strGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static int parseDuration(String duration) {
|
||||||
|
Matcher m = durationPattern.matcher(duration);
|
||||||
|
|
||||||
|
if (m.matches()) {
|
||||||
|
int years = getIntGroup(m, 1);
|
||||||
|
int months = getIntGroup(m, 2);
|
||||||
|
int days = getIntGroup(m, 3);
|
||||||
|
int hours = getIntGroup(m, 4);
|
||||||
|
int minutes = getIntGroup(m, 5);
|
||||||
|
int seconds = getIntGroup(m, 6);
|
||||||
|
|
||||||
|
return (years * 31557600) + (months * 2629800) + (days * 86400) + (hours * 3600) + (minutes * 60) + seconds;
|
||||||
|
} else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static int getPing(Player player) {
|
||||||
|
try {
|
||||||
|
Object entityPlayer = player.getClass().getMethod("getHandle").invoke(player);
|
||||||
|
|
||||||
|
int ping = (int) entityPlayer.getClass().getField("ping").get(entityPlayer);
|
||||||
|
return ping;
|
||||||
|
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | NoSuchFieldException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static boolean canBuild(Player player, Location location) {
|
||||||
|
BlockBreakEvent event = new BlockBreakEvent(location.getBlock(), player);
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
return !event.isCancelled();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user