mirror of
https://e.coding.net/circlecloud/Residence.git
synced 2025-11-24 21:46:16 +00:00
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user