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

check config null...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092
2015-10-08 18:08:29 +08:00
parent 92086e4f3a
commit a962b6f44d
4 changed files with 182 additions and 134 deletions

View File

@@ -9,9 +9,6 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.event.entity.SpawnerSpawnEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
@@ -27,14 +24,35 @@ public class ResidenceBugFix implements Listener {
plugin.getLogger().info("防刷甘蔗补丁已加载...");
plugin.getLogger().info("防刷单元补丁已加载...");
plugin.getLogger().info("防刷铁轨补丁已加载...");
// plugin.getLogger().info("防刷生物补丁已加载...");
plugin.getLogger().info("防刷生物补丁已加载...");
}
@EventHandler
public void onPhysics(final BlockPhysicsEvent e) {
final Material mat = e.getChangedType();
if (mat == Material.RAILS || mat == Material.POWERED_RAIL || mat == Material.ACTIVATOR_RAIL || mat == Material.DETECTOR_RAIL) {
public void onBlockPlace(final PlayerInteractEvent e) {
if (e.getAction() == Action.LEFT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.PHYSICAL) {
return;
}
try {
final Player p = e.getPlayer();
final ItemStack it = p.getItemInHand();
if (it == null || it.getType() == Material.AIR) {
return;
}
final Block b = e.getClickedBlock();
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(b.getLocation());
if (res == null) {
return;
}
if ((it.getType() == Material.PUMPKIN && (b.getType() == Material.SNOW_BLOCK || b.getType() == Material.IRON_BLOCK))
|| (it.getType() == Material.SKULL_ITEM && b.getType() == Material.SOUL_SAND)) {
final FlagPermissions perms = res.getPermissions();
final String world = p.getWorld().getName();
if (!perms.playerHas(p.getName(), world, "place", perms.playerHas(p.getName(), world, "build", false))) {
e.setCancelled(true);
p.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission") + ChatColor.DARK_RED + " 当前区域不允许放置!");
}
}
} catch (final Exception e2) {
}
}
@@ -73,53 +91,18 @@ public class ResidenceBugFix implements Listener {
}
@EventHandler
public void onSpawn(final CreatureSpawnEvent e) {
// final SpawnReason sr = e.getSpawnReason();
// if (sr == SpawnReason.NATURAL) {
// return;
// }
// plugin.getLogger().info("=======CreatureSpawnEvent=======");
// plugin.getLogger().info(e.getEntity().getType().toString());
// plugin.getLogger().info(e.getEntityType().toString());
// plugin.getLogger().info(e.getSpawnReason().toString());
// plugin.getLogger().info("=======CreatureSpawnEvent=======");
// final Location loc = e.getLocation();
// if (sr == SpawnReason.BUILD_IRONGOLEM || sr == SpawnReason.BUILD_SNOWMAN || sr == SpawnReason.BUILD_WITHER) {
// final FlagPermissions perm = plugin.getPermsByLocForPlayer(loc, p);
// if (!perm.has("place", false)) {
// e.setCancelled(true);
// p.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission") + ChatColor.DARK_RED + " 当前区域无法建造生物!");
// }
// }
public void onRailsPhysics(final BlockPhysicsEvent e) {
final Material mat = e.getChangedType();
if (mat == Material.RAILS || mat == Material.POWERED_RAIL || mat == Material.ACTIVATOR_RAIL || mat == Material.DETECTOR_RAIL) {
e.setCancelled(true);
}
}
@EventHandler
public void onSpawn(final EntitySpawnEvent e) {
// plugin.getLogger().info("=======EntitySpawnEvent=======");
// plugin.getLogger().info(e.getEntity().getType().toString());
// plugin.getLogger().info(e.getEntityType().toString());
// plugin.getLogger().info(e.getLocation().toString());
// plugin.getLogger().info("=======EntitySpawnEvent=======");
// if (e.getEntity() instanceof Player) {
// final Player p = (Player) e.getEntity();
// final EntityType et = e.getEntityType();
// final Location loc = e.getLocation();
// if (et == EntityType.WITHER || et == EntityType.SNOWMAN || et == EntityType.IRON_GOLEM) {
// final FlagPermissions perm = plugin.getPermsByLocForPlayer(loc, p);
// if (!perm.has("place", false)) {
// e.setCancelled(true);
// p.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission") + ChatColor.DARK_RED + " 当前区域无法建造生物!");
// }
// }
public void onSugarCanePhysics(final BlockPhysicsEvent e) {
// final Material mat = e.getChangedType();
// if (mat == Material.SUGAR_CANE_BLOCK) {
// e.getBlock().getDrops().clear();
// }
}
@EventHandler
public void onSpawn(final SpawnerSpawnEvent e) {
// plugin.getLogger().info("=======SpawnerSpawnEvent=======");
// plugin.getLogger().info(e.getEntityType().toString());
// plugin.getLogger().info(e.getLocation().toString());
// plugin.getLogger().info(e.getSpawner().getSpawnedType().toString());
// plugin.getLogger().info("=======SpawnerSpawnEvent=======");
}
}

View File

@@ -16,6 +16,8 @@ import org.bukkit.configuration.file.FileConfiguration;
import com.bekvon.bukkit.residence.ResidenceMain;
import com.bekvon.bukkit.residence.protection.FlagPermissions;
import cn.citycraft.PluginHelper.config.FileConfig;
/**
*
* @author Administrator
@@ -214,6 +216,10 @@ public class ConfigManager {
@SuppressWarnings("deprecation")
private void load(final FileConfiguration config) {
try {
if (!config.isConfigurationSection("Global")) {
plugin.getLogger().warning("配置文件主键丢失 恢复默认配置文件!");
plugin.getConfig().addDefaults(new FileConfig(plugin));
}
defaultGroup = config.getString("Global.DefaultGroup", "default").toLowerCase();
adminsOnly = config.getBoolean("Global.AdminOnlyCommands", false);
useLeases = config.getBoolean("Global.UseLeaseSystem", false);
@@ -255,7 +261,6 @@ public class ConfigManager {
if (!plugin.is1_8()) {
actionBar = false;
}
if (node != null) {
final Set<String> keys = node.getConfigurationSection(defaultGroup).getKeys(false);
if (keys != null) {

View File

@@ -27,23 +27,16 @@ import com.bekvon.bukkit.residence.ResidenceMain;
*/
public class FlagPermissions {
public static enum FlagState {
FALSE,
INVALID,
NEITHER,
TRUE
}
protected static ResidenceMain plugin;
protected static ArrayList<String> validAreaFlags = new ArrayList<String>();
protected static HashMap<String, ArrayList<String>> validFlagGroups = new HashMap<String, ArrayList<String>>();
protected static ArrayList<String> validFlags = new ArrayList<String>();
protected static ArrayList<String> validPlayerFlags = new ArrayList<String>();
final static Map<Material, String> matUseFlagList = new EnumMap<Material, String>(Material.class);
protected static ResidenceMain plugin;
protected Map<String, Boolean> cuboidFlags;
protected Map<String, Map<String, Boolean>> groupFlags;
protected FlagPermissions parent;
protected Map<String, Map<String, Boolean>> playerFlags;
public FlagPermissions() {
@@ -634,4 +627,11 @@ public class FlagPermissions {
}
return def;
}
public static enum FlagState {
FALSE,
INVALID,
NEITHER,
TRUE
}
}

View File

@@ -51,24 +51,30 @@ public class ResidencePermissions extends FlagPermissions {
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)
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 Exception("错误的Owner数据...");
if (newperms.world == null)
throw new Exception("错误的World数据...");
if (newperms.playerFlags == null)
throw new Exception("错误的PlayerFlags数据...");
if (newperms.groupFlags == null)
throw new Exception("错误的GroupFlags数据...");
if (newperms.cuboidFlags == null)
throw new Exception("错误的CuboidFlags数据...");
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;
}
@@ -80,58 +86,74 @@ public class ResidencePermissions extends FlagPermissions {
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())
for (final Entry<String, Boolean> next : dflags) {
if (this.checkValidFlag(next.getKey(), true)) {
if (next.getValue()) {
this.setFlag(next.getKey(), FlagState.TRUE);
else
} else {
this.setFlag(next.getKey(), FlagState.FALSE);
for (final Entry<String, Boolean> next : dcflags)
if (this.checkValidFlag(next.getKey(), false))
if (next.getValue())
}
}
}
for (final Entry<String, Boolean> next : dcflags) {
if (this.checkValidFlag(next.getKey(), false)) {
if (next.getValue()) {
this.setPlayerFlag(owner, next.getKey(), FlagState.TRUE);
else
} 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())
for (final Entry<String, Boolean> flag : value.entrySet()) {
if (flag.getValue()) {
this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.TRUE);
else
} 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
} 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())
for (final Entry<String, Boolean> entry : gRD.cuboidFlags.entrySet()) {
if (entry.getValue()) {
this.setFlag(entry.getKey(), FlagState.TRUE);
else
} else {
this.setFlag(entry.getKey(), FlagState.FALSE);
for (final Entry<String, Boolean> entry : gCD.cuboidFlags.entrySet())
if (entry.getValue())
}
}
for (final Entry<String, Boolean> entry : gCD.cuboidFlags.entrySet()) {
if (entry.getValue()) {
this.setPlayerFlag(owner, entry.getKey(), FlagState.TRUE);
else
} 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())
}
}
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
} else {
this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.FALSE);
}
}
}
}
public void applyTemplate(final Player player, final FlagPermissions list, boolean resadmin) {
if (player != null) {
@@ -139,42 +161,55 @@ public class ResidencePermissions extends FlagPermissions {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
return;
}
} else
} 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)
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)
} 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())
}
}
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()))
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)
} 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())
}
}
}
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()))
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)
} else if (player != null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED));
if (player != null)
}
}
}
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()))
if (!name.equals(name.toLowerCase())) {
fixNames.add(name);
}
}
for (final String name : fixNames) {
final Map<String, Boolean> get = playerFlags.get(name);
playerFlags.remove(name);
@@ -194,8 +229,9 @@ public class ResidencePermissions extends FlagPermissions {
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())
if (fc.isOverriden()) {
return fc.getOverrideValue();
}
return super.groupHas(group, flag, def);
}
@@ -203,8 +239,9 @@ public class ResidencePermissions extends FlagPermissions {
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())
if (fc.isOverriden()) {
return fc.getOverrideValue();
}
return super.has(flag, def);
}
@@ -216,17 +253,20 @@ public class ResidencePermissions extends FlagPermissions {
if (plugin.getConfigManager().enabledRentSystem()) {
final String resname = residence.getName();
if (plugin.getRentManager().isRented(resname)) {
if (requireOwner)
if (requireOwner) {
return false;
}
final String renter = plugin.getRentManager().getRentingPlayer(resname);
if (player.getName().equalsIgnoreCase(renter))
if (player.getName().equalsIgnoreCase(renter)) {
return true;
else
} else {
return (playerHas(player.getName(), "admin", false));
}
}
if (requireOwner)
}
if (requireOwner) {
return (owner.equalsIgnoreCase(player.getName()));
}
return (playerHas(player.getName(), "admin", false) || owner.equalsIgnoreCase(player.getName()));
}
@@ -238,8 +278,9 @@ public class ResidencePermissions extends FlagPermissions {
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())
if (fc.isOverriden()) {
return fc.getOverrideValue();
}
return super.playerHas(player, world, flag, def);
}
@@ -247,8 +288,9 @@ public class ResidencePermissions extends FlagPermissions {
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())
if (fc.isCancelled()) {
return false;
}
super.removeAllGroupFlags(group);
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
@@ -260,8 +302,9 @@ public class ResidencePermissions extends FlagPermissions {
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())
if (fc.isCancelled()) {
return false;
}
super.removeAllPlayerFlags(targetPlayer);
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
@@ -278,14 +321,16 @@ public class ResidencePermissions extends FlagPermissions {
}
public boolean setFlag(final Player player, final String flag, final String flagstate, final boolean resadmin) {
if (validFlagGroups.containsKey(flag))
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())
if (fc.isCancelled()) {
return false;
}
if (super.setFlag(flag, state)) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
@@ -298,8 +343,9 @@ public class ResidencePermissions extends FlagPermissions {
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())
if (fc.isCancelled()) {
return false;
}
return super.setFlag(flag, state);
}
@@ -307,9 +353,11 @@ public class ResidencePermissions extends FlagPermissions {
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))
for (final String flag : flags) {
if (this.setFlag(player, flag, state, resadmin)) {
changed = true;
}
}
return changed;
}
return false;
@@ -319,9 +367,11 @@ public class ResidencePermissions extends FlagPermissions {
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))
for (final String flag : flags) {
if (this.setGroupFlag(player, group, flag, state, resadmin)) {
changed = true;
}
}
return changed;
}
return false;
@@ -331,9 +381,11 @@ public class ResidencePermissions extends FlagPermissions {
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))
for (final String flag : flags) {
if (this.setPlayerFlag(player, target, flag, state, resadmin)) {
changed = true;
}
}
return changed;
}
return false;
@@ -341,15 +393,17 @@ public class ResidencePermissions extends FlagPermissions {
public boolean setGroupFlag(final Player player, String group, final String flag, final String flagstate, final boolean resadmin) {
group = group.toLowerCase();
if (validFlagGroups.containsKey(flag))
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 (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())
if (fc.isCancelled()) {
return false;
}
if (super.setGroupFlag(group, flag, state)) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
@@ -358,6 +412,7 @@ public class ResidencePermissions extends FlagPermissions {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidGroup"));
return false;
}
}
return false;
}
@@ -365,8 +420,9 @@ public class ResidencePermissions extends FlagPermissions {
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())
if (fc.isCancelled()) {
return false;
}
return super.setGroupFlag(group, flag, state);
}
@@ -374,19 +430,22 @@ public class ResidencePermissions extends FlagPermissions {
final ResidenceOwnerChangeEvent ownerchange = new ResidenceOwnerChangeEvent(residence, newOwner);
pm.callEvent(ownerchange);
owner = newOwner;
if (resetFlags)
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))
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())
if (fc.isCancelled()) {
return false;
}
if (super.setPlayerFlag(targetPlayer, flag, state)) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet"));
return true;
@@ -399,8 +458,9 @@ public class ResidencePermissions extends FlagPermissions {
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())
if (fc.isCancelled()) {
return false;
}
return super.setPlayerFlag(player, flag, state);
}