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> <modelVersion>4.0.0</modelVersion>
<groupId>cn.citycraft</groupId> <groupId>cn.citycraft</groupId>
<artifactId>Residence</artifactId> <artifactId>Residence</artifactId>
<version>2.8.1.3</version> <version>2.8.1.4</version>
<name>Residence</name> <name>Residence</name>
<description>重制版本的领地插件 - 喵♂呜</description> <description>重制版本的领地插件 - 喵♂呜</description>
<build> <build>
@@ -38,7 +38,7 @@
<relocations> <relocations>
<relocation> <relocation>
<pattern>cn.citycraft.PluginHelper</pattern> <pattern>cn.citycraft.PluginHelper</pattern>
<shadedPattern>com.bekvon.bukkit.residence</shadedPattern> <shadedPattern>${project.groupId}.${project.artifactId}</shadedPattern>
</relocation> </relocation>
</relocations> </relocations>
</configuration> </configuration>
@@ -55,7 +55,8 @@
</build> </build>
<properties> <properties>
<jenkins.url>http://ci.citycraft.cn:8080</jenkins.url> <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> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<repositories> <repositories>

View File

@@ -34,7 +34,6 @@ import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.bekvon.bukkit.residence.event.ResidenceChangedEvent; import com.bekvon.bukkit.residence.event.ResidenceChangedEvent;
@@ -105,8 +104,6 @@ public class ResidencePlayerListener implements Listener {
lastOutsideLoc.put(pname, loc); lastOutsideLoc.put(pname, loc);
if (ResOld != null) { if (ResOld != null) {
final String leave = ResOld.getLeaveMessage(); final String leave = ResOld.getLeaveMessage();
// New ResidenceChangeEvent
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);
@@ -114,7 +111,7 @@ public class ResidencePlayerListener implements Listener {
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 + this.insertMessages(player, ResOld.getName(), ResOld, leave)); player.sendMessage(ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave));
} }
} }
currentRes.remove(pname); currentRes.remove(pname);
@@ -122,17 +119,16 @@ public class ResidencePlayerListener implements Listener {
} }
return; return;
} }
if (move) { if (move && !res.getPermissions().playerHas(pname, "move", true) && !plugin.isResAdminOn(player) && !player.hasPermission("residence.admin.move")
if (!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]));
return;
} }
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceMoveDeny", res.getName().split("\\.")[res.getName().split("\\.").length - 1]));
return;
} }
lastOutsideLoc.put(pname, loc); lastOutsideLoc.put(pname, loc);
if (!currentRes.containsKey(pname) || ResOld != res) { if (!currentRes.containsKey(pname) || ResOld != res) {
@@ -140,8 +136,6 @@ public class ResidencePlayerListener implements Listener {
if (subzone == null) { if (subzone == null) {
chatchange = true; chatchange = true;
} }
// "from" residence for ResidenceChangedEvent
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();
@@ -151,13 +145,11 @@ public class ResidencePlayerListener implements Listener {
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 + this.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();
// New ResidenceChangedEvent
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);
@@ -165,7 +157,7 @@ public class ResidencePlayerListener implements Listener {
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 + 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) { public void onPlayerTeleport(final PlayerTeleportEvent event) {
final Location loc = event.getTo(); final Location loc = event.getTo();
final Player player = event.getPlayer(); final Player player = event.getPlayer();
if (plugin.isResAdminOn(player)) {
handleNewLocation(player, loc, false);
return;
}
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc); 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) {
if (res != null) { final String areaname = res.getName();
final String areaname = plugin.getResidenceManager().getNameByLoc(loc); if (!plugin.isResAdminOn(player) && !res.getPermissions().playerHas(player.getName(), "tp", true) && !player.hasPermission("residence.admin.tp")) {
if (!res.getPermissions().playerHas(player.getName(), "move", true)) { event.setCancelled(true);
event.setCancelled(true); player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny", areaname));
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceMoveDeny", areaname)); return;
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) { public void tooglePlayerResidenceChat(final Player player) {

View File

@@ -21,8 +21,8 @@ import com.bekvon.bukkit.residence.event.ResidenceTPEvent;
import cn.citycraft.Residence.ResidenceMain; import cn.citycraft.Residence.ResidenceMain;
import cn.citycraft.Residence.economy.ResidenceBank; import cn.citycraft.Residence.economy.ResidenceBank;
import cn.citycraft.Residence.economy.TransactionManager; import cn.citycraft.Residence.economy.TransactionManager;
import cn.citycraft.Residence.itemlist.ResidenceItemList;
import cn.citycraft.Residence.itemlist.ItemList.ListType; import cn.citycraft.Residence.itemlist.ItemList.ListType;
import cn.citycraft.Residence.itemlist.ResidenceItemList;
import cn.citycraft.Residence.permissions.PermissionGroup; import cn.citycraft.Residence.permissions.PermissionGroup;
import cn.citycraft.Residence.text.help.InformationPager; import cn.citycraft.Residence.text.help.InformationPager;
@@ -128,7 +128,7 @@ public class ClaimedResidence {
} }
return false; return false;
} }
if (!resadmin && plugin.getConfigManager().getEnforceAreaInsideArea() && this.getParent() == null) { if (!resadmin && plugin.getConfigManager().getEnforceAreaInsideArea() && getParent() == null) {
boolean inside = false; boolean inside = false;
for (final CuboidArea are : areas.values()) { for (final CuboidArea are : areas.values()) {
if (are.isAreaWithinArea(area)) { if (are.isAreaWithinArea(area)) {
@@ -234,7 +234,7 @@ public class ClaimedResidence {
} }
return false; return false;
} }
if (!(this.containsLoc(loc1) && this.containsLoc(loc2))) { if (!(containsLoc(loc1) && containsLoc(loc2))) {
if (player != null) { if (player != null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneSelectInside")); player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneSelectInside"));
} }
@@ -254,7 +254,7 @@ public class ClaimedResidence {
} }
} }
final PermissionGroup group = plugin.getPermissionManager().getGroup(player); final PermissionGroup group = plugin.getPermissionManager().getGroup(player);
if (this.getZoneDepth() >= group.getMaxSubzoneDepth()) { if (getZoneDepth() >= group.getMaxSubzoneDepth()) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneMaxDepth")); player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneMaxDepth"));
return false; return false;
} }
@@ -404,7 +404,7 @@ public class ClaimedResidence {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public Location getOutsideFreeLoc(final Location insideLoc) { public Location getOutsideFreeLoc(final Location insideLoc) {
final int maxIt = 100; final int maxIt = 100;
final CuboidArea area = this.getAreaByLoc(insideLoc); final CuboidArea area = getAreaByLoc(insideLoc);
if (area == null) { if (area == null) {
return insideLoc; return insideLoc;
} }
@@ -453,7 +453,7 @@ public class ClaimedResidence {
public ArrayList<Player> getPlayersInResidence() { public ArrayList<Player> getPlayersInResidence() {
final ArrayList<Player> within = new ArrayList<Player>(); final ArrayList<Player> within = new ArrayList<Player>();
for (final Player player : Bukkit.getServer().getOnlinePlayers()) { for (final Player player : Bukkit.getServer().getOnlinePlayers()) {
if (this.containsLoc(player.getLocation())) { if (containsLoc(player.getLocation())) {
within.add(player); within.add(player);
} }
} }
@@ -627,7 +627,7 @@ public class ClaimedResidence {
public void removeArea(final Player player, final String id, final boolean resadmin) { 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)) { if (!areas.containsKey(id)) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaNonExist")); player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaNonExist"));
return; return;
@@ -893,9 +893,9 @@ public class ClaimedResidence {
return; return;
} }
if (enter) { if (enter) {
this.setEnterMessage(message); setEnterMessage(message);
} else { } else {
this.setLeaveMessage(message); setLeaveMessage(message);
} }
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("MessageChange")); player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("MessageChange"));
} }
@@ -913,7 +913,7 @@ public class ClaimedResidence {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
return; return;
} }
if (!this.containsLoc(player.getLocation())) { if (!containsLoc(player.getLocation())) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotInResidence")); player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotInResidence"));
return; return;
} }
@@ -922,7 +922,7 @@ public class ClaimedResidence {
} }
public void tpToResidence(final Player reqPlayer, final Player targetPlayer, final boolean resadmin) { 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); final PermissionGroup group = plugin.getPermissionManager().getGroup(reqPlayer);
if (!group.hasTpAccess()) { if (!group.hasTpAccess()) {
reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny")); reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny"));
@@ -947,10 +947,10 @@ public class ClaimedResidence {
} else { } else {
final CuboidArea area = areas.values().iterator().next(); final CuboidArea area = areas.values().iterator().next();
if (area == null) { if (area == null) {
reqPlayer.sendMessage(ChatColor.RED + "Could not find area to teleport to..."); reqPlayer.sendMessage(ChatColor.RED + "未找到可传送的区域...");
return; return;
} }
final Location targloc = this.getOutsideFreeLoc(area.getHighLoc()); final Location targloc = getOutsideFreeLoc(area.getHighLoc());
final ResidenceTPEvent tpevent = new ResidenceTPEvent(this, targloc, targetPlayer, reqPlayer); final ResidenceTPEvent tpevent = new ResidenceTPEvent(this, targloc, targetPlayer, reqPlayer);
Bukkit.getServer().getPluginManager().callEvent(tpevent); Bukkit.getServer().getPluginManager().callEvent(tpevent);
if (!tpevent.isCancelled()) { if (!tpevent.isCancelled()) {