you can now actually get enlightened. lol lmao
This commit is contained in:
parent
8b2995d2c4
commit
430ca3582e
|
@ -83,6 +83,13 @@ public abstract class CastingEnvironment {
|
||||||
|
|
||||||
public abstract Vec3 mishapSprayPos();
|
public abstract Vec3 mishapSprayPos();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return whether this env can cast great spells.
|
||||||
|
*/
|
||||||
|
public boolean isEnlightened() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempt to extract the given amount of media. Returns the amount of media left in the cost.
|
* Attempt to extract the given amount of media. Returns the amount of media left in the cost.
|
||||||
* <p>
|
* <p>
|
||||||
|
|
|
@ -74,7 +74,9 @@ public class CircleCastEnv extends CastingEnvironment {
|
||||||
for (var sideEffect : result.getSideEffects()) {
|
for (var sideEffect : result.getSideEffects()) {
|
||||||
if (sideEffect instanceof OperatorSideEffect.DoMishap doMishap) {
|
if (sideEffect instanceof OperatorSideEffect.DoMishap doMishap) {
|
||||||
var msg = doMishap.getMishap().errorMessageWithName(this, doMishap.getErrorCtx());
|
var msg = doMishap.getMishap().errorMessageWithName(this, doMishap.getErrorCtx());
|
||||||
imp.postMishap(msg);
|
if (msg != null) {
|
||||||
|
imp.postMishap(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -204,7 +204,9 @@ public abstract class PlayerBasedCastEnv extends CastingEnvironment {
|
||||||
|
|
||||||
protected void sendMishapMsgToPlayer(OperatorSideEffect.DoMishap mishap) {
|
protected void sendMishapMsgToPlayer(OperatorSideEffect.DoMishap mishap) {
|
||||||
var msg = mishap.getMishap().errorMessageWithName(this, mishap.getErrorCtx());
|
var msg = mishap.getMishap().errorMessageWithName(this, mishap.getErrorCtx());
|
||||||
this.caster.sendSystemMessage(msg);
|
if (msg != null) {
|
||||||
|
this.caster.sendSystemMessage(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package at.petrak.hexcasting.api.casting.eval.sideeffects
|
package at.petrak.hexcasting.api.casting.eval.sideeffects
|
||||||
|
|
||||||
import at.petrak.hexcasting.api.advancements.HexAdvancementTriggers
|
|
||||||
import at.petrak.hexcasting.api.casting.ParticleSpray
|
import at.petrak.hexcasting.api.casting.ParticleSpray
|
||||||
import at.petrak.hexcasting.api.casting.RenderedSpell
|
import at.petrak.hexcasting.api.casting.RenderedSpell
|
||||||
import at.petrak.hexcasting.api.casting.eval.vm.CastingVM
|
import at.petrak.hexcasting.api.casting.eval.vm.CastingVM
|
||||||
|
@ -24,8 +23,6 @@ sealed class OperatorSideEffect {
|
||||||
override fun performEffect(harness: CastingVM): Boolean {
|
override fun performEffect(harness: CastingVM): Boolean {
|
||||||
harness.env.caster?.sendSystemMessage("hexcasting.message.cant_great_spell".asTranslatedComponent)
|
harness.env.caster?.sendSystemMessage("hexcasting.message.cant_great_spell".asTranslatedComponent)
|
||||||
|
|
||||||
if (awardStat)
|
|
||||||
HexAdvancementTriggers.FAIL_GREAT_SPELL_TRIGGER.trigger(harness.env.caster)
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ import at.petrak.hexcasting.api.casting.math.HexPattern;
|
||||||
import at.petrak.hexcasting.api.casting.mishaps.Mishap;
|
import at.petrak.hexcasting.api.casting.mishaps.Mishap;
|
||||||
import at.petrak.hexcasting.api.casting.mishaps.MishapEvalTooMuch;
|
import at.petrak.hexcasting.api.casting.mishaps.MishapEvalTooMuch;
|
||||||
import at.petrak.hexcasting.api.casting.mishaps.MishapInvalidPattern;
|
import at.petrak.hexcasting.api.casting.mishaps.MishapInvalidPattern;
|
||||||
|
import at.petrak.hexcasting.api.casting.mishaps.MishapUnenlightened;
|
||||||
import at.petrak.hexcasting.api.mod.HexConfig;
|
import at.petrak.hexcasting.api.mod.HexConfig;
|
||||||
import at.petrak.hexcasting.api.mod.HexTags;
|
import at.petrak.hexcasting.api.mod.HexTags;
|
||||||
import at.petrak.hexcasting.api.utils.HexUtils;
|
import at.petrak.hexcasting.api.utils.HexUtils;
|
||||||
|
@ -85,8 +86,12 @@ public class PatternIota extends Iota {
|
||||||
HexTags.Actions.REQUIRES_ENLIGHTENMENT);
|
HexTags.Actions.REQUIRES_ENLIGHTENMENT);
|
||||||
|
|
||||||
castedName = HexAPI.instance().getActionI18n(key, reqsEnlightenment);
|
castedName = HexAPI.instance().getActionI18n(key, reqsEnlightenment);
|
||||||
|
|
||||||
action = Objects.requireNonNull(IXplatAbstractions.INSTANCE.getActionRegistry().get(key)).action();
|
action = Objects.requireNonNull(IXplatAbstractions.INSTANCE.getActionRegistry().get(key)).action();
|
||||||
|
|
||||||
|
if (reqsEnlightenment && !vm.getEnv().isEnlightened()) {
|
||||||
|
// this gets caught down below
|
||||||
|
throw new MishapUnenlightened();
|
||||||
|
}
|
||||||
} else if (lookup instanceof PatternShapeMatch.Special special) {
|
} else if (lookup instanceof PatternShapeMatch.Special special) {
|
||||||
castedName = special.handler.getName();
|
castedName = special.handler.getName();
|
||||||
action = special.handler.act();
|
action = special.handler.act();
|
||||||
|
|
|
@ -37,16 +37,16 @@ abstract class Mishap : Throwable() {
|
||||||
*
|
*
|
||||||
* You can also mess up the stack with this.
|
* You can also mess up the stack with this.
|
||||||
*/
|
*/
|
||||||
abstract fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>)
|
abstract fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>)
|
||||||
|
|
||||||
protected abstract fun errorMessage(ctx: CastingEnvironment, errorCtx: Context): Component
|
protected abstract fun errorMessage(ctx: CastingEnvironment, errorCtx: Context): Component?
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Every error message should be prefixed with the name of the action...
|
* Every error message should be prefixed with the name of the action...
|
||||||
*/
|
*/
|
||||||
public fun errorMessageWithName(ctx: CastingEnvironment, errorCtx: Context): Component {
|
fun errorMessageWithName(ctx: CastingEnvironment, errorCtx: Context): Component? {
|
||||||
return if (errorCtx.name != null) {
|
return if (errorCtx.name != null) {
|
||||||
"hexcasting.mishap".asTranslatedComponent(errorCtx.name, this.errorMessage(ctx, errorCtx))
|
"hexcasting.mishap".asTranslatedComponent(errorCtx.name, this.errorMessage(ctx, errorCtx) ?: return null)
|
||||||
} else {
|
} else {
|
||||||
this.errorMessage(ctx, errorCtx)
|
this.errorMessage(ctx, errorCtx)
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,8 @@ class MishapAlreadyBrainswept(val mob: Mob) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.GREEN)
|
dyeColor(DyeColor.GREEN)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
mob.hurt(HexDamageSources.overcastDamageFrom(ctx.caster), mob.health)
|
mob.hurt(HexDamageSources.overcastDamageFrom(env.caster), mob.health)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun particleSpray(ctx: CastingEnvironment) =
|
override fun particleSpray(ctx: CastingEnvironment) =
|
||||||
|
|
|
@ -15,8 +15,8 @@ class MishapBadBlock(val pos: BlockPos, val expected: Component) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.LIME)
|
dyeColor(DyeColor.LIME)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
ctx.world.explode(null, pos.x + 0.5, pos.y + 0.5, pos.z + 0.5, 0.25f, Explosion.BlockInteraction.NONE)
|
env.world.explode(null, pos.x + 0.5, pos.y + 0.5, pos.z + 0.5, 0.25f, Explosion.BlockInteraction.NONE)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun particleSpray(ctx: CastingEnvironment) =
|
override fun particleSpray(ctx: CastingEnvironment) =
|
||||||
|
|
|
@ -14,8 +14,8 @@ class MishapBadBrainsweep(val mob: Mob, val pos: BlockPos) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.GREEN)
|
dyeColor(DyeColor.GREEN)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
trulyHurt(mob, HexDamageSources.overcastDamageFrom(ctx.caster), 1f)
|
trulyHurt(mob, HexDamageSources.overcastDamageFrom(env.caster), 1f)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun particleSpray(ctx: CastingEnvironment): ParticleSpray {
|
override fun particleSpray(ctx: CastingEnvironment): ParticleSpray {
|
||||||
|
|
|
@ -14,8 +14,8 @@ class MishapBadEntity(val entity: Entity, val wanted: Component) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.BROWN)
|
dyeColor(DyeColor.BROWN)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
ctx.mishapEnvironment.yeetHeldItemsTowards(entity.position())
|
env.mishapEnvironment.yeetHeldItemsTowards(entity.position())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
||||||
|
|
|
@ -12,7 +12,7 @@ class MishapBadItem(val item: ItemEntity, val wanted: Component) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.BROWN)
|
dyeColor(DyeColor.BROWN)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
item.deltaMovement = item.deltaMovement.add((Math.random() - 0.5) * 0.05, 0.75, (Math.random() - 0.5) * 0.05)
|
item.deltaMovement = item.deltaMovement.add((Math.random() - 0.5) * 0.05, 0.75, (Math.random() - 0.5) * 0.05)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,8 @@ class MishapBadLocation(val location: Vec3, val type: String = "too_far") : Mish
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.MAGENTA)
|
dyeColor(DyeColor.MAGENTA)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
ctx.mishapEnvironment.yeetHeldItemsTowards(this.location)
|
env.mishapEnvironment.yeetHeldItemsTowards(this.location)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context): Component =
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context): Component =
|
||||||
|
|
|
@ -13,8 +13,8 @@ class MishapBadOffhandItem(val item: ItemStack, val hand: InteractionHand?, val
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.BROWN)
|
dyeColor(DyeColor.BROWN)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
ctx.mishapEnvironment.dropHeldItems()
|
env.mishapEnvironment.dropHeldItems()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) = if (item.isEmpty)
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) = if (item.isEmpty)
|
||||||
|
|
|
@ -12,7 +12,7 @@ class MishapDisallowedSpell(val type: String = "disallowed") : Mishap() {
|
||||||
|
|
||||||
override fun resolutionType(ctx: CastingEnvironment) = ResolvedPatternType.INVALID
|
override fun resolutionType(ctx: CastingEnvironment) = ResolvedPatternType.INVALID
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
// NO-OP
|
// NO-OP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,9 @@ class MishapDivideByZero(val operand1: Component, val operand2: Component, val s
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.RED)
|
dyeColor(DyeColor.RED)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
stack.add(GarbageIota())
|
stack.add(GarbageIota())
|
||||||
ctx.mishapEnvironment.damage(0.5f)
|
env.mishapEnvironment.damage(0.5f)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
||||||
|
|
|
@ -11,8 +11,8 @@ class MishapEntityTooFarAway(val entity: Entity) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.PINK)
|
dyeColor(DyeColor.PINK)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
ctx.mishapEnvironment.yeetHeldItemsTowards(entity.position())
|
env.mishapEnvironment.yeetHeldItemsTowards(entity.position())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context): Component =
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context): Component =
|
||||||
|
|
|
@ -9,8 +9,8 @@ class MishapEvalTooMuch : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.BLUE)
|
dyeColor(DyeColor.BLUE)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
ctx.mishapEnvironment.drown()
|
env.mishapEnvironment.drown()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
||||||
|
|
|
@ -11,8 +11,8 @@ class MishapImmuneEntity(val entity: Entity) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.BLUE)
|
dyeColor(DyeColor.BLUE)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
ctx.mishapEnvironment.yeetHeldItemsTowards(entity.position())
|
env.mishapEnvironment.yeetHeldItemsTowards(entity.position())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
||||||
|
|
|
@ -9,7 +9,7 @@ class MishapInternalException(val exception: Exception) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.BLACK)
|
dyeColor(DyeColor.BLACK)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
// NO-OP
|
// NO-OP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ class MishapInvalidIota(
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.GRAY)
|
dyeColor(DyeColor.GRAY)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
stack[stack.size - 1 - reverseIdx] = GarbageIota();
|
stack[stack.size - 1 - reverseIdx] = GarbageIota();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ class MishapInvalidPattern : Mishap() {
|
||||||
|
|
||||||
override fun resolutionType(ctx: CastingEnvironment) = ResolvedPatternType.INVALID
|
override fun resolutionType(ctx: CastingEnvironment) = ResolvedPatternType.INVALID
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
stack.add(GarbageIota())
|
stack.add(GarbageIota())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ class MishapInvalidSpellDatumType(val perpetrator: Any) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.BLACK)
|
dyeColor(DyeColor.BLACK)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
// NO-OP
|
// NO-OP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ class MishapLocationInWrongDimension(val properDimension: ResourceLocation) : Mi
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.MAGENTA)
|
dyeColor(DyeColor.MAGENTA)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
stack.add(GarbageIota())
|
stack.add(GarbageIota())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,8 @@ class MishapNoAkashicRecord(val pos: BlockPos) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.PURPLE)
|
dyeColor(DyeColor.PURPLE)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
ctx.mishapEnvironment.removeXp(100)
|
env.mishapEnvironment.removeXp(100)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
||||||
|
|
|
@ -10,7 +10,7 @@ class MishapNotEnoughArgs(val expected: Int, val got: Int) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.LIGHT_GRAY)
|
dyeColor(DyeColor.LIGHT_GRAY)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
repeat(expected - got) { stack.add(GarbageIota()) }
|
repeat(expected - got) { stack.add(GarbageIota()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,9 @@ class MishapOthersName(val confidant: Player) : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.BLACK)
|
dyeColor(DyeColor.BLACK)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
val seconds = if (this.confidant == ctx.caster) 5 else 60;
|
val seconds = if (this.confidant == env.caster) 5 else 60;
|
||||||
ctx.mishapEnvironment.blind(seconds * 20)
|
env.mishapEnvironment.blind(seconds * 20)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
|
||||||
|
|
|
@ -10,8 +10,8 @@ class MishapShameOnYou() : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.BLACK)
|
dyeColor(DyeColor.BLACK)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
val caster = ctx.caster
|
val caster = env.caster
|
||||||
if (caster != null) {
|
if (caster != null) {
|
||||||
// FIXME: handle null caster case
|
// FIXME: handle null caster case
|
||||||
Mishap.trulyHurt(caster, HexDamageSources.SHAME, 69420f)
|
Mishap.trulyHurt(caster, HexDamageSources.SHAME, 69420f)
|
||||||
|
|
|
@ -10,7 +10,7 @@ class MishapTooManyCloseParens : Mishap() {
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.ORANGE)
|
dyeColor(DyeColor.ORANGE)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
// TODO this is a kinda shitty mishap
|
// TODO this is a kinda shitty mishap
|
||||||
if (errorCtx.pattern != null)
|
if (errorCtx.pattern != null)
|
||||||
stack.add(PatternIota(errorCtx.pattern))
|
stack.add(PatternIota(errorCtx.pattern))
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
package at.petrak.hexcasting.api.casting.mishaps
|
||||||
|
|
||||||
|
import at.petrak.hexcasting.api.advancements.HexAdvancementTriggers
|
||||||
|
import at.petrak.hexcasting.api.casting.eval.CastingEnvironment
|
||||||
|
import at.petrak.hexcasting.api.casting.eval.ResolvedPatternType
|
||||||
|
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||||
|
import at.petrak.hexcasting.api.pigment.FrozenPigment
|
||||||
|
import at.petrak.hexcasting.api.utils.asTranslatedComponent
|
||||||
|
import net.minecraft.sounds.SoundEvents
|
||||||
|
import net.minecraft.sounds.SoundSource
|
||||||
|
import net.minecraft.world.item.DyeColor
|
||||||
|
|
||||||
|
class MishapUnenlightened : Mishap() {
|
||||||
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
|
dyeColor(DyeColor.RED)
|
||||||
|
|
||||||
|
override fun resolutionType(ctx: CastingEnvironment) = ResolvedPatternType.INVALID
|
||||||
|
|
||||||
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
|
env.mishapEnvironment.dropHeldItems()
|
||||||
|
env.caster?.sendSystemMessage("hexcasting.message.cant_great_spell".asTranslatedComponent, true)
|
||||||
|
|
||||||
|
// add some non-zero level of juice I guess
|
||||||
|
val pos = env.mishapSprayPos()
|
||||||
|
env.world.playSound(null, pos.x, pos.y, pos.z, SoundEvents.GLASS_BREAK, SoundSource.PLAYERS, 0.5f, 0.7f)
|
||||||
|
|
||||||
|
HexAdvancementTriggers.FAIL_GREAT_SPELL_TRIGGER.trigger(env.caster)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) = null
|
||||||
|
}
|
|
@ -14,7 +14,7 @@ class MishapUnescapedValue(
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.GRAY)
|
dyeColor(DyeColor.GRAY)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
// TODO
|
// TODO
|
||||||
/*
|
/*
|
||||||
val idx = stack.indexOfLast { it.getType() == DatumType.LIST }
|
val idx = stack.indexOfLast { it.getType() == DatumType.LIST }
|
||||||
|
|
|
@ -15,8 +15,8 @@ class MishapBoolDirectrixEmptyStack(
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.GRAY)
|
dyeColor(DyeColor.GRAY)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
ctx.world.destroyBlock(this.pos, true)
|
env.world.destroyBlock(this.pos, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context): Component =
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context): Component =
|
||||||
|
|
|
@ -16,8 +16,8 @@ class MishapBoolDirectrixNotBool(
|
||||||
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
|
||||||
dyeColor(DyeColor.GRAY)
|
dyeColor(DyeColor.GRAY)
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
ctx.world.destroyBlock(this.pos, true)
|
env.world.destroyBlock(this.pos, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context): Component =
|
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context): Component =
|
||||||
|
|
|
@ -23,8 +23,8 @@ class MishapNoSpellCircle : Mishap() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun execute(ctx: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
|
||||||
val caster = ctx.caster
|
val caster = env.caster
|
||||||
if (caster != null) {
|
if (caster != null) {
|
||||||
// FIXME: handle null caster case
|
// FIXME: handle null caster case
|
||||||
dropAll(caster, caster.inventory.items)
|
dropAll(caster, caster.inventory.items)
|
||||||
|
|
Loading…
Reference in a new issue