mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-06 00:07:56 +01:00
#621: Add Block#getCollisionShape and associated API
By: konsolas <vincentyntang@gmail.com>
This commit is contained in:
parent
34291f36d1
commit
6b0ff8582b
@ -15,6 +15,7 @@ import org.bukkit.metadata.Metadatable;
|
|||||||
import org.bukkit.util.BoundingBox;
|
import org.bukkit.util.BoundingBox;
|
||||||
import org.bukkit.util.RayTraceResult;
|
import org.bukkit.util.RayTraceResult;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
import org.bukkit.util.VoxelShape;
|
||||||
import org.jetbrains.annotations.Contract;
|
import org.jetbrains.annotations.Contract;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@ -501,4 +502,13 @@ public interface Block extends Metadatable {
|
|||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
BoundingBox getBoundingBox();
|
BoundingBox getBoundingBox();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the collision shape of this block.
|
||||||
|
*
|
||||||
|
* @return a {@link VoxelShape} representing the collision shape of this
|
||||||
|
* block.
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
VoxelShape getCollisionShape();
|
||||||
}
|
}
|
||||||
|
30
paper-api/src/main/java/org/bukkit/util/VoxelShape.java
Normal file
30
paper-api/src/main/java/org/bukkit/util/VoxelShape.java
Normal 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);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user