geforkt von Mirrors/Paper
9c76642f99
The method's implementation uses Block#getDrops which re-computes the drops from the loot table each call leading to isValidTool returning different values with subsequent calls.
80 Zeilen
3.0 KiB
Diff
80 Zeilen
3.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
|
|
Date: Mon, 14 Mar 2022 22:45:32 -0700
|
|
Subject: [PATCH] Add getComputedBiome API
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/RegionAccessor.java b/src/main/java/org/bukkit/RegionAccessor.java
|
|
index b68367f123f029c3ff47eab6bfabd7a894a99da4..44ee56a5956cc17194c767a0c1071a2abffe818a 100644
|
|
--- a/src/main/java/org/bukkit/RegionAccessor.java
|
|
+++ b/src/main/java/org/bukkit/RegionAccessor.java
|
|
@@ -25,6 +25,7 @@ public interface RegionAccessor extends Keyed { // Paper
|
|
*
|
|
* @param location the location of the biome
|
|
* @return Biome at the given location
|
|
+ * @see #getComputedBiome(int, int, int)
|
|
*/
|
|
@NotNull
|
|
Biome getBiome(@NotNull Location location);
|
|
@@ -36,10 +37,33 @@ public interface RegionAccessor extends Keyed { // Paper
|
|
* @param y Y-coordinate of the block
|
|
* @param z Z-coordinate of the block
|
|
* @return Biome at the given coordinates
|
|
+ * @see #getComputedBiome(int, int, int)
|
|
*/
|
|
@NotNull
|
|
Biome getBiome(int x, int y, int z);
|
|
|
|
+ // Paper start
|
|
+ /**
|
|
+ * Gets the computed {@link Biome} at the given coordinates.
|
|
+ *
|
|
+ * <p>The computed Biome is the Biome as seen by clients for rendering
|
|
+ * purposes and in the "F3" debug menu. This is computed by looking at the noise biome
|
|
+ * at this and surrounding quarts and applying complex math operations.</p>
|
|
+ *
|
|
+ * <p>Most other Biome-related methods named getBiome, setBiome, and similar
|
|
+ * operate on the "noise biome", which is stored per-quart, or in other words,
|
|
+ * 1 Biome per 4x4x4 block region. This is how Biomes are currently generated and
|
|
+ * stored on disk.</p>
|
|
+ *
|
|
+ * @param x X-coordinate of the block
|
|
+ * @param y Y-coordinate of the block
|
|
+ * @param z Z-coordinate of the block
|
|
+ * @return Biome at the given coordinates
|
|
+ */
|
|
+ @NotNull
|
|
+ Biome getComputedBiome(int x, int y, int z);
|
|
+ // Paper end
|
|
+
|
|
/**
|
|
* Sets the {@link Biome} at the given {@link Location}.
|
|
*
|
|
diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
|
|
index cfa49e21feec7226e83e97e1053388f854b70337..f7d999d702151b50fd6ed956b59645ae2820fd27 100644
|
|
--- a/src/main/java/org/bukkit/block/Block.java
|
|
+++ b/src/main/java/org/bukkit/block/Block.java
|
|
@@ -375,10 +375,22 @@ public interface Block extends Metadatable, Translatable, net.kyori.adventure.tr
|
|
* Returns the biome that this block resides in
|
|
*
|
|
* @return Biome type containing this block
|
|
+ * @see #getComputedBiome()
|
|
*/
|
|
@NotNull
|
|
Biome getBiome();
|
|
|
|
+ // Paper start
|
|
+ /**
|
|
+ * Gets the computed biome at the location of this Block.
|
|
+ *
|
|
+ * @return computed biome at the location of this Block.
|
|
+ * @see org.bukkit.RegionAccessor#getComputedBiome(int, int, int)
|
|
+ */
|
|
+ @NotNull
|
|
+ Biome getComputedBiome();
|
|
+ // Paper end
|
|
+
|
|
/**
|
|
* Sets the biome that this block resides in
|
|
*
|