d8e07590e3
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 5dbedae1 PR-864: Fix Registry#match() failing namespaced inputs 49256865 PR-863: Fix boolean PersistentDataType 9f15450b SPIGOT-7195, SPIGOT-7197: Add DataPack API ebef5b6a Disable InterfaceIsType Checkstyle check 01d577f5 Slight tweak to boolean PersistentDataType javadoc d2b99e56 PR-857: Add boolean PersistentDataType CraftBukkit Changes: 2270366cd PR-1196: Test Registry instances more thoroughly 863dacb7a PR-1191: Do not start on pre-release Java 17 1f2dd8e12 SPIGOT-7362: Properly handle null in CraftBlock#blockFaceToNotch() dbc70bed5 SPIGOT-7195, SPIGOT-7197: Add DataPack API
48 lines
2.1 KiB
Diff
48 lines
2.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jakub Zacek <dawon@dawon.eu>
|
|
Date: Mon, 4 Oct 2021 08:29:36 +0200
|
|
Subject: [PATCH] Add methods to find targets for lightning strikes
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
|
|
index ecf900140d0007b4e69ab8ab0e439828ee718a6b..0baf878c80ae42d7e77e3f1a57c5f3e715b163ba 100644
|
|
--- a/src/main/java/org/bukkit/World.java
|
|
+++ b/src/main/java/org/bukkit/World.java
|
|
@@ -716,6 +716,37 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
|
|
@NotNull
|
|
public LightningStrike strikeLightningEffect(@NotNull Location loc);
|
|
|
|
+ // Paper start
|
|
+ /**
|
|
+ * Finds the location of the nearest unobstructed Lightning Rod in a 128-block
|
|
+ * radius around the given location. Returns {@code null} if no Lightning Rod is found.
|
|
+ *
|
|
+ * <p>Note: To activate a Lightning Rod, the position one block above it must be struck by lightning.</p>
|
|
+ *
|
|
+ * @param location {@link Location} to search for Lightning Rod around
|
|
+ * @return {@link Location} of Lightning Rod or {@code null}
|
|
+ */
|
|
+ @Nullable
|
|
+ public Location findLightningRod(@NotNull Location location);
|
|
+
|
|
+ /**
|
|
+ * Finds a target {@link Location} for lightning to strike.
|
|
+ * <p>It selects from (in the following order):</p>
|
|
+ * <ol>
|
|
+ * <li>the block above the nearest Lightning Rod, found using {@link World#findLightningRod(Location)}</li>
|
|
+ * <li>a random {@link LivingEntity} that can see the sky in a 6x6 cuboid
|
|
+ * around input X/Z coordinates. Y ranges from <i>the highest motion-blocking
|
|
+ * block at the input X/Z - 3</i> to <i>the height limit + 3</i></li>
|
|
+ * </ol>
|
|
+ * <p>Returns {@code null} if no target is found.</p>
|
|
+ *
|
|
+ * @param location {@link Location} to search for target around
|
|
+ * @return lightning target or {@code null}
|
|
+ */
|
|
+ @Nullable
|
|
+ public Location findLightningTarget(@NotNull Location location);
|
|
+ // Paper end
|
|
+
|
|
/**
|
|
* Get a list of all entities in this World
|
|
*
|