mirror of
https://github.com/PaperMC/Paper.git
synced 2025-02-05 15:11:28 +01:00
Add ray tracing methods to LivingEntity
This commit is contained in:
parent
8ce80096b6
commit
c708d136f7
@ -0,0 +1,67 @@
|
||||
package com.destroystokyo.paper.block;
|
||||
|
||||
import org.bukkit.FluidCollisionMode;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* Represents information about a targeted block
|
||||
* @deprecated use {@link org.bukkit.util.RayTraceResult}
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "1.19.3")
|
||||
public class TargetBlockInfo {
|
||||
private final Block block;
|
||||
private final BlockFace blockFace;
|
||||
|
||||
public TargetBlockInfo(@NotNull Block block, @NotNull BlockFace blockFace) {
|
||||
this.block = block;
|
||||
this.blockFace = blockFace;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the block that is targeted
|
||||
*
|
||||
* @return Targeted block
|
||||
*/
|
||||
@NotNull
|
||||
public Block getBlock() {
|
||||
return block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the targeted BlockFace
|
||||
*
|
||||
* @return Targeted blockface
|
||||
*/
|
||||
@NotNull
|
||||
public BlockFace getBlockFace() {
|
||||
return blockFace;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the relative Block to the targeted block on the side it is targeted at
|
||||
*
|
||||
* @return Block relative to targeted block
|
||||
*/
|
||||
@NotNull
|
||||
public Block getRelativeBlock() {
|
||||
return block.getRelative(blockFace);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use {@link org.bukkit.FluidCollisionMode}
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "1.19.3")
|
||||
public enum FluidMode {
|
||||
NEVER(FluidCollisionMode.NEVER),
|
||||
SOURCE_ONLY(FluidCollisionMode.SOURCE_ONLY),
|
||||
ALWAYS(FluidCollisionMode.ALWAYS);
|
||||
|
||||
public final FluidCollisionMode bukkit;
|
||||
|
||||
FluidMode(FluidCollisionMode bukkit) {
|
||||
this.bukkit = bukkit;
|
||||
}
|
||||
}
|
||||
}
|
@ -85,6 +85,98 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
|
||||
@NotNull
|
||||
public Block getTargetBlock(@Nullable Set<Material> transparent, int maxDistance);
|
||||
|
||||
// Paper start
|
||||
/**
|
||||
* Gets the block that the living entity has targeted, ignoring fluids
|
||||
*
|
||||
* @param maxDistance this is the maximum distance to scan
|
||||
* @return block that the living entity has targeted,
|
||||
* or null if no block is within maxDistance
|
||||
* @deprecated use {@link #getTargetBlockExact(int)}
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "1.19.3")
|
||||
@Nullable
|
||||
public default Block getTargetBlock(int maxDistance) {
|
||||
return getTargetBlock(maxDistance, com.destroystokyo.paper.block.TargetBlockInfo.FluidMode.NEVER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the block that the living entity has targeted
|
||||
*
|
||||
* @param maxDistance this is the maximum distance to scan
|
||||
* @param fluidMode whether to check fluids or not
|
||||
* @return block that the living entity has targeted,
|
||||
* or null if no block is within maxDistance
|
||||
* @deprecated use {@link #getTargetBlockExact(int, FluidCollisionMode)}
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "1.19.3")
|
||||
@Nullable
|
||||
public Block getTargetBlock(int maxDistance, @NotNull com.destroystokyo.paper.block.TargetBlockInfo.FluidMode fluidMode);
|
||||
|
||||
/**
|
||||
* Gets the blockface of that block that the living entity has targeted, ignoring fluids
|
||||
*
|
||||
* @param maxDistance this is the maximum distance to scan
|
||||
* @return blockface of the block that the living entity has targeted,
|
||||
* or null if no block is targeted
|
||||
*/
|
||||
@Nullable
|
||||
public default org.bukkit.block.BlockFace getTargetBlockFace(int maxDistance) {
|
||||
return getTargetBlockFace(maxDistance, org.bukkit.FluidCollisionMode.NEVER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the blockface of that block that the living entity has targeted
|
||||
*
|
||||
* @param maxDistance this is the maximum distance to scan
|
||||
* @param fluidMode whether to check fluids or not
|
||||
* @return blockface of the block that the living entity has targeted,
|
||||
* or null if no block is targeted
|
||||
* @deprecated use {@link #getTargetBlockFace(int, FluidCollisionMode)}
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "1.19.3")
|
||||
@Nullable
|
||||
public org.bukkit.block.BlockFace getTargetBlockFace(int maxDistance, @NotNull com.destroystokyo.paper.block.TargetBlockInfo.FluidMode fluidMode);
|
||||
|
||||
/**
|
||||
* Gets the blockface of that block that the living entity has targeted
|
||||
*
|
||||
* @param maxDistance this is the maximum distance to scan
|
||||
* @param fluidMode whether to check fluids or not
|
||||
* @return blockface of the block that the living entity has targeted,
|
||||
* or null if no block is targeted
|
||||
*/
|
||||
@Nullable
|
||||
public org.bukkit.block.BlockFace getTargetBlockFace(int maxDistance, @NotNull FluidCollisionMode fluidMode);
|
||||
|
||||
/**
|
||||
* Gets information about the block the living entity has targeted, ignoring fluids
|
||||
*
|
||||
* @param maxDistance this is the maximum distance to scan
|
||||
* @return TargetBlockInfo about the block the living entity has targeted,
|
||||
* or null if no block is targeted
|
||||
* @deprecated use {@link #rayTraceBlocks(double)}
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "1.19.3")
|
||||
@Nullable
|
||||
public default com.destroystokyo.paper.block.TargetBlockInfo getTargetBlockInfo(int maxDistance) {
|
||||
return getTargetBlockInfo(maxDistance, com.destroystokyo.paper.block.TargetBlockInfo.FluidMode.NEVER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets information about the block the living entity has targeted
|
||||
*
|
||||
* @param maxDistance this is the maximum distance to scan
|
||||
* @param fluidMode whether to check fluids or not
|
||||
* @return TargetBlockInfo about the block the living entity has targeted,
|
||||
* or null if no block is targeted
|
||||
* @deprecated use {@link #rayTraceBlocks(double, FluidCollisionMode)}
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "1.19.3")
|
||||
@Nullable
|
||||
public com.destroystokyo.paper.block.TargetBlockInfo getTargetBlockInfo(int maxDistance, @NotNull com.destroystokyo.paper.block.TargetBlockInfo.FluidMode fluidMode);
|
||||
// Paper end
|
||||
|
||||
/**
|
||||
* Gets the last two blocks along the living entity's line of sight.
|
||||
* <p>
|
||||
|
Loading…
Reference in New Issue
Block a user