diff --git a/patches/server/0309-lightning-affects-blocks.patch b/patches/server/0309-lightning-transforms-blocks.patch similarity index 88% rename from patches/server/0309-lightning-affects-blocks.patch rename to patches/server/0309-lightning-transforms-blocks.patch index 61066015c..20f447c7f 100644 --- a/patches/server/0309-lightning-affects-blocks.patch +++ b/patches/server/0309-lightning-transforms-blocks.patch @@ -1,11 +1,11 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: granny -Date: Sun, 27 Aug 2023 02:08:38 -0700 -Subject: [PATCH] lightning affects blocks +Date: Sun, 27 Aug 2023 02:09:51 -0700 +Subject: [PATCH] lightning transforms blocks diff --git a/src/main/java/net/minecraft/world/entity/LightningBolt.java b/src/main/java/net/minecraft/world/entity/LightningBolt.java -index a01a8ba27534d2b0d544423bc2c48fd29d0a6d64..fe90d51a2ca4de65219e53ca9a52257e06b65192 100644 +index a01a8ba27534d2b0d544423bc2c48fd29d0a6d64..0f708a1f0a141cc088ba860023d5ce9114ded9e5 100644 --- a/src/main/java/net/minecraft/world/entity/LightningBolt.java +++ b/src/main/java/net/minecraft/world/entity/LightningBolt.java @@ -83,6 +83,49 @@ public class LightningBolt extends Entity { @@ -39,7 +39,7 @@ index a01a8ba27534d2b0d544423bc2c48fd29d0a6d64..fe90d51a2ca4de65219e53ca9a52257e + + org.bukkit.craftbukkit.util.BlockStateListPopulator blockList = new org.bukkit.craftbukkit.util.BlockStateListPopulator(level()); + net.minecraft.world.level.block.SpongeBlock.removeBlocksBreadthFirstSearch(level(), blockposition2, level().purpurConfig.lightningTurnsNearbySandIntoGlassMaxDepth, level().purpurConfig.lightningTurnsNearbySandIntoGlassMaxIterations, blockList, (blockposition1) -> { -+ if (blockposition1.equals(blockposition)) { ++ if (blockposition1.equals(blockposition2)) { + return true; + } else { + BlockState iblockdata3 = blockList.getBlockState(blockposition1); @@ -67,7 +67,7 @@ index a01a8ba27534d2b0d544423bc2c48fd29d0a6d64..fe90d51a2ca4de65219e53ca9a52257e this.gameEvent(GameEvent.LIGHTNING_STRIKE); } diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -index 2276fed1feb4fea59b5bd49b5e4586d49478b3cc..5dfbe20bc660dedac6cb0af799176f1735950df5 100644 +index 2276fed1feb4fea59b5bd49b5e4586d49478b3cc..bd1edc58a863673491a2935af4dc92996d1edb4c 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java @@ -47,8 +47,12 @@ public class SpongeBlock extends Block { @@ -94,7 +94,7 @@ index 2276fed1feb4fea59b5bd49b5e4586d49478b3cc..5dfbe20bc660dedac6cb0af799176f17 if (blockposition1.equals(pos)) { return true; } else { -@@ -102,7 +106,7 @@ public class SpongeBlock extends Block { +@@ -102,17 +106,19 @@ public class SpongeBlock extends Block { return true; } } @@ -103,6 +103,18 @@ index 2276fed1feb4fea59b5bd49b5e4586d49478b3cc..5dfbe20bc660dedac6cb0af799176f17 // CraftBukkit start List blocks = blockList.getList(); // Is a clone if (!blocks.isEmpty()) { + final org.bukkit.block.Block bblock = world.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ()); + ++ if (customCallback != null) { // Purpur - TODO: custom event that extends spongeabsorbevent?? or use a pre-existing block event? or leave it as is.. + SpongeAbsorbEvent event = new SpongeAbsorbEvent(bblock, (List) (List) blocks); + world.getCraftServer().getPluginManager().callEvent(event); + + if (event.isCancelled()) { + return false; ++ } // Purpur + } + + for (CraftBlockState block : blocks) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 078102e636803f38facc049952813ff2f8b63594..eed225bc3e0568a2b0a5c3370f81d1f1235334b6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java