diff --git a/pom.xml b/pom.xml index 92824d7..67ee9a6 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 cn.citycraft Residence - 2.8.1.3 + 2.8.1.4 Residence 重制版本的领地插件 - 喵♂呜 @@ -38,7 +38,7 @@ cn.citycraft.PluginHelper - com.bekvon.bukkit.residence + ${project.groupId}.${project.artifactId} @@ -55,7 +55,8 @@ http://ci.citycraft.cn:8080 - &d修复补丁导致的刷物品BUG... + &c修复领地管理无法TP的问题... + Debug UTF-8 diff --git a/src/main/java/cn/citycraft/Residence/listeners/ResidencePlayerListener.java b/src/main/java/cn/citycraft/Residence/listeners/ResidencePlayerListener.java index 8b925e0..d72bd30 100644 --- a/src/main/java/cn/citycraft/Residence/listeners/ResidencePlayerListener.java +++ b/src/main/java/cn/citycraft/Residence/listeners/ResidencePlayerListener.java @@ -34,7 +34,6 @@ import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerTeleportEvent; -import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.plugin.Plugin; import com.bekvon.bukkit.residence.event.ResidenceChangedEvent; @@ -105,8 +104,6 @@ public class ResidencePlayerListener implements Listener { lastOutsideLoc.put(pname, loc); if (ResOld != null) { final String leave = ResOld.getLeaveMessage(); - - // New ResidenceChangeEvent final ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(ResOld, null, player); plugin.getServer().getPluginManager().callEvent(chgEvent); @@ -114,7 +111,7 @@ public class ResidencePlayerListener implements Listener { if (plugin.getConfigManager().useActionBar()) { ActionBar.send(player, ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave)); } else { - player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, ResOld.getName(), ResOld, leave)); + player.sendMessage(ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave)); } } currentRes.remove(pname); @@ -122,17 +119,16 @@ public class ResidencePlayerListener implements Listener { } return; } - if (move) { - if (!res.getPermissions().playerHas(pname, "move", true) && !plugin.isResAdminOn(player) && !player.hasPermission("residence.admin.move")) { - final Location lastLoc = lastOutsideLoc.get(pname); - if (lastLoc != null) { - player.teleport(lastLoc); - } else { - player.teleport(res.getOutsideFreeLoc(loc)); - } - player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceMoveDeny", res.getName().split("\\.")[res.getName().split("\\.").length - 1])); - return; + 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); + if (lastLoc != null) { + player.teleport(lastLoc); + } else { + player.teleport(res.getOutsideFreeLoc(loc)); } + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceMoveDeny", res.getName().split("\\.")[res.getName().split("\\.").length - 1])); + return; } lastOutsideLoc.put(pname, loc); if (!currentRes.containsKey(pname) || ResOld != res) { @@ -140,8 +136,6 @@ public class ResidencePlayerListener implements Listener { if (subzone == null) { chatchange = true; } - - // "from" residence for ResidenceChangedEvent ClaimedResidence chgFrom = null; if (ResOld != res && ResOld != null) { final String leave = ResOld.getLeaveMessage(); @@ -151,13 +145,11 @@ public class ResidencePlayerListener implements Listener { if (plugin.getConfigManager().useActionBar()) { ActionBar.send(player, ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave)); } else { - player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, ResOld.getName(), ResOld, leave)); + player.sendMessage(ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave)); } } } final String enterMessage = res.getEnterMessage(); - - // New ResidenceChangedEvent final ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(chgFrom, res, player); plugin.getServer().getPluginManager().callEvent(chgEvent); @@ -165,7 +157,7 @@ public class ResidencePlayerListener implements Listener { if (plugin.getConfigManager().useActionBar()) { ActionBar.send(player, ChatColor.YELLOW + insertMessages(player, areaname, res, enterMessage)); } else { - player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, areaname, res, enterMessage)); + player.sendMessage(ChatColor.YELLOW + insertMessages(player, areaname, res, enterMessage)); } } } @@ -510,34 +502,15 @@ public class ResidencePlayerListener implements Listener { public void onPlayerTeleport(final PlayerTeleportEvent event) { final Location loc = event.getTo(); final Player player = event.getPlayer(); - - if (plugin.isResAdminOn(player)) { - handleNewLocation(player, loc, false); - return; - } - final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc); - if (event.getCause() == TeleportCause.ENDER_PEARL || event.getCause() == TeleportCause.COMMAND || event.getCause() == TeleportCause.NETHER_PORTAL) { - if (res != null) { - final String areaname = plugin.getResidenceManager().getNameByLoc(loc); - if (!res.getPermissions().playerHas(player.getName(), "move", true)) { - event.setCancelled(true); - player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceMoveDeny", areaname)); - return; - } + if (res != null) { + final String areaname = res.getName(); + if (!plugin.isResAdminOn(player) && !res.getPermissions().playerHas(player.getName(), "tp", true) && !player.hasPermission("residence.admin.tp")) { + event.setCancelled(true); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny", areaname)); + return; } } - if (event.getCause() == TeleportCause.PLUGIN) { - if (res != null) { - final String areaname = plugin.getResidenceManager().getNameByLoc(loc); - if (!res.getPermissions().playerHas(player.getName(), "tp", true) && !player.hasPermission("residence.admin.tp")) { - event.setCancelled(true); - player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny", areaname)); - return; - } - } - } - handleNewLocation(player, loc, false); } public void tooglePlayerResidenceChat(final Player player) { diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java b/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java index d1142d2..092e4c0 100644 --- a/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java +++ b/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java @@ -21,8 +21,8 @@ import com.bekvon.bukkit.residence.event.ResidenceTPEvent; import cn.citycraft.Residence.ResidenceMain; import cn.citycraft.Residence.economy.ResidenceBank; import cn.citycraft.Residence.economy.TransactionManager; -import cn.citycraft.Residence.itemlist.ResidenceItemList; import cn.citycraft.Residence.itemlist.ItemList.ListType; +import cn.citycraft.Residence.itemlist.ResidenceItemList; import cn.citycraft.Residence.permissions.PermissionGroup; import cn.citycraft.Residence.text.help.InformationPager; @@ -128,7 +128,7 @@ public class ClaimedResidence { } return false; } - if (!resadmin && plugin.getConfigManager().getEnforceAreaInsideArea() && this.getParent() == null) { + if (!resadmin && plugin.getConfigManager().getEnforceAreaInsideArea() && getParent() == null) { boolean inside = false; for (final CuboidArea are : areas.values()) { if (are.isAreaWithinArea(area)) { @@ -234,7 +234,7 @@ public class ClaimedResidence { } return false; } - if (!(this.containsLoc(loc1) && this.containsLoc(loc2))) { + if (!(containsLoc(loc1) && containsLoc(loc2))) { if (player != null) { player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneSelectInside")); } @@ -254,7 +254,7 @@ public class ClaimedResidence { } } final PermissionGroup group = plugin.getPermissionManager().getGroup(player); - if (this.getZoneDepth() >= group.getMaxSubzoneDepth()) { + if (getZoneDepth() >= group.getMaxSubzoneDepth()) { player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneMaxDepth")); return false; } @@ -404,7 +404,7 @@ public class ClaimedResidence { @SuppressWarnings("deprecation") public Location getOutsideFreeLoc(final Location insideLoc) { final int maxIt = 100; - final CuboidArea area = this.getAreaByLoc(insideLoc); + final CuboidArea area = getAreaByLoc(insideLoc); if (area == null) { return insideLoc; } @@ -453,7 +453,7 @@ public class ClaimedResidence { public ArrayList getPlayersInResidence() { final ArrayList within = new ArrayList(); for (final Player player : Bukkit.getServer().getOnlinePlayers()) { - if (this.containsLoc(player.getLocation())) { + if (containsLoc(player.getLocation())) { within.add(player); } } @@ -627,7 +627,7 @@ public class ClaimedResidence { public void removeArea(final Player player, final String id, final boolean resadmin) { - if (this.getPermissions().hasResidencePermission(player, true) || resadmin) { + if (getPermissions().hasResidencePermission(player, true) || resadmin) { if (!areas.containsKey(id)) { player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaNonExist")); return; @@ -893,9 +893,9 @@ public class ClaimedResidence { return; } if (enter) { - this.setEnterMessage(message); + setEnterMessage(message); } else { - this.setLeaveMessage(message); + setLeaveMessage(message); } player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("MessageChange")); } @@ -913,7 +913,7 @@ public class ClaimedResidence { player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return; } - if (!this.containsLoc(player.getLocation())) { + if (!containsLoc(player.getLocation())) { player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotInResidence")); return; } @@ -922,7 +922,7 @@ public class ClaimedResidence { } public void tpToResidence(final Player reqPlayer, final Player targetPlayer, final boolean resadmin) { - if (!resadmin) { + if (!resadmin && !reqPlayer.hasPermission("residence.admin.tp")) { final PermissionGroup group = plugin.getPermissionManager().getGroup(reqPlayer); if (!group.hasTpAccess()) { reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny")); @@ -947,10 +947,10 @@ public class ClaimedResidence { } else { final CuboidArea area = areas.values().iterator().next(); if (area == null) { - reqPlayer.sendMessage(ChatColor.RED + "Could not find area to teleport to..."); + reqPlayer.sendMessage(ChatColor.RED + "未找到可传送的区域..."); return; } - final Location targloc = this.getOutsideFreeLoc(area.getHighLoc()); + final Location targloc = getOutsideFreeLoc(area.getHighLoc()); final ResidenceTPEvent tpevent = new ResidenceTPEvent(this, targloc, targetPlayer, reqPlayer); Bukkit.getServer().getPluginManager().callEvent(tpevent); if (!tpevent.isCancelled()) {