Skip to content

Commit 679b569

Browse files
committed
Split wind charge into breeze/player flags.
Player flag is build-checked (default false) and breeze flag is not (default true). Having multiple flags is ugly but if we need every bit of behavior to be manipulable this is the only way.
1 parent 9dd7d7c commit 679b569

File tree

4 files changed

+14
-10
lines changed

4 files changed

+14
-10
lines changed

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
import com.sk89q.worldguard.bukkit.util.Materials;
4848
import com.sk89q.worldguard.config.WorldConfiguration;
4949
import com.sk89q.worldguard.protection.flags.Flags;
50-
import com.sk89q.worldguard.protection.flags.StateFlag;
5150
import io.papermc.lib.PaperLib;
5251
import io.papermc.paper.event.player.PlayerOpenSignEvent;
5352
import org.bukkit.Bukkit;
@@ -68,8 +67,8 @@
6867
import org.bukkit.block.data.BlockData;
6968
import org.bukkit.block.data.Waterlogged;
7069
import org.bukkit.block.data.type.Dispenser;
71-
import org.bukkit.entity.AbstractWindCharge;
7270
import org.bukkit.entity.AreaEffectCloud;
71+
import org.bukkit.entity.BreezeWindCharge;
7372
import org.bukkit.entity.Creeper;
7473
import org.bukkit.entity.Entity;
7574
import org.bukkit.entity.EntityType;
@@ -83,6 +82,7 @@
8382
import org.bukkit.entity.Player;
8483
import org.bukkit.entity.Tameable;
8584
import org.bukkit.entity.ThrownPotion;
85+
import org.bukkit.entity.WindCharge;
8686
import org.bukkit.entity.minecart.HopperMinecart;
8787
import org.bukkit.event.Cancellable;
8888
import org.bukkit.event.Event;
@@ -328,10 +328,10 @@ public void onEntityChangeBlock(EntityChangeBlockEvent event) {
328328

329329
// Fire two events: one as BREAK and one as PLACE
330330
if (toType != Material.AIR && fromType != Material.AIR) {
331-
BreakBlockEvent breakDelagate = new BreakBlockEvent(event, cause, block);
332-
setDelegateEventMaterialOptions(breakDelagate, fromType, toType);
331+
BreakBlockEvent breakDelegate = new BreakBlockEvent(event, cause, block);
332+
setDelegateEventMaterialOptions(breakDelegate, fromType, toType);
333333
boolean denied;
334-
if (!(denied = Events.fireToCancel(event, breakDelagate))) {
334+
if (!(denied = Events.fireToCancel(event, breakDelegate))) {
335335
PlaceBlockEvent placeDelegate = new PlaceBlockEvent(event, cause, block.getLocation(), toType);
336336
setDelegateEventMaterialOptions(placeDelegate, fromType, toType);
337337
denied = Events.fireToCancel(event, placeDelegate);
@@ -364,7 +364,9 @@ public void onEntityKnockbackByEntity(EntityKnockbackByEntityEvent event) {
364364
Entity damager = event.getSourceEntity();
365365

366366
final DamageEntityEvent eventToFire = new DamageEntityEvent(event, create(damager), event.getEntity());
367-
if (damager instanceof AbstractWindCharge) {
367+
if (damager instanceof BreezeWindCharge) {
368+
eventToFire.getRelevantFlags().add(Flags.BREEZE_WIND_CHARGE);
369+
} else if (damager instanceof WindCharge) {
368370
eventToFire.getRelevantFlags().add(Flags.WIND_CHARGE_BURST);
369371
}
370372
Events.fireToCancel(event, eventToFire);

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Entities.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121

2222
import com.sk89q.worldguard.protection.flags.Flags;
2323
import com.sk89q.worldguard.protection.flags.StateFlag;
24-
import org.bukkit.entity.AbstractWindCharge;
2524
import org.bukkit.entity.Allay;
2625
import org.bukkit.entity.Ambient;
2726
import org.bukkit.entity.ArmorStand;
2827
import org.bukkit.entity.Arrow;
28+
import org.bukkit.entity.BreezeWindCharge;
2929
import org.bukkit.entity.Creature;
3030
import org.bukkit.entity.EnderCrystal;
3131
import org.bukkit.entity.EnderDragon;
@@ -48,6 +48,7 @@
4848
import org.bukkit.entity.TNTPrimed;
4949
import org.bukkit.entity.Tameable;
5050
import org.bukkit.entity.Vehicle;
51+
import org.bukkit.entity.WindCharge;
5152
import org.bukkit.entity.Wither;
5253
import org.bukkit.entity.minecart.ExplosiveMinecart;
5354
import org.bukkit.event.entity.CreatureSpawnEvent;
@@ -260,7 +261,8 @@ public static boolean isPluginSpawning(CreatureSpawnEvent.SpawnReason spawnReaso
260261
*/
261262
public static @Nonnull StateFlag getExplosionFlag(Entity entity) {
262263
return switch (entity) {
263-
case AbstractWindCharge abstractWindCharge -> Flags.WIND_CHARGE_BURST;
264+
case BreezeWindCharge breezeWindCharge -> Flags.BREEZE_WIND_CHARGE;
265+
case WindCharge windCharge -> Flags.WIND_CHARGE_BURST;
264266
case Firework firework -> Flags.FIREWORK_DAMAGE;
265267
case Fireball fireball -> Flags.GHAST_FIREBALL;
266268
case Wither wither -> Flags.WITHER_DAMAGE;

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.google.common.collect.BiMap;
2323
import com.google.common.collect.HashBiMap;
2424
import com.sk89q.worldguard.protection.flags.Flags;
25-
import org.bukkit.Bukkit;
2625
import org.bukkit.Material;
2726
import org.bukkit.Tag;
2827
import org.bukkit.entity.EntityType;

worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ public final class Flags {
7474
public static final StateFlag FIREWORK_DAMAGE = register(new StateFlag("firework-damage", false));
7575
public static final StateFlag USE_ANVIL = register(new StateFlag("use-anvil", false));
7676
public static final StateFlag USE_DRIPLEAF = register(new StateFlag("use-dripleaf", false));
77+
public static final StateFlag WIND_CHARGE_BURST = register(new StateFlag("wind-charge-burst", false));
7778

7879
// These flags are similar to the ones above (used in tandem with BUILD),
7980
// but their defaults are set to TRUE because it is more user friendly.
@@ -93,7 +94,7 @@ public final class Flags {
9394
public static final StateFlag ENDERDRAGON_BLOCK_DAMAGE = register(new StateFlag("enderdragon-block-damage", true));
9495
public static final StateFlag GHAST_FIREBALL = register(new StateFlag("ghast-fireball", true));
9596
public static final StateFlag OTHER_EXPLOSION = register(new StateFlag("other-explosion", true));
96-
public static final StateFlag WIND_CHARGE_BURST = register(new StateFlag("wind-charge-burst", true));
97+
public static final StateFlag BREEZE_WIND_CHARGE = register(new StateFlag("breeze-charge-explosion", true));
9798
public static final StateFlag WITHER_DAMAGE = register(new StateFlag("wither-damage", true));
9899
public static final StateFlag ENDER_BUILD = register(new StateFlag("enderman-grief", true));
99100
public static final StateFlag SNOWMAN_TRAILS = register(new StateFlag("snowman-trails", true));

0 commit comments

Comments
 (0)