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;
|
||||||
@@ -63,10 +62,10 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
|
|
||||||
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()) {
|
||||||
@@ -119,8 +118,7 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
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);
|
||||||
@@ -362,14 +360,14 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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"));
|
||||||
@@ -377,11 +375,10 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -406,7 +403,6 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Container - ItemFrame protection */
|
/* Container - ItemFrame protection */
|
||||||
final Material heldItem = player.getItemInHand().getType();
|
final Material heldItem = player.getItemInHand().getType();
|
||||||
if (!(ent instanceof Hanging)) {
|
if (!(ent instanceof Hanging)) {
|
||||||
@@ -511,7 +507,6 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
final String areaname = res.getName();
|
final String areaname = res.getName();
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny", areaname));
|
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny", areaname));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -534,7 +529,7 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
private boolean isCanUseEntity_BothClick(final Material mat, final Block block) {
|
private boolean isCanUseEntity_BothClick(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.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
|
|| mat == Material.PISTON_BASE || mat == Material.PISTON_STICKY_BASE || mat == Material.DRAGON_EGG
|
||||||
|| plugin.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId()))
|
|| 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
|
|| (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.SPRUCE_FENCE_GATE || mat == Material.BIRCH_FENCE_GATE || mat == Material.JUNGLE_FENCE_GATE || mat == Material.ACACIA_FENCE_GATE
|
||||||
|| mat == Material.DARK_OAK_FENCE_GATE));
|
|| mat == Material.DARK_OAK_FENCE_GATE));
|
||||||
@@ -543,11 +538,11 @@ public class ResidencePlayerListener implements Listener {
|
|||||||
private boolean isCanUseEntity_RClickOnly(final Material mat, final Block block) {
|
private boolean isCanUseEntity_RClickOnly(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 mat == Material.ITEM_FRAME || mat == Material.BEACON || mat == Material.FLOWER_POT || mat == Material.COMMAND || mat == Material.ANVIL || mat == Material.CAKE_BLOCK
|
||||||
|| mat == Material.NOTE_BLOCK || mat == Material.DIODE || mat == Material.DIODE_BLOCK_OFF || mat == Material.DIODE_BLOCK_ON || mat == Material.BED_BLOCK || mat == Material.WORKBENCH
|
|| mat == Material.NOTE_BLOCK || mat == Material.DIODE || mat == Material.DIODE_BLOCK_OFF || mat == Material.DIODE_BLOCK_ON || mat == Material.BED_BLOCK || mat == Material.WORKBENCH
|
||||||
|| mat == Material.BREWING_STAND || mat == Material.ENCHANTMENT_TABLE || plugin.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId()));
|
|| mat == Material.BREWING_STAND || mat == Material.ENCHANTMENT_TABLE || plugin.getConfigManager().getCustomRightClick().contains(block.getTypeId());
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isContainer(final Material mat, final Block block) {
|
private boolean isContainer(final Material mat, final Block block) {
|
||||||
return FlagPermissions.getMaterialUseFlagList().containsKey(mat) && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container")
|
return FlagPermissions.getMaterialUseFlagList().containsKey(mat) && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container")
|
||||||
|| plugin.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId()));
|
|| plugin.getConfigManager().getCustomContainers().contains(block.getTypeId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import cn.citycraft.Residence.text.help.InformationPager;
|
|||||||
public class ClaimedResidence {
|
public class ClaimedResidence {
|
||||||
|
|
||||||
protected Map<String, CuboidArea> areas;
|
protected Map<String, CuboidArea> areas;
|
||||||
|
|
||||||
protected ResidenceBank bank;
|
protected ResidenceBank bank;
|
||||||
protected ResidenceItemList blacklist;
|
protected ResidenceItemList blacklist;
|
||||||
protected String enterMessage;
|
protected String enterMessage;
|
||||||
@@ -62,8 +61,8 @@ public class ClaimedResidence {
|
|||||||
|
|
||||||
private ClaimedResidence(final ResidenceMain plugin) {
|
private ClaimedResidence(final ResidenceMain plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
subzones = new HashMap<String, ClaimedResidence>();
|
subzones = new HashMap<>();
|
||||||
areas = new HashMap<String, CuboidArea>();
|
areas = new HashMap<>();
|
||||||
bank = new ResidenceBank(plugin, this);
|
bank = new ResidenceBank(plugin, this);
|
||||||
blacklist = new ResidenceItemList(plugin, this, ListType.BLACKLIST);
|
blacklist = new ResidenceItemList(plugin, this, ListType.BLACKLIST);
|
||||||
ignorelist = new ResidenceItemList(plugin, this, ListType.IGNORELIST);
|
ignorelist = new ResidenceItemList(plugin, this, ListType.IGNORELIST);
|
||||||
@@ -451,7 +450,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<>();
|
||||||
for (final Player player : Bukkit.getServer().getOnlinePlayers()) {
|
for (final Player player : Bukkit.getServer().getOnlinePlayers()) {
|
||||||
if (containsLoc(player.getLocation())) {
|
if (containsLoc(player.getLocation())) {
|
||||||
within.add(player);
|
within.add(player);
|
||||||
@@ -500,7 +499,7 @@ public class ClaimedResidence {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String[] getSubzoneList() {
|
public String[] getSubzoneList() {
|
||||||
final ArrayList<String> zones = new ArrayList<String>();
|
final ArrayList<String> zones = new ArrayList<>();
|
||||||
final Set<String> set = subzones.keySet();
|
final Set<String> set = subzones.keySet();
|
||||||
for (final String key : set) {
|
for (final String key : set) {
|
||||||
if (key != null) {
|
if (key != null) {
|
||||||
@@ -589,7 +588,7 @@ public class ClaimedResidence {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void printAdvancedAreaList(final Player player, final int page) {
|
public void printAdvancedAreaList(final Player player, final int page) {
|
||||||
final ArrayList<String> temp = new ArrayList<String>();
|
final ArrayList<String> temp = new ArrayList<>();
|
||||||
for (final Entry<String, CuboidArea> entry : areas.entrySet()) {
|
for (final Entry<String, CuboidArea> entry : areas.entrySet()) {
|
||||||
final CuboidArea a = entry.getValue();
|
final CuboidArea a = entry.getValue();
|
||||||
final Location h = a.getHighLoc();
|
final Location h = a.getHighLoc();
|
||||||
@@ -602,7 +601,7 @@ public class ClaimedResidence {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void printAreaList(final Player player, final int page) {
|
public void printAreaList(final Player player, final int page) {
|
||||||
final ArrayList<String> temp = new ArrayList<String>();
|
final ArrayList<String> temp = new ArrayList<>();
|
||||||
for (final String area : areas.keySet()) {
|
for (final String area : areas.keySet()) {
|
||||||
temp.add(area);
|
temp.add(area);
|
||||||
}
|
}
|
||||||
@@ -610,7 +609,7 @@ public class ClaimedResidence {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void printSubzoneList(final Player player, final int page) {
|
public void printSubzoneList(final Player player, final int page) {
|
||||||
final ArrayList<String> temp = new ArrayList<String>();
|
final ArrayList<String> temp = new ArrayList<>();
|
||||||
for (final Entry<String, ClaimedResidence> sz : subzones.entrySet()) {
|
for (final Entry<String, ClaimedResidence> sz : subzones.entrySet()) {
|
||||||
temp.add(ChatColor.GREEN + sz.getKey() + ChatColor.YELLOW + " - " + plugin.getLanguage().getPhrase("Owner") + ": " + sz.getValue().getOwner());
|
temp.add(ChatColor.GREEN + sz.getKey() + ChatColor.YELLOW + " - " + plugin.getLanguage().getPhrase("Owner") + ": " + sz.getValue().getOwner());
|
||||||
}
|
}
|
||||||
@@ -850,8 +849,8 @@ public class ClaimedResidence {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Object> save() {
|
public Map<String, Object> save() {
|
||||||
final Map<String, Object> root = new HashMap<String, Object>();
|
final Map<String, Object> root = new HashMap<>();
|
||||||
final Map<String, Object> areamap = new HashMap<String, Object>();
|
final Map<String, Object> areamap = new HashMap<>();
|
||||||
root.put("EnterMessage", enterMessage);
|
root.put("EnterMessage", enterMessage);
|
||||||
root.put("LeaveMessage", leaveMessage);
|
root.put("LeaveMessage", leaveMessage);
|
||||||
root.put("StoredMoney", bank.getStoredMoney());
|
root.put("StoredMoney", bank.getStoredMoney());
|
||||||
@@ -861,14 +860,14 @@ public class ClaimedResidence {
|
|||||||
areamap.put(entry.getKey(), entry.getValue().save());
|
areamap.put(entry.getKey(), entry.getValue().save());
|
||||||
}
|
}
|
||||||
root.put("Areas", areamap);
|
root.put("Areas", areamap);
|
||||||
final Map<String, Object> subzonemap = new HashMap<String, Object>();
|
final Map<String, Object> subzonemap = new HashMap<>();
|
||||||
for (final Entry<String, ClaimedResidence> sz : subzones.entrySet()) {
|
for (final Entry<String, ClaimedResidence> sz : subzones.entrySet()) {
|
||||||
subzonemap.put(sz.getKey(), sz.getValue().save());
|
subzonemap.put(sz.getKey(), sz.getValue().save());
|
||||||
}
|
}
|
||||||
root.put("Subzones", subzonemap);
|
root.put("Subzones", subzonemap);
|
||||||
root.put("Permissions", perms.save());
|
root.put("Permissions", perms.save());
|
||||||
if (tpLoc != null) {
|
if (tpLoc != null) {
|
||||||
final Map<String, Object> tpmap = new HashMap<String, Object>();
|
final Map<String, Object> tpmap = new HashMap<>();
|
||||||
tpmap.put("X", tpLoc.getBlockX());
|
tpmap.put("X", tpLoc.getBlockX());
|
||||||
tpmap.put("Y", tpLoc.getBlockY());
|
tpmap.put("Y", tpLoc.getBlockY());
|
||||||
tpmap.put("Z", tpLoc.getBlockZ());
|
tpmap.put("Z", tpLoc.getBlockZ());
|
||||||
@@ -922,7 +921,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 && !reqPlayer.hasPermission("residence.admin.tp")) {
|
if (!resadmin && !(reqPlayer.hasPermission("residence.admin.tp") && reqPlayer.hasPermission("residence.admin.move"))) {
|
||||||
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"));
|
||||||
@@ -932,7 +931,7 @@ public class ClaimedResidence {
|
|||||||
reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
|
reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!this.perms.playerHas(reqPlayer.getName(), "tp", true)) {
|
if (!this.perms.playerHas(reqPlayer.getName(), "tp", true) || !this.perms.playerHas(reqPlayer.getName(), "move", true)) {
|
||||||
reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportNoFlag"));
|
reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportNoFlag"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user