Add Conduit API (#10195)

This commit is contained in:
Tamion 2024-02-09 23:03:27 +01:00 committed by GitHub
parent 69b52b4d8e
commit cbe62d91fb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 96 additions and 0 deletions

View File

@ -0,0 +1,46 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tamion <70228790+notTamion@users.noreply.github.com>
Date: Sat, 27 Jan 2024 20:46:29 +0100
Subject: [PATCH] Conduit API
diff --git a/src/main/java/org/bukkit/block/Conduit.java b/src/main/java/org/bukkit/block/Conduit.java
index 5543165536e84503c2d1476ee2001468cbb724f9..b3eec2eab586072598a40375a1c3e722ee3fa352 100644
--- a/src/main/java/org/bukkit/block/Conduit.java
+++ b/src/main/java/org/bukkit/block/Conduit.java
@@ -3,4 +3,34 @@ package org.bukkit.block;
/**
* Represents a captured state of a conduit.
*/
-public interface Conduit extends TileState { }
+public interface Conduit extends TileState {
+
+ // Paper start - Conduit API
+
+ /**
+ * Gets if the conduit is currently active.
+ * <p>
+ * Requires the conduit to be placed in the world.
+ *
+ * @return if the conduit is active
+ */
+ boolean isActive();
+
+ /**
+ * Gets the range in which the Conduit Power effect gets added to players.
+ * <p>
+ * Requires the conduit to be placed in the world.
+ *
+ * @return the range
+ */
+ int getRange();
+
+ /**
+ * Gets the current target of the conduit.
+ *
+ * @return the current target
+ */
+ @org.jetbrains.annotations.Nullable
+ org.bukkit.entity.LivingEntity getTarget();
+ // Paper end - Conduit API
+}

View File

@ -0,0 +1,50 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tamion <70228790+notTamion@users.noreply.github.com>
Date: Sat, 27 Jan 2024 20:46:40 +0100
Subject: [PATCH] Conduit API
== AT ==
public net.minecraft.world.level.block.entity.ConduitBlockEntity effectBlocks
public net.minecraft.world.level.block.entity.ConduitBlockEntity destroyTarget
diff --git a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java
index 1f493708b01ede8d54f9eb8243695fe70e7af3a1..58f2619fab37a1e2d2093ca89f66f3a8bb47d192 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java
@@ -191,7 +191,7 @@ public class ConduitBlockEntity extends BlockEntity {
private static void applyEffects(Level world, BlockPos pos, List<BlockPos> activatingBlocks) {
int i = activatingBlocks.size();
- int j = i / 7 * 16;
+ int j = i / 7 * 16; // Paper - Conduit API; diff on change
int k = pos.getX();
int l = pos.getY();
int i1 = pos.getZ();
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java
index 29bcac10a7edf53015941e4c28c4f2d9a5a3db56..f0b0348e105fb27c829ec29e638433c57bfd5f64 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java
@@ -18,4 +18,23 @@ public class CraftConduit extends CraftBlockEntityState<ConduitBlockEntity> impl
public CraftConduit copy() {
return new CraftConduit(this);
}
+
+ // Paper start - Conduit API
+ @Override
+ public boolean isActive() {
+ requirePlaced();
+ return this.getTileEntity().isActive();
+ }
+
+ @Override
+ public int getRange() {
+ requirePlaced();
+ return this.getTileEntity().effectBlocks.size() / 7 * 16;
+ }
+
+ @Override
+ public org.bukkit.entity.LivingEntity getTarget() {
+ return this.getTileEntity().destroyTarget == null ? null : this.getTileEntity().destroyTarget.getBukkitLivingEntity();
+ }
+ // Paper end - Conduit API
}