#621: Add Block#getCollisionShape and associated API

By: konsolas <vincentyntang@gmail.com>
This commit is contained in:
Bukkit/Spigot 2021-06-14 08:32:51 +10:00
parent 34291f36d1
commit 6b0ff8582b
2 changed files with 40 additions and 0 deletions

View File

@ -15,6 +15,7 @@ import org.bukkit.metadata.Metadatable;
import org.bukkit.util.BoundingBox;
import org.bukkit.util.RayTraceResult;
import org.bukkit.util.Vector;
import org.bukkit.util.VoxelShape;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -501,4 +502,13 @@ public interface Block extends Metadatable {
*/
@NotNull
BoundingBox getBoundingBox();
/**
* Gets the collision shape of this block.
*
* @return a {@link VoxelShape} representing the collision shape of this
* block.
*/
@NotNull
VoxelShape getCollisionShape();
}

View File

@ -0,0 +1,30 @@
package org.bukkit.util;
import java.util.Collection;
import org.jetbrains.annotations.NotNull;
/**
* A shape made out of voxels.
*
* For example, used to represent the detailed collision shape of blocks.
*/
public interface VoxelShape {
/**
* Converts this shape into a collection of {@link BoundingBox} equivalent
* to the shape: a bounding box intersects with this block shape if it
* intersects with any of the shape's bounding boxes.
*
* @return shape converted to bounding boxes
*/
@NotNull
public Collection<BoundingBox> getBoundingBoxes();
/**
* Checks if the given bounding box intersects this block shape.
*
* @param other bounding box to test
* @return true if other overlaps this, false otherwise
*/
public boolean overlaps(@NotNull BoundingBox other);
}