File tree Expand file tree Collapse file tree 6 files changed +34
-0
lines changed
java/at/petrak/hexcasting
common/casting/actions/spells/sentinel
resources/assets/hexcasting/lang Expand file tree Collapse file tree 6 files changed +34
-0
lines changed Original file line number Diff line number Diff line change 1+ package at.petrak.hexcasting.api.casting.mishaps
2+
3+ import at.petrak.hexcasting.api.casting.eval.CastingEnvironment
4+ import at.petrak.hexcasting.api.casting.iota.Iota
5+ import at.petrak.hexcasting.api.pigment.FrozenPigment
6+ import net.minecraft.world.item.DyeColor
7+
8+ class MishapBadCaster : Mishap () {
9+ override fun accentColor (ctx : CastingEnvironment , errorCtx : Context ): FrozenPigment =
10+ dyeColor(DyeColor .RED )
11+
12+ override fun execute (env : CastingEnvironment , errorCtx : Context , stack : MutableList <Iota >) {
13+ }
14+
15+ override fun errorMessage (ctx : CastingEnvironment , errorCtx : Context ) =
16+ error(" bad_caster" )
17+ }
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import at.petrak.hexcasting.api.casting.castables.SpellAction
66import at.petrak.hexcasting.api.casting.eval.CastingEnvironment
77import at.petrak.hexcasting.api.casting.getVec3
88import at.petrak.hexcasting.api.casting.iota.Iota
9+ import at.petrak.hexcasting.api.casting.mishaps.MishapBadCaster
910import at.petrak.hexcasting.api.misc.MediaConstants
1011import at.petrak.hexcasting.api.player.Sentinel
1112import at.petrak.hexcasting.xplat.IXplatAbstractions
@@ -19,6 +20,9 @@ class OpCreateSentinel(val extendsRange: Boolean) : SpellAction {
1920 args : List <Iota >,
2021 env : CastingEnvironment
2122 ): SpellAction .Result {
23+ if (env.castingEntity !is ServerPlayer )
24+ throw MishapBadCaster ()
25+
2226 val target = args.getVec3(0 , argc)
2327 env.assertVecInRange(target)
2428
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import at.petrak.hexcasting.api.casting.RenderedSpell
55import at.petrak.hexcasting.api.casting.castables.SpellAction
66import at.petrak.hexcasting.api.casting.eval.CastingEnvironment
77import at.petrak.hexcasting.api.casting.iota.Iota
8+ import at.petrak.hexcasting.api.casting.mishaps.MishapBadCaster
89import at.petrak.hexcasting.api.casting.mishaps.MishapLocationInWrongDimension
910import at.petrak.hexcasting.api.misc.MediaConstants
1011import at.petrak.hexcasting.xplat.IXplatAbstractions
@@ -16,6 +17,9 @@ object OpDestroySentinel : SpellAction {
1617 args : List <Iota >,
1718 env : CastingEnvironment
1819 ): SpellAction .Result {
20+ if (env.castingEntity !is ServerPlayer )
21+ throw MishapBadCaster ()
22+
1923 val sentinel = IXplatAbstractions .INSTANCE .getSentinel(env.castingEntity as ? ServerPlayer )
2024
2125 // TODO why can't you remove things from other dimensions?
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import at.petrak.hexcasting.api.casting.castables.ConstMediaAction
55import at.petrak.hexcasting.api.casting.eval.CastingEnvironment
66import at.petrak.hexcasting.api.casting.iota.Iota
77import at.petrak.hexcasting.api.casting.iota.NullIota
8+ import at.petrak.hexcasting.api.casting.mishaps.MishapBadCaster
89import at.petrak.hexcasting.api.casting.mishaps.MishapLocationInWrongDimension
910import at.petrak.hexcasting.api.misc.MediaConstants
1011import at.petrak.hexcasting.xplat.IXplatAbstractions
@@ -14,6 +15,9 @@ object OpGetSentinelPos : ConstMediaAction {
1415 override val argc = 0
1516 override val mediaCost: Long = MediaConstants .DUST_UNIT / 10
1617 override fun execute (args : List <Iota >, env : CastingEnvironment ): List <Iota > {
18+ if (env.castingEntity !is ServerPlayer )
19+ throw MishapBadCaster ()
20+
1721 val sentinel = IXplatAbstractions .INSTANCE .getSentinel(env.castingEntity as ? ServerPlayer ) ? : return listOf (NullIota ())
1822 if (sentinel.dimension != env.world.dimension())
1923 throw MishapLocationInWrongDimension (sentinel.dimension.location())
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import at.petrak.hexcasting.api.casting.eval.CastingEnvironment
66import at.petrak.hexcasting.api.casting.getVec3
77import at.petrak.hexcasting.api.casting.iota.Iota
88import at.petrak.hexcasting.api.casting.iota.NullIota
9+ import at.petrak.hexcasting.api.casting.mishaps.MishapBadCaster
910import at.petrak.hexcasting.api.casting.mishaps.MishapLocationInWrongDimension
1011import at.petrak.hexcasting.api.misc.MediaConstants
1112import at.petrak.hexcasting.xplat.IXplatAbstractions
@@ -17,6 +18,9 @@ object OpGetSentinelWayfind : ConstMediaAction {
1718 override val argc = 1
1819 override val mediaCost: Long = MediaConstants .DUST_UNIT / 10
1920 override fun execute (args : List <Iota >, env : CastingEnvironment ): List <Iota > {
21+ if (env.castingEntity !is ServerPlayer )
22+ throw MishapBadCaster ()
23+
2024 val from = args.getVec3(0 , argc)
2125
2226 val sentinel = IXplatAbstractions .INSTANCE .getSentinel(env.castingEntity as ? ServerPlayer ) ? : return listOf (NullIota ())
Original file line number Diff line number Diff line change 921921 invalid_spell_datum_type : "Tried to use a value of invalid type as a SpellDatum: %s (class %s). This is a bug in the mod." ,
922922 unknown : "threw an exception (%s). This is a bug in the mod." ,
923923 stack_size : "Exceeded the size limit of the stack" ,
924+ bad_caster : "Tried to execute a pattern that requires a greater mind" ,
924925
925926 invalid_value : {
926927 "" : "expected %s at index %s of the stack, but got %s" ,
You can’t perform that action at this time.
0 commit comments