mirror of
https://e.coding.net/circlecloud/Residence.git
synced 2025-11-24 21:46:16 +00:00
@@ -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);
|
||||
|
||||
@@ -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<Boolean, Listener>();
|
||||
|
||||
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()) {
|
||||
if (fm.getKey()) {
|
||||
|
||||
@@ -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<String, String> 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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,14 +27,8 @@ import com.bekvon.bukkit.residence.Residence;
|
||||
*/
|
||||
public class FlagPermissions {
|
||||
|
||||
public static enum FlagState {
|
||||
FALSE,
|
||||
INVALID,
|
||||
NEITHER,
|
||||
TRUE
|
||||
}
|
||||
|
||||
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>();
|
||||
@@ -43,7 +37,6 @@ public class FlagPermissions {
|
||||
protected Map<String, Boolean> cuboidFlags;
|
||||
protected Map<String, Map<String, Boolean>> groupFlags;
|
||||
protected FlagPermissions parent;
|
||||
|
||||
protected Map<String, Map<String, Boolean>> 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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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自定义箱子和物品时.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#领地插件配置文件2.7.0.0 重制 By: 喵♂呜(部分汉化来自宝石汉化组 大刘,Zesty).
|
||||
Flag:
|
||||
Fly: true
|
||||
AnimalKilling: true
|
||||
Reference in New Issue
Block a user