50 lines
1.6 KiB
Java
50 lines
1.6 KiB
Java
package cn.citycraft.ResExtras.flags;
|
|
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.entity.Arrow;
|
|
import org.bukkit.entity.Entity;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.entity.Villager;
|
|
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;
|
|
|
|
public class villagerkilling implements Listener {
|
|
public Player cause;
|
|
|
|
@EventHandler(priority = EventPriority.NORMAL)
|
|
public void VillagerKilling(final EntityDamageByEntityEvent event) {
|
|
if (event.isCancelled()) {
|
|
return;
|
|
}
|
|
final Entity damager = event.getDamager();
|
|
if ((!(damager instanceof Arrow)) && (!(damager instanceof Player))) {
|
|
return;
|
|
}
|
|
if ((damager instanceof Arrow) && (!(((Arrow) damager).getShooter() instanceof Player))) {
|
|
return;
|
|
} else if (damager instanceof Player) {
|
|
cause = (Player) damager;
|
|
} else {
|
|
cause = (Player) ((Arrow) damager).getShooter();
|
|
}
|
|
final boolean resadmin = Residence.isResAdminOn(cause);
|
|
if (resadmin) {
|
|
return;
|
|
}
|
|
final Entity entity = event.getEntity();
|
|
final ClaimedResidence res = Residence.getResidenceManager().getByLoc(entity.getLocation());
|
|
|
|
if (res != null && !res.getPermissions().playerHas(cause.getName().toString(), "villagerkilling", true)) {
|
|
if (entity instanceof Villager) {
|
|
cause.sendMessage(ChatColor.RED + "You cannot kill villagers here!");
|
|
event.setCancelled(true);
|
|
}
|
|
}
|
|
}
|
|
}
|