From ce0f698e648a77608faa5091456db657b719e743 Mon Sep 17 00:00:00 2001 From: 502647092 Date: Fri, 25 Sep 2015 11:34:38 +0800 Subject: [PATCH] update ConfigManager... Signed-off-by: 502647092 --- .../bukkit/residence/ConfigManager.java | 2 +- .../bekvon/bukkit/residence/FlagManager.java | 2 + .../bekvon/bukkit/residence/Residence.java | 8 +++ .../listeners/ResidenceEntityListener.java | 65 ++----------------- .../residence/protection/FlagPermissions.java | 17 +++-- src/main/resources/config.yml | 2 +- src/main/resources/flagconfig.yml | 3 +- 7 files changed, 28 insertions(+), 71 deletions(-) diff --git a/src/main/java/com/bekvon/bukkit/residence/ConfigManager.java b/src/main/java/com/bekvon/bukkit/residence/ConfigManager.java index 26ccdb6..54eb590 100644 --- a/src/main/java/com/bekvon/bukkit/residence/ConfigManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/ConfigManager.java @@ -237,7 +237,7 @@ public class ConfigManager { preventBuildInRent = config.getBoolean("Global.PreventRentModify", true); stopOnSaveError = config.getBoolean("Global.StopOnSaveFault", true); legacyperms = config.getBoolean("Global.LegacyPermissions", false); - namefix = config.getString("Global.ResidenceNameRegex", null);// "[^a-zA-Z0-9\\-\\_]" + namefix = config.getString("Global.ResidenceNameRegex", "[A-Za-z0-9\\u4e00-\\u9fa5\\-\\_]");// "[^a-zA-Z0-9\\-\\_]" showIntervalMessages = config.getBoolean("Global.ShowIntervalMessages", false); spoutEnable = config.getBoolean("Global.EnableSpout", false); enableLeaseMoneyAccount = config.getBoolean("Global.EnableLeaseMoneyAccount", true); diff --git a/src/main/java/com/bekvon/bukkit/residence/FlagManager.java b/src/main/java/com/bekvon/bukkit/residence/FlagManager.java index 2168788..c73bfb6 100644 --- a/src/main/java/com/bekvon/bukkit/residence/FlagManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/FlagManager.java @@ -6,6 +6,7 @@ import java.util.Map.Entry; import org.bukkit.event.Listener; import org.bukkit.plugin.PluginManager; +import com.bekvon.bukkit.residence.listeners.flag.ResidenceAnimalKilling; import com.bekvon.bukkit.residence.listeners.flag.ResidenceFlyListener; import cn.citycraft.PluginHelper.config.FileConfig; @@ -27,6 +28,7 @@ public class FlagManager { flagmap = new HashMap(); flagmap.put(config.getBoolean("Flag.Fly"), new ResidenceFlyListener(plugin)); + flagmap.put(config.getBoolean("Flag.AnimalKilling"), new ResidenceAnimalKilling(plugin)); for (final Entry fm : flagmap.entrySet()) { if (fm.getKey()) { diff --git a/src/main/java/com/bekvon/bukkit/residence/Residence.java b/src/main/java/com/bekvon/bukkit/residence/Residence.java index e557e13..2d2c0e8 100644 --- a/src/main/java/com/bekvon/bukkit/residence/Residence.java +++ b/src/main/java/com/bekvon/bukkit/residence/Residence.java @@ -50,6 +50,7 @@ import com.bekvon.bukkit.residence.listeners.ResidencePlayerListener_1_8; import com.bekvon.bukkit.residence.permissions.PermissionManager; import com.bekvon.bukkit.residence.persistance.YMLSaveHelper; import com.bekvon.bukkit.residence.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.EntityManager; import com.bekvon.bukkit.residence.protection.FlagPermissions; import com.bekvon.bukkit.residence.protection.LeaseManager; import com.bekvon.bukkit.residence.protection.PermissionListManager; @@ -94,6 +95,7 @@ public class Residence extends JavaPlugin { protected Map deleteConfirm; protected EconomyInterface economy; protected ResidenceEntityListener elistener; + protected EntityManager entitymanager; protected boolean firstenable = true; protected FlagManager fmanager; protected PermissionManager gmanager; @@ -156,6 +158,10 @@ public class Residence extends JavaPlugin { return elistener; } + public EntityManager getEntityManager() { + return entitymanager; + } + public HelpEntry getHelppages() { return helppages; } @@ -369,6 +375,8 @@ public class Residence extends JavaPlugin { imanager = new WorldItemManager(this.getConfig()); wmanager = new WorldFlagManager(this); + entitymanager = new EntityManager(this); + chatmanager = new ChatManager(this); rentmanager = new RentManager(this); for (final String lang : validLanguages) { diff --git a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java index dde1a14..acb52b6 100644 --- a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java +++ b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java @@ -14,27 +14,12 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Arrow; -import org.bukkit.entity.Bat; -import org.bukkit.entity.Chicken; -import org.bukkit.entity.Cow; import org.bukkit.entity.Creeper; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; -import org.bukkit.entity.Ghast; -import org.bukkit.entity.Horse; -import org.bukkit.entity.IronGolem; import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Monster; -import org.bukkit.entity.Ocelot; -import org.bukkit.entity.Pig; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; -import org.bukkit.entity.Rabbit; -import org.bukkit.entity.Sheep; -import org.bukkit.entity.Slime; -import org.bukkit.entity.Snowman; -import org.bukkit.entity.Squid; -import org.bukkit.entity.Villager; import org.bukkit.entity.Wolf; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -54,6 +39,7 @@ import org.bukkit.event.hanging.HangingPlaceEvent; import com.bekvon.bukkit.residence.Residence; import com.bekvon.bukkit.residence.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.EntityManager; import com.bekvon.bukkit.residence.protection.FlagPermissions; /** @@ -61,53 +47,23 @@ import com.bekvon.bukkit.residence.protection.FlagPermissions; * @author Administrator */ public class ResidenceEntityListener implements Listener { + EntityManager entitymanager; Residence plugin; public ResidenceEntityListener(final Residence plugin) { this.plugin = plugin; - } - - @EventHandler(priority = EventPriority.LOWEST) - public void AnimalKilling(final EntityDamageByEntityEvent event) { - final Entity damager = event.getDamager(); - - if ((!(damager instanceof Arrow)) && (!(damager instanceof Player))) { - return; - } - - Player cause; - if ((damager instanceof Arrow) && (!(((Arrow) damager).getShooter() instanceof Player))) { - return; - } else if (damager instanceof Player) { - cause = (Player) damager; - } else { - cause = (Player) ((Arrow) damager).getShooter(); - } - - if (plugin.isResAdminOn(cause)) { - return; - } - - final Entity entity = event.getEntity(); - final ClaimedResidence res = plugin.getResidenceManager().getByLoc(entity.getLocation()); - - if (res != null && !res.getPermissions().playerHas(cause.getName(), "animalkilling", true)) { - if (isAnimal(entity)) { - cause.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); - event.setCancelled(true); - } - } + this.entitymanager = plugin.getEntityManager(); } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onCreatureSpawn(final CreatureSpawnEvent event) { final FlagPermissions perms = plugin.getPermsByLoc(event.getLocation()); final Entity ent = event.getEntity(); - if (isAnimal(ent)) { + if (entitymanager.isAnimal(ent)) { if (!perms.has("animals", true)) { event.setCancelled(true); } - } else if (!perms.has("monsters", true) && isMonster(ent)) { + } else if (!perms.has("monsters", true) && entitymanager.isMonster(ent)) { event.setCancelled(true); } } @@ -238,7 +194,7 @@ public class ResidenceEntityListener implements Listener { final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc); if (res != null) { if (!res.getPermissions().has("container", false)) { - if (isMonster(dmgr)) { + if (entitymanager.isMonster(dmgr)) { event.setCancelled(true); return; } @@ -407,13 +363,4 @@ public class ResidenceEntityListener implements Listener { } } } - - private boolean isAnimal(final Entity ent) { - return (ent instanceof Horse || ent instanceof Bat || ent instanceof Snowman || ent instanceof IronGolem || ent instanceof Ocelot || ent instanceof Pig || ent instanceof Sheep - || ent instanceof Chicken || ent instanceof Wolf || ent instanceof Cow || ent instanceof Squid || ent instanceof Villager || (plugin.is1_8() && ent instanceof Rabbit)); - } - - private boolean isMonster(final Entity ent) { - return (ent instanceof Monster || ent instanceof Slime || ent instanceof Ghast); - } } diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java b/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java index 6f0b4c7..fe6069b 100644 --- a/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java +++ b/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java @@ -27,14 +27,8 @@ import com.bekvon.bukkit.residence.Residence; */ public class FlagPermissions { - public static enum FlagState { - FALSE, - INVALID, - NEITHER, - TRUE - } - protected static ArrayList validAreaFlags = new ArrayList(); + protected static HashMap> validFlagGroups = new HashMap>(); protected static ArrayList validFlags = new ArrayList(); protected static ArrayList validPlayerFlags = new ArrayList(); @@ -43,7 +37,6 @@ public class FlagPermissions { protected Map cuboidFlags; protected Map> groupFlags; protected FlagPermissions parent; - protected Map> playerFlags; public FlagPermissions() { @@ -139,7 +132,6 @@ public class FlagPermissions { addFlag("beacon"); /* New flags */ - addFlag("animalkilling"); addFlag("trade"); addResidenceOnlyFlag("trample"); @@ -632,4 +624,11 @@ public class FlagPermissions { } return def; } + + public static enum FlagState { + FALSE, + INVALID, + NEITHER, + TRUE + } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 85e25ae..8a1782b 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -52,7 +52,7 @@ Global: # 设置为'false'将造成即使在保存文件时检测到错误,领地插件也会继续加载. StopOnSaveFault: true # 领地名称字符过滤,Google搜索 "Java正则表达式" 可以了解它是如何工作. - ResidenceNameRegex: '[^a-zA-Z0-9\\-\\_]' + ResidenceNameRegex: '[A-Za-z0-9\u4e00-\u9fa5\\-\\_]' # 设置为'true'将会 当每次租用到期或出租期满,都会发送给控制台一个信息. ShowIntervalMessages: false # 实验 - 以下设置块的ID列表将作为检查的“箱子”和“使用”标志的使用,当使用MOD自定义箱子和物品时. diff --git a/src/main/resources/flagconfig.yml b/src/main/resources/flagconfig.yml index a4507c4..635072e 100644 --- a/src/main/resources/flagconfig.yml +++ b/src/main/resources/flagconfig.yml @@ -1,3 +1,4 @@ #领地插件配置文件2.7.0.0 重制 By: 喵♂呜(部分汉化来自宝石汉化组 大刘,Zesty). Flag: - Fly: true \ No newline at end of file + Fly: true + AnimalKilling: true \ No newline at end of file