Archived
0

Fixed misc

This commit is contained in:
David Panić
2018-12-16 01:54:38 +01:00
parent cf34444d8b
commit 5635733922
3 changed files with 333 additions and 282 deletions

View File

@@ -1,72 +1,91 @@
command tempadd { command tempadd {
perm pex; perm pex;
[string:user] [string:group] { [string:user] [string:group] {
help Adds a user to a group for 1w.; help Adds a user to a group for 1w.;
run tempadddef user group; run tempadddef user group;
} }
[string:user] [string:group] [string:duration] { [string:user] [string:group] [string:duration] {
help Adds a user to a group for a specified duration.; help Adds a user to a group for a specified duration.;
run tempadd user group duration; run tempadd user group duration;
} }
} }
command echo { command echo {
perm utils.misc.echo; perm utils.misc.echo;
[string:text...] { [string:text...] {
help Echoes back to you.; help Echoes back to you.;
run echo text; run echo text;
} }
} }
command ping { command ping {
perm utils.misc.ping perm utils.misc.ping;
[empty] { [empty] {
help Pongs :D; help Pongs :D;
run ping; run ping;
} }
[string:password] {
help Pongs :D; [string:player] {
run ping2 password; help Gets the specified player's ping.;
run ping_player player;
} }
} }
command sudo { command sudo {
perm utils.misc.sudo; perm utils.misc.sudo;
[string:name] [string:command...] { [string:name] [string:command...] {
help Sudo'es another user (or console); help Sudo'es another user (or console);
run sudo name command; run sudo name command;
} }
} }
command hasperm { command hasperm {
perm utils.misc.hasperm; perm utils.misc.hasperm;
[flag:-f] [string:name] [string:node] { [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.; 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;
} }
} }
command nightvision { command nightvision {
alias nv; alias nv;
alias illuminate;
perm utils.misc.nightvision; perm utils.misc.nightvision;
[empty] {
run illuminate;
type player; type player;
[empty] {
help Gives the player infinte night vision; help Gives the player infinte night vision;
perm utils.illuminate; run 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;
} }
} }

View File

@@ -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,315 +8,300 @@ 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;
}
Bukkit.dispatchCommand(sender, "pex user " + user + " group add " + group + " * " + duration);
getLogger().message(sender, "Added to group " + group + "for " + duration + " seconds.");
return true; return true;
} }
@Command(hook = "echo") Bukkit.dispatchCommand(sender, "pex user " + user + " group add " + group + " * " + parsed);
public boolean echo(CommandSender sender, String text) getLogger().message(sender, "User " + user + " added to group " + group + " for " + duration);
{
return true;
}
@Command (hook = "echo")
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 {
sender.sendMessage("That's not how this works... <insert facepalm emoji here>");
} }
else
{
sender.sendMessage("Pong!");
}
return true; return true;
} }
@Command(hook = "ping2") @Command (hook = "ping_player")
public boolean ping(CommandSender sender, String password) public boolean ping(CommandSender sender, String player) {
{ Player playerObj = Bukkit.getPlayer(player);
if (password.equals("pong"))
if (sender instanceof Player) if (playerObj == null) {
{ getLogger().message(sender, "That player is not online!");
int ping = getPing((Player) sender); return true;
}
int ping = MiscUtil.getPing(playerObj);
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 that player's ping! Please message a staff member.");
} else { } else {
getLogger().message(sender, new String[] {"Your ping is " + ping + "ms.", ping < 20 getLogger().message(sender, ChatColor.GRAY + playerObj.getDisplayName() + ChatColor.GRAY + "'s ping is " + ping + "ms.");
? "&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; return true;
} }
public int getPing(Player player) @Command (hook = "sudo")
{ public boolean sudo(CommandSender sender, String name, String command) {
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;
}
@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 {
else getLogger().message(sender, ChatColor.GRAY + p.getDisplayName() + ChatColor.GRAY + (
{ p.hasPermission(node)
getLogger().message(sender, "" + p.hasPermission(node)); ? " has that permission."
: " does not have that permission."
));
} }
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;
} }
@@ -346,13 +309,27 @@ public class Misc implements Module, Listener
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;

View 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();
}
}