Paper/patches/api/0270-More-World-API.patch

134 lines
4.8 KiB
Diff
Raw Normal View History

2021-06-11 14:02:28 +02:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Tue, 7 Jul 2020 10:53:22 -0700
Subject: [PATCH] More World API
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
Updated Upstream (Bukkit/CraftBukkit) (#10379) Updated Upstream (Bukkit/CraftBukkit) 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: f02baa38 PR-988: Add World#getIntersectingChunks(BoundingBox) 9321d665 Move getItemInUse up to LivingEntity 819eef73 PR-959: Add access to current item's remaining ticks c4fdadb0 SPIGOT-7601: Add AbstractArrow#getItem be8261ca Add support for Java 22 26119676 PR-979: Add more translation keys 66753362 PR-985: Correct book maximum pages and characters per page documentation c8be92fa PR-980: Improve getArmorContents() documentation f1120ee2 PR-983: Expose riptide velocity to PlayerRiptideEvent CraftBukkit Changes: dfaa89bbe PR-1369: Add World#getIntersectingChunks(BoundingBox) 51bbab2b9 Move getItemInUse up to LivingEntity 668e09602 PR-1331: Add access to current item's remaining ticks a639406d1 SPIGOT-7601: Add AbstractArrow#getItem 0398930fc SPIGOT-7602: Allow opening in-world horse and related inventories ffd15611c SPIGOT-7608: Allow empty lists to morph to any PDT list 2188dcfa9 Add support for Java 22 45d6a609f SPIGOT-7604: Revert "SPIGOT-7365: DamageCause blocked by shield should trigger invulnerableTime" 06d915943 SPIGOT-7365: DamageCause blocked by shield should trigger invulnerableTime ca3bc3707 PR-1361: Add more translation keys 366c3ca80 SPIGOT-7600: EntityChangeBlockEvent is not fired for frog eggs 06d0f9ba8 SPIGOT-7593: Fix sapling growth physics / client-side updates 45c2608e4 PR-1366: Expose riptide velocity to PlayerRiptideEvent 29b6bb79b SPIGOT-7587: Remove fixes for now-resolved MC-142590 and MC-109346
2024-04-06 21:53:39 +02:00
index 0a7c97aa289687cfbf6ae1a222f5eb2850f8f43e..4f724c337da08da6bbc8b1452dbd64eefd54a879 100644
2021-06-11 14:02:28 +02:00
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
Updated Upstream (Bukkit/CraftBukkit) (#10379) Updated Upstream (Bukkit/CraftBukkit) 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: f02baa38 PR-988: Add World#getIntersectingChunks(BoundingBox) 9321d665 Move getItemInUse up to LivingEntity 819eef73 PR-959: Add access to current item's remaining ticks c4fdadb0 SPIGOT-7601: Add AbstractArrow#getItem be8261ca Add support for Java 22 26119676 PR-979: Add more translation keys 66753362 PR-985: Correct book maximum pages and characters per page documentation c8be92fa PR-980: Improve getArmorContents() documentation f1120ee2 PR-983: Expose riptide velocity to PlayerRiptideEvent CraftBukkit Changes: dfaa89bbe PR-1369: Add World#getIntersectingChunks(BoundingBox) 51bbab2b9 Move getItemInUse up to LivingEntity 668e09602 PR-1331: Add access to current item's remaining ticks a639406d1 SPIGOT-7601: Add AbstractArrow#getItem 0398930fc SPIGOT-7602: Allow opening in-world horse and related inventories ffd15611c SPIGOT-7608: Allow empty lists to morph to any PDT list 2188dcfa9 Add support for Java 22 45d6a609f SPIGOT-7604: Revert "SPIGOT-7365: DamageCause blocked by shield should trigger invulnerableTime" 06d915943 SPIGOT-7365: DamageCause blocked by shield should trigger invulnerableTime ca3bc3707 PR-1361: Add more translation keys 366c3ca80 SPIGOT-7600: EntityChangeBlockEvent is not fired for frog eggs 06d0f9ba8 SPIGOT-7593: Fix sapling growth physics / client-side updates 45c2608e4 PR-1366: Expose riptide velocity to PlayerRiptideEvent 29b6bb79b SPIGOT-7587: Remove fixes for now-resolved MC-142590 and MC-109346
2024-04-06 21:53:39 +02:00
@@ -3833,6 +3833,122 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
2021-06-11 14:02:28 +02:00
@Nullable
StructureSearchResult locateNearestStructure(@NotNull Location origin, @NotNull Structure structure, int radius, boolean findUnexplored);
2021-06-11 14:02:28 +02:00
+ // Paper start
+ /**
+ * Locates the nearest biome based on an origin, biome type, and radius to search.
+ * Step defaults to {@code 8}.
+ *
+ * @param origin Origin location
+ * @param biome Biome to find
+ * @param radius radius to search
+ * @return Location of biome or null if not found in specified radius
+ * @deprecated use {@link #locateNearestBiome(Location, int, Biome...)}
2021-06-11 14:02:28 +02:00
+ */
+ @Deprecated
2021-06-11 14:02:28 +02:00
+ @Nullable
+ default Location locateNearestBiome(@NotNull Location origin, @NotNull Biome biome, int radius) {
+ return java.util.Optional.ofNullable(this.locateNearestBiome(origin, radius, 8, 8, biome)).map(BiomeSearchResult::getLocation).orElse(null);
+ }
2021-06-11 14:02:28 +02:00
+
+ /**
+ * Locates the nearest biome based on an origin, biome type, and radius to search
+ * and step
+ *
+ * @param origin Origin location
+ * @param biome Biome to find
+ * @param radius radius to search
+ * @param step Search step 1 would mean checking every block, 8 would be every 8th block
+ * @return Location of biome or null if not found in specified radius
+ * @deprecated use {@link #locateNearestBiome(Location, int, int, int, Biome...)}
2021-06-11 14:02:28 +02:00
+ */
+ @Deprecated
2021-06-11 14:02:28 +02:00
+ @Nullable
+ default Location locateNearestBiome(@NotNull Location origin, @NotNull Biome biome, int radius, int step) {
+ return java.util.Optional.ofNullable(this.locateNearestBiome(origin, radius, step, step, biome)).map(BiomeSearchResult::getLocation).orElse(null);
+ }
2021-06-11 14:02:28 +02:00
+
+ /**
+ * Checks if the world:
+ * <ul>
+ * <li>evaporates water</li>
+ * <li>dries sponges</li>
+ * <li>has lava spread faster and further</li>
+ * </ul>
+ *
+ * @return true if ultrawarm, false if not
+ * @deprecated use {@link #isUltraWarm()}
2021-06-11 14:02:28 +02:00
+ */
+ @Deprecated(forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.21")
2021-06-11 14:02:28 +02:00
+ boolean isUltrawarm();
+
+ /**
+ * Gets the coordinate scaling of this world.
+ *
+ * @return the coordinate scale
+ */
+ double getCoordinateScale();
+
+ /**
+ * Checks if the world has skylight access
+ *
+ * @return whether there is skylight
+ * @deprecated use {@link #hasSkyLight()}
2021-06-11 14:02:28 +02:00
+ */
+ @Deprecated(forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.21")
2021-06-11 14:02:28 +02:00
+ boolean hasSkylight();
+
+ /**
+ * Checks if the world has a bedrock ceiling
+ *
+ * @return whether the world has a bedrock ceiling
+ * @deprecated use {@link #hasCeiling()}
2021-06-11 14:02:28 +02:00
+ */
+ @Deprecated(forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.21")
2021-06-11 14:02:28 +02:00
+ boolean hasBedrockCeiling();
+
+ /**
+ * Checks if beds work
+ *
+ * @return whether beds work
+ * @deprecated use {@link #isBedWorks()}
2021-06-11 14:02:28 +02:00
+ */
+ @Deprecated(forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.21")
2021-06-11 14:02:28 +02:00
+ boolean doesBedWork();
+
+ /**
+ * Checks if respawn anchors work
+ *
+ * @return whether respawn anchors work
+ * @deprecated use {@link #isRespawnAnchorWorks()}
2021-06-11 14:02:28 +02:00
+ */
+ @Deprecated(forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.21")
2021-06-11 14:02:28 +02:00
+ boolean doesRespawnAnchorWork();
+
+ /**
+ * Checks if this world has a fixed time
+ *
+ * @return whether this world has fixed time
+ */
+ boolean isFixedTime();
+
+ /**
+ * Gets the collection of materials that burn infinitely in this world.
+ *
+ * @return the materials that will forever stay lit by fire
+ */
+ @NotNull
+ Collection<Material> getInfiniburn();
2021-08-21 16:26:42 +02:00
+
+ /**
+ * Posts a specified game event at a location
+ *
+ * @param sourceEntity optional source entity
+ * @param gameEvent the game event to post
+ * @param position the position in the world where to post the event to listeners
+ */
+ void sendGameEvent(@Nullable Entity sourceEntity, @NotNull GameEvent gameEvent, @NotNull Vector position);
2021-06-11 14:02:28 +02:00
+ // Paper end
+
// Spigot start
Updated Upstream (Bukkit/CraftBukkit/Spigot) 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: cc9aa21a SPIGOT-6399, SPIGOT-7344: Clarify collidable behavior for player entities f23325b6 Add API for per-world simulation distances 26e1774e Add API for per-world view distances 0b541e60 Add PlayerLoginEvent#getRealAddress 5f027d2d PR-949: Add Vector#fromJOML() overloads for read-only vector types CraftBukkit Changes: bcf56171a PR-1321: Clean up some stuff which got missed during previous PRs 7f833a2d1 SPIGOT-7462: Players no longer drop XP after dying near a Sculk Catalyst 752aac669 Implement APIs for per world view and simulation distances 57d7ef433 Preserve empty enchantment tags for glow effect 465ec3fb4 Remove connected check on setScoreboard f90ce621e Use one PermissibleBase for all command blocks 5876cca44 SPIGOT-7550: Fix creation of Arrow instances f03fc3aa3 SPIGOT-7549: ServerTickManager#setTickRate incorrect Precondition 9d7f49b01 SPIGOT-7548: Fix wrong spawn location for experience orb and dropped item Spigot Changes: ed9ba9a4 Drop no longer required patch ignoring -o option 86b5dd6a SPIGOT-7546: Fix hardcoded check for outdated client message aa7cde7a Remove obsolete APIs for per world view and simulation distances 6dff577e Remove obsolete patch preserving empty `ench` tags a3bf95b8 Remove obsolete PlayerLoginEvent#getRealAddress 1b02f5d6 Remove obsolete connected check on setScoreboard patch acf717eb Remove obsolete command block PermissibleBase patch 053fa2a9 Remove redundant patch dealing with null tile entities
2023-12-25 23:51:56 +01:00
@Deprecated(forRemoval = true) // Paper
public class Spigot {