From 8b0207ac9381b55aab95dbea51e20c3f33db8ef4 Mon Sep 17 00:00:00 2001 From: Tamion <70228790+notTamion@users.noreply.github.com> Date: Fri, 9 Feb 2024 23:03:27 +0100 Subject: [PATCH] Add Conduit API (#10195) --- patches/api/Conduit-API.patch | 46 +++++++++++++++++++++++++++++ patches/server/Conduit-API.patch | 50 ++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 patches/api/Conduit-API.patch create mode 100644 patches/server/Conduit-API.patch diff --git a/patches/api/Conduit-API.patch b/patches/api/Conduit-API.patch new file mode 100644 index 0000000000..6f73ebdb0b --- /dev/null +++ b/patches/api/Conduit-API.patch @@ -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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/block/Conduit.java ++++ b/src/main/java/org/bukkit/block/Conduit.java +@@ -0,0 +0,0 @@ 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 ++} diff --git a/patches/server/Conduit-API.patch b/patches/server/Conduit-API.patch new file mode 100644 index 0000000000..c29fd4088f --- /dev/null +++ b/patches/server/Conduit-API.patch @@ -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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 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 +@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java ++++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java +@@ -0,0 +0,0 @@ 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 + }