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);
|
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);
|
||||||
|
|||||||
@@ -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()) {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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自定义箱子和物品时.
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
#领地插件配置文件2.7.0.0 重制 By: 喵♂呜(部分汉化来自宝石汉化组 大刘,Zesty).
|
#领地插件配置文件2.7.0.0 重制 By: 喵♂呜(部分汉化来自宝石汉化组 大刘,Zesty).
|
||||||
Flag:
|
Flag:
|
||||||
Fly: true
|
Fly: true
|
||||||
|
AnimalKilling: true
|
||||||
Reference in New Issue
Block a user