mirror of
https://github.com/PEXPlugins/Modifyworld.git
synced 2025-02-15 01:01:28 +01:00
Added support for projectile damage events (by Dispenser for example).
This commit is contained in:
parent
31a1cec963
commit
1a056e7fc6
@ -101,6 +101,8 @@ public abstract class ModifyworldListener implements Listener {
|
||||
entityName = "monster." + entityName;
|
||||
} else if (Animals.class.isAssignableFrom(entity.getClass())) {
|
||||
entityName = "animal." + entityName;
|
||||
} else if (Projectile.class.isAssignableFrom(entity.getClass())) {
|
||||
entityName = "projectile." + entityName;
|
||||
}
|
||||
|
||||
return entityName;
|
||||
|
@ -64,37 +64,51 @@ public class EntityListener extends ModifyworldListener {
|
||||
if (event instanceof EntityDamageByEntityEvent) {
|
||||
EntityDamageByEntityEvent edbe = (EntityDamageByEntityEvent) event;
|
||||
|
||||
Player player;
|
||||
if (edbe.getDamager() instanceof Player) { // Prevent from damaging by player
|
||||
Player player = (Player) edbe.getDamager();
|
||||
player = (Player) edbe.getDamager();
|
||||
if (!canMessWithEntity(player, "modifyworld.damage.deal.", event.getEntity())) {
|
||||
informPlayerAboutDenial(player);
|
||||
event.setCancelled(true);
|
||||
event.setDamage(0);
|
||||
cancelDamageEvent(player, event);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!event.isCancelled() && edbe.getEntity() instanceof Player && edbe.getDamager() != null) { // Prevent from taking damage by player
|
||||
Player player = (Player) edbe.getEntity();
|
||||
player = (Player) edbe.getEntity();
|
||||
if (edbe.getEntity() instanceof Player && edbe.getDamager() != null) { // Prevent from taking damage by player
|
||||
if (!canMessWithEntity(player, "modifyworld.damage.take.", edbe.getDamager())) {
|
||||
informPlayerAboutDenial(player);
|
||||
event.setCancelled(true);
|
||||
event.setDamage(0);
|
||||
cancelDamageEvent(player, event);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (edbe instanceof EntityDamageByProjectileEvent && edbe.getDamager() == null){
|
||||
EntityDamageByProjectileEvent edpe = (EntityDamageByProjectileEvent)edbe;
|
||||
|
||||
if (!canMessWithEntity(player, "modifyworld.damage.take.", edpe.getProjectile())) {
|
||||
cancelDamageEvent(player, event);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
} else if (event.getEntity() instanceof Player) { // player are been damaged by enviroment
|
||||
Player player = (Player) event.getEntity();
|
||||
|
||||
String cause = event.getCause().name().toLowerCase().replace("_", "");
|
||||
|
||||
if (!permissionsManager.has(player, "modifyworld.damage.take." + cause)) {
|
||||
event.setCancelled(true);
|
||||
informPlayerAboutDenial(player);
|
||||
event.setDamage(0);
|
||||
cancelDamageEvent(player, event);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
protected void cancelDamageEvent(Player player, EntityDamageEvent event) {
|
||||
informPlayerAboutDenial(player);
|
||||
event.setCancelled(true);
|
||||
event.setDamage(0);
|
||||
}
|
||||
|
||||
@EventHandler(Type.ENTITY_TAME)
|
||||
public void onEntityTame(EntityTameEvent event) {
|
||||
if (!(event.getOwner() instanceof Player)) {
|
||||
|
Loading…
Reference in New Issue
Block a user