1
0
mirror of https://e.coding.net/circlecloud/Residence.git synced 2025-11-24 21:46:16 +00:00

修复领地管理无法TP的问题...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092
2015-12-08 21:01:00 +08:00
parent a9850013f3
commit 437118aef4
3 changed files with 35 additions and 61 deletions

View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>cn.citycraft</groupId>
<artifactId>Residence</artifactId>
<version>2.8.1.3</version>
<version>2.8.1.4</version>
<name>Residence</name>
<description>重制版本的领地插件 - 喵♂呜</description>
<build>
@@ -38,7 +38,7 @@
<relocations>
<relocation>
<pattern>cn.citycraft.PluginHelper</pattern>
<shadedPattern>com.bekvon.bukkit.residence</shadedPattern>
<shadedPattern>${project.groupId}.${project.artifactId}</shadedPattern>
</relocation>
</relocations>
</configuration>
@@ -55,7 +55,8 @@
</build>
<properties>
<jenkins.url>http://ci.citycraft.cn:8080</jenkins.url>
<update.description>&amp;d修复补丁导致的刷物品BUG...</update.description>
<update.description>&amp;c修复领地管理无法TP的问题...</update.description>
<env.BUILD_NUMBER>Debug</env.BUILD_NUMBER>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>

View File

@@ -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,8 +119,8 @@ public class ResidencePlayerListener implements Listener {
}
return;
}
if (move) {
if (!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);
if (lastLoc != null) {
player.teleport(lastLoc);
@@ -133,15 +130,12 @@ public class ResidencePlayerListener implements Listener {
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) {
currentRes.put(pname, areaname);
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,35 +502,16 @@ 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 (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")) {
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;
}
}
}
handleNewLocation(player, loc, false);
}
public void tooglePlayerResidenceChat(final Player player) {
final String pname = player.getName();

View File

@@ -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<Player> getPlayersInResidence() {
final ArrayList<Player> within = new ArrayList<Player>();
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()) {