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

update ConfigManager...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092
2015-09-25 11:34:38 +08:00
parent 24f01db06e
commit ce0f698e64
7 changed files with 28 additions and 71 deletions

View File

@@ -237,7 +237,7 @@ public class ConfigManager {
preventBuildInRent = config.getBoolean("Global.PreventRentModify", true); preventBuildInRent = config.getBoolean("Global.PreventRentModify", true);
stopOnSaveError = config.getBoolean("Global.StopOnSaveFault", true); stopOnSaveError = config.getBoolean("Global.StopOnSaveFault", true);
legacyperms = config.getBoolean("Global.LegacyPermissions", false); 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); showIntervalMessages = config.getBoolean("Global.ShowIntervalMessages", false);
spoutEnable = config.getBoolean("Global.EnableSpout", false); spoutEnable = config.getBoolean("Global.EnableSpout", false);
enableLeaseMoneyAccount = config.getBoolean("Global.EnableLeaseMoneyAccount", true); enableLeaseMoneyAccount = config.getBoolean("Global.EnableLeaseMoneyAccount", true);

View File

@@ -6,6 +6,7 @@ import java.util.Map.Entry;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import com.bekvon.bukkit.residence.listeners.flag.ResidenceAnimalKilling;
import com.bekvon.bukkit.residence.listeners.flag.ResidenceFlyListener; import com.bekvon.bukkit.residence.listeners.flag.ResidenceFlyListener;
import cn.citycraft.PluginHelper.config.FileConfig; import cn.citycraft.PluginHelper.config.FileConfig;
@@ -27,6 +28,7 @@ public class FlagManager {
flagmap = new HashMap<Boolean, Listener>(); flagmap = new HashMap<Boolean, Listener>();
flagmap.put(config.getBoolean("Flag.Fly"), new ResidenceFlyListener(plugin)); flagmap.put(config.getBoolean("Flag.Fly"), new ResidenceFlyListener(plugin));
flagmap.put(config.getBoolean("Flag.AnimalKilling"), new ResidenceAnimalKilling(plugin));
for (final Entry<Boolean, Listener> fm : flagmap.entrySet()) { for (final Entry<Boolean, Listener> fm : flagmap.entrySet()) {
if (fm.getKey()) { if (fm.getKey()) {

View File

@@ -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.permissions.PermissionManager;
import com.bekvon.bukkit.residence.persistance.YMLSaveHelper; import com.bekvon.bukkit.residence.persistance.YMLSaveHelper;
import com.bekvon.bukkit.residence.protection.ClaimedResidence; 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.FlagPermissions;
import com.bekvon.bukkit.residence.protection.LeaseManager; import com.bekvon.bukkit.residence.protection.LeaseManager;
import com.bekvon.bukkit.residence.protection.PermissionListManager; import com.bekvon.bukkit.residence.protection.PermissionListManager;
@@ -94,6 +95,7 @@ public class Residence extends JavaPlugin {
protected Map<String, String> deleteConfirm; protected Map<String, String> deleteConfirm;
protected EconomyInterface economy; protected EconomyInterface economy;
protected ResidenceEntityListener elistener; protected ResidenceEntityListener elistener;
protected EntityManager entitymanager;
protected boolean firstenable = true; protected boolean firstenable = true;
protected FlagManager fmanager; protected FlagManager fmanager;
protected PermissionManager gmanager; protected PermissionManager gmanager;
@@ -156,6 +158,10 @@ public class Residence extends JavaPlugin {
return elistener; return elistener;
} }
public EntityManager getEntityManager() {
return entitymanager;
}
public HelpEntry getHelppages() { public HelpEntry getHelppages() {
return helppages; return helppages;
} }
@@ -369,6 +375,8 @@ public class Residence extends JavaPlugin {
imanager = new WorldItemManager(this.getConfig()); imanager = new WorldItemManager(this.getConfig());
wmanager = new WorldFlagManager(this); wmanager = new WorldFlagManager(this);
entitymanager = new EntityManager(this);
chatmanager = new ChatManager(this); chatmanager = new ChatManager(this);
rentmanager = new RentManager(this); rentmanager = new RentManager(this);
for (final String lang : validLanguages) { for (final String lang : validLanguages) {

View File

@@ -14,27 +14,12 @@ import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Arrow; 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.Creeper;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; 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.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.Player;
import org.bukkit.entity.Projectile; 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.entity.Wolf;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; 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.Residence;
import com.bekvon.bukkit.residence.protection.ClaimedResidence; 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.FlagPermissions;
/** /**
@@ -61,53 +47,23 @@ import com.bekvon.bukkit.residence.protection.FlagPermissions;
* @author Administrator * @author Administrator
*/ */
public class ResidenceEntityListener implements Listener { public class ResidenceEntityListener implements Listener {
EntityManager entitymanager;
Residence plugin; Residence plugin;
public ResidenceEntityListener(final Residence plugin) { public ResidenceEntityListener(final Residence plugin) {
this.plugin = plugin; this.plugin = plugin;
} this.entitymanager = plugin.getEntityManager();
@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);
}
}
} }
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onCreatureSpawn(final CreatureSpawnEvent event) { public void onCreatureSpawn(final CreatureSpawnEvent event) {
final FlagPermissions perms = plugin.getPermsByLoc(event.getLocation()); final FlagPermissions perms = plugin.getPermsByLoc(event.getLocation());
final Entity ent = event.getEntity(); final Entity ent = event.getEntity();
if (isAnimal(ent)) { if (entitymanager.isAnimal(ent)) {
if (!perms.has("animals", true)) { if (!perms.has("animals", true)) {
event.setCancelled(true); event.setCancelled(true);
} }
} else if (!perms.has("monsters", true) && isMonster(ent)) { } else if (!perms.has("monsters", true) && entitymanager.isMonster(ent)) {
event.setCancelled(true); event.setCancelled(true);
} }
} }
@@ -238,7 +194,7 @@ public class ResidenceEntityListener implements Listener {
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc); final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc);
if (res != null) { if (res != null) {
if (!res.getPermissions().has("container", false)) { if (!res.getPermissions().has("container", false)) {
if (isMonster(dmgr)) { if (entitymanager.isMonster(dmgr)) {
event.setCancelled(true); event.setCancelled(true);
return; 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);
}
} }

View File

@@ -27,14 +27,8 @@ import com.bekvon.bukkit.residence.Residence;
*/ */
public class FlagPermissions { public class FlagPermissions {
public static enum FlagState {
FALSE,
INVALID,
NEITHER,
TRUE
}
protected static ArrayList<String> validAreaFlags = new ArrayList<String>(); protected static ArrayList<String> validAreaFlags = new ArrayList<String>();
protected static HashMap<String, ArrayList<String>> validFlagGroups = new HashMap<String, 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> validFlags = new ArrayList<String>();
protected static ArrayList<String> validPlayerFlags = new ArrayList<String>(); protected static ArrayList<String> validPlayerFlags = new ArrayList<String>();
@@ -43,7 +37,6 @@ public class FlagPermissions {
protected Map<String, Boolean> cuboidFlags; protected Map<String, Boolean> cuboidFlags;
protected Map<String, Map<String, Boolean>> groupFlags; protected Map<String, Map<String, Boolean>> groupFlags;
protected FlagPermissions parent; protected FlagPermissions parent;
protected Map<String, Map<String, Boolean>> playerFlags; protected Map<String, Map<String, Boolean>> playerFlags;
public FlagPermissions() { public FlagPermissions() {
@@ -139,7 +132,6 @@ public class FlagPermissions {
addFlag("beacon"); addFlag("beacon");
/* New flags */ /* New flags */
addFlag("animalkilling");
addFlag("trade"); addFlag("trade");
addResidenceOnlyFlag("trample"); addResidenceOnlyFlag("trample");
@@ -632,4 +624,11 @@ public class FlagPermissions {
} }
return def; return def;
} }
public static enum FlagState {
FALSE,
INVALID,
NEITHER,
TRUE
}
} }

View File

@@ -52,7 +52,7 @@ Global:
# 设置为'false'将造成即使在保存文件时检测到错误,领地插件也会继续加载. # 设置为'false'将造成即使在保存文件时检测到错误,领地插件也会继续加载.
StopOnSaveFault: true StopOnSaveFault: true
# 领地名称字符过滤,Google搜索 "Java正则表达式" 可以了解它是如何工作. # 领地名称字符过滤,Google搜索 "Java正则表达式" 可以了解它是如何工作.
ResidenceNameRegex: '[^a-zA-Z0-9\\-\\_]' ResidenceNameRegex: '[A-Za-z0-9\u4e00-\u9fa5\\-\\_]'
# 设置为'true'将会 当每次租用到期或出租期满,都会发送给控制台一个信息. # 设置为'true'将会 当每次租用到期或出租期满,都会发送给控制台一个信息.
ShowIntervalMessages: false ShowIntervalMessages: false
# 实验 - 以下设置块的ID列表将作为检查的“箱子”和“使用”标志的使用,当使用MOD自定义箱子和物品时. # 实验 - 以下设置块的ID列表将作为检查的“箱子”和“使用”标志的使用,当使用MOD自定义箱子和物品时.

View File

@@ -1,3 +1,4 @@
#领地插件配置文件2.7.0.0 重制 By: 喵♂呜(部分汉化来自宝石汉化组 大刘,Zesty). #领地插件配置文件2.7.0.0 重制 By: 喵♂呜(部分汉化来自宝石汉化组 大刘,Zesty).
Flag: Flag:
Fly: true Fly: true
AnimalKilling: true