diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/entity/BlockEntityStoredPlayerImpetus.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/entity/BlockEntityStoredPlayerImpetus.java index 066a9c9d..b23496e3 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/entity/BlockEntityStoredPlayerImpetus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/entity/BlockEntityStoredPlayerImpetus.java @@ -35,17 +35,6 @@ public class BlockEntityStoredPlayerImpetus extends BlockEntityAbstractImpetus { super(HexBlockEntities.IMPETUS_STOREDPLAYER_TILE, pWorldPosition, pBlockState); } - @Override - public boolean activatorAlwaysInRange() { - return true; - } - - @Override - protected @Nullable - Player getPlayer() { - return this.storedPlayer == null ? null : this.level.getPlayerByUUID(this.storedPlayer); - } - protected @Nullable GameProfile getPlayerName() { Player player = getStoredPlayer(); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpCreateSentinel.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpCreateSentinel.kt index 5244ec72..97fb5226 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpCreateSentinel.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpCreateSentinel.kt @@ -33,7 +33,6 @@ class OpCreateSentinel(val extendsRange: Boolean) : SpellAction { IXplatAbstractions.INSTANCE.setSentinel( ctx.caster, Sentinel( - true, extendsRange, target, ctx.world.dimension() diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpDestroySentinel.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpDestroySentinel.kt index 2d4bdb99..7f84cf3e 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpDestroySentinel.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpDestroySentinel.kt @@ -2,7 +2,6 @@ package at.petrak.hexcasting.common.casting.operators.spells.sentinel import at.petrak.hexcasting.api.misc.MediaConstants -import at.petrak.hexcasting.api.player.Sentinel import at.petrak.hexcasting.api.casting.ParticleSpray import at.petrak.hexcasting.api.casting.RenderedSpell import at.petrak.hexcasting.api.casting.iota.Iota @@ -16,9 +15,9 @@ object OpDestroySentinel : SpellAction { override fun execute( args: List, ctx: CastingEnvironment - ): Triple> { + ): Triple>? { val particles = mutableListOf() - val sentinel = IXplatAbstractions.INSTANCE.getSentinel(ctx.caster) + val sentinel = IXplatAbstractions.INSTANCE.getSentinel(ctx.caster) ?: return null // TODO why can't you remove things from other dimensions? if (sentinel.dimension != ctx.world.dimension()) throw MishapLocationInWrongDimension(sentinel.dimension.location()) @@ -33,7 +32,7 @@ object OpDestroySentinel : SpellAction { private object Spell : RenderedSpell { override fun cast(ctx: CastingEnvironment) { - IXplatAbstractions.INSTANCE.setSentinel(ctx.caster, Sentinel.none()) + IXplatAbstractions.INSTANCE.setSentinel(ctx.caster, null) } } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpGetSentinelPos.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpGetSentinelPos.kt index 71dc5827..1893b24d 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpGetSentinelPos.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpGetSentinelPos.kt @@ -13,12 +13,9 @@ object OpGetSentinelPos : ConstMediaAction { override val argc = 0 override val mediaCost = MediaConstants.DUST_UNIT / 10 override fun execute(args: List, ctx: CastingEnvironment): List { - val sentinel = IXplatAbstractions.INSTANCE.getSentinel(ctx.caster) + val sentinel = IXplatAbstractions.INSTANCE.getSentinel(ctx.caster) ?: return listOf(NullIota()) if (sentinel.dimension != ctx.world.dimension()) throw MishapLocationInWrongDimension(sentinel.dimension.location()) - return if (sentinel.hasSentinel) - sentinel.position.asActionResult - else - listOf(NullIota()) + return sentinel.position.asActionResult } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpGetSentinelWayfind.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpGetSentinelWayfind.kt index 2070fb06..4f839e72 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpGetSentinelWayfind.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/spells/sentinel/OpGetSentinelWayfind.kt @@ -18,14 +18,11 @@ object OpGetSentinelWayfind : ConstMediaAction { override fun execute(args: List, ctx: CastingEnvironment): List { val from = args.getVec3(0, argc) - val sentinel = IXplatAbstractions.INSTANCE.getSentinel(ctx.caster) + val sentinel = IXplatAbstractions.INSTANCE.getSentinel(ctx.caster) ?: return listOf(NullIota()) if (sentinel.dimension != ctx.world.dimension()) throw MishapLocationInWrongDimension(sentinel.dimension.location()) - return if (!sentinel.hasSentinel) - listOf(NullIota()) - else - sentinel.position.subtract(from).normalize().asActionResult + return sentinel.position.subtract(from).normalize().asActionResult } } diff --git a/Common/src/main/java/at/petrak/hexcasting/xplat/IXplatAbstractions.java b/Common/src/main/java/at/petrak/hexcasting/xplat/IXplatAbstractions.java index 5d860a15..d257ff0c 100644 --- a/Common/src/main/java/at/petrak/hexcasting/xplat/IXplatAbstractions.java +++ b/Common/src/main/java/at/petrak/hexcasting/xplat/IXplatAbstractions.java @@ -77,7 +77,7 @@ public interface IXplatAbstractions { void setColorizer(Player target, FrozenColorizer colorizer); - void setSentinel(Player target, Sentinel sentinel); + void setSentinel(Player target, @Nullable Sentinel sentinel); void setFlight(ServerPlayer target, @Nullable FlightAbility flight); @@ -95,7 +95,7 @@ public interface IXplatAbstractions { FrozenColorizer getColorizer(Player player); - Sentinel getSentinel(Player player); + @Nullable Sentinel getSentinel(Player player); CastingVM getStaffcastVM(ServerPlayer player, InteractionHand hand); diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/cc/CCSentinel.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/cc/CCSentinel.java index bd281092..d4ba9627 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/cc/CCSentinel.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/cc/CCSentinel.java @@ -10,6 +10,8 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; +import javax.annotation.Nullable; + public class CCSentinel implements Component, AutoSyncedComponent { public static final String TAG_HAS_SENTINEL = "has_sentinel", @@ -18,13 +20,13 @@ public class CCSentinel implements Component, AutoSyncedComponent { TAG_DIMENSION = "dimension"; private final Player owner; - private Sentinel sentinel = Sentinel.none(); + private @Nullable Sentinel sentinel = null; public CCSentinel(Player owner) { this.owner = owner; } - public Sentinel getSentinel() { + public @Nullable Sentinel getSentinel() { return sentinel; } @@ -41,16 +43,16 @@ public class CCSentinel implements Component, AutoSyncedComponent { var position = HexUtils.vecFromNBT(tag.getLongArray(TAG_POSITION)); var dim = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(tag.getString(TAG_DIMENSION))); - this.sentinel = new Sentinel(true, extendsRange, position, dim); + this.sentinel = new Sentinel(extendsRange, position, dim); } else { - this.sentinel = Sentinel.none(); + this.sentinel = null; } } @Override public void writeToNbt(CompoundTag tag) { - tag.putBoolean(TAG_HAS_SENTINEL, this.sentinel.hasSentinel()); - if (this.sentinel.hasSentinel()) { + tag.putBoolean(TAG_HAS_SENTINEL, this.sentinel != null); + if (this.sentinel != null) { tag.putBoolean(TAG_EXTENDS_RANGE, this.sentinel.extendsRange()); tag.put(TAG_POSITION, HexUtils.serializeToNBT(this.sentinel.position())); tag.putString(TAG_DIMENSION, this.sentinel.dimension().location().toString()); diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java index cabfe5f8..1f448efc 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java @@ -155,7 +155,7 @@ public class FabricXplatImpl implements IXplatAbstractions { } @Override - public void setSentinel(Player target, Sentinel sentinel) { + public void setSentinel(Player target, @Nullable Sentinel sentinel) { var cc = HexCardinalComponents.SENTINEL.get(target); cc.setSentinel(sentinel); } diff --git a/Forge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java b/Forge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java index a4395ba9..fc691e28 100644 --- a/Forge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java +++ b/Forge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java @@ -195,7 +195,7 @@ public class ForgeXplatImpl implements IXplatAbstractions { } @Override - public void setSentinel(Player player, Sentinel sentinel) { + public void setSentinel(Player player, @Nullable Sentinel sentinel) { CompoundTag tag = player.getPersistentData(); tag.putBoolean(TAG_SENTINEL_EXISTS, sentinel.hasSentinel()); if (sentinel.hasSentinel()) {