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

add new flag...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092
2015-09-25 11:34:49 +08:00
parent ce0f698e64
commit 4c2a19c6bd
2 changed files with 95 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
package com.bekvon.bukkit.residence.listeners.flag;
import org.bukkit.ChatColor;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
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;
public class ResidenceAnimalKilling implements Listener {
EntityManager entitymanager;
Residence plugin;
public ResidenceAnimalKilling(final Residence plugin) {
this.plugin = plugin;
this.entitymanager = plugin.getEntityManager();
FlagPermissions.addFlag("animalkilling");
}
@EventHandler(priority = EventPriority.LOWEST)
public void onAnimalKilling(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 (entitymanager.isAnimal(entity)) {
cause.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission"));
event.setCancelled(true);
}
}
}
}

View File

@@ -0,0 +1,38 @@
package com.bekvon.bukkit.residence.protection;
import org.bukkit.entity.Bat;
import org.bukkit.entity.Chicken;
import org.bukkit.entity.Cow;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Ghast;
import org.bukkit.entity.Horse;
import org.bukkit.entity.IronGolem;
import org.bukkit.entity.Monster;
import org.bukkit.entity.Ocelot;
import org.bukkit.entity.Pig;
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 com.bekvon.bukkit.residence.Residence;
public class EntityManager {
Residence plugin;
public EntityManager(final Residence plugin) {
this.plugin = plugin;
}
public 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));
}
public boolean isMonster(final Entity ent) {
return (ent instanceof Monster || ent instanceof Slime || ent instanceof Ghast);
}
}