2018-05-13 19:49:13 +00:00
|
|
|
package me.totalfreedom.totalfreedommod.masterbuilder;
|
|
|
|
|
|
|
|
import me.totalfreedom.totalfreedommod.FreedomService;
|
|
|
|
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
|
|
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
|
|
|
import org.bukkit.ChatColor;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.event.EventHandler;
|
|
|
|
import org.bukkit.event.EventPriority;
|
|
|
|
import org.bukkit.event.block.BlockBreakEvent;
|
|
|
|
import org.bukkit.event.block.BlockPlaceEvent;
|
|
|
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
2018-05-15 06:11:24 +00:00
|
|
|
import org.bukkit.event.player.PlayerArmorStandManipulateEvent;
|
2018-05-13 19:49:13 +00:00
|
|
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
2018-05-15 06:11:24 +00:00
|
|
|
import org.bukkit.event.player.PlayerInteractEvent;
|
2018-05-13 19:49:13 +00:00
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
public class MasterBuilderWorldRestrictions extends FreedomService
|
|
|
|
{
|
|
|
|
|
|
|
|
private final List<String> BLOCKED_WORLDEDIT_COMMANDS = Arrays.asList(
|
2018-05-15 06:11:24 +00:00
|
|
|
"green", "fixlava", "fixwater", "br", "brush", "tool", "mat", "range", "cs", "up", "fill", "setblock");
|
2018-05-13 19:49:13 +00:00
|
|
|
|
|
|
|
public MasterBuilderWorldRestrictions(TotalFreedomMod plugin)
|
|
|
|
{
|
|
|
|
super(plugin);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void onStart()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void onStop()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean doRestrict(Player player)
|
|
|
|
{
|
|
|
|
if (!plugin.mbl.isMasterBuilder(player) && !FUtil.isExecutive(player.getName()) && player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld()))
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.NORMAL)
|
|
|
|
public void onBlockPlace(BlockPlaceEvent event)
|
|
|
|
{
|
|
|
|
final Player player = event.getPlayer();
|
|
|
|
|
|
|
|
if (doRestrict(player))
|
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
|
|
|
public void onBlockBreak(BlockBreakEvent event)
|
|
|
|
{
|
|
|
|
final Player player = event.getPlayer();
|
|
|
|
|
|
|
|
if (doRestrict(player))
|
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.NORMAL)
|
|
|
|
public void onPlayerInteract(PlayerInteractEvent event)
|
|
|
|
{
|
|
|
|
final Player player = event.getPlayer();
|
|
|
|
|
|
|
|
if (doRestrict(player))
|
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.NORMAL)
|
|
|
|
public void onArmorStandManipulate(PlayerArmorStandManipulateEvent event)
|
|
|
|
{
|
|
|
|
final Player player = event.getPlayer();
|
|
|
|
|
|
|
|
if (doRestrict(player))
|
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.NORMAL)
|
|
|
|
public void onEntityDamageByEntity(EntityDamageByEntityEvent event)
|
|
|
|
{
|
|
|
|
if (event.getDamager() instanceof Player)
|
|
|
|
{
|
|
|
|
Player player = (Player) event.getDamager();
|
|
|
|
|
|
|
|
if (doRestrict(player))
|
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.NORMAL)
|
|
|
|
public void onCommandPreprocess(PlayerCommandPreprocessEvent event)
|
|
|
|
{
|
|
|
|
final Player player = event.getPlayer();
|
|
|
|
if (doRestrict(player))
|
|
|
|
{
|
|
|
|
// This is a very poor way of blocking WorldEdit commands, all the methods I know of
|
|
|
|
// obtaining a list of a plugin's commands are returning null for world edit.
|
|
|
|
String message = event.getMessage();
|
|
|
|
if (message.startsWith("//") || BLOCKED_WORLDEDIT_COMMANDS.contains(message.split("\\s+")[0].replace("/", "")))
|
|
|
|
{
|
|
|
|
player.sendMessage(ChatColor.RED + "Only Master Builders are allowed to use this WorldEdit command in the Master Builder world.");
|
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (plugin.al.isAdmin(player) && !plugin.al.isSeniorAdmin(player) && message.startsWith("/co"))
|
|
|
|
{
|
|
|
|
player.sendMessage(ChatColor.RED + "Only Senior Admins are allowed to use CoreProtect in the Master Builder world.");
|
2018-05-15 06:11:24 +00:00
|
|
|
event.setCancelled(true);
|
2018-05-13 19:49:13 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|