diff --git a/src/main/java/cn/citycraft/Residence/listeners/ResidencePlayerListener.java b/src/main/java/cn/citycraft/Residence/listeners/ResidencePlayerListener.java index d72bd30..b9c3820 100644 --- a/src/main/java/cn/citycraft/Residence/listeners/ResidencePlayerListener.java +++ b/src/main/java/cn/citycraft/Residence/listeners/ResidencePlayerListener.java @@ -504,8 +504,11 @@ public class ResidencePlayerListener implements Listener { final Player player = event.getPlayer(); final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc); if (res != null) { - final String areaname = res.getName(); - if (!plugin.isResAdminOn(player) && !res.getPermissions().playerHas(player.getName(), "tp", true) && !player.hasPermission("residence.admin.tp")) { + if (plugin.isResAdminOn(player) || ((res.getPermissions().playerHas(player.getName(), "tp", true) || player.hasPermission("residence.admin.tp")) + && (res.getPermissions().playerHas(player.getName(), "move", true) || player.hasPermission("residence.admin.move")))) { + handleNewLocation(player, loc, false); + } else { + final String areaname = res.getName(); event.setCancelled(true); player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny", areaname)); return;