mirror of
https://e.coding.net/circlecloud/Residence.git
synced 2025-11-24 21:46:16 +00:00
尝试修复领地卡TP的BUG...
This commit is contained in:
@@ -2,7 +2,6 @@
|
|||||||
* To change this template, choose Tools | Templates and open the template in
|
* To change this template, choose Tools | Templates and open the template in
|
||||||
* the editor.
|
* the editor.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package cn.citycraft.Residence.listeners;
|
package cn.citycraft.Residence.listeners;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -53,501 +52,497 @@ import cn.citycraft.Residence.permissions.PermissionGroup;
|
|||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public class ResidencePlayerListener implements Listener {
|
public class ResidencePlayerListener implements Listener {
|
||||||
|
|
||||||
protected boolean chatenabled;
|
protected boolean chatenabled;
|
||||||
protected Map<String, String> currentRes;
|
protected Map<String, String> currentRes;
|
||||||
protected Map<String, Location> lastOutsideLoc;
|
protected Map<String, Location> lastOutsideLoc;
|
||||||
protected Map<String, Long> lastUpdate;
|
protected Map<String, Long> lastUpdate;
|
||||||
protected int minUpdateTime;
|
protected int minUpdateTime;
|
||||||
protected List<String> playerToggleChat;
|
protected List<String> playerToggleChat;
|
||||||
ResidenceMain plugin;
|
ResidenceMain plugin;
|
||||||
|
|
||||||
public ResidencePlayerListener(final ResidenceMain plugin) {
|
public ResidencePlayerListener(final ResidenceMain plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
currentRes = new HashMap<String, String>();
|
currentRes = new HashMap<>();
|
||||||
lastUpdate = new HashMap<String, Long>();
|
lastUpdate = new HashMap<>();
|
||||||
lastOutsideLoc = new HashMap<String, Location>();
|
lastOutsideLoc = new HashMap<>();
|
||||||
playerToggleChat = new ArrayList<String>();
|
playerToggleChat = new ArrayList<>();
|
||||||
minUpdateTime = plugin.getConfigManager().getMinMoveUpdateInterval();
|
minUpdateTime = plugin.getConfigManager().getMinMoveUpdateInterval();
|
||||||
chatenabled = plugin.getConfigManager().chatEnabled();
|
chatenabled = plugin.getConfigManager().chatEnabled();
|
||||||
for (final Player player : Bukkit.getServer().getOnlinePlayers()) {
|
for (final Player player : Bukkit.getServer().getOnlinePlayers()) {
|
||||||
lastUpdate.put(player.getName(), System.currentTimeMillis());
|
lastUpdate.put(player.getName(), System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCurrentResidenceName(final String player) {
|
public String getCurrentResidenceName(final String player) {
|
||||||
return currentRes.get(player);
|
return currentRes.get(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleNewLocation(final Player player, final Location loc, final boolean move) {
|
public void handleNewLocation(final Player player, final Location loc, final boolean move) {
|
||||||
final String pname = player.getName();
|
final String pname = player.getName();
|
||||||
|
|
||||||
ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc);
|
ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc);
|
||||||
String areaname = null;
|
String areaname = null;
|
||||||
boolean chatchange = false;
|
boolean chatchange = false;
|
||||||
String subzone = null;
|
String subzone = null;
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
areaname = plugin.getResidenceManager().getNameByLoc(loc);
|
areaname = plugin.getResidenceManager().getNameByLoc(loc);
|
||||||
while (res.getSubzoneByLoc(player.getLocation()) != null) {
|
while (res.getSubzoneByLoc(player.getLocation()) != null) {
|
||||||
subzone = res.getSubzoneNameByLoc(player.getLocation());
|
subzone = res.getSubzoneNameByLoc(player.getLocation());
|
||||||
res = res.getSubzoneByLoc(player.getLocation());
|
res = res.getSubzoneByLoc(player.getLocation());
|
||||||
areaname = areaname + "." + subzone;
|
areaname = areaname + "." + subzone;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ClaimedResidence ResOld = null;
|
ClaimedResidence ResOld = null;
|
||||||
if (currentRes.containsKey(pname)) {
|
if (currentRes.containsKey(pname)) {
|
||||||
ResOld = plugin.getResidenceManager().getByName(currentRes.get(pname));
|
ResOld = plugin.getResidenceManager().getByName(currentRes.get(pname));
|
||||||
if (ResOld == null) {
|
if (ResOld == null) {
|
||||||
currentRes.remove(pname);
|
currentRes.remove(pname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (res == null) {
|
if (res == null) {
|
||||||
lastOutsideLoc.put(pname, loc);
|
lastOutsideLoc.put(pname, loc);
|
||||||
if (ResOld != null) {
|
if (ResOld != null) {
|
||||||
final String leave = ResOld.getLeaveMessage();
|
final String leave = ResOld.getLeaveMessage();
|
||||||
final ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(ResOld, null, player);
|
final ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(ResOld, null, player);
|
||||||
plugin.getServer().getPluginManager().callEvent(chgEvent);
|
plugin.getServer().getPluginManager().callEvent(chgEvent);
|
||||||
|
|
||||||
if (leave != null && !leave.equals("")) {
|
if (leave != null && !leave.equals("")) {
|
||||||
if (plugin.getConfigManager().useActionBar()) {
|
if (plugin.getConfigManager().useActionBar()) {
|
||||||
ActionBar.send(player, ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave));
|
ActionBar.send(player, ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave));
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave));
|
player.sendMessage(ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
currentRes.remove(pname);
|
currentRes.remove(pname);
|
||||||
plugin.getChatManager().removeFromChannel(pname);
|
plugin.getChatManager().removeFromChannel(pname);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (move && !res.getPermissions().playerHas(pname, "move", true) && !plugin.isResAdminOn(player) && !player.hasPermission("residence.admin.move")
|
if (move && !res.getPermissions().playerHas(pname, "move", true) && !plugin.isResAdminOn(player) && !player.hasPermission("residence.admin.move")) {
|
||||||
&& !player.hasPermission("residence.admin.tp")) {
|
final Location lastLoc = lastOutsideLoc.get(pname);
|
||||||
final Location lastLoc = lastOutsideLoc.get(pname);
|
if (lastLoc != null) {
|
||||||
if (lastLoc != null) {
|
player.teleport(lastLoc);
|
||||||
player.teleport(lastLoc);
|
} else {
|
||||||
} else {
|
player.teleport(res.getOutsideFreeLoc(loc));
|
||||||
player.teleport(res.getOutsideFreeLoc(loc));
|
}
|
||||||
}
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceMoveDeny", res.getName().split("\\.")[res.getName().split("\\.").length - 1]));
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceMoveDeny", res.getName().split("\\.")[res.getName().split("\\.").length - 1]));
|
return;
|
||||||
return;
|
}
|
||||||
}
|
lastOutsideLoc.put(pname, loc);
|
||||||
lastOutsideLoc.put(pname, loc);
|
if (!currentRes.containsKey(pname) || ResOld != res) {
|
||||||
if (!currentRes.containsKey(pname) || ResOld != res) {
|
currentRes.put(pname, areaname);
|
||||||
currentRes.put(pname, areaname);
|
if (subzone == null) {
|
||||||
if (subzone == null) {
|
chatchange = true;
|
||||||
chatchange = true;
|
}
|
||||||
}
|
ClaimedResidence chgFrom = null;
|
||||||
ClaimedResidence chgFrom = null;
|
if (ResOld != res && ResOld != null) {
|
||||||
if (ResOld != res && ResOld != null) {
|
final String leave = ResOld.getLeaveMessage();
|
||||||
final String leave = ResOld.getLeaveMessage();
|
chgFrom = ResOld;
|
||||||
chgFrom = ResOld;
|
|
||||||
|
|
||||||
if (leave != null && !leave.equals("") && ResOld != res.getParent()) {
|
if (leave != null && !leave.equals("") && ResOld != res.getParent()) {
|
||||||
if (plugin.getConfigManager().useActionBar()) {
|
if (plugin.getConfigManager().useActionBar()) {
|
||||||
ActionBar.send(player, ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave));
|
ActionBar.send(player, ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave));
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave));
|
player.sendMessage(ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final String enterMessage = res.getEnterMessage();
|
final String enterMessage = res.getEnterMessage();
|
||||||
final ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(chgFrom, res, player);
|
final ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(chgFrom, res, player);
|
||||||
plugin.getServer().getPluginManager().callEvent(chgEvent);
|
plugin.getServer().getPluginManager().callEvent(chgEvent);
|
||||||
|
|
||||||
if (enterMessage != null && !enterMessage.equals("") && !(ResOld != null && res == ResOld.getParent())) {
|
if (enterMessage != null && !enterMessage.equals("") && !(ResOld != null && res == ResOld.getParent())) {
|
||||||
if (plugin.getConfigManager().useActionBar()) {
|
if (plugin.getConfigManager().useActionBar()) {
|
||||||
ActionBar.send(player, ChatColor.YELLOW + insertMessages(player, areaname, res, enterMessage));
|
ActionBar.send(player, ChatColor.YELLOW + insertMessages(player, areaname, res, enterMessage));
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(ChatColor.YELLOW + insertMessages(player, areaname, res, enterMessage));
|
player.sendMessage(ChatColor.YELLOW + insertMessages(player, areaname, res, enterMessage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (chatchange && chatenabled) {
|
if (chatchange && chatenabled) {
|
||||||
plugin.getChatManager().setChannel(pname, areaname);
|
plugin.getChatManager().setChannel(pname, areaname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String insertMessages(final Player player, final String areaname, final ClaimedResidence res, String message) {
|
public String insertMessages(final Player player, final String areaname, final ClaimedResidence res, String message) {
|
||||||
try {
|
try {
|
||||||
message = message.replaceAll("%player", player.getName());
|
message = message.replaceAll("%player", player.getName());
|
||||||
message = message.replaceAll("%owner", res.getPermissions().getOwner());
|
message = message.replaceAll("%owner", res.getPermissions().getOwner());
|
||||||
message = message.replaceAll("%residence", areaname);
|
message = message.replaceAll("%residence", areaname);
|
||||||
message = ChatColor.translateAlternateColorCodes('&', message);
|
message = ChatColor.translateAlternateColorCodes('&', message);
|
||||||
} catch (final Exception ex) {
|
} catch (final Exception ex) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent event) {
|
public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
if (plugin.isResAdminOn(player)) {
|
if (plugin.isResAdminOn(player)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final String pname = player.getName();
|
final String pname = player.getName();
|
||||||
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(event.getBlockClicked().getLocation());
|
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(event.getBlockClicked().getLocation());
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
if (plugin.getConfigManager().preventRentModify() && plugin.getConfigManager().enabledRentSystem()) {
|
if (plugin.getConfigManager().preventRentModify() && plugin.getConfigManager().enabledRentSystem()) {
|
||||||
if (plugin.getRentManager().isRented(res.getName())) {
|
if (plugin.getRentManager().isRented(res.getName())) {
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentedModifyDeny"));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentedModifyDeny"));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final FlagPermissions perms = plugin.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player);
|
final FlagPermissions perms = plugin.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player);
|
||||||
if (!perms.playerHas(pname, player.getWorld().getName(), "bucket", perms.playerHas(pname, player.getWorld().getName(), "build", true))) {
|
if (!perms.playerHas(pname, player.getWorld().getName(), "bucket", perms.playerHas(pname, player.getWorld().getName(), "build", true))) {
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "bucket"));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "bucket"));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
public void onPlayerBucketFill(final PlayerBucketFillEvent event) {
|
public void onPlayerBucketFill(final PlayerBucketFillEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
final String pname = player.getName();
|
final String pname = player.getName();
|
||||||
if (plugin.isResAdminOn(player)) {
|
if (plugin.isResAdminOn(player)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(event.getBlockClicked().getLocation());
|
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(event.getBlockClicked().getLocation());
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
if (plugin.getConfigManager().preventRentModify() && plugin.getConfigManager().enabledRentSystem()) {
|
if (plugin.getConfigManager().preventRentModify() && plugin.getConfigManager().enabledRentSystem()) {
|
||||||
if (plugin.getRentManager().isRented(res.getName())) {
|
if (plugin.getRentManager().isRented(res.getName())) {
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentedModifyDeny"));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentedModifyDeny"));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final FlagPermissions perms = plugin.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player);
|
final FlagPermissions perms = plugin.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player);
|
||||||
final boolean hasbucket = perms.playerHas(pname, player.getWorld().getName(), "bucket", perms.playerHas(pname, player.getWorld().getName(), "build", true));
|
final boolean hasbucket = perms.playerHas(pname, player.getWorld().getName(), "bucket", perms.playerHas(pname, player.getWorld().getName(), "build", true));
|
||||||
if (!hasbucket) {
|
if (!hasbucket) {
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "bucket"));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "bucket"));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
public void onPlayerChat(final AsyncPlayerChatEvent event) {
|
public void onPlayerChat(final AsyncPlayerChatEvent event) {
|
||||||
final String pname = event.getPlayer().getName();
|
final String pname = event.getPlayer().getName();
|
||||||
if (chatenabled && playerToggleChat.contains(pname)) {
|
if (chatenabled && playerToggleChat.contains(pname)) {
|
||||||
final String area = currentRes.get(pname);
|
final String area = currentRes.get(pname);
|
||||||
if (area != null) {
|
if (area != null) {
|
||||||
final ChatChannel channel = plugin.getChatManager().getChannel(area);
|
final ChatChannel channel = plugin.getChatManager().getChannel(area);
|
||||||
if (channel != null) {
|
if (channel != null) {
|
||||||
channel.chat(pname, event.getMessage());
|
channel.chat(pname, event.getMessage());
|
||||||
}
|
}
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
public void onPlayerInteract(final PlayerInteractEvent event) {
|
public void onPlayerInteract(final PlayerInteractEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
final Material heldItem = player.getItemInHand().getType();
|
final Material heldItem = player.getItemInHand().getType();
|
||||||
final Block block = event.getClickedBlock();
|
final Block block = event.getClickedBlock();
|
||||||
if (block == null) {
|
if (block == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Material mat = block.getType();
|
final Material mat = block.getType();
|
||||||
if (!((isContainer(mat, block) || isCanUseEntity_RClickOnly(mat, block)) && event.getAction() == Action.RIGHT_CLICK_BLOCK || isCanUseEntity_BothClick(mat, block)
|
if (!((isContainer(mat, block) || isCanUseEntity_RClickOnly(mat, block)) && event.getAction() == Action.RIGHT_CLICK_BLOCK || isCanUseEntity_BothClick(mat, block)
|
||||||
|| event.getAction() == Action.PHYSICAL)) {
|
|| event.getAction() == Action.PHYSICAL)) {
|
||||||
final int typeId = player.getItemInHand().getTypeId();
|
final int typeId = player.getItemInHand().getTypeId();
|
||||||
if (typeId != plugin.getConfigManager().getSelectionTooldID() && typeId != plugin.getConfigManager().getInfoToolID() && typeId != 351 && typeId != 416) {
|
if (typeId != plugin.getConfigManager().getSelectionTooldID() && typeId != plugin.getConfigManager().getInfoToolID() && typeId != 351 && typeId != 416) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FlagPermissions perms = plugin.getPermsByLocForPlayer(block.getLocation(), player);
|
FlagPermissions perms = plugin.getPermsByLocForPlayer(block.getLocation(), player);
|
||||||
final String world = player.getWorld().getName();
|
final String world = player.getWorld().getName();
|
||||||
final String permgroup = plugin.getPermissionManager().getGroupNameByPlayer(player);
|
final String permgroup = plugin.getPermissionManager().getGroupNameByPlayer(player);
|
||||||
final boolean resadmin = plugin.isResAdminOn(player);
|
final boolean resadmin = plugin.isResAdminOn(player);
|
||||||
if (event.getAction() == Action.PHYSICAL) {
|
if (event.getAction() == Action.PHYSICAL) {
|
||||||
if (!resadmin) {
|
if (!resadmin) {
|
||||||
final boolean hasuse = perms.playerHas(player.getName(), world, "use", true);
|
final boolean hasuse = perms.playerHas(player.getName(), world, "use", true);
|
||||||
final boolean haspressure = perms.playerHas(player.getName(), world, "pressure", hasuse);
|
final boolean haspressure = perms.playerHas(player.getName(), world, "pressure", hasuse);
|
||||||
if ((!hasuse && !haspressure || !haspressure) && (mat == Material.STONE_PLATE || mat == Material.WOOD_PLATE)) {
|
if ((!hasuse && !haspressure || !haspressure) && (mat == Material.STONE_PLATE || mat == Material.WOOD_PLATE)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!perms.playerHas(player.getName(), world, "trample", perms.playerHas(player.getName(), world, "build", true)) && (mat == Material.SOIL || mat == Material.SOUL_SAND)) {
|
if (!perms.playerHas(player.getName(), world, "trample", perms.playerHas(player.getName(), world, "build", true)) && (mat == Material.SOIL || mat == Material.SOUL_SAND)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!resadmin && !plugin.getItemManager().isAllowed(heldItem, permgroup, world)) {
|
if (!resadmin && !plugin.getItemManager().isAllowed(heldItem, permgroup, world)) {
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ItemBlacklisted"));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ItemBlacklisted"));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
if (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||||
if (player.getItemInHand().getTypeId() == plugin.getConfigManager().getSelectionTooldID()) {
|
if (player.getItemInHand().getTypeId() == plugin.getConfigManager().getSelectionTooldID()) {
|
||||||
final Plugin wep = Bukkit.getPluginManager().getPlugin("WorldEdit");
|
final Plugin wep = Bukkit.getPluginManager().getPlugin("WorldEdit");
|
||||||
if (wep != null) {
|
if (wep != null) {
|
||||||
if (((WorldEditPlugin) wep).getConfig().getInt("wand-item") == plugin.getConfigManager().getSelectionTooldID()) {
|
if (((WorldEditPlugin) wep).getConfig().getInt("wand-item") == plugin.getConfigManager().getSelectionTooldID()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final PermissionGroup group = plugin.getPermissionManager().getGroup(player);
|
final PermissionGroup group = plugin.getPermissionManager().getGroup(player);
|
||||||
if (player.hasPermission("residence.select") || player.hasPermission("residence.create") && !player.isPermissionSet("residence.select")
|
if (player.hasPermission("residence.select") || player.hasPermission("residence.create") && !player.isPermissionSet("residence.select")
|
||||||
|| group.canCreateResidences() && !player.isPermissionSet("residence.create") && !player.isPermissionSet("residence.select") || resadmin) {
|
|| group.canCreateResidences() && !player.isPermissionSet("residence.create") && !player.isPermissionSet("residence.select") || resadmin) {
|
||||||
if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
|
if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
|
||||||
final Location loc = block.getLocation();
|
final Location loc = block.getLocation();
|
||||||
plugin.getSelectionManager().placeLoc1(player, loc);
|
plugin.getSelectionManager().placeLoc1(player, loc);
|
||||||
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectPoint", plugin.getLanguage().getPhrase("Primary")) + ChatColor.RED + "(" + loc.getBlockX() + ","
|
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectPoint", plugin.getLanguage().getPhrase("Primary")) + ChatColor.RED + "(" + loc.getBlockX() + ","
|
||||||
+ loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
|
+ loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
} else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
} else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||||
final Location loc = block.getLocation();
|
final Location loc = block.getLocation();
|
||||||
plugin.getSelectionManager().placeLoc2(player, loc);
|
plugin.getSelectionManager().placeLoc2(player, loc);
|
||||||
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectPoint", plugin.getLanguage().getPhrase("Secondary")) + ChatColor.RED + "(" + loc.getBlockX() + ","
|
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectPoint", plugin.getLanguage().getPhrase("Secondary")) + ChatColor.RED + "(" + loc.getBlockX() + ","
|
||||||
+ loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
|
+ loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (player.getItemInHand().getTypeId() == plugin.getConfigManager().getInfoToolID()) {
|
if (player.getItemInHand().getTypeId() == plugin.getConfigManager().getInfoToolID()) {
|
||||||
if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
|
if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
|
||||||
final Location loc = block.getLocation();
|
final Location loc = block.getLocation();
|
||||||
final String res = plugin.getResidenceManager().getNameByLoc(loc);
|
final String res = plugin.getResidenceManager().getNameByLoc(loc);
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
plugin.getResidenceManager().printAreaInfo(res, player);
|
plugin.getResidenceManager().printAreaInfo(res, player);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
} else {
|
} else {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(plugin.getLanguage().getPhrase("NoResHere"));
|
player.sendMessage(plugin.getLanguage().getPhrase("NoResHere"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!resadmin) {
|
if (!resadmin) {
|
||||||
if (heldItem != null) {
|
if (heldItem != null) {
|
||||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||||
if (player.getItemInHand().getTypeId() == 351) {
|
if (player.getItemInHand().getTypeId() == 351) {
|
||||||
if (player.getItemInHand().getData().getData() == 15 && block.getType() == Material.GRASS || player.getItemInHand().getData().getData() == 3 && block.getTypeId() == 17
|
if (player.getItemInHand().getData().getData() == 15 && block.getType() == Material.GRASS || player.getItemInHand().getData().getData() == 3 && block.getTypeId() == 17
|
||||||
&& (block.getData() == 3 || block.getData() == 7 || block.getData() == 11 || block.getData() == 15)) {
|
&& (block.getData() == 3 || block.getData() == 7 || block.getData() == 11 || block.getData() == 15)) {
|
||||||
perms = plugin.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player);
|
perms = plugin.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player);
|
||||||
if (!perms.playerHas(player.getName(), world, "build", true)) {
|
if (!perms.playerHas(player.getName(), world, "build", true)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (plugin.isGt1_8()) {
|
if (plugin.isGt1_8()) {
|
||||||
if (heldItem == Material.ARMOR_STAND) {
|
if (heldItem == Material.ARMOR_STAND) {
|
||||||
perms = plugin.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player);
|
perms = plugin.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player);
|
||||||
if (!perms.playerHas(player.getName(), world, "build", true)) {
|
if (!perms.playerHas(player.getName(), world, "build", true)) {
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isContainer(mat, block) || isCanUseEntity(mat, block)) {
|
if (isContainer(mat, block) || isCanUseEntity(mat, block)) {
|
||||||
final boolean hasuse = perms.playerHas(player.getName(), world, "use", true);
|
final boolean hasuse = perms.playerHas(player.getName(), world, "use", true);
|
||||||
for (final Entry<Material, String> checkMat : FlagPermissions.getMaterialUseFlagList().entrySet()) {
|
for (final Entry<Material, String> checkMat : FlagPermissions.getMaterialUseFlagList().entrySet()) {
|
||||||
if (mat == checkMat.getKey()) {
|
if (mat == checkMat.getKey()) {
|
||||||
if (!perms.playerHas(player.getName(), world, checkMat.getValue(), hasuse)) {
|
if (!perms.playerHas(player.getName(), world, checkMat.getValue(), hasuse)) {
|
||||||
if (hasuse || checkMat.getValue().equals("container")) {
|
if (hasuse || checkMat.getValue().equals("container")) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", checkMat.getValue()));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", checkMat.getValue()));
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "use"));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "use"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (plugin.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId()))) {
|
if (plugin.getConfigManager().getCustomContainers().contains(block.getTypeId())) {
|
||||||
if (!perms.playerHas(player.getName(), world, "container", hasuse)) {
|
if (!perms.playerHas(player.getName(), world, "container", hasuse)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "container"));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "container"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (plugin.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId()))) {
|
if (plugin.getConfigManager().getCustomBothClick().contains(block.getTypeId())) {
|
||||||
if (!hasuse) {
|
if (!hasuse) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "use"));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "use"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||||
if (plugin.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId()))) {
|
if (plugin.getConfigManager().getCustomRightClick().contains(block.getTypeId())) {
|
||||||
if (!hasuse) {
|
if (!hasuse) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "use"));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "use"));
|
||||||
return;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
public void onPlayerInteractEntity(final PlayerInteractEntityEvent event) {
|
public void onPlayerInteractEntity(final PlayerInteractEntityEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
if (plugin.isResAdminOn(player)) {
|
if (plugin.isResAdminOn(player)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Entity ent = event.getRightClicked();
|
final Entity ent = event.getRightClicked();
|
||||||
/* Trade */
|
/* Trade */
|
||||||
if (ent.getType() == EntityType.VILLAGER) {
|
if (ent.getType() == EntityType.VILLAGER) {
|
||||||
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(event.getPlayer().getLocation());
|
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(event.getPlayer().getLocation());
|
||||||
|
|
||||||
if (res != null && !res.getPermissions().playerHas(player.getName(), "trade", true)) {
|
if (res != null && !res.getPermissions().playerHas(player.getName(), "trade", true)) {
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* Container - ItemFrame protection */
|
||||||
|
final Material heldItem = player.getItemInHand().getType();
|
||||||
|
if (!(ent instanceof Hanging)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final Hanging hanging = (Hanging) ent;
|
||||||
|
if (hanging.getType() != EntityType.ITEM_FRAME) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final FlagPermissions perms = plugin.getPermsByLocForPlayer(ent.getLocation(), player);
|
||||||
|
final String world = player.getWorld().getName();
|
||||||
|
final String permgroup = plugin.getPermissionManager().getGroupNameByPlayer(player);
|
||||||
|
if (!plugin.getItemManager().isAllowed(heldItem, permgroup, world)) {
|
||||||
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ItemBlacklisted"));
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!perms.playerHas(player.getName(), world, "container", perms.playerHas(player.getName(), world, "use", true))) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "container"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Container - ItemFrame protection */
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
final Material heldItem = player.getItemInHand().getType();
|
public void onPlayerJoin(final PlayerJoinEvent event) {
|
||||||
if (!(ent instanceof Hanging)) {
|
final Player player = event.getPlayer();
|
||||||
return;
|
lastUpdate.put(player.getName(), 0L);
|
||||||
}
|
if (plugin.getPermissionManager().isResidenceAdmin(player)) {
|
||||||
final Hanging hanging = (Hanging) ent;
|
plugin.turnResAdminOn(player);
|
||||||
if (hanging.getType() != EntityType.ITEM_FRAME) {
|
}
|
||||||
return;
|
handleNewLocation(player, player.getLocation(), false);
|
||||||
}
|
}
|
||||||
final FlagPermissions perms = plugin.getPermsByLocForPlayer(ent.getLocation(), player);
|
|
||||||
final String world = player.getWorld().getName();
|
|
||||||
final String permgroup = plugin.getPermissionManager().getGroupNameByPlayer(player);
|
|
||||||
if (!plugin.getItemManager().isAllowed(heldItem, permgroup, world)) {
|
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ItemBlacklisted"));
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!perms.playerHas(player.getName(), world, "container", perms.playerHas(player.getName(), world, "use", true))) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "container"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
public void onPlayerJoin(final PlayerJoinEvent event) {
|
public void onPlayerMove(final PlayerMoveEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
lastUpdate.put(player.getName(), 0L);
|
if (player == null) {
|
||||||
if (plugin.getPermissionManager().isResidenceAdmin(player)) {
|
return;
|
||||||
plugin.turnResAdminOn(player);
|
}
|
||||||
}
|
final long now = System.currentTimeMillis();
|
||||||
handleNewLocation(player, player.getLocation(), false);
|
if (!lastUpdate.containsKey(player.getName())) {
|
||||||
}
|
lastUpdate.put(player.getName(), now);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final long last = lastUpdate.get(player.getName());
|
||||||
|
if (now - last < plugin.getConfigManager().getMinMoveUpdateInterval()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lastUpdate.put(player.getName(), now);
|
||||||
|
if (event.getFrom().getWorld() == event.getTo().getWorld()) {
|
||||||
|
if (event.getFrom().distance(event.getTo()) == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
handleNewLocation(player, event.getTo(), true);
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerMove(final PlayerMoveEvent event) {
|
public void onPlayerQuit(final PlayerQuitEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final String pname = event.getPlayer().getName();
|
||||||
if (player == null) {
|
currentRes.remove(pname);
|
||||||
return;
|
lastUpdate.remove(pname);
|
||||||
}
|
lastOutsideLoc.remove(pname);
|
||||||
final long now = System.currentTimeMillis();
|
plugin.getChatManager().removeFromChannel(pname);
|
||||||
if (!lastUpdate.containsKey(player.getName())) {
|
}
|
||||||
lastUpdate.put(player.getName(), now);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final long last = lastUpdate.get(player.getName());
|
|
||||||
if (now - last < plugin.getConfigManager().getMinMoveUpdateInterval()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lastUpdate.put(player.getName(), now);
|
|
||||||
if (event.getFrom().getWorld() == event.getTo().getWorld()) {
|
|
||||||
if (event.getFrom().distance(event.getTo()) == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
handleNewLocation(player, event.getTo(), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
public void onPlayerQuit(final PlayerQuitEvent event) {
|
public void onPlayerSpawn(final PlayerRespawnEvent event) {
|
||||||
final String pname = event.getPlayer().getName();
|
Location loc = event.getRespawnLocation();
|
||||||
currentRes.remove(pname);
|
final Boolean bed = event.isBedSpawn();
|
||||||
lastUpdate.remove(pname);
|
final Player player = event.getPlayer();
|
||||||
lastOutsideLoc.remove(pname);
|
ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc);
|
||||||
plugin.getChatManager().removeFromChannel(pname);
|
if (res == null) {
|
||||||
}
|
return;
|
||||||
|
}
|
||||||
|
if (res.getPermissions().playerHas(player.getName(), "move", true)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (bed) {
|
||||||
|
loc = player.getWorld().getSpawnLocation();
|
||||||
|
}
|
||||||
|
res = plugin.getResidenceManager().getByLoc(loc);
|
||||||
|
if (res != null) {
|
||||||
|
if (!res.getPermissions().playerHas(player.getName(), "move", true)) {
|
||||||
|
loc = res.getOutsideFreeLoc(loc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoSpawn"));
|
||||||
|
event.setRespawnLocation(loc);
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
public void onPlayerSpawn(final PlayerRespawnEvent event) {
|
public void onPlayerTeleport(final PlayerTeleportEvent event) {
|
||||||
Location loc = event.getRespawnLocation();
|
final Location loc = event.getTo();
|
||||||
final Boolean bed = event.isBedSpawn();
|
final Player player = event.getPlayer();
|
||||||
final Player player = event.getPlayer();
|
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc);
|
||||||
ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc);
|
if (res != null) {
|
||||||
if (res == null) {
|
if (plugin.isResAdminOn(player) || ((res.getPermissions().playerHas(player.getName(), "tp", true) || player.hasPermission("residence.admin.tp"))
|
||||||
return;
|
&& (res.getPermissions().playerHas(player.getName(), "move", true) || player.hasPermission("residence.admin.move")))) {
|
||||||
}
|
handleNewLocation(player, loc, false);
|
||||||
if (res.getPermissions().playerHas(player.getName(), "move", true)) {
|
} else {
|
||||||
return;
|
final String areaname = res.getName();
|
||||||
}
|
event.setCancelled(true);
|
||||||
if (bed) {
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny", areaname));
|
||||||
loc = player.getWorld().getSpawnLocation();
|
}
|
||||||
}
|
}
|
||||||
res = plugin.getResidenceManager().getByLoc(loc);
|
}
|
||||||
if (res != null) {
|
|
||||||
if (!res.getPermissions().playerHas(player.getName(), "move", true)) {
|
|
||||||
loc = res.getOutsideFreeLoc(loc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoSpawn"));
|
|
||||||
event.setRespawnLocation(loc);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
public void tooglePlayerResidenceChat(final Player player) {
|
||||||
public void onPlayerTeleport(final PlayerTeleportEvent event) {
|
final String pname = player.getName();
|
||||||
final Location loc = event.getTo();
|
if (playerToggleChat.contains(pname)) {
|
||||||
final Player player = event.getPlayer();
|
playerToggleChat.remove(pname);
|
||||||
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc);
|
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("ResidenceChat", ChatColor.RED + "OFF" + ChatColor.YELLOW + "!"));
|
||||||
if (res != null) {
|
} else {
|
||||||
if (plugin.isResAdminOn(player) || ((res.getPermissions().playerHas(player.getName(), "tp", true) || player.hasPermission("residence.admin.tp"))
|
playerToggleChat.add(pname);
|
||||||
&& (res.getPermissions().playerHas(player.getName(), "move", true) || player.hasPermission("residence.admin.move")))) {
|
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("ResidenceChat", ChatColor.RED + "ON" + ChatColor.YELLOW + "!"));
|
||||||
handleNewLocation(player, loc, false);
|
}
|
||||||
} else {
|
}
|
||||||
final String areaname = res.getName();
|
|
||||||
event.setCancelled(true);
|
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny", areaname));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void tooglePlayerResidenceChat(final Player player) {
|
private boolean isCanUseEntity(final Material mat, final Block block) {
|
||||||
final String pname = player.getName();
|
return isCanUseEntity_BothClick(mat, block) || isCanUseEntity_RClickOnly(mat, block);
|
||||||
if (playerToggleChat.contains(pname)) {
|
}
|
||||||
playerToggleChat.remove(pname);
|
|
||||||
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("ResidenceChat", ChatColor.RED + "OFF" + ChatColor.YELLOW + "!"));
|
|
||||||
} else {
|
|
||||||
playerToggleChat.add(pname);
|
|
||||||
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("ResidenceChat", ChatColor.RED + "ON" + ChatColor.YELLOW + "!"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isCanUseEntity(final Material mat, final Block block) {
|
private boolean isCanUseEntity_BothClick(final Material mat, final Block block) {
|
||||||
return isCanUseEntity_BothClick(mat, block) || isCanUseEntity_RClickOnly(mat, block);
|
return mat == Material.LEVER || mat == Material.STONE_BUTTON || mat == Material.WOOD_BUTTON || mat == Material.WOODEN_DOOR || mat == Material.TRAP_DOOR || mat == Material.FENCE_GATE
|
||||||
}
|
|| mat == Material.PISTON_BASE || mat == Material.PISTON_STICKY_BASE || mat == Material.DRAGON_EGG
|
||||||
|
|| plugin.getConfigManager().getCustomBothClick().contains(block.getTypeId())
|
||||||
|
|| (plugin.isGt1_8() && (mat == Material.SPRUCE_DOOR || mat == Material.BIRCH_DOOR || mat == Material.JUNGLE_DOOR || mat == Material.ACACIA_DOOR || mat == Material.DARK_OAK_DOOR
|
||||||
|
|| mat == Material.SPRUCE_FENCE_GATE || mat == Material.BIRCH_FENCE_GATE || mat == Material.JUNGLE_FENCE_GATE || mat == Material.ACACIA_FENCE_GATE
|
||||||
|
|| mat == Material.DARK_OAK_FENCE_GATE));
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isCanUseEntity_BothClick(final Material mat, final Block block) {
|
private boolean isCanUseEntity_RClickOnly(final Material mat, final Block block) {
|
||||||
return mat == Material.LEVER || mat == Material.STONE_BUTTON || mat == Material.WOOD_BUTTON || mat == Material.WOODEN_DOOR || mat == Material.TRAP_DOOR || mat == Material.FENCE_GATE
|
return mat == Material.ITEM_FRAME || mat == Material.BEACON || mat == Material.FLOWER_POT || mat == Material.COMMAND || mat == Material.ANVIL || mat == Material.CAKE_BLOCK
|
||||||
|| mat == Material.PISTON_BASE || mat == Material.PISTON_STICKY_BASE || mat == Material.DRAGON_EGG
|
|| mat == Material.NOTE_BLOCK || mat == Material.DIODE || mat == Material.DIODE_BLOCK_OFF || mat == Material.DIODE_BLOCK_ON || mat == Material.BED_BLOCK || mat == Material.WORKBENCH
|
||||||
|| plugin.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId()))
|
|| mat == Material.BREWING_STAND || mat == Material.ENCHANTMENT_TABLE || plugin.getConfigManager().getCustomRightClick().contains(block.getTypeId());
|
||||||
|| (plugin.isGt1_8() && (mat == Material.SPRUCE_DOOR || mat == Material.BIRCH_DOOR || mat == Material.JUNGLE_DOOR || mat == Material.ACACIA_DOOR || mat == Material.DARK_OAK_DOOR
|
}
|
||||||
|| mat == Material.SPRUCE_FENCE_GATE || mat == Material.BIRCH_FENCE_GATE || mat == Material.JUNGLE_FENCE_GATE || mat == Material.ACACIA_FENCE_GATE
|
|
||||||
|| mat == Material.DARK_OAK_FENCE_GATE));
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isCanUseEntity_RClickOnly(final Material mat, final Block block) {
|
private boolean isContainer(final Material mat, final Block block) {
|
||||||
return mat == Material.ITEM_FRAME || mat == Material.BEACON || mat == Material.FLOWER_POT || mat == Material.COMMAND || mat == Material.ANVIL || mat == Material.CAKE_BLOCK
|
return FlagPermissions.getMaterialUseFlagList().containsKey(mat) && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container")
|
||||||
|| mat == Material.NOTE_BLOCK || mat == Material.DIODE || mat == Material.DIODE_BLOCK_OFF || mat == Material.DIODE_BLOCK_ON || mat == Material.BED_BLOCK || mat == Material.WORKBENCH
|
|| plugin.getConfigManager().getCustomContainers().contains(block.getTypeId());
|
||||||
|| mat == Material.BREWING_STAND || mat == Material.ENCHANTMENT_TABLE || plugin.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId()));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isContainer(final Material mat, final Block block) {
|
|
||||||
return FlagPermissions.getMaterialUseFlagList().containsKey(mat) && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container")
|
|
||||||
|| plugin.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user