9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-26 02:19:19 +00:00
Files
Leaf/leaf-server/minecraft-patches/features/0258-Add-BlockExplosionHitEvent.patch
Dreeam 9a4efaa230 Drop patch that causes performance regression
Originally vanilla logic is to use stream, and Mojang switched it to Guava's Collections2
since 1.21.4. It is much faster than using stream or manually adding to a new ArrayList.
Manually adding to a new ArrayList requires allocating a new object array. However, the Collections2
lazy handles filter condition on iteration, so much better.
2025-08-04 19:25:56 +08:00

28 lines
1.5 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Pascalpex <pascalpex@gmail.com>
Date: Wed, 4 Jun 2025 17:03:32 +0200
Subject: [PATCH] Add BlockExplosionHitEvent
diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java
index 1669c21534a453c9cf16b992df7a6bf276dea887..1039cf820ecac54e290dc5dfe7f714bf2b9d2bdd 100644
--- a/net/minecraft/world/level/ServerExplosion.java
+++ b/net/minecraft/world/level/ServerExplosion.java
@@ -615,9 +615,13 @@ public class ServerExplosion implements Explosion {
}
// CraftBukkit end
- this.level
- .getBlockState(blockPos)
- .onExplosionHit(this.level, blockPos, this, (itemStack, blockPos1) -> addOrAppendStack(list, itemStack, blockPos1));
+ // Leaf start - Add BlockExplosionHitEvent
+ if (new org.dreeam.leaf.event.BlockExplosionHitEvent(CraftLocation.toBukkit(blockPos, this.level.getWorld()).getBlock(), this.source == null ? null : this.source.getBukkitEntity(), org.bukkit.craftbukkit.CraftExplosionResult.toExplosionResult(this.blockInteraction)).callEvent()) {
+ this.level
+ .getBlockState(blockPos)
+ .onExplosionHit(this.level, blockPos, this, (itemStack, blockPos1) -> addOrAppendStack(list, itemStack, blockPos1));
+ }
+ // Leaf end - Add BlockExplosionHitEvent
}
for (ServerExplosion.StackCollector stackCollector : list) {