From d073dfa88a38621c0efcff3902ed84877651b1a7 Mon Sep 17 00:00:00 2001 From: TechTastic <74630543+TechTastic@users.noreply.github.com> Date: Wed, 10 Dec 2025 23:45:20 -0600 Subject: [PATCH] Added `CastingEnvironment#getCasterPosition` and its implementations --- .../hexcasting/api/casting/eval/CastingEnvironment.java | 7 +++++++ .../hexcasting/api/casting/eval/env/CircleCastEnv.java | 5 +++++ .../api/casting/eval/env/PlayerBasedCastEnv.java | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/CastingEnvironment.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/CastingEnvironment.java index 2345eb4267..42cbed303c 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/CastingEnvironment.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/CastingEnvironment.java @@ -128,6 +128,13 @@ public ServerPlayer getCaster() { @Nullable public abstract LivingEntity getCastingEntity(); + /** + * Gets the caster's position. Useful for compatibility. + * + * @return the position of the caster + */ + public abstract Vec3 getCastingPosition(); + /** * Get an interface used to do mishaps */ diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/CircleCastEnv.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/CircleCastEnv.java index 333deaa813..14272315c8 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/CircleCastEnv.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/CircleCastEnv.java @@ -48,6 +48,11 @@ public CircleCastEnv(ServerLevel world, CircleExecutionState execState) { return this.execState.getCaster(this.world); } + @Override + public Vec3 getCastingPosition() { + return this.getImpetus() == null ? this.execState.impetusPos.getCenter() : this.getImpetus().getBlockPos().getCenter(); + } + public @Nullable BlockEntityAbstractImpetus getImpetus() { var entity = this.world.getBlockEntity(execState.impetusPos); diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PlayerBasedCastEnv.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PlayerBasedCastEnv.java index 83e58a818b..24b35f4181 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PlayerBasedCastEnv.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PlayerBasedCastEnv.java @@ -62,6 +62,11 @@ public ServerPlayer getCaster() { return this.caster; } + @Override + public Vec3 getCastingPosition() { + return this.caster.position(); + } + @Override public void postExecution(CastResult result) { super.postExecution(result);