From 6e2126ffcb80ca681efb9540d572b102cbddac0d Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 27 Aug 2023 17:13:48 -0700 Subject: [PATCH] Revert "option for turning sand into glass using lightning" This reverts commit 9096b8d020a989c6d709e7f95d50faf88df2bd5d. --- .../0309-lightning-affects-blocks.patch | 146 ------------------ 1 file changed, 146 deletions(-) delete mode 100644 patches/server/0309-lightning-affects-blocks.patch diff --git a/patches/server/0309-lightning-affects-blocks.patch b/patches/server/0309-lightning-affects-blocks.patch deleted file mode 100644 index affe1d7ce..000000000 --- a/patches/server/0309-lightning-affects-blocks.patch +++ /dev/null @@ -1,146 +0,0 @@ -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 - - -diff --git a/src/main/java/net/minecraft/world/entity/LightningBolt.java b/src/main/java/net/minecraft/world/entity/LightningBolt.java -index a01a8ba27534d2b0d544423bc2c48fd29d0a6d64..531538fdce8119aa59f341e50143f2518c914cb4 100644 ---- a/src/main/java/net/minecraft/world/entity/LightningBolt.java -+++ b/src/main/java/net/minecraft/world/entity/LightningBolt.java -@@ -17,19 +17,29 @@ import net.minecraft.server.level.ServerLevel; - import net.minecraft.server.level.ServerPlayer; - import net.minecraft.sounds.SoundEvents; - import net.minecraft.sounds.SoundSource; -+import net.minecraft.tags.FluidTags; - import net.minecraft.world.Difficulty; - import net.minecraft.world.level.GameRules; - import net.minecraft.world.level.Level; - import net.minecraft.world.level.block.BaseFireBlock; -+import net.minecraft.world.level.block.Block; - import net.minecraft.world.level.block.Blocks; -+import net.minecraft.world.level.block.BucketPickup; - import net.minecraft.world.level.block.LightningRodBlock; -+import net.minecraft.world.level.block.LiquidBlock; -+import net.minecraft.world.level.block.SpongeBlock; - import net.minecraft.world.level.block.WeatheringCopper; -+import net.minecraft.world.level.block.entity.BlockEntity; - import net.minecraft.world.level.block.state.BlockState; - import net.minecraft.world.level.gameevent.GameEvent; -+import net.minecraft.world.level.material.FluidState; - import net.minecraft.world.phys.AABB; - import net.minecraft.world.phys.Vec3; - // CraftBukkit start -+import org.bukkit.craftbukkit.block.CraftBlockState; - import org.bukkit.craftbukkit.event.CraftEventFactory; -+import org.bukkit.craftbukkit.util.BlockStateListPopulator; -+import org.bukkit.event.block.SpongeAbsorbEvent; - // CraftBukkit end - - public class LightningBolt extends Entity { -@@ -83,6 +93,95 @@ public class LightningBolt extends Entity { - - } - -+ private void transformSandToGlass() { -+ BlockPos blockposition = this.getStrikePosition(); -+ BlockState iblockdata = this.level().getBlockState(blockposition); -+ -+ if (iblockdata.is(Blocks.LIGHTNING_ROD)) { -+ blockposition = blockposition.below(); -+ iblockdata = this.level().getBlockState(blockposition); -+ } -+ -+ if (iblockdata.is(Blocks.SAND)) { -+ level().setBlock(blockposition, Blocks.GLASS.defaultBlockState(), 2); -+ } else if (iblockdata.is(Blocks.STONE)) { -+ level().setBlock(blockposition, Blocks.OBSIDIAN.defaultBlockState(), 2); -+ } else if (iblockdata.is(Blocks.WATER)) { -+ level().setBlock(blockposition, Blocks.STONE.defaultBlockState(), 2); -+ } else { -+ return; -+ } -+ -+ BlockStateListPopulator blockList = new BlockStateListPopulator(level()); // CraftBukkit - Use BlockStateListPopulator -+ final BlockPos finalBlockposition = blockposition; -+ BlockPos.breadthFirstTraversal(blockposition, 3, 6, (blockposition1, consumer) -> { // Purpur -+ Direction[] aenumdirection = Direction.values(); -+ int i = aenumdirection.length; -+ -+ for (int j = 0; j < i; ++j) { -+ Direction enumdirection = aenumdirection[j]; -+ -+ consumer.accept(blockposition1.relative(enumdirection)); -+ } -+ -+ }, (blockposition1) -> { -+ if (blockposition1.equals(finalBlockposition)) { -+ return true; -+ } else { -+ BlockState iblockdata2 = blockList.getBlockState(blockposition1); -+ FluidState fluid = blockList.getFluidState(blockposition1); -+ -+ if (!iblockdata2.is(Blocks.SAND) && !iblockdata2.is(Blocks.STONE) && !fluid.is(FluidTags.WATER)) { // Purpur -+ return false; -+ } else { -+ if (iblockdata2.is(Blocks.SAND)) { -+ blockList.setBlock(blockposition1, Blocks.GLASS.defaultBlockState(), 3); -+ }// else if (iblockdata2.is(Blocks.STONE)) { -+ // blockList.setBlock(blockposition1, Blocks.OBSIDIAN.defaultBlockState(), 3); -+ // } else if (iblockdata2.is(Blocks.WATER)) { -+ // blockList.setBlock(blockposition1, Blocks.STONE.defaultBlockState(), 3); -+ // } -+ return true; -+ } -+ } -+ }); -+ // CraftBukkit start -+ List blocks = blockList.getList(); // Is a clone -+ if (!blocks.isEmpty()) { -+ final org.bukkit.block.Block bblock = level().getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); -+ -+ SpongeAbsorbEvent event = new SpongeAbsorbEvent(bblock, (List) (List) blocks); -+ level().getCraftServer().getPluginManager().callEvent(event); -+ -+ if (event.isCancelled()) { -+ return; -+ } -+ -+ for (CraftBlockState block : blocks) { -+ BlockPos blockposition1 = block.getPosition(); -+ BlockState iblockdata3 = level().getBlockState(blockposition1); -+ FluidState fluid = level().getFluidState(blockposition1); -+ -+ if (fluid.is(FluidTags.WATER)) { -+ if (iblockdata3.getBlock() instanceof BucketPickup && !((BucketPickup) iblockdata3.getBlock()).pickupBlock(blockList, blockposition1, iblockdata3).isEmpty()) { -+ // NOP -+ } else if (iblockdata3.getBlock() instanceof LiquidBlock) { -+ // NOP -+ } else if (iblockdata3.is(Blocks.KELP) || iblockdata3.is(Blocks.KELP_PLANT) || iblockdata3.is(Blocks.SEAGRASS) || iblockdata3.is(Blocks.TALL_SEAGRASS)) { -+ BlockEntity tileentity = iblockdata3.hasBlockEntity() ? level().getBlockEntity(blockposition1) : null; -+ -+ // Paper start -+ if (block.getHandle().isAir()) { -+ Block.dropResources(iblockdata3, level(), blockposition1, tileentity); -+ } -+ // Paper end -+ } -+ } -+ level().setBlock(blockposition1, block.getHandle(), block.getFlag()); -+ } -+ } -+ } -+ - @Override - public void tick() { - super.tick(); -@@ -97,6 +196,9 @@ public class LightningBolt extends Entity { - this.spawnFire(4); - } - -+ this.transformSandToGlass(); // Purpur -+ // this.transformWaterToGlass(); // Purpur -+ // this.transformSandToGlass(); // Purpur - this.powerLightningRod(); - LightningBolt.clearCopperOnLightningStrike(this.level(), this.getStrikePosition(), this); // Paper - transmit LightningBolt instance to call EntityChangeBlockEvent - this.gameEvent(GameEvent.LIGHTNING_STRIKE);