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

clean up...

Signed-off-by: j502647092 <jtb1@163.com>
This commit is contained in:
j502647092
2015-06-23 20:44:54 +08:00
parent 10e1af7bd1
commit ba35b14f9b

View File

@@ -4,6 +4,7 @@
*/ */
package com.bekvon.bukkit.residence.listeners; package com.bekvon.bukkit.residence.listeners;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
@@ -64,44 +65,56 @@ import org.bukkit.event.hanging.HangingPlaceEvent;
*/ */
public class ResidenceEntityListener implements Listener { public class ResidenceEntityListener implements Listener {
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onEndermanChangeBlock(EntityChangeBlockEvent event) { public void onEndermanChangeBlock(EntityChangeBlockEvent event) {
if (event.getEntityType() != EntityType.ENDERMAN && event.getEntityType() != EntityType.WITHER) { if (event.getEntityType() != EntityType.ENDERMAN
return; && event.getEntityType() != EntityType.WITHER) {
} return;
FlagPermissions perms = Residence.getPermsByLoc(event.getBlock().getLocation()); }
FlagPermissions world = Residence.getWorldFlags().getPerms(event.getBlock().getWorld().getName()); FlagPermissions perms = Residence.getPermsByLoc(event.getBlock()
if (event.getEntityType() == EntityType.WITHER) { .getLocation());
if (!perms.has("wither", perms.has("explode", world.has("wither", world.has("explode", true))))) { FlagPermissions world = Residence.getWorldFlags().getPerms(
event.setCancelled(true); event.getBlock().getWorld().getName());
} if (event.getEntityType() == EntityType.WITHER) {
} else if (!perms.has("build", true)) { if (!perms.has(
event.setCancelled(true); "wither",
} perms.has("explode",
} world.has("wither", world.has("explode", true))))) {
event.setCancelled(true);
}
} else if (!perms.has("build", true)) {
event.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.LOWEST) @EventHandler(priority = EventPriority.LOWEST)
public void onEntityInteract(EntityInteractEvent event){ public void onEntityInteract(EntityInteractEvent event) {
Block block = event.getBlock(); Block block = event.getBlock();
Material mat = block.getType(); Material mat = block.getType();
Entity entity = event.getEntity(); Entity entity = event.getEntity();
FlagPermissions perms = Residence.getPermsByLoc(block.getLocation()); FlagPermissions perms = Residence.getPermsByLoc(block.getLocation());
boolean hastrample = perms.has("trample", perms.has("hasbuild", true)); boolean hastrample = perms.has("trample", perms.has("hasbuild", true));
if(!hastrample && !(entity.getType() == EntityType.FALLING_BLOCK) && (mat == Material.SOIL || mat == Material.SOUL_SAND)){ if (!hastrample && !(entity.getType() == EntityType.FALLING_BLOCK)
event.setCancelled(true); && (mat == Material.SOIL || mat == Material.SOUL_SAND)) {
} event.setCancelled(true);
} }
}
private boolean isMonster(Entity ent) { private boolean isMonster(Entity ent) {
return (ent instanceof Monster || ent instanceof Slime || ent instanceof Ghast); return (ent instanceof Monster || ent instanceof Slime || ent instanceof Ghast);
} }
private boolean isAnimal(Entity ent) { private boolean isAnimal(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 || ent instanceof Rabbit); 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 || ent instanceof Rabbit);
}
@EventHandler(priority = EventPriority.LOWEST) @EventHandler(priority = EventPriority.LOWEST)
public void AnimalKilling (EntityDamageByEntityEvent event){ public void AnimalKilling(EntityDamageByEntityEvent event) {
Entity damager = event.getDamager(); Entity damager = event.getDamager();
if ((!(damager instanceof Arrow)) && (!(damager instanceof Player))) { if ((!(damager instanceof Arrow)) && (!(damager instanceof Player))) {
@@ -109,7 +122,8 @@ public class ResidenceEntityListener implements Listener {
} }
Player cause; Player cause;
if ((damager instanceof Arrow) && (!(((Arrow) damager).getShooter() instanceof Player))) { if ((damager instanceof Arrow)
&& (!(((Arrow) damager).getShooter() instanceof Player))) {
return; return;
} else if (damager instanceof Player) { } else if (damager instanceof Player) {
@@ -123,283 +137,346 @@ public class ResidenceEntityListener implements Listener {
} }
Entity entity = event.getEntity(); Entity entity = event.getEntity();
ClaimedResidence res = Residence.getResidenceManager().getByLoc(entity.getLocation()); ClaimedResidence res = Residence.getResidenceManager().getByLoc(
entity.getLocation());
if (res != null && !res.getPermissions().playerHas(cause.getName(), "animalkilling", true)) { if (res != null
&& !res.getPermissions().playerHas(cause.getName(),
"animalkilling", true)) {
if (isAnimal(entity)) { if (isAnimal(entity)) {
cause.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); cause.sendMessage(ChatColor.RED
+ Residence.getLanguage().getPhrase("NoPermission"));
event.setCancelled(true); event.setCancelled(true);
} }
} }
} }
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onCreatureSpawn(CreatureSpawnEvent event) { public void onCreatureSpawn(CreatureSpawnEvent event) {
FlagPermissions perms = Residence.getPermsByLoc(event.getLocation()); FlagPermissions perms = Residence.getPermsByLoc(event.getLocation());
Entity ent = event.getEntity(); Entity ent = event.getEntity();
if(isAnimal(ent)){ if (isAnimal(ent)) {
if(!perms.has("animals", true)){ if (!perms.has("animals", true)) {
event.setCancelled(true); event.setCancelled(true);
} }
} else { } else {
if (!perms.has("monsters", true) && isMonster(ent)) { if (!perms.has("monsters", true) && isMonster(ent)) {
event.setCancelled(true); event.setCancelled(true);
} }
} }
} }
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onHangingPlace(HangingPlaceEvent event) { public void onHangingPlace(HangingPlaceEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
if (Residence.isResAdminOn(player)) { if (Residence.isResAdminOn(player)) {
return; return;
} }
FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getEntity().getLocation(), player); FlagPermissions perms = Residence.getPermsByLocForPlayer(event
String pname = player.getName(); .getEntity().getLocation(), player);
String world = player.getWorld().getName(); String pname = player.getName();
if (!perms.playerHas(pname, world, "place", perms.playerHas(pname, world, "build", true))) { String world = player.getWorld().getName();
event.setCancelled(true); if (!perms.playerHas(pname, world, "place",
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); perms.playerHas(pname, world, "build", true))) {
} event.setCancelled(true);
} player.sendMessage(ChatColor.RED
+ Residence.getLanguage().getPhrase("NoPermission"));
}
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onHangingBreak(HangingBreakEvent event) { public void onHangingBreak(HangingBreakEvent event) {
if (event instanceof HangingBreakByEntityEvent) { if (event instanceof HangingBreakByEntityEvent) {
HangingBreakByEntityEvent evt = (HangingBreakByEntityEvent) event; HangingBreakByEntityEvent evt = (HangingBreakByEntityEvent) event;
if (evt.getRemover() instanceof Player) { if (evt.getRemover() instanceof Player) {
Player player = (Player) evt.getRemover(); Player player = (Player) evt.getRemover();
if (Residence.isResAdminOn(player)) { if (Residence.isResAdminOn(player)) {
return; return;
} }
String pname = player.getName(); String pname = player.getName();
FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getEntity().getLocation(), player); FlagPermissions perms = Residence.getPermsByLocForPlayer(event
String world = event.getEntity().getWorld().getName(); .getEntity().getLocation(), player);
if (!perms.playerHas(pname, world, "destroy", perms.playerHas(pname, world, "build", true))) { String world = event.getEntity().getWorld().getName();
event.setCancelled(true); if (!perms.playerHas(pname, world, "destroy",
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); perms.playerHas(pname, world, "build", true))) {
} event.setCancelled(true);
} player.sendMessage(ChatColor.RED
} + Residence.getLanguage().getPhrase("NoPermission"));
} }
}
}
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onEntityCombust(EntityCombustEvent event) { public void onEntityCombust(EntityCombustEvent event) {
FlagPermissions perms = Residence.getPermsByLoc(event.getEntity().getLocation()); FlagPermissions perms = Residence.getPermsByLoc(event.getEntity()
if (!perms.has("burn", true)) { .getLocation());
event.setCancelled(true); if (!perms.has("burn", true)) {
} event.setCancelled(true);
} }
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onExplosionPrime(ExplosionPrimeEvent event) { public void onExplosionPrime(ExplosionPrimeEvent event) {
EntityType entity = event.getEntityType(); EntityType entity = event.getEntityType();
FlagPermissions perms = Residence.getPermsByLoc(event.getEntity().getLocation()); FlagPermissions perms = Residence.getPermsByLoc(event.getEntity()
if (entity == EntityType.CREEPER) { .getLocation());
if (!perms.has("creeper", perms.has("explode", true))) { if (entity == EntityType.CREEPER) {
event.setCancelled(true); if (!perms.has("creeper", perms.has("explode", true))) {
event.getEntity().remove(); event.setCancelled(true);
} event.getEntity().remove();
} }
if (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT) { }
if (!perms.has("tnt", perms.has("explode", true))) { if (entity == EntityType.PRIMED_TNT
event.setCancelled(true); || entity == EntityType.MINECART_TNT) {
event.getEntity().remove(); if (!perms.has("tnt", perms.has("explode", true))) {
} event.setCancelled(true);
} event.getEntity().remove();
if (entity == EntityType.FIREBALL) { }
if (!perms.has("fireball", perms.has("explode", true))) { }
event.setCancelled(true); if (entity == EntityType.FIREBALL) {
event.getEntity().remove(); if (!perms.has("fireball", perms.has("explode", true))) {
} event.setCancelled(true);
} event.getEntity().remove();
if (entity == EntityType.SMALL_FIREBALL) { }
if (!perms.has("fireball", perms.has("explode", true))) { }
event.setCancelled(true); if (entity == EntityType.SMALL_FIREBALL) {
event.getEntity().remove(); if (!perms.has("fireball", perms.has("explode", true))) {
} event.setCancelled(true);
} event.getEntity().remove();
if (entity == EntityType.WITHER_SKULL) { }
if (!perms.has("witherdamage", perms.has("damage", true))) { }
event.setCancelled(true); if (entity == EntityType.WITHER_SKULL) {
event.getEntity().remove(); if (!perms.has("witherdamage", perms.has("damage", true))) {
} event.setCancelled(true);
} event.getEntity().remove();
} }
}
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onEntityExplode(EntityExplodeEvent event) { public void onEntityExplode(EntityExplodeEvent event) {
if (event.isCancelled() || event.getEntity() == null) if (event.isCancelled() || event.getEntity() == null)
return; return;
Boolean cancel = false; Boolean cancel = false;
EntityType entity = event.getEntityType(); EntityType entity = event.getEntityType();
FlagPermissions perms = Residence.getPermsByLoc(event.getEntity().getLocation()); FlagPermissions perms = Residence.getPermsByLoc(event.getEntity()
FlagPermissions world = Residence.getWorldFlags().getPerms(event.getEntity().getWorld().getName()); .getLocation());
if (entity == EntityType.CREEPER) { FlagPermissions world = Residence.getWorldFlags().getPerms(
if (!perms.has("creeper", perms.has("explode", true))) { event.getEntity().getWorld().getName());
cancel = true; if (entity == EntityType.CREEPER) {
} if (!perms.has("creeper", perms.has("explode", true))) {
} cancel = true;
if (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT) { }
if (!perms.has("tnt", perms.has("explode", true))) { }
cancel = true; if (entity == EntityType.PRIMED_TNT
} || entity == EntityType.MINECART_TNT) {
} if (!perms.has("tnt", perms.has("explode", true))) {
if (entity == EntityType.FIREBALL) { cancel = true;
if (!perms.has("fireball", perms.has("explode", true))) { }
cancel = true; }
} if (entity == EntityType.FIREBALL) {
} if (!perms.has("fireball", perms.has("explode", true))) {
if (entity == EntityType.SMALL_FIREBALL) { cancel = true;
if (!perms.has("fireball", perms.has("explode", true))) { }
cancel = true; }
} if (entity == EntityType.SMALL_FIREBALL) {
} if (!perms.has("fireball", perms.has("explode", true))) {
if (entity == EntityType.WITHER_SKULL || entity == EntityType.WITHER) { cancel = true;
if (!perms.has("wither", perms.has("explode", world.has("wither", world.has("explode", true))))) { }
cancel = true; }
} if (entity == EntityType.WITHER_SKULL || entity == EntityType.WITHER) {
} if (!perms.has(
if (cancel) { "wither",
event.setCancelled(true); perms.has("explode",
event.getEntity().remove(); world.has("wither", world.has("explode", true))))) {
} else { cancel = true;
List<Block> preserve = new ArrayList<Block>(); }
for (Block block : event.blockList()) { }
FlagPermissions blockperms = Residence.getPermsByLoc(block.getLocation()); if (cancel) {
if ((!blockperms.has("wither", blockperms.has("explode", world.has("wither", world.has("explode", true)))) && (entity == EntityType.WITHER || entity == EntityType.WITHER_SKULL) || (!blockperms.has("fireball", blockperms.has("explode", true)) && (entity == EntityType.FIREBALL || entity == EntityType.SMALL_FIREBALL)) || (!blockperms.has("tnt", blockperms.has("explode", true)) && (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT)) || (!blockperms.has("creeper", blockperms.has("explode", true)) && entity == EntityType.CREEPER))) { event.setCancelled(true);
if (block != null) { event.getEntity().remove();
preserve.add(block); } else {
} List<Block> preserve = new ArrayList<Block>();
} for (Block block : event.blockList()) {
} FlagPermissions blockperms = Residence.getPermsByLoc(block
for (Block block : preserve) { .getLocation());
event.blockList().remove(block); if ((!blockperms.has("wither", blockperms.has("explode",
} world.has("wither", world.has("explode", true))))
} && (entity == EntityType.WITHER || entity == EntityType.WITHER_SKULL)
} || (!blockperms.has("fireball",
blockperms.has("explode", true)) && (entity == EntityType.FIREBALL || entity == EntityType.SMALL_FIREBALL))
|| (!blockperms.has("tnt",
blockperms.has("explode", true)) && (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT)) || (!blockperms
.has("creeper", blockperms.has("explode", true)) && entity == EntityType.CREEPER))) {
if (block != null) {
preserve.add(block);
}
}
}
for (Block block : preserve) {
event.blockList().remove(block);
}
}
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onSplashPotion(PotionSplashEvent event) { public void onSplashPotion(PotionSplashEvent event) {
if(event.isCancelled()) if (event.isCancelled())
return; return;
Entity ent = event.getEntity(); Entity ent = event.getEntity();
boolean srcpvp = Residence.getPermsByLoc(ent.getLocation()).has("pvp", true); boolean srcpvp = Residence.getPermsByLoc(ent.getLocation()).has("pvp",
Iterator<LivingEntity> it = event.getAffectedEntities().iterator(); true);
while(it.hasNext()){ Iterator<LivingEntity> it = event.getAffectedEntities().iterator();
LivingEntity target = it.next(); while (it.hasNext()) {
if(target.getType()==EntityType.PLAYER){ LivingEntity target = it.next();
Boolean tgtpvp = Residence.getPermsByLoc(target.getLocation()).has("pvp", true); if (target.getType() == EntityType.PLAYER) {
if(!srcpvp || !tgtpvp){ Boolean tgtpvp = Residence.getPermsByLoc(target.getLocation())
event.setIntensity(target, 0); .has("pvp", true);
} if (!srcpvp || !tgtpvp) {
} event.setIntensity(target, 0);
} }
} }
}
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) { public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) {
if (event.getEntityType() == EntityType.ITEM_FRAME || event.getEntityType() == EntityType.ARMOR_STAND) { if (event.getEntityType() == EntityType.ITEM_FRAME
Entity dmgr = event.getDamager(); || event.getEntityType() == EntityType.ARMOR_STAND) {
Player player; Entity dmgr = event.getDamager();
if (event.getDamager() instanceof Player) { Player player;
player = (Player) event.getDamager(); if (dmgr instanceof Player) {
} else { player = (Player) event.getDamager();
if (dmgr instanceof Projectile && ((Projectile) dmgr).getShooter() instanceof Player) { } else {
player = (Player) ((Projectile) dmgr).getShooter(); if (dmgr instanceof Projectile
} else && ((Projectile) dmgr).getShooter() instanceof Player) {
return; player = (Player) ((Projectile) dmgr).getShooter();
} } else
return;
}
if (Residence.isResAdminOn(player)) if (Residence.isResAdminOn(player))
return; return;
// Note: Location of entity, not player; otherwise player could stand outside of res and still damage // Note: Location of entity, not player; otherwise player could
Location loc = event.getEntity().getLocation(); // stand outside of res and still damage
ClaimedResidence res = Residence.getResidenceManager().getByLoc(loc); Location loc = event.getEntity().getLocation();
if (res != null && !res.getPermissions().playerHas(player.getName(), "container", false)) { ClaimedResidence res = Residence.getResidenceManager()
event.setCancelled(true); .getByLoc(loc);
player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container")); if (res != null) {
} if (!res.getPermissions().has("container", false)) {
} if (isMonster(dmgr)) {
} event.setCancelled(true);
return;
}
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) if (!res.getPermissions().playerHas(player.getName(),
public void onEntityDamage(EntityDamageEvent event) { "container", false)) {
Entity ent = event.getEntity(); event.setCancelled(true);
if(ent.hasMetadata("NPC")) { player.sendMessage(ChatColor.RED
return; + Residence.getLanguage().getPhrase("FlagDeny",
} "container"));
boolean tamedWolf = ent instanceof Wolf ? ((Wolf)ent).isTamed() : false; }
ClaimedResidence area = Residence.getResidenceManager().getByLoc(ent.getLocation()); }
/* Living Entities */ }
if (event instanceof EntityDamageByEntityEvent) { }
EntityDamageByEntityEvent attackevent = (EntityDamageByEntityEvent) event;
Entity damager = attackevent.getDamager(); @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
ClaimedResidence srcarea = null; public void onEntityDamage(EntityDamageEvent event) {
if (damager != null) { Entity ent = event.getEntity();
srcarea = Residence.getResidenceManager().getByLoc(damager.getLocation()); if (ent.hasMetadata("NPC")) {
} return;
boolean srcpvp = true; }
if (srcarea != null) { boolean tamedWolf = ent instanceof Wolf ? ((Wolf) ent).isTamed()
srcpvp = srcarea.getPermissions().has("pvp", true); : false;
} ClaimedResidence area = Residence.getResidenceManager().getByLoc(
ent = attackevent.getEntity(); ent.getLocation());
if ((ent instanceof Player || tamedWolf) && (damager instanceof Player || (damager instanceof Arrow && (((Arrow)damager).getShooter() instanceof Player)))) { /* Living Entities */
Player attacker = null; if (event instanceof EntityDamageByEntityEvent) {
if (damager instanceof Player) { EntityDamageByEntityEvent attackevent = (EntityDamageByEntityEvent) event;
attacker = (Player) damager; Entity damager = attackevent.getDamager();
} else if (damager instanceof Arrow) { ClaimedResidence srcarea = null;
attacker = (Player)((Arrow)damager).getShooter(); if (damager != null) {
} srcarea = Residence.getResidenceManager().getByLoc(
if(!srcpvp) { damager.getLocation());
attacker.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("NoPVPZone")); }
event.setCancelled(true); boolean srcpvp = true;
return; if (srcarea != null) {
} srcpvp = srcarea.getPermissions().has("pvp", true);
/* Check for Player vs Player */ }
if (area == null) { ent = attackevent.getEntity();
/* World PvP */ if ((ent instanceof Player || tamedWolf)
if (!Residence.getWorldFlags().getPerms(damager.getWorld().getName()).has("pvp", true)) { && (damager instanceof Player || (damager instanceof Arrow && (((Arrow) damager)
attacker.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("WorldPVPDisabled")); .getShooter() instanceof Player)))) {
event.setCancelled(true); Player attacker = null;
} if (damager instanceof Player) {
} else { attacker = (Player) damager;
/* Normal PvP */ } else if (damager instanceof Arrow) {
if (!area.getPermissions().has("pvp", true)) { attacker = (Player) ((Arrow) damager).getShooter();
attacker.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("NoPVPZone")); }
event.setCancelled(true); if (!srcpvp) {
} attacker.sendMessage(ChatColor.RED
} + Residence.getLanguage().getPhrase("NoPVPZone"));
return; event.setCancelled(true);
} else if ((ent instanceof Player || tamedWolf) && (damager instanceof Creeper)) { return;
if (area == null) { }
if (!Residence.getWorldFlags().getPerms(damager.getWorld().getName()).has("creeper", true)) { /* Check for Player vs Player */
event.setCancelled(true); if (area == null) {
} /* World PvP */
} else { if (!Residence.getWorldFlags()
if (!area.getPermissions().has("creeper", true)) { .getPerms(damager.getWorld().getName())
event.setCancelled(true); .has("pvp", true)) {
} attacker.sendMessage(ChatColor.RED
} + Residence.getLanguage().getPhrase(
} "WorldPVPDisabled"));
} event.setCancelled(true);
if (area == null) { }
if (!Residence.getWorldFlags().getPerms(ent.getWorld().getName()).has("damage", true) && (ent instanceof Player || tamedWolf)) { } else {
event.setCancelled(true); /* Normal PvP */
} if (!area.getPermissions().has("pvp", true)) {
} else { attacker.sendMessage(ChatColor.RED
if (!area.getPermissions().has("damage", true) && (ent instanceof Player || tamedWolf)) { + Residence.getLanguage()
event.setCancelled(true); .getPhrase("NoPVPZone"));
} event.setCancelled(true);
} }
if (event.isCancelled()) { }
/* Put out a fire on a player */ return;
if ((ent instanceof Player || tamedWolf) } else if ((ent instanceof Player || tamedWolf)
&& (event.getCause() == EntityDamageEvent.DamageCause.FIRE && (damager instanceof Creeper)) {
|| event.getCause() == EntityDamageEvent.DamageCause.FIRE_TICK)) { if (area == null) {
ent.setFireTicks(0); if (!Residence.getWorldFlags()
} .getPerms(damager.getWorld().getName())
} .has("creeper", true)) {
} event.setCancelled(true);
}
} else {
if (!area.getPermissions().has("creeper", true)) {
event.setCancelled(true);
}
}
}
}
if (area == null) {
if (!Residence.getWorldFlags().getPerms(ent.getWorld().getName())
.has("damage", true)
&& (ent instanceof Player || tamedWolf)) {
event.setCancelled(true);
}
} else {
if (!area.getPermissions().has("damage", true)
&& (ent instanceof Player || tamedWolf)) {
event.setCancelled(true);
}
}
if (event.isCancelled()) {
/* Put out a fire on a player */
if ((ent instanceof Player || tamedWolf)
&& (event.getCause() == EntityDamageEvent.DamageCause.FIRE || event
.getCause() == EntityDamageEvent.DamageCause.FIRE_TICK)) {
ent.setFireTicks(0);
}
}
}
} }