mirror of
https://github.com/EngineHub/WorldGuard.git
synced 2024-11-03 01:19:42 +01:00
Merge pull request #109 from wizjany/master
Ghast fireballs and explosion cancelling
This commit is contained in:
commit
846cf63268
@ -93,6 +93,7 @@ public class WorldConfiguration {
|
|||||||
public boolean teleportOnSuffocation;
|
public boolean teleportOnSuffocation;
|
||||||
public boolean disableVoidDamage;
|
public boolean disableVoidDamage;
|
||||||
public boolean teleportOnVoid;
|
public boolean teleportOnVoid;
|
||||||
|
public boolean disableExplosionDamage;
|
||||||
public boolean useRegions;
|
public boolean useRegions;
|
||||||
public boolean highFreqFlags;
|
public boolean highFreqFlags;
|
||||||
public int regionWand = 287;
|
public int regionWand = 287;
|
||||||
@ -194,6 +195,7 @@ private void loadConfiguration() {
|
|||||||
teleportOnSuffocation = config.getBoolean("player-damage.teleport-on-suffocation", false);
|
teleportOnSuffocation = config.getBoolean("player-damage.teleport-on-suffocation", false);
|
||||||
disableVoidDamage = config.getBoolean("player-damage.disable-void-damage", false);
|
disableVoidDamage = config.getBoolean("player-damage.disable-void-damage", false);
|
||||||
teleportOnVoid = config.getBoolean("player-damage.teleport-on-void-falling", false);
|
teleportOnVoid = config.getBoolean("player-damage.teleport-on-void-falling", false);
|
||||||
|
disableExplosionDamage = config.getBoolean("player-damage.disable-explosion-damage", false);
|
||||||
|
|
||||||
signChestProtection = config.getBoolean("chest-protection.enable", false);
|
signChestProtection = config.getBoolean("chest-protection.enable", false);
|
||||||
|
|
||||||
|
@ -108,6 +108,7 @@ public void onEntityDamageByBlock(EntityDamageByBlockEvent event) {
|
|||||||
|
|
||||||
if (wcfg.disableLavaDamage && type == DamageCause.LAVA) {
|
if (wcfg.disableLavaDamage && type == DamageCause.LAVA) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
if (cfg.hasGodMode(player)) player.setFireTicks(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,6 +128,10 @@ public void onEntityDamageByBlock(EntityDamageByBlockEvent event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wcfg.disableExplosionDamage && event.getCause() == DamageCause.BLOCK_EXPLOSION) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,6 +155,11 @@ public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wcfg.disableExplosionDamage && event.getCause() == DamageCause.ENTITY_EXPLOSION) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (attacker != null && attacker instanceof Player) {
|
if (attacker != null && attacker instanceof Player) {
|
||||||
if (wcfg.useRegions) {
|
if (wcfg.useRegions) {
|
||||||
Vector pt = toVector(defender.getLocation());
|
Vector pt = toVector(defender.getLocation());
|
||||||
@ -268,6 +278,7 @@ public void onEntityDamage(EntityDamageEvent event) {
|
|||||||
|
|
||||||
if (cfg.hasGodMode(player)) {
|
if (cfg.hasGodMode(player)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
player.setFireTicks(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,8 +337,9 @@ public void onEntityExplode(EntityExplodeEvent event) {
|
|||||||
Location l = event.getLocation();
|
Location l = event.getLocation();
|
||||||
World world = l.getWorld();
|
World world = l.getWorld();
|
||||||
WorldConfiguration wcfg = cfg.get(world);
|
WorldConfiguration wcfg = cfg.get(world);
|
||||||
|
Entity ent = event.getEntity();
|
||||||
|
|
||||||
if (event.getEntity() instanceof LivingEntity) {
|
if (ent instanceof LivingEntity) {
|
||||||
if (wcfg.blockCreeperBlockDamage) {
|
if (wcfg.blockCreeperBlockDamage) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
@ -347,7 +359,17 @@ public void onEntityExplode(EntityExplodeEvent event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else { // Shall assume that this is TNT
|
} else if (ent instanceof Fireball) {
|
||||||
|
if (wcfg.useRegions) {
|
||||||
|
Vector pt = toVector(l);
|
||||||
|
RegionManager mgr = plugin.getGlobalRegionManager().get(world);
|
||||||
|
|
||||||
|
if (!mgr.getApplicableRegions(pt).allows(DefaultFlag.GHAST_FIREBALL)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (ent instanceof TNTPrimed) {
|
||||||
if (wcfg.blockTNT) {
|
if (wcfg.blockTNT) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
|
@ -29,8 +29,9 @@ public final class DefaultFlag {
|
|||||||
public static final StateFlag BUILD = new StateFlag("build", 'b', true);
|
public static final StateFlag BUILD = new StateFlag("build", 'b', true);
|
||||||
public static final StateFlag PVP = new StateFlag("pvp", 'p', true);
|
public static final StateFlag PVP = new StateFlag("pvp", 'p', true);
|
||||||
public static final StateFlag MOB_DAMAGE = new StateFlag("mob-damage", 'm', true);
|
public static final StateFlag MOB_DAMAGE = new StateFlag("mob-damage", 'm', true);
|
||||||
public static final StateFlag MOB_SPAWNING = new StateFlag("mob-spawning", 'M', true);
|
public static final StateFlag MOB_SPAWNING = new StateFlag("mob-spawning", true);
|
||||||
public static final StateFlag CREEPER_EXPLOSION = new StateFlag("creeper-explosion", 'c', true);
|
public static final StateFlag CREEPER_EXPLOSION = new StateFlag("creeper-explosion", 'c', true);
|
||||||
|
public static final StateFlag GHAST_FIREBALL = new StateFlag("ghast-fireball", true);
|
||||||
public static final StateFlag SLEEP = new StateFlag("sleep", true);
|
public static final StateFlag SLEEP = new StateFlag("sleep", true);
|
||||||
public static final StateFlag TNT = new StateFlag("tnt", 't', true);
|
public static final StateFlag TNT = new StateFlag("tnt", 't', true);
|
||||||
public static final StateFlag LIGHTER = new StateFlag("lighter", 'l', true);
|
public static final StateFlag LIGHTER = new StateFlag("lighter", 'l', true);
|
||||||
@ -62,7 +63,8 @@ public final class DefaultFlag {
|
|||||||
TNT, LIGHTER, FIRE_SPREAD, LAVA_FIRE, CHEST_ACCESS, WATER_FLOW, LAVA_FLOW,
|
TNT, LIGHTER, FIRE_SPREAD, LAVA_FIRE, CHEST_ACCESS, WATER_FLOW, LAVA_FLOW,
|
||||||
USE, PLACE_VEHICLE, GREET_MESSAGE, FAREWELL_MESSAGE, NOTIFY_GREET,
|
USE, PLACE_VEHICLE, GREET_MESSAGE, FAREWELL_MESSAGE, NOTIFY_GREET,
|
||||||
NOTIFY_FAREWELL, DENY_SPAWN, HEAL_DELAY, HEAL_AMOUNT, TELE_LOC,
|
NOTIFY_FAREWELL, DENY_SPAWN, HEAL_DELAY, HEAL_AMOUNT, TELE_LOC,
|
||||||
TELE_PERM, SPAWN_LOC, SPAWN_PERM, BUYABLE, PRICE, SNOW_FALL
|
TELE_PERM, SPAWN_LOC, SPAWN_PERM, BUYABLE, PRICE, SNOW_FALL,
|
||||||
|
GHAST_FIREBALL
|
||||||
};
|
};
|
||||||
|
|
||||||
private DefaultFlag() {
|
private DefaultFlag() {
|
||||||
|
@ -81,6 +81,7 @@ player-damage:
|
|||||||
teleport-on-suffocation: off
|
teleport-on-suffocation: off
|
||||||
disable-void-damage: off
|
disable-void-damage: off
|
||||||
teleport-on-void-falling: off
|
teleport-on-void-falling: off
|
||||||
|
disable-explosion-damage: off
|
||||||
|
|
||||||
regions:
|
regions:
|
||||||
enable: on
|
enable: on
|
||||||
|
Loading…
Reference in New Issue
Block a user