1
0
mirror of https://e.coding.net/circlecloud/Residence.git synced 2025-11-25 21:56:06 +00:00

重构代码 尝试兼容172...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092
2016-01-09 13:11:07 +08:00
parent 199bc608fa
commit ffd4076549
113 changed files with 9350 additions and 9365 deletions

View File

@@ -27,117 +27,117 @@ import cn.citycraft.Residence.text.Language;
import cn.citycraft.Residence.text.help.HelpEntry;
public class Residence {
static ResidenceMain instance;
static ResidenceMain instance;
public Residence(final ResidenceMain instance) {
Residence.instance = instance;
}
public Residence(final ResidenceMain instance) {
Residence.instance = instance;
}
public static ChatManager getChatManager() {
return instance.getChatManager();
}
public static ChatManager getChatManager() {
return instance.getChatManager();
}
public static ConfigManager getConfigManager() {
return instance.getConfigManager();
}
public static ConfigManager getConfigManager() {
return instance.getConfigManager();
}
public static File getDataLocation() {
return instance.getDataFolder();
}
public static File getDataLocation() {
return instance.getDataFolder();
}
public static Map<String, String> getDeleteConfirm() {
return instance.getDeleteConfirm();
}
public static Map<String, String> getDeleteConfirm() {
return instance.getDeleteConfirm();
}
public static EconomyInterface getEconomyManager() {
return instance.getEconomyManager();
}
public static EconomyInterface getEconomyManager() {
return instance.getEconomyManager();
}
public static EntityManager getEntityManager() {
return instance.getEntityManager();
}
public static EntityManager getEntityManager() {
return instance.getEntityManager();
}
public static HelpEntry getHelppages() {
return instance.getHelppages();
}
public static HelpEntry getHelppages() {
return instance.getHelppages();
}
public static WorldItemManager getItemManager() {
return instance.getItemManager();
}
public static WorldItemManager getItemManager() {
return instance.getItemManager();
}
public static Language getLanguage() {
if (instance.getLanguage() == null) {
instance.setLanguage(new Language());
}
return instance.getLanguage();
}
public static Language getLanguage() {
if (instance.getLanguage() == null) {
instance.setLanguage(new Language());
}
return instance.getLanguage();
}
public static LeaseManager getLeaseManager() {
return instance.getLeaseManager();
}
public static LeaseManager getLeaseManager() {
return instance.getLeaseManager();
}
public static PermissionListManager getPermissionListManager() {
return instance.getPermissionListManager();
}
public static PermissionListManager getPermissionListManager() {
return instance.getPermissionListManager();
}
public static PermissionManager getPermissionManager() {
return instance.getPermissionManager();
}
public static PermissionManager getPermissionManager() {
return instance.getPermissionManager();
}
public static FlagPermissions getPermsByLoc(final Location loc) {
final ClaimedResidence res = getResidenceManager().getByLoc(loc);
if (res != null) {
return res.getPermissions();
}
return getWorldFlags().getPerms(loc.getWorld().getName());
}
public static FlagPermissions getPermsByLoc(final Location loc) {
final ClaimedResidence res = getResidenceManager().getByLoc(loc);
if (res != null) {
return res.getPermissions();
}
return getWorldFlags().getPerms(loc.getWorld().getName());
}
public static FlagPermissions getPermsByLocForPlayer(final Location loc, final Player player) {
final ClaimedResidence res = getResidenceManager().getByLoc(loc);
if (res != null) {
return res.getPermissions();
} else if (player != null) {
return getWorldFlags().getPerms(player);
} else {
return getWorldFlags().getPerms(loc.getWorld().getName());
}
}
public static FlagPermissions getPermsByLocForPlayer(final Location loc, final Player player) {
final ClaimedResidence res = getResidenceManager().getByLoc(loc);
if (res != null) {
return res.getPermissions();
} else if (player != null) {
return getWorldFlags().getPerms(player);
} else {
return getWorldFlags().getPerms(loc.getWorld().getName());
}
}
public static RentManager getRentManager() {
return instance.getRentManager();
}
public static RentManager getRentManager() {
return instance.getRentManager();
}
public static ResidenceManager getResidenceManager() {
return instance.getResidenceManager();
}
public static ResidenceManager getResidenceManager() {
return instance.getResidenceManager();
}
public static SelectionManager getSelectionManager() {
return instance.getSelectionManager();
}
public static SelectionManager getSelectionManager() {
return instance.getSelectionManager();
}
public static TransactionManager getTransactionManager() {
return instance.getTransactionManager();
}
public static TransactionManager getTransactionManager() {
return instance.getTransactionManager();
}
public static WorldFlagManager getWorldFlags() {
return instance.getWorldFlags();
}
public static WorldFlagManager getWorldFlags() {
return instance.getWorldFlags();
}
public static boolean isResAdminOn(final Player player) {
if (instance.getResadminToggle().contains(player.getName())) {
return true;
}
return false;
}
public static boolean isResAdminOn(final Player player) {
if (instance.getResadminToggle().contains(player.getName())) {
return true;
}
return false;
}
public static boolean isResAdminOn(final String player) {
if (instance.getResadminToggle().contains(player.toLowerCase())) {
return true;
}
return false;
}
public static boolean isResAdminOn(final String player) {
if (instance.getResadminToggle().contains(player.toLowerCase())) {
return true;
}
return false;
}
public static boolean isUseWorldEdit() {
return instance.isUseWorldEdit();
}
public static boolean isUseWorldEdit() {
return instance.isUseWorldEdit();
}
}

View File

@@ -15,21 +15,20 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
*/
public class CancellableResidenceEvent extends ResidenceEvent implements Cancellable {
protected boolean cancelled;
protected boolean cancelled;
public CancellableResidenceEvent(String eventName, ClaimedResidence resref)
{
super(eventName,resref);
}
public CancellableResidenceEvent(String eventName, ClaimedResidence resref) {
super(eventName, resref);
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean bln) {
cancelled = bln;
}
@Override
public void setCancelled(boolean bln) {
cancelled = bln;
}
}

View File

@@ -16,22 +16,21 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
*/
public class CancellableResidencePlayerEvent extends ResidencePlayerEvent implements Cancellable {
protected boolean cancelled;
protected boolean cancelled;
public CancellableResidencePlayerEvent(String eventName, ClaimedResidence resref, Player player)
{
super(eventName, resref, player);
cancelled = false;
}
public CancellableResidencePlayerEvent(String eventName, ClaimedResidence resref, Player player) {
super(eventName, resref, player);
cancelled = false;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean bln) {
cancelled = bln;
}
@Override
public void setCancelled(boolean bln) {
cancelled = bln;
}
}

View File

@@ -16,21 +16,20 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
*/
public class CancellableResidencePlayerFlagEvent extends ResidencePlayerFlagEvent implements Cancellable {
protected boolean cancelled;
protected boolean cancelled;
public CancellableResidencePlayerFlagEvent(String eventName, ClaimedResidence resref, Player player, String flag, FlagType type, String target)
{
super(eventName, resref, player, flag, type, target);
}
public CancellableResidencePlayerFlagEvent(String eventName, ClaimedResidence resref, Player player, String flag, FlagType type, String target) {
super(eventName, resref, player, flag, type, target);
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean bln) {
cancelled = bln;
}
@Override
public void setCancelled(boolean bln) {
cancelled = bln;
}
}

View File

@@ -29,7 +29,7 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
*/
public class ResidenceChangedEvent extends ResidencePlayerEvent {
private static final HandlerList handlers = new HandlerList();
private ClaimedResidence from = null;
private ClaimedResidence to = null;
@@ -37,38 +37,41 @@ public class ResidenceChangedEvent extends ResidencePlayerEvent {
* Constructs a {@link ResidenceChangedEvent} to identify a residence transition for the
* given player
*
* @param from the residence that the player left or {@code null} if coming from an
* unprotected area.
* @param to the residence that the player entered or {@code null} if entering an
* unprotected area.
* @param player player involved in the transition
* @param from
* the residence that the player left or {@code null} if coming from an
* unprotected area.
* @param to
* the residence that the player entered or {@code null} if entering an
* unprotected area.
* @param player
* player involved in the transition
*/
public ResidenceChangedEvent(ClaimedResidence from, ClaimedResidence to, Player player) {
super("RESIDENCE_CHANGE", null, player);
this.from = from;
this.to = to;
}
/**
* Returns the residence from which player came.
*
* @return the residence from which player came or {@code null} if player came from an
* unprotected area
* unprotected area
*/
public ClaimedResidence getFrom() {
return from;
return from;
}
/**
* Returns the residence that player has entered.
*
* @return the residence that player has entered or {@code null} if player enters an
* unprotected area
* unprotected area
*/
public ClaimedResidence getTo() {
return to;
return to;
}
@Override
public HandlerList getHandlers() {
return handlers;

View File

@@ -17,6 +17,7 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
public class ResidenceChatEvent extends CancellableResidencePlayerEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return handlers;
@@ -28,30 +29,26 @@ public class ResidenceChatEvent extends CancellableResidencePlayerEvent {
protected String message;
ChatColor color;
public ResidenceChatEvent(ClaimedResidence resref, Player player, String message, ChatColor color) {
super("RESIDENCE_CHAT_EVENT", resref, player);
this.message = message;
this.color = color;
}
public String getChatMessage()
{
public String getChatMessage() {
return message;
}
public void setChatMessage(String newmessage)
{
public void setChatMessage(String newmessage) {
message = newmessage;
}
public ChatColor getColor()
{
public ChatColor getColor() {
return color;
}
public void setColor(ChatColor c)
{
public void setColor(ChatColor c) {
color = c;
}
}

View File

@@ -16,53 +16,51 @@ import org.bukkit.event.HandlerList;
*/
public class ResidenceCommandEvent extends Event implements Cancellable {
private static final HandlerList handlers = new HandlerList();
public static HandlerList getHandlerList() {
return handlers;
}
private static final HandlerList handlers = new HandlerList();
protected boolean cancelled;
public static HandlerList getHandlerList() {
return handlers;
}
protected String cmd;
protected String arglist[];
CommandSender commandsender;
public ResidenceCommandEvent(String command, String args[], CommandSender sender)
{
super();
cancelled = false;
arglist = args;
cmd = command;
commandsender = sender;
}
protected boolean cancelled;
public String[] getArgs()
{
return arglist;
}
protected String cmd;
protected String arglist[];
CommandSender commandsender;
public String getCommand()
{
return cmd;
}
public ResidenceCommandEvent(String command, String args[], CommandSender sender) {
super();
cancelled = false;
arglist = args;
cmd = command;
commandsender = sender;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public String[] getArgs() {
return arglist;
}
public CommandSender getSender()
{
return commandsender;
}
public String getCommand() {
return cmd;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
@Override
public void setCancelled(boolean bln) {
cancelled = bln;
}
public CommandSender getSender() {
return commandsender;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean bln) {
cancelled = bln;
}
}

View File

@@ -18,6 +18,7 @@ import com.bekvon.bukkit.residence.protection.CuboidArea;
public class ResidenceCreationEvent extends CancellableResidencePlayerEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return handlers;
@@ -30,30 +31,25 @@ public class ResidenceCreationEvent extends CancellableResidencePlayerEvent {
protected String resname;
CuboidArea area;
public ResidenceCreationEvent(Player player, String newname, ClaimedResidence resref, CuboidArea resarea)
{
super("RESIDENCE_CREATE",resref,player);
public ResidenceCreationEvent(Player player, String newname, ClaimedResidence resref, CuboidArea resarea) {
super("RESIDENCE_CREATE", resref, player);
resname = newname;
area = resarea;
}
public String getResidenceName()
{
public String getResidenceName() {
return resname;
}
public void setResidenceName(String name)
{
public void setResidenceName(String name) {
resname = name;
}
public CuboidArea getPhysicalArea()
{
public CuboidArea getPhysicalArea() {
return area;
}
public void setPhysicalArea(CuboidArea newarea)
{
public void setPhysicalArea(CuboidArea newarea) {
area = newarea;
}
}

View File

@@ -28,19 +28,19 @@ public class ResidenceDeleteEvent extends CancellableResidencePlayerEvent {
}
public enum DeleteCause {
LEASE_EXPIRE,PLAYER_DELETE,OTHER
LEASE_EXPIRE,
PLAYER_DELETE,
OTHER
}
DeleteCause cause;
public ResidenceDeleteEvent(Player player, ClaimedResidence resref, DeleteCause delcause)
{
public ResidenceDeleteEvent(Player player, ClaimedResidence resref, DeleteCause delcause) {
super("RESIDENCE_DELETE", resref, player);
cause = delcause;
}
public DeleteCause getCause()
{
public DeleteCause getCause() {
return cause;
}

View File

@@ -16,32 +16,31 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
*/
public class ResidenceEvent extends Event {
private static final HandlerList handlers = new HandlerList();
public static HandlerList getHandlerList() {
return handlers;
}
private static final HandlerList handlers = new HandlerList();
private String message;
public static HandlerList getHandlerList() {
return handlers;
}
ClaimedResidence res;
private String message;
public ResidenceEvent(String eventName, ClaimedResidence resref)
{
message = eventName;
res = resref;
}
ClaimedResidence res;
@Override
public HandlerList getHandlers() {
return handlers;
}
public ResidenceEvent(String eventName, ClaimedResidence resref) {
message = eventName;
res = resref;
}
public String getMessage() {
return message;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public ClaimedResidence getResidence()
{
return res;
}
public String getMessage() {
return message;
}
public ClaimedResidence getResidence() {
return res;
}
}

View File

@@ -18,6 +18,7 @@ import com.bekvon.bukkit.residence.protection.FlagPermissions.FlagState;
public class ResidenceFlagChangeEvent extends CancellableResidencePlayerFlagEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return handlers;
@@ -29,14 +30,12 @@ public class ResidenceFlagChangeEvent extends CancellableResidencePlayerFlagEven
FlagState newstate;
public ResidenceFlagChangeEvent(ClaimedResidence resref, Player player, String flag, FlagType type,FlagState newState, String target)
{
public ResidenceFlagChangeEvent(ClaimedResidence resref, Player player, String flag, FlagType type, FlagState newState, String target) {
super("RESIDENCE_FLAG_CHANGE", resref, player, flag, type, target);
newstate = newState;
}
public FlagState getNewState()
{
public FlagState getNewState() {
return newstate;
}

View File

@@ -14,46 +14,42 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
* @author Administrator
*/
public class ResidenceFlagCheckEvent extends ResidenceFlagEvent {
private static final HandlerList handlers = new HandlerList();
private static final HandlerList handlers = new HandlerList();
public static HandlerList getHandlerList() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
private boolean override;
private boolean override;
private boolean overridevalue;
boolean defaultvalue;
public ResidenceFlagCheckEvent(ClaimedResidence resref, String flag, FlagType type, String target, boolean defaultValue)
{
super("RESIDENCE_FLAG_CHECK", resref, flag, type, target);
defaultvalue = defaultValue;
override = false;
}
private boolean overridevalue;
boolean defaultvalue;
public boolean getDefaultValue()
{
return defaultvalue;
}
public ResidenceFlagCheckEvent(ClaimedResidence resref, String flag, FlagType type, String target, boolean defaultValue) {
super("RESIDENCE_FLAG_CHECK", resref, flag, type, target);
defaultvalue = defaultValue;
override = false;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public boolean getDefaultValue() {
return defaultvalue;
}
public boolean getOverrideValue()
{
return overridevalue;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public boolean isOverriden()
{
return override;
}
public boolean getOverrideValue() {
return overridevalue;
}
public void overrideCheck(boolean flagval)
{
overridevalue = flagval;
override=true;
}
public boolean isOverriden() {
return override;
}
public void overrideCheck(boolean flagval) {
overridevalue = flagval;
override = true;
}
}

View File

@@ -17,6 +17,7 @@ import com.bekvon.bukkit.residence.protection.FlagPermissions.FlagState;
public class ResidenceFlagEvent extends ResidenceEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return handlers;
@@ -25,10 +26,11 @@ public class ResidenceFlagEvent extends ResidenceEvent {
public static HandlerList getHandlerList() {
return handlers;
}
public enum FlagType
{
RESIDENCE,GROUP,PLAYER
public enum FlagType {
RESIDENCE,
GROUP,
PLAYER
}
String flagname;
@@ -36,26 +38,22 @@ public class ResidenceFlagEvent extends ResidenceEvent {
FlagState flagstate;
String flagtarget;
public ResidenceFlagEvent(String eventName, ClaimedResidence resref, String flag, FlagType type, String target)
{
public ResidenceFlagEvent(String eventName, ClaimedResidence resref, String flag, FlagType type, String target) {
super(eventName, resref);
flagname = flag;
flagtype = type;
flagtarget = target;
}
public String getFlag()
{
public String getFlag() {
return flagname;
}
public FlagType getFlagType()
{
public FlagType getFlagType() {
return flagtype;
}
public String getFlagTargetPlayerOrGroup()
{
public String getFlagTargetPlayerOrGroup() {
return flagtarget;
}
}

View File

@@ -4,6 +4,7 @@
*/
package com.bekvon.bukkit.residence.event;
import org.bukkit.event.HandlerList;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
@@ -15,6 +16,7 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
public class ResidenceOwnerChangeEvent extends ResidenceEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return handlers;
@@ -26,14 +28,12 @@ public class ResidenceOwnerChangeEvent extends ResidenceEvent {
protected String newowner;
public ResidenceOwnerChangeEvent(ClaimedResidence resref, String newOwner)
{
super("RESIDENCE_OWNER_CHANGE",resref);
public ResidenceOwnerChangeEvent(ClaimedResidence resref, String newOwner) {
super("RESIDENCE_OWNER_CHANGE", resref);
newowner = newOwner;
}
public String getNewOwner()
{
public String getNewOwner() {
return newowner;
}
}

View File

@@ -15,29 +15,29 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
*/
public class ResidencePlayerEvent extends ResidenceEvent implements ResidencePlayerEventInterface {
Player p;
Player p;
public ResidencePlayerEvent(final String eventName, final ClaimedResidence resref, final Player player) {
super(eventName, resref);
res = resref;
p = player;
}
public ResidencePlayerEvent(final String eventName, final ClaimedResidence resref, final Player player) {
super(eventName, resref);
res = resref;
p = player;
}
@Override
public Player getPlayer() {
return p;
}
@Override
public Player getPlayer() {
return p;
}
@Override
public boolean isAdmin() {
if (isPlayer()) {
return p.hasPermission("residence.admin") || p.isOp();
}
return true;
}
@Override
public boolean isAdmin() {
if (isPlayer()) {
return p.hasPermission("residence.admin") || p.isOp();
}
return true;
}
@Override
public boolean isPlayer() {
return p != null;
}
@Override
public boolean isPlayer() {
return p != null;
}
}

View File

@@ -13,6 +13,8 @@ import org.bukkit.entity.Player;
*/
public interface ResidencePlayerEventInterface {
public boolean isAdmin();
public boolean isPlayer();
public Player getPlayer();
}

View File

@@ -14,28 +14,28 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
* @author Administrator
*/
public class ResidencePlayerFlagEvent extends ResidenceFlagEvent implements ResidencePlayerEventInterface {
Player p;
Player p;
public ResidencePlayerFlagEvent(final String eventName, final ClaimedResidence resref, final Player player, final String flag, final FlagType type, final String target) {
super(eventName, resref, flag, type, target);
p = player;
}
public ResidencePlayerFlagEvent(final String eventName, final ClaimedResidence resref, final Player player, final String flag, final FlagType type, final String target) {
super(eventName, resref, flag, type, target);
p = player;
}
@Override
public Player getPlayer() {
return p;
}
@Override
public Player getPlayer() {
return p;
}
@Override
public boolean isAdmin() {
if (isPlayer()) {
return p.hasPermission("residence.admin") || p.isOp();
}
return true;
}
@Override
public boolean isAdmin() {
if (isPlayer()) {
return p.hasPermission("residence.admin") || p.isOp();
}
return true;
}
@Override
public boolean isPlayer() {
return p != null;
}
@Override
public boolean isPlayer() {
return p != null;
}
}

View File

@@ -3,23 +3,27 @@ package com.bekvon.bukkit.residence.event;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
public class ResidenceRenameEvent extends ResidenceEvent {
protected String NewResName;
protected String OldResName;
protected ClaimedResidence res;
public ResidenceRenameEvent(ClaimedResidence resref, String NewName, String OldName) {
super("RESIDENCE_RENAME", resref);
NewResName = NewName;
OldResName = OldName;
res = resref;
}
public String getNewResidenceName() {
return NewResName;
}
public String getOldResidenceName() {
return OldResName;
}
@Override
public ClaimedResidence getResidence() {
return res;
}
protected String NewResName;
protected String OldResName;
protected ClaimedResidence res;
public ResidenceRenameEvent(ClaimedResidence resref, String NewName, String OldName) {
super("RESIDENCE_RENAME", resref);
NewResName = NewName;
OldResName = OldName;
res = resref;
}
public String getNewResidenceName() {
return NewResName;
}
public String getOldResidenceName() {
return OldResName;
}
@Override
public ClaimedResidence getResidence() {
return res;
}
}

View File

@@ -17,6 +17,7 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
public class ResidenceRentEvent extends CancellableResidencePlayerEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return handlers;
@@ -28,19 +29,20 @@ public class ResidenceRentEvent extends CancellableResidencePlayerEvent {
RentEventType eventtype;
public enum RentEventType
{
RENT, UNRENT, RENTABLE, UNRENTABLE, RENT_EXPIRE
public enum RentEventType {
RENT,
UNRENT,
RENTABLE,
UNRENTABLE,
RENT_EXPIRE
}
public ResidenceRentEvent(ClaimedResidence resref, Player player, RentEventType type)
{
public ResidenceRentEvent(ClaimedResidence resref, Player player, RentEventType type) {
super("RESIDENCE_RENT_EVENT", resref, player);
eventtype = type;
}
public RentEventType getCause()
{
public RentEventType getCause() {
return eventtype;
}

View File

@@ -18,6 +18,7 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
public class ResidenceTPEvent extends CancellableResidencePlayerEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return handlers;
@@ -29,20 +30,18 @@ public class ResidenceTPEvent extends CancellableResidencePlayerEvent {
Player reqPlayer;
Location loc;
public ResidenceTPEvent(ClaimedResidence resref, Location teleloc, Player player, Player reqplayer)
{
super("RESIDENCE_TP",resref,player);
public ResidenceTPEvent(ClaimedResidence resref, Location teleloc, Player player, Player reqplayer) {
super("RESIDENCE_TP", resref, player);
reqPlayer = reqplayer;
loc = teleloc;
}
public Player getRequestingPlayer()
{
public Player getRequestingPlayer() {
return reqPlayer;
}
public Location getTeleportLocation()
{
public Location getTeleportLocation() {
return loc;
}
}

View File

@@ -25,190 +25,190 @@ import com.bekvon.bukkit.residence.protection.ResidenceManager.ChunkRef;
* @author Administrator
*/
public class CuboidArea {
protected Location highPoints;
protected Location lowPoints;
protected Location highPoints;
protected Location lowPoints;
public CuboidArea(final Location startLoc, final Location endLoc) {
int highx, highy, highz, lowx, lowy, lowz;
if (startLoc.getBlockX() > endLoc.getBlockX()) {
highx = startLoc.getBlockX();
lowx = endLoc.getBlockX();
} else {
highx = endLoc.getBlockX();
lowx = startLoc.getBlockX();
}
if (startLoc.getBlockY() > endLoc.getBlockY()) {
highy = startLoc.getBlockY();
lowy = endLoc.getBlockY();
} else {
highy = endLoc.getBlockY();
lowy = startLoc.getBlockY();
}
if (startLoc.getBlockZ() > endLoc.getBlockZ()) {
highz = startLoc.getBlockZ();
lowz = endLoc.getBlockZ();
} else {
highz = endLoc.getBlockZ();
lowz = startLoc.getBlockZ();
}
highPoints = new Location(startLoc.getWorld(), highx, highy, highz);
lowPoints = new Location(startLoc.getWorld(), lowx, lowy, lowz);
}
public CuboidArea(final Location startLoc, final Location endLoc) {
int highx, highy, highz, lowx, lowy, lowz;
if (startLoc.getBlockX() > endLoc.getBlockX()) {
highx = startLoc.getBlockX();
lowx = endLoc.getBlockX();
} else {
highx = endLoc.getBlockX();
lowx = startLoc.getBlockX();
}
if (startLoc.getBlockY() > endLoc.getBlockY()) {
highy = startLoc.getBlockY();
lowy = endLoc.getBlockY();
} else {
highy = endLoc.getBlockY();
lowy = startLoc.getBlockY();
}
if (startLoc.getBlockZ() > endLoc.getBlockZ()) {
highz = startLoc.getBlockZ();
lowz = endLoc.getBlockZ();
} else {
highz = endLoc.getBlockZ();
lowz = startLoc.getBlockZ();
}
highPoints = new Location(startLoc.getWorld(), highx, highy, highz);
lowPoints = new Location(startLoc.getWorld(), lowx, lowy, lowz);
}
protected CuboidArea() {
}
protected CuboidArea() {
}
public static CuboidArea load(final DataInputStream in, final int version) throws IOException {
final CuboidArea newArea = new CuboidArea();
final Server server = Bukkit.getServer();
final World world = server.getWorld(in.readUTF());
final int highx = in.readInt();
final int highy = in.readInt();
final int highz = in.readInt();
final int lowx = in.readInt();
final int lowy = in.readInt();
final int lowz = in.readInt();
newArea.highPoints = new Location(world, highx, highy, highz);
newArea.lowPoints = new Location(world, lowx, lowy, lowz);
return newArea;
}
public static CuboidArea load(final DataInputStream in, final int version) throws IOException {
final CuboidArea newArea = new CuboidArea();
final Server server = Bukkit.getServer();
final World world = server.getWorld(in.readUTF());
final int highx = in.readInt();
final int highy = in.readInt();
final int highz = in.readInt();
final int lowx = in.readInt();
final int lowy = in.readInt();
final int lowz = in.readInt();
newArea.highPoints = new Location(world, highx, highy, highz);
newArea.lowPoints = new Location(world, lowx, lowy, lowz);
return newArea;
}
public static CuboidArea load(final Map<String, Object> root, final World world) throws Exception {
if (root == null) {
throw new Exception("Invalid residence physical location...");
}
final CuboidArea newArea = new CuboidArea();
final int x1 = (Integer) root.get("X1");
final int y1 = (Integer) root.get("Y1");
final int z1 = (Integer) root.get("Z1");
final int x2 = (Integer) root.get("X2");
final int y2 = (Integer) root.get("Y2");
final int z2 = (Integer) root.get("Z2");
newArea.highPoints = new Location(world, x1, y1, z1);
newArea.lowPoints = new Location(world, x2, y2, z2);
return newArea;
}
public static CuboidArea load(final Map<String, Object> root, final World world) throws Exception {
if (root == null) {
throw new Exception("Invalid residence physical location...");
}
final CuboidArea newArea = new CuboidArea();
final int x1 = (Integer) root.get("X1");
final int y1 = (Integer) root.get("Y1");
final int z1 = (Integer) root.get("Z1");
final int x2 = (Integer) root.get("X2");
final int y2 = (Integer) root.get("Y2");
final int z2 = (Integer) root.get("Z2");
newArea.highPoints = new Location(world, x1, y1, z1);
newArea.lowPoints = new Location(world, x2, y2, z2);
return newArea;
}
public boolean checkCollision(final CuboidArea area) {
if (!area.getWorld().equals(this.getWorld())) {
return false;
}
if (area.containsLoc(lowPoints) || area.containsLoc(highPoints) || this.containsLoc(area.highPoints) || this.containsLoc(area.lowPoints)) {
return true;
}
return advCuboidCheckCollision(highPoints, lowPoints, area.highPoints, area.lowPoints);
}
public boolean checkCollision(final CuboidArea area) {
if (!area.getWorld().equals(this.getWorld())) {
return false;
}
if (area.containsLoc(lowPoints) || area.containsLoc(highPoints) || this.containsLoc(area.highPoints) || this.containsLoc(area.lowPoints)) {
return true;
}
return advCuboidCheckCollision(highPoints, lowPoints, area.highPoints, area.lowPoints);
}
public boolean containsLoc(final Location loc) {
if (loc == null) {
return false;
}
if (!loc.getWorld().equals(highPoints.getWorld())) {
return false;
}
if (lowPoints.getBlockX() <= loc.getBlockX() && highPoints.getBlockX() >= loc.getBlockX()) {
if (lowPoints.getBlockZ() <= loc.getBlockZ() && highPoints.getBlockZ() >= loc.getBlockZ()) {
if (lowPoints.getBlockY() <= loc.getBlockY() && highPoints.getBlockY() >= loc.getBlockY()) {
return true;
}
}
}
return false;
}
public boolean containsLoc(final Location loc) {
if (loc == null) {
return false;
}
if (!loc.getWorld().equals(highPoints.getWorld())) {
return false;
}
if (lowPoints.getBlockX() <= loc.getBlockX() && highPoints.getBlockX() >= loc.getBlockX()) {
if (lowPoints.getBlockZ() <= loc.getBlockZ() && highPoints.getBlockZ() >= loc.getBlockZ()) {
if (lowPoints.getBlockY() <= loc.getBlockY() && highPoints.getBlockY() >= loc.getBlockY()) {
return true;
}
}
}
return false;
}
public List<ChunkRef> getChunks() {
final List<ChunkRef> chunks = new ArrayList<ChunkRef>();
final Location high = this.highPoints;
final Location low = this.lowPoints;
final int lowX = ChunkRef.getChunkCoord(low.getBlockX());
final int lowZ = ChunkRef.getChunkCoord(low.getBlockZ());
final int highX = ChunkRef.getChunkCoord(high.getBlockX());
final int highZ = ChunkRef.getChunkCoord(high.getBlockZ());
public List<ChunkRef> getChunks() {
final List<ChunkRef> chunks = new ArrayList<ChunkRef>();
final Location high = this.highPoints;
final Location low = this.lowPoints;
final int lowX = ChunkRef.getChunkCoord(low.getBlockX());
final int lowZ = ChunkRef.getChunkCoord(low.getBlockZ());
final int highX = ChunkRef.getChunkCoord(high.getBlockX());
final int highZ = ChunkRef.getChunkCoord(high.getBlockZ());
for (int x = lowX; x <= highX; x++) {
for (int z = lowZ; z <= highZ; z++) {
chunks.add(new ChunkRef(x, z));
}
}
return chunks;
}
for (int x = lowX; x <= highX; x++) {
for (int z = lowZ; z <= highZ; z++) {
chunks.add(new ChunkRef(x, z));
}
}
return chunks;
}
public Location getHighLoc() {
return highPoints;
}
public Location getHighLoc() {
return highPoints;
}
public Location getLowLoc() {
return lowPoints;
}
public Location getLowLoc() {
return lowPoints;
}
public long getSize() {
final int xsize = (highPoints.getBlockX() - lowPoints.getBlockX()) + 1;
final int ysize = (highPoints.getBlockY() - lowPoints.getBlockY()) + 1;
final int zsize = (highPoints.getBlockZ() - lowPoints.getBlockZ()) + 1;
return xsize * ysize * zsize;
}
public long getSize() {
final int xsize = (highPoints.getBlockX() - lowPoints.getBlockX()) + 1;
final int ysize = (highPoints.getBlockY() - lowPoints.getBlockY()) + 1;
final int zsize = (highPoints.getBlockZ() - lowPoints.getBlockZ()) + 1;
return xsize * ysize * zsize;
}
public World getWorld() {
return highPoints.getWorld();
}
public World getWorld() {
return highPoints.getWorld();
}
public int getXSize() {
return (highPoints.getBlockX() - lowPoints.getBlockX()) + 1;
}
public int getXSize() {
return (highPoints.getBlockX() - lowPoints.getBlockX()) + 1;
}
public int getYSize() {
return (highPoints.getBlockY() - lowPoints.getBlockY()) + 1;
}
public int getYSize() {
return (highPoints.getBlockY() - lowPoints.getBlockY()) + 1;
}
public int getZSize() {
return (highPoints.getBlockZ() - lowPoints.getBlockZ()) + 1;
}
public int getZSize() {
return (highPoints.getBlockZ() - lowPoints.getBlockZ()) + 1;
}
public boolean isAreaWithinArea(final CuboidArea area) {
return (this.containsLoc(area.highPoints) && this.containsLoc(area.lowPoints));
}
public boolean isAreaWithinArea(final CuboidArea area) {
return (this.containsLoc(area.highPoints) && this.containsLoc(area.lowPoints));
}
public Map<String, Object> save() {
final Map<String, Object> root = new LinkedHashMap<String, Object>();
root.put("X1", this.highPoints.getBlockX());
root.put("Y1", this.highPoints.getBlockY());
root.put("Z1", this.highPoints.getBlockZ());
root.put("X2", this.lowPoints.getBlockX());
root.put("Y2", this.lowPoints.getBlockY());
root.put("Z2", this.lowPoints.getBlockZ());
return root;
}
public Map<String, Object> save() {
final Map<String, Object> root = new LinkedHashMap<String, Object>();
root.put("X1", this.highPoints.getBlockX());
root.put("Y1", this.highPoints.getBlockY());
root.put("Z1", this.highPoints.getBlockZ());
root.put("X2", this.lowPoints.getBlockX());
root.put("Y2", this.lowPoints.getBlockY());
root.put("Z2", this.lowPoints.getBlockZ());
return root;
}
public void save(final DataOutputStream out, final int version) throws IOException {
out.writeUTF(highPoints.getWorld().getName());
out.writeInt(highPoints.getBlockX());
out.writeInt(highPoints.getBlockY());
out.writeInt(highPoints.getBlockZ());
out.writeInt(lowPoints.getBlockX());
out.writeInt(lowPoints.getBlockY());
out.writeInt(lowPoints.getBlockZ());
}
public void save(final DataOutputStream out, final int version) throws IOException {
out.writeUTF(highPoints.getWorld().getName());
out.writeInt(highPoints.getBlockX());
out.writeInt(highPoints.getBlockY());
out.writeInt(highPoints.getBlockZ());
out.writeInt(lowPoints.getBlockX());
out.writeInt(lowPoints.getBlockY());
out.writeInt(lowPoints.getBlockZ());
}
private boolean advCuboidCheckCollision(final Location A1High, final Location A1Low, final Location A2High, final Location A2Low) {
final int A1HX = A1High.getBlockX();
final int A1LX = A1Low.getBlockX();
final int A1HY = A1High.getBlockY();
final int A1LY = A1Low.getBlockY();
final int A1HZ = A1High.getBlockZ();
final int A1LZ = A1Low.getBlockZ();
final int A2HX = A2High.getBlockX();
final int A2LX = A2Low.getBlockX();
final int A2HY = A2High.getBlockY();
final int A2LY = A2Low.getBlockY();
final int A2HZ = A2High.getBlockZ();
final int A2LZ = A2Low.getBlockZ();
if ((A1HX >= A2LX && A1HX <= A2HX) || (A1LX >= A2LX && A1LX <= A2HX) || (A2HX >= A1LX && A2HX <= A1HX) || (A2LX >= A1LX && A2LX <= A1HX)) {
if ((A1HY >= A2LY && A1HY <= A2HY) || (A1LY >= A2LY && A1LY <= A2HY) || (A2HY >= A1LY && A2HY <= A1HY) || (A2LY >= A1LY && A2LY <= A1HY)) {
if ((A1HZ >= A2LZ && A1HZ <= A2HZ) || (A1LZ >= A2LZ && A1LZ <= A2HZ) || (A2HZ >= A1LZ && A2HZ <= A1HZ) || (A2LZ >= A1LZ && A2LZ <= A1HZ)) {
return true;
}
}
}
return false;
}
private boolean advCuboidCheckCollision(final Location A1High, final Location A1Low, final Location A2High, final Location A2Low) {
final int A1HX = A1High.getBlockX();
final int A1LX = A1Low.getBlockX();
final int A1HY = A1High.getBlockY();
final int A1LY = A1Low.getBlockY();
final int A1HZ = A1High.getBlockZ();
final int A1LZ = A1Low.getBlockZ();
final int A2HX = A2High.getBlockX();
final int A2LX = A2Low.getBlockX();
final int A2HY = A2High.getBlockY();
final int A2LY = A2Low.getBlockY();
final int A2HZ = A2High.getBlockZ();
final int A2LZ = A2Low.getBlockZ();
if ((A1HX >= A2LX && A1HX <= A2HX) || (A1LX >= A2LX && A1LX <= A2HX) || (A2HX >= A1LX && A2HX <= A1HX) || (A2LX >= A1LX && A2LX <= A1HX)) {
if ((A1HY >= A2LY && A1HY <= A2HY) || (A1LY >= A2LY && A1LY <= A2HY) || (A2HY >= A1LY && A2HY <= A1HY) || (A2LY >= A1LY && A2LY <= A1HY)) {
if ((A1HZ >= A2LZ && A1HZ <= A2HZ) || (A1LZ >= A2LZ && A1LZ <= A2HZ) || (A2HZ >= A1LZ && A2HZ <= A1HZ) || (A2LZ >= A1LZ && A2LZ <= A1HZ)) {
return true;
}
}
}
return false;
}
}

View File

@@ -29,211 +29,211 @@ import cn.citycraft.Residence.permissions.PermissionGroup;
*/
public class LeaseManager {
private Map<String, Long> leaseExpireTime;
private Map<String, Long> leaseExpireTime;
ResidenceManager manager;
ResidenceMain plugin;
ResidenceManager manager;
ResidenceMain plugin;
public LeaseManager(final ResidenceMain plugin, final ResidenceManager m) {
this.plugin = plugin;
manager = m;
leaseExpireTime = Collections.synchronizedMap(new HashMap<String, Long>());
}
public LeaseManager(final ResidenceMain plugin, final ResidenceManager m) {
this.plugin = plugin;
manager = m;
leaseExpireTime = Collections.synchronizedMap(new HashMap<String, Long>());
}
public static LeaseManager load(final ResidenceMain plugin, final Map<String, Long> root, final ResidenceManager m) {
final LeaseManager l = new LeaseManager(plugin, m);
if (root != null) {
for (final Object val : root.values()) {
if (!(val instanceof Long)) {
root.remove(val);
}
}
l.leaseExpireTime = Collections.synchronizedMap(root);
}
return l;
}
public static LeaseManager load(final ResidenceMain plugin, final Map<String, Long> root, final ResidenceManager m) {
final LeaseManager l = new LeaseManager(plugin, m);
if (root != null) {
for (final Object val : root.values()) {
if (!(val instanceof Long)) {
root.remove(val);
}
}
l.leaseExpireTime = Collections.synchronizedMap(root);
}
return l;
}
public void doExpirations() {
final Set<Entry<String, Long>> set = leaseExpireTime.entrySet();
final Iterator<Entry<String, Long>> it = set.iterator();
while (it.hasNext()) {
final Entry<String, Long> next = it.next();
if (next.getValue() <= System.currentTimeMillis()) {
final String resname = next.getKey();
final ClaimedResidence res = plugin.getResidenceManager().getByName(resname);
if (res == null) {
it.remove();
} else {
boolean renewed = false;
final String owner = res.getPermissions().getOwner();
final PermissionGroup limits = plugin.getPermissionManager().getGroup(owner, res.getPermissions().getWorld());
final int cost = this.getRenewCost(res);
if (plugin.getConfigManager().enableEconomy() && plugin.getConfigManager().autoRenewLeases()) {
if (cost == 0) {
renewed = true;
} else if (res.getBank().hasEnough(cost)) {
res.getBank().subtract(cost);
renewed = true;
if (plugin.getConfigManager().debugEnabled()) {
plugin.getLogger().info("Lease Renewed From Residence Bank: " + resname);
}
} else if (plugin.getEconomyManager().canAfford(owner, cost)) {
if (plugin.getEconomyManager().subtract(owner, cost)) {
renewed = true;
if (plugin.getConfigManager().debugEnabled()) {
plugin.getLogger().info("Lease Renewed From Economy: " + resname);
}
}
}
}
if (!renewed) {
if (!plugin.getConfigManager().enabledRentSystem() || !plugin.getRentManager().isRented(resname)) {
final ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(null, res, DeleteCause.LEASE_EXPIRE);
plugin.getServer().getPluginManager().callEvent(resevent);
if (!resevent.isCancelled()) {
manager.removeResidence(next.getKey());
it.remove();
if (plugin.getConfigManager().debugEnabled()) {
plugin.getLogger().info("Lease NOT removed, Removing: " + resname);
}
}
}
} else {
if (plugin.getConfigManager().enableEconomy() && plugin.getConfigManager().enableLeaseMoneyAccount()) {
plugin.getEconomyManager().add("Lease Money", cost);
}
if (plugin.getConfigManager().debugEnabled()) {
plugin.getLogger().info("Lease Renew Old: " + next.getValue());
}
next.setValue(System.currentTimeMillis() + daysToMs(limits.getLeaseGiveTime()));
if (plugin.getConfigManager().debugEnabled()) {
plugin.getLogger().info("Lease Renew New: " + next.getValue());
}
}
}
}
}
}
public void doExpirations() {
final Set<Entry<String, Long>> set = leaseExpireTime.entrySet();
final Iterator<Entry<String, Long>> it = set.iterator();
while (it.hasNext()) {
final Entry<String, Long> next = it.next();
if (next.getValue() <= System.currentTimeMillis()) {
final String resname = next.getKey();
final ClaimedResidence res = plugin.getResidenceManager().getByName(resname);
if (res == null) {
it.remove();
} else {
boolean renewed = false;
final String owner = res.getPermissions().getOwner();
final PermissionGroup limits = plugin.getPermissionManager().getGroup(owner, res.getPermissions().getWorld());
final int cost = this.getRenewCost(res);
if (plugin.getConfigManager().enableEconomy() && plugin.getConfigManager().autoRenewLeases()) {
if (cost == 0) {
renewed = true;
} else if (res.getBank().hasEnough(cost)) {
res.getBank().subtract(cost);
renewed = true;
if (plugin.getConfigManager().debugEnabled()) {
plugin.getLogger().info("Lease Renewed From Residence Bank: " + resname);
}
} else if (plugin.getEconomyManager().canAfford(owner, cost)) {
if (plugin.getEconomyManager().subtract(owner, cost)) {
renewed = true;
if (plugin.getConfigManager().debugEnabled()) {
plugin.getLogger().info("Lease Renewed From Economy: " + resname);
}
}
}
}
if (!renewed) {
if (!plugin.getConfigManager().enabledRentSystem() || !plugin.getRentManager().isRented(resname)) {
final ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(null, res, DeleteCause.LEASE_EXPIRE);
plugin.getServer().getPluginManager().callEvent(resevent);
if (!resevent.isCancelled()) {
manager.removeResidence(next.getKey());
it.remove();
if (plugin.getConfigManager().debugEnabled()) {
plugin.getLogger().info("Lease NOT removed, Removing: " + resname);
}
}
}
} else {
if (plugin.getConfigManager().enableEconomy() && plugin.getConfigManager().enableLeaseMoneyAccount()) {
plugin.getEconomyManager().add("Lease Money", cost);
}
if (plugin.getConfigManager().debugEnabled()) {
plugin.getLogger().info("Lease Renew Old: " + next.getValue());
}
next.setValue(System.currentTimeMillis() + daysToMs(limits.getLeaseGiveTime()));
if (plugin.getConfigManager().debugEnabled()) {
plugin.getLogger().info("Lease Renew New: " + next.getValue());
}
}
}
}
}
}
public Date getExpireTime(final String area) {
if (leaseExpireTime.containsKey(area)) {
return new Date(leaseExpireTime.get(area));
}
return null;
}
public Date getExpireTime(final String area) {
if (leaseExpireTime.containsKey(area)) {
return new Date(leaseExpireTime.get(area));
}
return null;
}
public int getRenewCost(final ClaimedResidence res) {
final PermissionGroup limits = plugin.getPermissionManager().getGroup(res.getPermissions().getOwner(), res.getPermissions().getWorld());
final double cost = limits.getLeaseRenewCost();
final int amount = (int) Math.ceil(res.getTotalSize() * cost);
return amount;
}
public int getRenewCost(final ClaimedResidence res) {
final PermissionGroup limits = plugin.getPermissionManager().getGroup(res.getPermissions().getOwner(), res.getPermissions().getWorld());
final double cost = limits.getLeaseRenewCost();
final int amount = (int) Math.ceil(res.getTotalSize() * cost);
return amount;
}
public boolean leaseExpires(final String area) {
return leaseExpireTime.containsKey(area);
}
public boolean leaseExpires(final String area) {
return leaseExpireTime.containsKey(area);
}
public void removeExpireTime(final String area) {
leaseExpireTime.remove(area);
}
public void removeExpireTime(final String area) {
leaseExpireTime.remove(area);
}
public void renewArea(final String area, final Player player) {
if (!leaseExpires(area)) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("LeaseNotExpire"));
return;
}
final PermissionGroup limits = plugin.getPermissionManager().getGroup(player);
final int max = limits.getMaxLeaseTime();
final int add = limits.getLeaseGiveTime();
final int rem = daysRemaining(area);
final EconomyInterface econ = plugin.getEconomyManager();
if (econ != null) {
final double cost = limits.getLeaseRenewCost();
final ClaimedResidence res = manager.getByName(area);
final int amount = (int) Math.ceil(res.getTotalSize() * cost);
if (cost != 0D) {
if (econ.canAfford(player.getName(), amount)) {
econ.subtract(player.getName(), amount);
econ.add("Lease Money", amount);
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("MoneyCharged",
ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN + "." + ChatColor.YELLOW + econ.getName() + ChatColor.GREEN));
} else {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotEnoughMoney"));
return;
}
}
}
if (rem + add > max) {
setExpireTime(player, area, max);
player.sendMessage(ChatColor.GOLD + plugin.getLanguage().getPhrase("LeaseRenewMax"));
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("LeaseRenew", ChatColor.GREEN + "" + getExpireTime(area)) + ChatColor.YELLOW);
return;
}
Long get = leaseExpireTime.get(area);
if (get != null) {
get = get + daysToMs(add);
leaseExpireTime.put(area, get);
} else {
leaseExpireTime.put(area, daysToMs(add));
}
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("LeaseRenew", ChatColor.GREEN + "" + getExpireTime(area)));
}
public void renewArea(final String area, final Player player) {
if (!leaseExpires(area)) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("LeaseNotExpire"));
return;
}
final PermissionGroup limits = plugin.getPermissionManager().getGroup(player);
final int max = limits.getMaxLeaseTime();
final int add = limits.getLeaseGiveTime();
final int rem = daysRemaining(area);
final EconomyInterface econ = plugin.getEconomyManager();
if (econ != null) {
final double cost = limits.getLeaseRenewCost();
final ClaimedResidence res = manager.getByName(area);
final int amount = (int) Math.ceil(res.getTotalSize() * cost);
if (cost != 0D) {
if (econ.canAfford(player.getName(), amount)) {
econ.subtract(player.getName(), amount);
econ.add("Lease Money", amount);
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("MoneyCharged",
ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN + "." + ChatColor.YELLOW + econ.getName() + ChatColor.GREEN));
} else {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotEnoughMoney"));
return;
}
}
}
if (rem + add > max) {
setExpireTime(player, area, max);
player.sendMessage(ChatColor.GOLD + plugin.getLanguage().getPhrase("LeaseRenewMax"));
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("LeaseRenew", ChatColor.GREEN + "" + getExpireTime(area)) + ChatColor.YELLOW);
return;
}
Long get = leaseExpireTime.get(area);
if (get != null) {
get = get + daysToMs(add);
leaseExpireTime.put(area, get);
} else {
leaseExpireTime.put(area, daysToMs(add));
}
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("LeaseRenew", ChatColor.GREEN + "" + getExpireTime(area)));
}
public void resetLeases() {
leaseExpireTime.clear();
final String[] list = manager.getResidenceList();
for (final String element : list) {
if (element != null) {
final ClaimedResidence res = plugin.getResidenceManager().getByName(element);
final PermissionGroup group = plugin.getPermissionManager().getGroup(res.getPermissions().getOwner(), res.getPermissions().getWorld());
this.setExpireTime(null, element, group.getLeaseGiveTime());
}
}
plugin.getLogger().info(" - Set default leases.");
}
public void resetLeases() {
leaseExpireTime.clear();
final String[] list = manager.getResidenceList();
for (final String element : list) {
if (element != null) {
final ClaimedResidence res = plugin.getResidenceManager().getByName(element);
final PermissionGroup group = plugin.getPermissionManager().getGroup(res.getPermissions().getOwner(), res.getPermissions().getWorld());
this.setExpireTime(null, element, group.getLeaseGiveTime());
}
}
plugin.getLogger().info(" - Set default leases.");
}
public Map<String, Long> save() {
return leaseExpireTime;
}
public Map<String, Long> save() {
return leaseExpireTime;
}
public void setExpireTime(final Player player, String area, final int days) {
area = area.replace(".", "_");
if (manager.getByName(area) != null) {
leaseExpireTime.put(area, daysToMs(days) + System.currentTimeMillis());
if (player != null) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("LeaseRenew", getExpireTime(area).toString()));
}
} else {
if (player != null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidArea"));
}
}
}
public void setExpireTime(final Player player, String area, final int days) {
area = area.replace(".", "_");
if (manager.getByName(area) != null) {
leaseExpireTime.put(area, daysToMs(days) + System.currentTimeMillis());
if (player != null) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("LeaseRenew", getExpireTime(area).toString()));
}
} else {
if (player != null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidArea"));
}
}
}
public void setExpireTime(final String area, final int days) {
this.setExpireTime(null, area, days);
}
public void setExpireTime(final String area, final int days) {
this.setExpireTime(null, area, days);
}
public void updateLeaseName(final String oldName, final String newName) {
if (leaseExpireTime.containsKey(oldName)) {
leaseExpireTime.put(newName, leaseExpireTime.get(oldName));
leaseExpireTime.remove(oldName);
}
}
public void updateLeaseName(final String oldName, final String newName) {
if (leaseExpireTime.containsKey(oldName)) {
leaseExpireTime.put(newName, leaseExpireTime.get(oldName));
leaseExpireTime.remove(oldName);
}
}
private int daysRemaining(final String area) {
final Long get = leaseExpireTime.get(area);
if (get <= System.currentTimeMillis()) {
return 0;
}
return msToDays((int) (get - System.currentTimeMillis()));
}
private int daysRemaining(final String area) {
final Long get = leaseExpireTime.get(area);
if (get <= System.currentTimeMillis()) {
return 0;
}
return msToDays((int) (get - System.currentTimeMillis()));
}
private long daysToMs(final int days) {
return ((days) * 24L * 60L * 60L * 1000L);
}
private long daysToMs(final int days) {
return ((days) * 24L * 60L * 60L * 1000L);
}
private int msToDays(final long ms) {
return (int) Math.ceil((((ms / 1000D) / 60D) / 60D) / 24D);
}
private int msToDays(final long ms) {
return (int) Math.ceil((((ms / 1000D) / 60D) / 60D) / 24D);
}
}

View File

@@ -22,120 +22,120 @@ import cn.citycraft.Residence.ResidenceMain;
*/
public class PermissionListManager {
private final Map<String, Map<String, FlagPermissions>> lists;
ResidenceMain plugin;
private final Map<String, Map<String, FlagPermissions>> lists;
ResidenceMain plugin;
public PermissionListManager(final ResidenceMain plugin) {
this.plugin = plugin;
lists = Collections.synchronizedMap(new HashMap<String, Map<String, FlagPermissions>>());
}
public PermissionListManager(final ResidenceMain plugin) {
this.plugin = plugin;
lists = Collections.synchronizedMap(new HashMap<String, Map<String, FlagPermissions>>());
}
@SuppressWarnings("unchecked")
public static PermissionListManager load(final ResidenceMain plugin, final Map<String, Object> root) {
final PermissionListManager p = new PermissionListManager(plugin);
if (root != null) {
for (final Entry<String, Object> players : root.entrySet()) {
try {
final Map<String, Object> value = (Map<String, Object>) players.getValue();
final Map<String, FlagPermissions> loadedMap = Collections.synchronizedMap(new HashMap<String, FlagPermissions>());
for (final Entry<String, Object> list : value.entrySet()) {
loadedMap.put(list.getKey(), FlagPermissions.load((Map<String, Object>) list.getValue()));
}
p.lists.put(players.getKey(), loadedMap);
} catch (final Exception ex) {
plugin.getLogger().warning(" - 玩家: " + players.getKey() + " 的权限列表载入失败...");
}
}
}
return p;
}
@SuppressWarnings("unchecked")
public static PermissionListManager load(final ResidenceMain plugin, final Map<String, Object> root) {
final PermissionListManager p = new PermissionListManager(plugin);
if (root != null) {
for (final Entry<String, Object> players : root.entrySet()) {
try {
final Map<String, Object> value = (Map<String, Object>) players.getValue();
final Map<String, FlagPermissions> loadedMap = Collections.synchronizedMap(new HashMap<String, FlagPermissions>());
for (final Entry<String, Object> list : value.entrySet()) {
loadedMap.put(list.getKey(), FlagPermissions.load((Map<String, Object>) list.getValue()));
}
p.lists.put(players.getKey(), loadedMap);
} catch (final Exception ex) {
plugin.getLogger().warning(" - 玩家: " + players.getKey() + " 的权限列表载入失败...");
}
}
}
return p;
}
public void applyListToResidence(final Player player, final String listname, final String areaname, final boolean resadmin) {
final FlagPermissions list = this.getList(player.getName(), listname);
if (list == null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList"));
return;
}
final ClaimedResidence res = plugin.getResidenceManager().getByName(areaname);
if (res == null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence"));
return;
}
res.getPermissions().applyTemplate(player, list, resadmin);
}
public void applyListToResidence(final Player player, final String listname, final String areaname, final boolean resadmin) {
final FlagPermissions list = this.getList(player.getName(), listname);
if (list == null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList"));
return;
}
final ClaimedResidence res = plugin.getResidenceManager().getByName(areaname);
if (res == null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence"));
return;
}
res.getPermissions().applyTemplate(player, list, resadmin);
}
public FlagPermissions getList(final String player, final String listname) {
final Map<String, FlagPermissions> get = lists.get(player);
if (get == null) {
return null;
}
return get.get(listname);
}
public FlagPermissions getList(final String player, final String listname) {
final Map<String, FlagPermissions> get = lists.get(player);
if (get == null) {
return null;
}
return get.get(listname);
}
public void makeList(final Player player, final String listname) {
Map<String, FlagPermissions> get = lists.get(player.getName());
if (get == null) {
get = new HashMap<String, FlagPermissions>();
lists.put(player.getName(), get);
}
FlagPermissions perms = get.get(listname);
if (perms == null) {
perms = new FlagPermissions();
get.put(listname, perms);
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("ListCreate", listname));
} else {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ListExists"));
}
}
public void makeList(final Player player, final String listname) {
Map<String, FlagPermissions> get = lists.get(player.getName());
if (get == null) {
get = new HashMap<String, FlagPermissions>();
lists.put(player.getName(), get);
}
FlagPermissions perms = get.get(listname);
if (perms == null) {
perms = new FlagPermissions();
get.put(listname, perms);
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("ListCreate", listname));
} else {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ListExists"));
}
}
public void printList(final Player player, final String listname) {
final FlagPermissions list = this.getList(player.getName(), listname);
if (list == null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList"));
return;
}
player.sendMessage(ChatColor.LIGHT_PURPLE + "------Permission Template------");
player.sendMessage(plugin.getLanguage().getPhrase("Name") + ": " + ChatColor.GREEN + listname);
list.printFlags(player);
}
public void printList(final Player player, final String listname) {
final FlagPermissions list = this.getList(player.getName(), listname);
if (list == null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList"));
return;
}
player.sendMessage(ChatColor.LIGHT_PURPLE + "------Permission Template------");
player.sendMessage(plugin.getLanguage().getPhrase("Name") + ": " + ChatColor.GREEN + listname);
list.printFlags(player);
}
public void printLists(final Player player) {
final StringBuilder sbuild = new StringBuilder();
final Map<String, FlagPermissions> get = lists.get(player.getName());
sbuild.append(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Lists") + ":" + ChatColor.DARK_AQUA + " ");
if (get != null) {
for (final Entry<String, FlagPermissions> thislist : get.entrySet()) {
sbuild.append(thislist.getKey()).append(" ");
}
}
player.sendMessage(sbuild.toString());
}
public void printLists(final Player player) {
final StringBuilder sbuild = new StringBuilder();
final Map<String, FlagPermissions> get = lists.get(player.getName());
sbuild.append(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Lists") + ":" + ChatColor.DARK_AQUA + " ");
if (get != null) {
for (final Entry<String, FlagPermissions> thislist : get.entrySet()) {
sbuild.append(thislist.getKey()).append(" ");
}
}
player.sendMessage(sbuild.toString());
}
public void removeList(final Player player, final String listname) {
final Map<String, FlagPermissions> get = lists.get(player.getName());
if (get == null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList"));
return;
}
final FlagPermissions list = get.get(listname);
if (list == null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList"));
return;
}
get.remove(listname);
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ListRemoved"));
}
public void removeList(final Player player, final String listname) {
final Map<String, FlagPermissions> get = lists.get(player.getName());
if (get == null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList"));
return;
}
final FlagPermissions list = get.get(listname);
if (list == null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList"));
return;
}
get.remove(listname);
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ListRemoved"));
}
public Map<String, Object> save() {
final Map<String, Object> root = new LinkedHashMap<String, Object>();
for (final Entry<String, Map<String, FlagPermissions>> players : lists.entrySet()) {
final Map<String, Object> saveMap = new LinkedHashMap<String, Object>();
final Map<String, FlagPermissions> map = players.getValue();
for (final Entry<String, FlagPermissions> list : map.entrySet()) {
saveMap.put(list.getKey(), list.getValue().save());
}
root.put(players.getKey(), saveMap);
}
return root;
}
public Map<String, Object> save() {
final Map<String, Object> root = new LinkedHashMap<String, Object>();
for (final Entry<String, Map<String, FlagPermissions>> players : lists.entrySet()) {
final Map<String, Object> saveMap = new LinkedHashMap<String, Object>();
final Map<String, FlagPermissions> map = players.getValue();
for (final Entry<String, FlagPermissions> list : map.entrySet()) {
saveMap.put(list.getKey(), list.getValue().save());
}
root.put(players.getKey(), saveMap);
}
return root;
}
}

View File

@@ -31,463 +31,463 @@ import cn.citycraft.Residence.permissions.PermissionManager;
*/
public class ResidencePermissions extends FlagPermissions {
protected String owner;
protected PluginManager pm;
protected ClaimedResidence residence;
protected String world;
ResidenceMain plugin;
protected String owner;
protected PluginManager pm;
protected ClaimedResidence residence;
protected String world;
ResidenceMain plugin;
public ResidencePermissions(final ResidenceMain plugin, final ClaimedResidence res) {
this.plugin = plugin;
this.pm = plugin.getServer().getPluginManager();
residence = res;
}
public ResidencePermissions(final ResidenceMain plugin, final ClaimedResidence res) {
this.plugin = plugin;
this.pm = plugin.getServer().getPluginManager();
residence = res;
}
public ResidencePermissions(final ResidenceMain plugin, final ClaimedResidence res, final String creator, final String inworld) {
this(plugin, res);
owner = creator;
world = inworld;
}
public ResidencePermissions(final ResidenceMain plugin, final ClaimedResidence res, final String creator, final String inworld) {
this(plugin, res);
owner = creator;
world = inworld;
}
public static ResidencePermissions load(final ResidenceMain plugin, final ClaimedResidence res, final Map<String, Object> root) throws Exception {
final ResidencePermissions newperms = new ResidencePermissions(plugin, res);
newperms.owner = (String) root.get("Owner");
if (newperms.owner == null) {
newperms.owner = (String) root.get("OwnerLastKnownName");
}
if (newperms.owner == null) {
plugin.getLogger().warning("发现未知所有者的领地,转换为Server Land...");
newperms.owner = "Server Land";
}
newperms.world = (String) root.get("World");
FlagPermissions.load(root, newperms);
if (newperms.owner == null) {
throw new IllegalArgumentException("错误的Owner数据...");
}
if (newperms.world == null) {
throw new IllegalArgumentException("错误的World数据...");
}
if (newperms.playerFlags == null) {
throw new IllegalArgumentException("错误的PlayerFlags数据...");
}
if (newperms.groupFlags == null) {
throw new IllegalArgumentException("错误的GroupFlags数据...");
}
if (newperms.cuboidFlags == null) {
throw new IllegalArgumentException("错误的CuboidFlags数据...");
}
newperms.fixNames();
return newperms;
}
public static ResidencePermissions load(final ResidenceMain plugin, final ClaimedResidence res, final Map<String, Object> root) throws Exception {
final ResidencePermissions newperms = new ResidencePermissions(plugin, res);
newperms.owner = (String) root.get("Owner");
if (newperms.owner == null) {
newperms.owner = (String) root.get("OwnerLastKnownName");
}
if (newperms.owner == null) {
plugin.getLogger().warning("发现未知所有者的领地,转换为Server Land...");
newperms.owner = "Server Land";
}
newperms.world = (String) root.get("World");
FlagPermissions.load(root, newperms);
if (newperms.owner == null) {
throw new IllegalArgumentException("错误的Owner数据...");
}
if (newperms.world == null) {
throw new IllegalArgumentException("错误的World数据...");
}
if (newperms.playerFlags == null) {
throw new IllegalArgumentException("错误的PlayerFlags数据...");
}
if (newperms.groupFlags == null) {
throw new IllegalArgumentException("错误的GroupFlags数据...");
}
if (newperms.cuboidFlags == null) {
throw new IllegalArgumentException("错误的CuboidFlags数据...");
}
newperms.fixNames();
return newperms;
}
public void applyDefaultFlags() {
final PermissionManager gm = plugin.getPermissionManager();
final PermissionGroup group = gm.getGroup(owner, world);
final Set<Entry<String, Boolean>> dflags = group.getDefaultResidenceFlags();
final Set<Entry<String, Boolean>> dcflags = group.getDefaultCreatorFlags();
final Set<Entry<String, Map<String, Boolean>>> dgflags = group.getDefaultGroupFlags();
this.applyGlobalDefaults();
for (final Entry<String, Boolean> next : dflags) {
if (this.checkValidFlag(next.getKey(), true)) {
if (next.getValue()) {
this.setFlag(next.getKey(), FlagState.TRUE);
} else {
this.setFlag(next.getKey(), FlagState.FALSE);
}
}
}
for (final Entry<String, Boolean> next : dcflags) {
if (this.checkValidFlag(next.getKey(), false)) {
if (next.getValue()) {
this.setPlayerFlag(owner, next.getKey(), FlagState.TRUE);
} else {
this.setPlayerFlag(owner, next.getKey(), FlagState.FALSE);
}
}
}
for (final Entry<String, Map<String, Boolean>> entry : dgflags) {
final Map<String, Boolean> value = entry.getValue();
for (final Entry<String, Boolean> flag : value.entrySet()) {
if (flag.getValue()) {
this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.TRUE);
} else {
this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.FALSE);
}
}
}
}
public void applyDefaultFlags() {
final PermissionManager gm = plugin.getPermissionManager();
final PermissionGroup group = gm.getGroup(owner, world);
final Set<Entry<String, Boolean>> dflags = group.getDefaultResidenceFlags();
final Set<Entry<String, Boolean>> dcflags = group.getDefaultCreatorFlags();
final Set<Entry<String, Map<String, Boolean>>> dgflags = group.getDefaultGroupFlags();
this.applyGlobalDefaults();
for (final Entry<String, Boolean> next : dflags) {
if (this.checkValidFlag(next.getKey(), true)) {
if (next.getValue()) {
this.setFlag(next.getKey(), FlagState.TRUE);
} else {
this.setFlag(next.getKey(), FlagState.FALSE);
}
}
}
for (final Entry<String, Boolean> next : dcflags) {
if (this.checkValidFlag(next.getKey(), false)) {
if (next.getValue()) {
this.setPlayerFlag(owner, next.getKey(), FlagState.TRUE);
} else {
this.setPlayerFlag(owner, next.getKey(), FlagState.FALSE);
}
}
}
for (final Entry<String, Map<String, Boolean>> entry : dgflags) {
final Map<String, Boolean> value = entry.getValue();
for (final Entry<String, Boolean> flag : value.entrySet()) {
if (flag.getValue()) {
this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.TRUE);
} else {
this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.FALSE);
}
}
}
}
public void applyDefaultFlags(final Player player, final boolean resadmin) {
if (this.hasResidencePermission(player, true) || resadmin) {
this.applyDefaultFlags();
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("FlagsDefault"));
} else {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("NoPermission"));
}
}
public void applyDefaultFlags(final Player player, final boolean resadmin) {
if (this.hasResidencePermission(player, true) || resadmin) {
this.applyDefaultFlags();
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("FlagsDefault"));
} else {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("NoPermission"));
}
}
public void applyGlobalDefaults() {
this.clearFlags();
final FlagPermissions gRD = plugin.getConfigManager().getGlobalResidenceDefaultFlags();
final FlagPermissions gCD = plugin.getConfigManager().getGlobalCreatorDefaultFlags();
final Map<String, FlagPermissions> gGD = plugin.getConfigManager().getGlobalGroupDefaultFlags();
for (final Entry<String, Boolean> entry : gRD.cuboidFlags.entrySet()) {
if (entry.getValue()) {
this.setFlag(entry.getKey(), FlagState.TRUE);
} else {
this.setFlag(entry.getKey(), FlagState.FALSE);
}
}
for (final Entry<String, Boolean> entry : gCD.cuboidFlags.entrySet()) {
if (entry.getValue()) {
this.setPlayerFlag(owner, entry.getKey(), FlagState.TRUE);
} else {
this.setPlayerFlag(owner, entry.getKey(), FlagState.FALSE);
}
}
for (final Entry<String, FlagPermissions> entry : gGD.entrySet()) {
for (final Entry<String, Boolean> flag : entry.getValue().cuboidFlags.entrySet()) {
if (flag.getValue()) {
this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.TRUE);
} else {
this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.FALSE);
}
}
}
}
public void applyGlobalDefaults() {
this.clearFlags();
final FlagPermissions gRD = plugin.getConfigManager().getGlobalResidenceDefaultFlags();
final FlagPermissions gCD = plugin.getConfigManager().getGlobalCreatorDefaultFlags();
final Map<String, FlagPermissions> gGD = plugin.getConfigManager().getGlobalGroupDefaultFlags();
for (final Entry<String, Boolean> entry : gRD.cuboidFlags.entrySet()) {
if (entry.getValue()) {
this.setFlag(entry.getKey(), FlagState.TRUE);
} else {
this.setFlag(entry.getKey(), FlagState.FALSE);
}
}
for (final Entry<String, Boolean> entry : gCD.cuboidFlags.entrySet()) {
if (entry.getValue()) {
this.setPlayerFlag(owner, entry.getKey(), FlagState.TRUE);
} else {
this.setPlayerFlag(owner, entry.getKey(), FlagState.FALSE);
}
}
for (final Entry<String, FlagPermissions> entry : gGD.entrySet()) {
for (final Entry<String, Boolean> flag : entry.getValue().cuboidFlags.entrySet()) {
if (flag.getValue()) {
this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.TRUE);
} else {
this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.FALSE);
}
}
}
}
public void applyTemplate(final Player player, final FlagPermissions list, boolean resadmin) {
if (player != null) {
if (!player.getName().equals(owner) && !resadmin) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
return;
}
} else {
resadmin = true;
}
final PermissionGroup group = plugin.getPermissionManager().getGroup(owner, world);
for (final Entry<String, Boolean> flag : list.cuboidFlags.entrySet()) {
if (group.hasFlagAccess(flag.getKey()) || resadmin) {
this.cuboidFlags.put(flag.getKey(), flag.getValue());
} else if (player != null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED));
}
}
for (final Entry<String, Map<String, Boolean>> plists : list.playerFlags.entrySet()) {
for (final Entry<String, Boolean> flag : plists.getValue().entrySet()) {
if (group.hasFlagAccess(flag.getKey()) || resadmin) {
if (!this.playerFlags.containsKey(plists.getKey())) {
this.playerFlags.put(plists.getKey(), Collections.synchronizedMap(new HashMap<String, Boolean>()));
}
this.playerFlags.get(plists.getKey()).put(flag.getKey(), flag.getValue());
} else if (player != null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED));
}
}
}
for (final Entry<String, Map<String, Boolean>> glists : list.groupFlags.entrySet()) {
for (final Entry<String, Boolean> flag : glists.getValue().entrySet()) {
if (group.hasFlagAccess(flag.getKey()) || resadmin) {
if (!this.groupFlags.containsKey(glists.getKey())) {
this.groupFlags.put(glists.getKey(), Collections.synchronizedMap(new HashMap<String, Boolean>()));
}
this.groupFlags.get(glists.getKey()).put(flag.getKey(), flag.getValue());
} else if (player != null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED));
}
}
}
if (player != null) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("PermissionsApply"));
}
}
public void applyTemplate(final Player player, final FlagPermissions list, boolean resadmin) {
if (player != null) {
if (!player.getName().equals(owner) && !resadmin) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
return;
}
} else {
resadmin = true;
}
final PermissionGroup group = plugin.getPermissionManager().getGroup(owner, world);
for (final Entry<String, Boolean> flag : list.cuboidFlags.entrySet()) {
if (group.hasFlagAccess(flag.getKey()) || resadmin) {
this.cuboidFlags.put(flag.getKey(), flag.getValue());
} else if (player != null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED));
}
}
for (final Entry<String, Map<String, Boolean>> plists : list.playerFlags.entrySet()) {
for (final Entry<String, Boolean> flag : plists.getValue().entrySet()) {
if (group.hasFlagAccess(flag.getKey()) || resadmin) {
if (!this.playerFlags.containsKey(plists.getKey())) {
this.playerFlags.put(plists.getKey(), Collections.synchronizedMap(new HashMap<String, Boolean>()));
}
this.playerFlags.get(plists.getKey()).put(flag.getKey(), flag.getValue());
} else if (player != null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED));
}
}
}
for (final Entry<String, Map<String, Boolean>> glists : list.groupFlags.entrySet()) {
for (final Entry<String, Boolean> flag : glists.getValue().entrySet()) {
if (group.hasFlagAccess(flag.getKey()) || resadmin) {
if (!this.groupFlags.containsKey(glists.getKey())) {
this.groupFlags.put(glists.getKey(), Collections.synchronizedMap(new HashMap<String, Boolean>()));
}
this.groupFlags.get(glists.getKey()).put(flag.getKey(), flag.getValue());
} else if (player != null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED));
}
}
}
if (player != null) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("PermissionsApply"));
}
}
public void fixNames() {
final ArrayList<String> fixNames = new ArrayList<String>();
final Iterator<Entry<String, Map<String, Boolean>>> it = playerFlags.entrySet().iterator();
while (it.hasNext()) {
final String name = it.next().getKey();
if (!name.equals(name.toLowerCase())) {
fixNames.add(name);
}
}
for (final String name : fixNames) {
final Map<String, Boolean> get = playerFlags.get(name);
playerFlags.remove(name);
playerFlags.put(name.toLowerCase(), get);
}
}
public void fixNames() {
final ArrayList<String> fixNames = new ArrayList<String>();
final Iterator<Entry<String, Map<String, Boolean>>> it = playerFlags.entrySet().iterator();
while (it.hasNext()) {
final String name = it.next().getKey();
if (!name.equals(name.toLowerCase())) {
fixNames.add(name);
}
}
for (final String name : fixNames) {
final Map<String, Boolean> get = playerFlags.get(name);
playerFlags.remove(name);
playerFlags.put(name.toLowerCase(), get);
}
}
public String getOwner() {
return owner;
}
public String getOwner() {
return owner;
}
public String getWorld() {
return world;
}
public String getWorld() {
return world;
}
@Override
public boolean groupHas(final String group, final String flag, final boolean def) {
final ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.GROUP, group, def);
pm.callEvent(fc);
if (fc.isOverriden()) {
return fc.getOverrideValue();
}
return super.groupHas(group, flag, def);
}
@Override
public boolean groupHas(final String group, final String flag, final boolean def) {
final ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.GROUP, group, def);
pm.callEvent(fc);
if (fc.isOverriden()) {
return fc.getOverrideValue();
}
return super.groupHas(group, flag, def);
}
@Override
public boolean has(final String flag, final boolean def) {
final ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.RESIDENCE, null, def);
pm.callEvent(fc);
if (fc.isOverriden()) {
return fc.getOverrideValue();
}
return super.has(flag, def);
}
@Override
public boolean has(final String flag, final boolean def) {
final ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.RESIDENCE, null, def);
pm.callEvent(fc);
if (fc.isOverriden()) {
return fc.getOverrideValue();
}
return super.has(flag, def);
}
public boolean hasApplicableFlag(final String player, final String flag) {
return super.inheritanceIsPlayerSet(player, flag) || super.inheritanceIsGroupSet(plugin.getPermissionManager().getGroupNameByPlayer(player, world), flag) || super.inheritanceIsSet(flag);
}
public boolean hasApplicableFlag(final String player, final String flag) {
return super.inheritanceIsPlayerSet(player, flag) || super.inheritanceIsGroupSet(plugin.getPermissionManager().getGroupNameByPlayer(player, world), flag) || super.inheritanceIsSet(flag);
}
public boolean hasResidencePermission(final Player player, final boolean requireOwner) {
if (plugin.getConfigManager().enabledRentSystem()) {
final String resname = residence.getName();
if (plugin.getRentManager().isRented(resname)) {
if (requireOwner) {
return false;
}
final String renter = plugin.getRentManager().getRentingPlayer(resname);
if (player.getName().equalsIgnoreCase(renter)) {
return true;
}
return (playerHas(player.getName(), "admin", false));
}
}
if (requireOwner) {
return (owner.equalsIgnoreCase(player.getName()));
}
return (playerHas(player.getName(), "admin", false) || owner.equalsIgnoreCase(player.getName()));
}
public boolean hasResidencePermission(final Player player, final boolean requireOwner) {
if (plugin.getConfigManager().enabledRentSystem()) {
final String resname = residence.getName();
if (plugin.getRentManager().isRented(resname)) {
if (requireOwner) {
return false;
}
final String renter = plugin.getRentManager().getRentingPlayer(resname);
if (player.getName().equalsIgnoreCase(renter)) {
return true;
}
return (playerHas(player.getName(), "admin", false));
}
}
if (requireOwner) {
return (owner.equalsIgnoreCase(player.getName()));
}
return (playerHas(player.getName(), "admin", false) || owner.equalsIgnoreCase(player.getName()));
}
public boolean playerHas(final String player, final String flag, final boolean def) {
return this.playerHas(player, world, flag, def);
}
public boolean playerHas(final String player, final String flag, final boolean def) {
return this.playerHas(player, world, flag, def);
}
@Override
public boolean playerHas(final String player, final String world, final String flag, final boolean def) {
final ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.PLAYER, player, def);
pm.callEvent(fc);
if (fc.isOverriden()) {
return fc.getOverrideValue();
}
return super.playerHas(player, world, flag, def);
}
@Override
public boolean playerHas(final String player, final String world, final String flag, final boolean def) {
final ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.PLAYER, player, def);
pm.callEvent(fc);
if (fc.isOverriden()) {
return fc.getOverrideValue();
}
return super.playerHas(player, world, flag, def);
}
public boolean removeAllGroupFlags(final Player player, final String group, final boolean resadmin) {
if (this.hasResidencePermission(player, false) || resadmin) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, "ALL", ResidenceFlagChangeEvent.FlagType.GROUP, FlagState.NEITHER, null);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
super.removeAllGroupFlags(group);
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
}
return false;
}
public boolean removeAllGroupFlags(final Player player, final String group, final boolean resadmin) {
if (this.hasResidencePermission(player, false) || resadmin) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, "ALL", ResidenceFlagChangeEvent.FlagType.GROUP, FlagState.NEITHER, null);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
super.removeAllGroupFlags(group);
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
}
return false;
}
public boolean removeAllPlayerFlags(final Player player, final String targetPlayer, final boolean resadmin) {
if (this.hasResidencePermission(player, false) || resadmin) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, "ALL", ResidenceFlagChangeEvent.FlagType.RESIDENCE, FlagState.NEITHER, null);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
super.removeAllPlayerFlags(targetPlayer);
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
}
return false;
}
public boolean removeAllPlayerFlags(final Player player, final String targetPlayer, final boolean resadmin) {
if (this.hasResidencePermission(player, false) || resadmin) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, "ALL", ResidenceFlagChangeEvent.FlagType.RESIDENCE, FlagState.NEITHER, null);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
super.removeAllPlayerFlags(targetPlayer);
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
}
return false;
}
@Override
public Map<String, Object> save() {
final Map<String, Object> root = super.save();
root.put("Owner", owner);
root.put("World", world);
return root;
}
@Override
public Map<String, Object> save() {
final Map<String, Object> root = super.save();
root.put("Owner", owner);
root.put("World", world);
return root;
}
public boolean setFlag(final Player player, final String flag, final String flagstate, final boolean resadmin) {
if (validFlagGroups.containsKey(flag)) {
return this.setFlagGroup(player, flag, flagstate, resadmin);
}
final FlagState state = FlagPermissions.stringToFlagState(flagstate);
if (checkCanSetFlag(player, flag, state, true, resadmin)) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.RESIDENCE, state, null);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
if (super.setFlag(flag, state)) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
}
}
return false;
}
public boolean setFlag(final Player player, final String flag, final String flagstate, final boolean resadmin) {
if (validFlagGroups.containsKey(flag)) {
return this.setFlagGroup(player, flag, flagstate, resadmin);
}
final FlagState state = FlagPermissions.stringToFlagState(flagstate);
if (checkCanSetFlag(player, flag, state, true, resadmin)) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.RESIDENCE, state, null);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
if (super.setFlag(flag, state)) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
}
}
return false;
}
@Override
public boolean setFlag(final String flag, final FlagState state) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.RESIDENCE, state, null);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
return super.setFlag(flag, state);
}
@Override
public boolean setFlag(final String flag, final FlagState state) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.RESIDENCE, state, null);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
return super.setFlag(flag, state);
}
public boolean setFlagGroup(final Player player, final String flaggroup, final String state, final boolean resadmin) {
if (ResidencePermissions.validFlagGroups.containsKey(flaggroup)) {
final ArrayList<String> flags = ResidencePermissions.validFlagGroups.get(flaggroup);
boolean changed = false;
for (final String flag : flags) {
if (this.setFlag(player, flag, state, resadmin)) {
changed = true;
}
}
return changed;
}
return false;
}
public boolean setFlagGroup(final Player player, final String flaggroup, final String state, final boolean resadmin) {
if (ResidencePermissions.validFlagGroups.containsKey(flaggroup)) {
final ArrayList<String> flags = ResidencePermissions.validFlagGroups.get(flaggroup);
boolean changed = false;
for (final String flag : flags) {
if (this.setFlag(player, flag, state, resadmin)) {
changed = true;
}
}
return changed;
}
return false;
}
public boolean setFlagGroupOnGroup(final Player player, final String flaggroup, final String group, final String state, final boolean resadmin) {
if (ResidencePermissions.validFlagGroups.containsKey(flaggroup)) {
final ArrayList<String> flags = ResidencePermissions.validFlagGroups.get(flaggroup);
boolean changed = false;
for (final String flag : flags) {
if (this.setGroupFlag(player, group, flag, state, resadmin)) {
changed = true;
}
}
return changed;
}
return false;
}
public boolean setFlagGroupOnGroup(final Player player, final String flaggroup, final String group, final String state, final boolean resadmin) {
if (ResidencePermissions.validFlagGroups.containsKey(flaggroup)) {
final ArrayList<String> flags = ResidencePermissions.validFlagGroups.get(flaggroup);
boolean changed = false;
for (final String flag : flags) {
if (this.setGroupFlag(player, group, flag, state, resadmin)) {
changed = true;
}
}
return changed;
}
return false;
}
public boolean setFlagGroupOnPlayer(final Player player, final String target, final String flaggroup, final String state, final boolean resadmin) {
if (ResidencePermissions.validFlagGroups.containsKey(flaggroup)) {
final ArrayList<String> flags = ResidencePermissions.validFlagGroups.get(flaggroup);
boolean changed = false;
for (final String flag : flags) {
if (this.setPlayerFlag(player, target, flag, state, resadmin)) {
changed = true;
}
}
return changed;
}
return false;
}
public boolean setFlagGroupOnPlayer(final Player player, final String target, final String flaggroup, final String state, final boolean resadmin) {
if (ResidencePermissions.validFlagGroups.containsKey(flaggroup)) {
final ArrayList<String> flags = ResidencePermissions.validFlagGroups.get(flaggroup);
boolean changed = false;
for (final String flag : flags) {
if (this.setPlayerFlag(player, target, flag, state, resadmin)) {
changed = true;
}
}
return changed;
}
return false;
}
public boolean setGroupFlag(final Player player, String group, final String flag, final String flagstate, final boolean resadmin) {
group = group.toLowerCase();
if (validFlagGroups.containsKey(flag)) {
return this.setFlagGroupOnGroup(player, flag, group, flagstate, resadmin);
}
final FlagState state = FlagPermissions.stringToFlagState(flagstate);
if (checkCanSetFlag(player, flag, state, false, resadmin)) {
if (plugin.getPermissionManager().hasGroup(group)) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.GROUP, state, group);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
if (super.setGroupFlag(group, flag, state)) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
}
} else {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidGroup"));
return false;
}
}
return false;
}
public boolean setGroupFlag(final Player player, String group, final String flag, final String flagstate, final boolean resadmin) {
group = group.toLowerCase();
if (validFlagGroups.containsKey(flag)) {
return this.setFlagGroupOnGroup(player, flag, group, flagstate, resadmin);
}
final FlagState state = FlagPermissions.stringToFlagState(flagstate);
if (checkCanSetFlag(player, flag, state, false, resadmin)) {
if (plugin.getPermissionManager().hasGroup(group)) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.GROUP, state, group);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
if (super.setGroupFlag(group, flag, state)) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
}
} else {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidGroup"));
return false;
}
}
return false;
}
@Override
public boolean setGroupFlag(final String group, final String flag, final FlagState state) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.GROUP, state, group);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
return super.setGroupFlag(group, flag, state);
}
@Override
public boolean setGroupFlag(final String group, final String flag, final FlagState state) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.GROUP, state, group);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
return super.setGroupFlag(group, flag, state);
}
public void setOwner(final String newOwner, final boolean resetFlags) {
final ResidenceOwnerChangeEvent ownerchange = new ResidenceOwnerChangeEvent(residence, newOwner);
pm.callEvent(ownerchange);
owner = newOwner;
if (resetFlags) {
this.applyDefaultFlags();
}
}
public void setOwner(final String newOwner, final boolean resetFlags) {
final ResidenceOwnerChangeEvent ownerchange = new ResidenceOwnerChangeEvent(residence, newOwner);
pm.callEvent(ownerchange);
owner = newOwner;
if (resetFlags) {
this.applyDefaultFlags();
}
}
public boolean setPlayerFlag(final Player player, final String targetPlayer, final String flag, final String flagstate, final boolean resadmin) {
if (validFlagGroups.containsKey(flag)) {
return this.setFlagGroupOnPlayer(player, targetPlayer, flag, flagstate, resadmin);
}
final FlagState state = FlagPermissions.stringToFlagState(flagstate);
if (checkCanSetFlag(player, flag, state, false, resadmin)) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.PLAYER, state, targetPlayer);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
if (super.setPlayerFlag(targetPlayer, flag, state)) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
}
}
return false;
}
public boolean setPlayerFlag(final Player player, final String targetPlayer, final String flag, final String flagstate, final boolean resadmin) {
if (validFlagGroups.containsKey(flag)) {
return this.setFlagGroupOnPlayer(player, targetPlayer, flag, flagstate, resadmin);
}
final FlagState state = FlagPermissions.stringToFlagState(flagstate);
if (checkCanSetFlag(player, flag, state, false, resadmin)) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.PLAYER, state, targetPlayer);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
if (super.setPlayerFlag(targetPlayer, flag, state)) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
}
}
return false;
}
@Override
public boolean setPlayerFlag(final String player, final String flag, final FlagState state) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.PLAYER, state, player);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
return super.setPlayerFlag(player, flag, state);
}
@Override
public boolean setPlayerFlag(final String player, final String flag, final FlagState state) {
final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.PLAYER, state, player);
pm.callEvent(fc);
if (fc.isCancelled()) {
return false;
}
return super.setPlayerFlag(player, flag, state);
}
private boolean checkCanSetFlag(final Player player, final String flag, final FlagState state, final boolean globalflag, final boolean resadmin) {
if (!checkValidFlag(flag, globalflag)) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidFlag"));
return false;
}
if (state == FlagState.INVALID) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidFlagState"));
return false;
}
if (!resadmin) {
if (!this.hasResidencePermission(player, false)) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
return false;
}
if (!hasFlagAccess(owner, flag)) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("OwnerNoPermission"));
return false;
}
}
return true;
}
private boolean checkCanSetFlag(final Player player, final String flag, final FlagState state, final boolean globalflag, final boolean resadmin) {
if (!checkValidFlag(flag, globalflag)) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidFlag"));
return false;
}
if (state == FlagState.INVALID) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidFlagState"));
return false;
}
if (!resadmin) {
if (!this.hasResidencePermission(player, false)) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
return false;
}
if (!hasFlagAccess(owner, flag)) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("OwnerNoPermission"));
return false;
}
}
return true;
}
private boolean hasFlagAccess(final String player, final String flag) {
final PermissionGroup group = plugin.getPermissionManager().getGroup(player, world);
return group.hasFlagAccess(flag);
}
private boolean hasFlagAccess(final String player, final String flag) {
final PermissionGroup group = plugin.getPermissionManager().getGroup(player, world);
return group.hasFlagAccess(flag);
}
}

View File

@@ -22,112 +22,112 @@ import cn.citycraft.Residence.ResidenceMain;
* @author Administrator
*/
public class WorldFlagManager {
protected FlagPermissions globaldefaults;
protected Map<String, Map<String, FlagPermissions>> groupperms;
protected Map<String, FlagPermissions> worldperms;
ResidenceMain plugin;
protected FlagPermissions globaldefaults;
protected Map<String, Map<String, FlagPermissions>> groupperms;
protected Map<String, FlagPermissions> worldperms;
ResidenceMain plugin;
public WorldFlagManager(final ResidenceMain plugin) {
this.plugin = plugin;
globaldefaults = new FlagPermissions();
worldperms = new HashMap<String, FlagPermissions>();
groupperms = new HashMap<String, Map<String, FlagPermissions>>();
this.parsePerms(plugin.getConfig());
}
public WorldFlagManager(final ResidenceMain plugin) {
this.plugin = plugin;
globaldefaults = new FlagPermissions();
worldperms = new HashMap<String, FlagPermissions>();
groupperms = new HashMap<String, Map<String, FlagPermissions>>();
this.parsePerms(plugin.getConfig());
}
public FlagPermissions getPerms(final Player player) {
return this.getPerms(player.getWorld().getName(), plugin.getPermissionManager().getGroupNameByPlayer(player));
}
public FlagPermissions getPerms(final Player player) {
return this.getPerms(player.getWorld().getName(), plugin.getPermissionManager().getGroupNameByPlayer(player));
}
public FlagPermissions getPerms(String world) {
world = world.toLowerCase();
final FlagPermissions list = worldperms.get(world);
if (list == null) {
if (globaldefaults == null) {
return new FlagPermissions();
}
return globaldefaults;
}
return list;
}
public FlagPermissions getPerms(String world) {
world = world.toLowerCase();
final FlagPermissions list = worldperms.get(world);
if (list == null) {
if (globaldefaults == null) {
return new FlagPermissions();
}
return globaldefaults;
}
return list;
}
public FlagPermissions getPerms(String world, String group) {
world = world.toLowerCase();
group = group.toLowerCase();
final Map<String, FlagPermissions> groupworldperms = groupperms.get(group);
if (groupworldperms == null) {
return this.getPerms(world);
}
FlagPermissions list = groupworldperms.get(world);
if (list == null) {
list = groupworldperms.get("global." + world);
if (list == null) {
list = groupworldperms.get("global");
}
if (list == null) {
return this.getPerms(world);
}
}
return list;
}
public FlagPermissions getPerms(String world, String group) {
world = world.toLowerCase();
group = group.toLowerCase();
final Map<String, FlagPermissions> groupworldperms = groupperms.get(group);
if (groupworldperms == null) {
return this.getPerms(world);
}
FlagPermissions list = groupworldperms.get(world);
if (list == null) {
list = groupworldperms.get("global." + world);
if (list == null) {
list = groupworldperms.get("global");
}
if (list == null) {
return this.getPerms(world);
}
}
return list;
}
public void parsePerms(final FileConfiguration config) {
try {
Set<String> keys = config.getConfigurationSection("Global.Flags").getKeys(false);
if (keys != null) {
for (final String key : keys) {
if (key.equalsIgnoreCase("Global")) {
globaldefaults = FlagPermissions.parseFromConfigNode(key, config.getConfigurationSection("Global.Flags"));
} else {
worldperms.put(key.toLowerCase(), FlagPermissions.parseFromConfigNode(key, config.getConfigurationSection("Global.Flags")));
}
}
}
for (final Entry<String, FlagPermissions> entry : worldperms.entrySet()) {
entry.getValue().setParent(globaldefaults);
}
keys = config.getConfigurationSection("Groups").getKeys(false);
if (keys != null) {
for (final String key : keys) {
final ConfigurationSection worldkeylist = config.getConfigurationSection("Groups." + key + ".Flags.World");
if (worldkeylist != null) {
final Set<String> worldkeys = config.getConfigurationSection("Groups." + key + ".Flags.World").getKeys(false);
if (worldkeys != null) {
final Map<String, FlagPermissions> perms = new HashMap<String, FlagPermissions>();
for (final String wkey : worldkeys) {
FlagPermissions list = FlagPermissions.parseFromConfigNode(wkey, config.getConfigurationSection("Groups." + key + ".Flags.World"));
if (wkey.equalsIgnoreCase("global")) {
list.setParent(globaldefaults);
perms.put(wkey.toLowerCase(), list);
for (final Entry<String, FlagPermissions> worldperm : worldperms.entrySet()) {
list = FlagPermissions.parseFromConfigNode(wkey, config.getConfigurationSection("Groups." + key + ".Flags.World"));
list.setParent(worldperm.getValue());
perms.put("global." + worldperm.getKey().toLowerCase(), list);
}
} else {
perms.put(wkey.toLowerCase(), list);
}
}
for (final Entry<String, FlagPermissions> entry : perms.entrySet()) {
final String wkey = entry.getKey();
final FlagPermissions list = entry.getValue();
if (!wkey.startsWith("global.")) {
list.setParent(perms.get("global." + wkey));
if (list.getParent() == null) {
list.setParent(worldperms.get(wkey));
}
if (list.getParent() == null) {
list.setParent(globaldefaults);
}
}
}
groupperms.put(key.toLowerCase(), perms);
}
}
}
}
} catch (final Exception ex) {
Logger.getLogger(WorldFlagManager.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void parsePerms(final FileConfiguration config) {
try {
Set<String> keys = config.getConfigurationSection("Global.Flags").getKeys(false);
if (keys != null) {
for (final String key : keys) {
if (key.equalsIgnoreCase("Global")) {
globaldefaults = FlagPermissions.parseFromConfigNode(key, config.getConfigurationSection("Global.Flags"));
} else {
worldperms.put(key.toLowerCase(), FlagPermissions.parseFromConfigNode(key, config.getConfigurationSection("Global.Flags")));
}
}
}
for (final Entry<String, FlagPermissions> entry : worldperms.entrySet()) {
entry.getValue().setParent(globaldefaults);
}
keys = config.getConfigurationSection("Groups").getKeys(false);
if (keys != null) {
for (final String key : keys) {
final ConfigurationSection worldkeylist = config.getConfigurationSection("Groups." + key + ".Flags.World");
if (worldkeylist != null) {
final Set<String> worldkeys = config.getConfigurationSection("Groups." + key + ".Flags.World").getKeys(false);
if (worldkeys != null) {
final Map<String, FlagPermissions> perms = new HashMap<String, FlagPermissions>();
for (final String wkey : worldkeys) {
FlagPermissions list = FlagPermissions.parseFromConfigNode(wkey, config.getConfigurationSection("Groups." + key + ".Flags.World"));
if (wkey.equalsIgnoreCase("global")) {
list.setParent(globaldefaults);
perms.put(wkey.toLowerCase(), list);
for (final Entry<String, FlagPermissions> worldperm : worldperms.entrySet()) {
list = FlagPermissions.parseFromConfigNode(wkey, config.getConfigurationSection("Groups." + key + ".Flags.World"));
list.setParent(worldperm.getValue());
perms.put("global." + worldperm.getKey().toLowerCase(), list);
}
} else {
perms.put(wkey.toLowerCase(), list);
}
}
for (final Entry<String, FlagPermissions> entry : perms.entrySet()) {
final String wkey = entry.getKey();
final FlagPermissions list = entry.getValue();
if (!wkey.startsWith("global.")) {
list.setParent(perms.get("global." + wkey));
if (list.getParent() == null) {
list.setParent(worldperms.get(wkey));
}
if (list.getParent() == null) {
list.setParent(globaldefaults);
}
}
}
groupperms.put(key.toLowerCase(), perms);
}
}
}
}
} catch (final Exception ex) {
Logger.getLogger(WorldFlagManager.class.getName()).log(Level.SEVERE, null, ex);
}
}
}