geforkt von Mirrors/Paper
ef0e5a642d
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: 9ae3f10f SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API 48c0c547 PR-786: Add methods to get sounds from entities CraftBukkit Changes: 5cc9c022a SPIGOT-7152: Handle hand item changing during air interact event 4ffa1acf6 SPIGOT-7154: Players get kicked when interacting with a conversation 4daa21123 SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API e5d6a9bbf PR-1100: Add methods to get sounds from entities b7e9f1c8b SPIGOT-7146: Reduce use of Material switch in ItemMeta Spigot Changes: 4c157bb4 Rebuild patches
149 Zeilen
5.3 KiB
Diff
149 Zeilen
5.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <Blake.Galbreath@GMail.com>
|
|
Date: Mon, 3 Sep 2018 18:13:53 -0500
|
|
Subject: [PATCH] Add ray tracing methods to LivingEntity
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/block/TargetBlockInfo.java b/src/main/java/com/destroystokyo/paper/block/TargetBlockInfo.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..18a96dbb01d3b34476652264b2d6be3782a154ec
|
|
--- /dev/null
|
|
+++ b/src/main/java/com/destroystokyo/paper/block/TargetBlockInfo.java
|
|
@@ -0,0 +1,54 @@
|
|
+package com.destroystokyo.paper.block;
|
|
+
|
|
+import org.bukkit.block.Block;
|
|
+import org.bukkit.block.BlockFace;
|
|
+import org.jetbrains.annotations.NotNull;
|
|
+
|
|
+/**
|
|
+ * Represents information about a targeted block
|
|
+ */
|
|
+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);
|
|
+ }
|
|
+
|
|
+ public enum FluidMode {
|
|
+ NEVER,
|
|
+ SOURCE_ONLY,
|
|
+ ALWAYS
|
|
+ }
|
|
+}
|
|
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
|
|
index c80e75b72ac863db19e3d234e349876dd8797924..c29846df0469535870e1743eee25325a4f092a6d 100644
|
|
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
|
|
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
|
|
@@ -83,6 +83,77 @@ 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
|
|
+ */
|
|
+ @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
|
|
+ */
|
|
+ @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, com.destroystokyo.paper.block.TargetBlockInfo.FluidMode.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
|
|
+ */
|
|
+ @Nullable
|
|
+ public org.bukkit.block.BlockFace getTargetBlockFace(int maxDistance, @NotNull com.destroystokyo.paper.block.TargetBlockInfo.FluidMode 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
|
|
+ */
|
|
+ @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
|
|
+ */
|
|
+ @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>
|