Paper/patches/api/0377-Collision-API.patch
Jake Potrebic 5730a94208
Updated Upstream (Bukkit/CraftBukkit) (#8991)
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:
2b4582fb SPIGOT-5916: getLastColors does not work with the rgb colors

CraftBukkit Changes:
f7707086d SPIGOT-7299: Fix indirect/anvil damage events and minor improvements
2023-03-18 10:05:04 -07:00

58 lines
2.6 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
Date: Wed, 6 Oct 2021 20:10:36 -0400
Subject: [PATCH] Collision API
diff --git a/src/main/java/org/bukkit/RegionAccessor.java b/src/main/java/org/bukkit/RegionAccessor.java
index 3f7e860de4e28745fcdf8d2f41f4a8c210f48909..39fa4c65e0f61450901662ff5c08d54a5d9841b2 100644
--- a/src/main/java/org/bukkit/RegionAccessor.java
+++ b/src/main/java/org/bukkit/RegionAccessor.java
@@ -424,5 +424,15 @@ public interface RegionAccessor extends Keyed { // Paper
* @return whether a line of sight exists between {@code from} and {@code to}
*/
public boolean lineOfSightExists(@NotNull Location from, @NotNull Location to);
+
+ /**
+ * Checks if the world collides with the given boundingbox.
+ * This will check for any colliding hard entities (boats, shulkers) / worldborder / blocks.
+ * Does not load chunks that are within the bounding box.
+ *
+ * @param boundingBox the box to check collisions in
+ * @return collides or not
+ */
+ boolean hasCollisionsIn(@NotNull org.bukkit.util.BoundingBox boundingBox);
// Paper end
}
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index d15ff4d1b975e2a872adc13528942662fa1a3b6b..4d7a0cd1ec5e55c4244e30dc957e75d1feada78c 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -912,4 +912,26 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
*/
boolean isInPowderedSnow();
// Paper end
+
+ // Paper Start - Collision API
+ /**
+ * Checks for any collisions with the entity's bounding box at the provided location.
+ * This will check for any colliding entities (boats, shulkers) / worldborder / blocks.
+ * Does not load chunks that are within the bounding box at the specified location.
+ *
+ * @param location the location to check collisions in
+ * @return collides or not
+ */
+ boolean collidesAt(@NotNull Location location);
+
+ /**
+ * This checks using the given boundingbox as the entity's boundingbox if the entity would collide with anything.
+ * This will check for any colliding entities (boats, shulkers) / worldborder / blocks.
+ * Does not load chunks that are within the bounding box.
+ *
+ * @param boundingBox the box to check collisions in
+ * @return collides or not
+ */
+ boolean wouldCollideUsing(@NotNull BoundingBox boundingBox);
+ // Paper End - Collision API
}