Skip to content

Commit

Permalink
fix: ignore wind_charge explosion events. closes #585
Browse files Browse the repository at this point in the history
  • Loading branch information
timbru31 committed Jan 19, 2025
1 parent 095d2fc commit 98c4c65
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
Expand Down Expand Up @@ -133,4 +134,8 @@ default CaseFormat caseFormatOf(final String s) {
}

Player loadPlayer(OfflinePlayer offline);

default boolean isWindCharge(@SuppressWarnings("unused") final Entity entity) {
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,12 @@ public void onEntiyExplode(final EntityExplodeEvent event) {
* Skip if entity is not known or null or EnderDragon calls or this event explosionChance is 0
*/
final Entity entity = event.getEntity();
if (event.getEntity() == null || entity instanceof EnderDragon || plugin.config.getInt("explosionDropChance", 30) == 0) {
final int explosionChance = plugin.config.getInt("explosionDropChance", 30);
if (event.getEntity() == null || entity instanceof EnderDragon || su.nmsProvider.isWindCharge(event.getEntity())
|| explosionChance == 0) {
plugin.getLogger().log(Level.FINE,
"Skipping handling of explosion event because abort criteria are met, explosion chance is {0}", explosionChance);

return;
}

Expand All @@ -68,6 +73,9 @@ public void onEntiyExplode(final EntityExplodeEvent event) {
plugin.getLogger().log(Level.FINE, "Calculating exploded spawner at {0}, {1}, {2}",
new Object[] { block.getX(), block.getY(), block.getZ() });

plugin.getLogger().log(Level.FINE, "Explosion source is {0}", event.getEntity().getName());
plugin.getLogger().log(Level.FINE, "Explosion source (EntityType) is {0}", event.getEntityType().name());

final int randomNumber = rnd.nextInt(100);
String entityID = su.getSpawnerEntityID(block);
plugin.getLogger().log(Level.FINE, "Current entityID is {0}", entityID);
Expand All @@ -79,8 +87,8 @@ public void onEntiyExplode(final EntityExplodeEvent event) {
dropChance = plugin.config.getInt("explosionDropChance", 100);
}
plugin.getLogger().log(Level.FINE, "Current drop chance is {0}", dropChance);
final SilkSpawnersSpawnerExplodeEvent explodeEvent = new SilkSpawnersSpawnerExplodeEvent(entity, sourcePlayer, block, entityID,
dropChance);
final SilkSpawnersSpawnerExplodeEvent explodeEvent = new SilkSpawnersSpawnerExplodeEvent(entity, sourcePlayer, block,
entityID, dropChance);
plugin.getServer().getPluginManager().callEvent(explodeEvent);
if (explodeEvent.isAllCancelled()) {
plugin.getLogger()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_20_R3.inventory.CraftItemStack;
import org.bukkit.entity.Player;
import org.bukkit.entity.WindCharge;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
Expand Down Expand Up @@ -537,4 +538,9 @@ public Player loadPlayer(final OfflinePlayer offline) {
return target;
}

@Override
public boolean isWindCharge(final org.bukkit.entity.Entity entity) {
return entity instanceof WindCharge;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_20_R4.inventory.CraftItemStack;
import org.bukkit.entity.Player;
import org.bukkit.entity.WindCharge;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
Expand Down Expand Up @@ -540,4 +541,9 @@ public Player loadPlayer(final OfflinePlayer offline) {
return target;
}

@Override
public boolean isWindCharge(final org.bukkit.entity.Entity entity) {
return entity instanceof WindCharge;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.bukkit.craftbukkit.v1_21_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_21_R1.inventory.CraftItemStack;
import org.bukkit.entity.Player;
import org.bukkit.entity.WindCharge;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
Expand Down Expand Up @@ -540,4 +541,9 @@ public Player loadPlayer(final OfflinePlayer offline) {
return target;
}

@Override
public boolean isWindCharge(final org.bukkit.entity.Entity entity) {
return entity instanceof WindCharge;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.bukkit.craftbukkit.v1_21_R2.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_21_R2.inventory.CraftItemStack;
import org.bukkit.entity.Player;
import org.bukkit.entity.WindCharge;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
Expand Down Expand Up @@ -548,4 +549,9 @@ public Player loadPlayer(final OfflinePlayer offline) {
return target;
}

@Override
public boolean isWindCharge(final org.bukkit.entity.Entity entity) {
return entity instanceof WindCharge;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.bukkit.craftbukkit.v1_21_R3.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_21_R3.inventory.CraftItemStack;
import org.bukkit.entity.Player;
import org.bukkit.entity.WindCharge;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
Expand Down Expand Up @@ -548,4 +549,9 @@ public Player loadPlayer(final OfflinePlayer offline) {
return target;
}

@Override
public boolean isWindCharge(final org.bukkit.entity.Entity entity) {
return entity instanceof WindCharge;
}

}

0 comments on commit 98c4c65

Please sign in to comment.