fully make greatness a tag
This commit is contained in:
parent
2f2ab69816
commit
05e4114b97
27 changed files with 109 additions and 167 deletions
|
@ -3,10 +3,6 @@ package at.petrak.hexcasting.api.casting
|
|||
import at.petrak.hexcasting.api.casting.eval.CastingContext
|
||||
import at.petrak.hexcasting.api.casting.eval.vm.SpellContinuation
|
||||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.utils.asTranslatedComponent
|
||||
import at.petrak.hexcasting.api.utils.lightPurple
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.phys.Vec3
|
||||
import java.text.DecimalFormat
|
||||
|
||||
|
@ -38,30 +34,6 @@ interface Action {
|
|||
ctx: CastingContext
|
||||
): OperationResult
|
||||
|
||||
/**
|
||||
* Do you need to be enlightened to use this operator? (i.e. is this operator a Great Pattern)
|
||||
*/
|
||||
val isGreat: Boolean get() = false
|
||||
|
||||
/**
|
||||
* Should this Great Pattern process and have side effects, even if its user isn't enlightened?
|
||||
*
|
||||
* The pattern itself may modify its effects based on whether the user is enlightened or not, regardless of what this value is.
|
||||
*/
|
||||
val alwaysProcessGreatSpell: Boolean get() = this is SpellAction
|
||||
|
||||
/**
|
||||
* Can this Great Pattern give you Blind Diversion?
|
||||
*/
|
||||
val causesBlindDiversion: Boolean get() = this is SpellAction
|
||||
|
||||
/**
|
||||
* The component for displaying this pattern's name. Override for dynamic patterns.
|
||||
*/
|
||||
fun getDisplayName(resLoc: ResourceLocation): Component {
|
||||
return "hexcasting.spell.${resLoc.toString()}".asTranslatedComponent.lightPurple
|
||||
}
|
||||
|
||||
companion object {
|
||||
// I see why vzakii did this: you can't raycast out to infinity!
|
||||
const val MAX_DISTANCE: Double = 32.0
|
||||
|
@ -81,19 +53,6 @@ interface Action {
|
|||
}
|
||||
|
||||
public val DOUBLE_FORMATTER = DecimalFormat("####.####")
|
||||
|
||||
@JvmStatic
|
||||
fun makeConstantOp(x: Double, key: ResourceLocation): Action = object : ConstMediaAction {
|
||||
override val argc: Int
|
||||
get() = 0
|
||||
|
||||
override fun execute(args: List<Iota>, ctx: CastingContext): List<Iota> =
|
||||
x.asActionResult
|
||||
|
||||
override fun getDisplayName(resLoc: ResourceLocation): Component {
|
||||
return "hexcasting.spell.$key".asTranslatedComponent(DOUBLE_FORMATTER.format(x)).lightPurple
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package at.petrak.hexcasting.api.casting
|
||||
|
||||
import at.petrak.hexcasting.api.casting.eval.CastingContext
|
||||
import at.petrak.hexcasting.api.casting.eval.vm.SpellContinuation
|
||||
import at.petrak.hexcasting.api.casting.eval.sideeffects.OperatorSideEffect
|
||||
import at.petrak.hexcasting.api.casting.eval.vm.SpellContinuation
|
||||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.casting.mishaps.MishapNotEnoughArgs
|
||||
|
||||
|
@ -36,15 +36,13 @@ interface SpellAction : Action {
|
|||
if (media > 0)
|
||||
sideEffects.add(OperatorSideEffect.ConsumeMedia(media))
|
||||
|
||||
// Don't have an effect if the caster isn't enlightened, even if processing other side effects
|
||||
if (!isGreat || ctx.isCasterEnlightened)
|
||||
sideEffects.add(
|
||||
OperatorSideEffect.AttemptSpell(
|
||||
spell,
|
||||
this.hasCastingSound(ctx),
|
||||
this.awardsCastingStat(ctx)
|
||||
)
|
||||
sideEffects.add(
|
||||
OperatorSideEffect.AttemptSpell(
|
||||
spell,
|
||||
this.hasCastingSound(ctx),
|
||||
this.awardsCastingStat(ctx)
|
||||
)
|
||||
)
|
||||
|
||||
for (spray in particles)
|
||||
sideEffects.add(OperatorSideEffect.Particles(spray))
|
||||
|
|
|
@ -3,6 +3,7 @@ package at.petrak.hexcasting.api.casting.eval
|
|||
import at.petrak.hexcasting.api.HexAPI
|
||||
import at.petrak.hexcasting.api.advancements.HexAdvancementTriggers
|
||||
import at.petrak.hexcasting.api.block.circle.BlockEntityAbstractImpetus
|
||||
import at.petrak.hexcasting.api.casting.Action
|
||||
import at.petrak.hexcasting.api.casting.ParticleSpray
|
||||
import at.petrak.hexcasting.api.casting.PatternShapeMatch
|
||||
import at.petrak.hexcasting.api.casting.PatternShapeMatch.*
|
||||
|
@ -29,6 +30,7 @@ import at.petrak.hexcasting.common.casting.PatternRegistryManifest
|
|||
import at.petrak.hexcasting.common.lib.hex.HexEvalSounds
|
||||
import at.petrak.hexcasting.common.lib.hex.HexIotaTypes
|
||||
import at.petrak.hexcasting.xplat.IXplatAbstractions
|
||||
import com.mojang.datafixers.util.Either
|
||||
import net.minecraft.nbt.CompoundTag
|
||||
import net.minecraft.nbt.Tag
|
||||
import net.minecraft.network.chat.Component
|
||||
|
@ -209,50 +211,46 @@ class CastingHarness private constructor(
|
|||
* When the server gets a packet from the client with a new pattern,
|
||||
* handle it functionally.
|
||||
*/
|
||||
fun updateWithPattern(newPat: HexPattern, world: ServerLevel, continuation: SpellContinuation): CastResult {
|
||||
private fun updateWithPattern(newPat: HexPattern, world: ServerLevel, continuation: SpellContinuation): CastResult {
|
||||
var castedName: Component? = null
|
||||
try {
|
||||
// Don't catch this one
|
||||
val lookup = PatternRegistryManifest.matchPattern(newPat, world, false)
|
||||
val actionNamePair = when (lookup) {
|
||||
is Normal -> {
|
||||
val action = IXplatAbstractions.INSTANCE.actionRegistry.get(lookup.key)
|
||||
val i18n = HexAPI.instance().getActionI18nKey(lookup.key)
|
||||
action!!.action to i18n.asTranslatedComponent.lightPurple
|
||||
val lookupResult: Either<Action, List<OperatorSideEffect>> = if (lookup is Normal || lookup is PerWorld) {
|
||||
val key = when (lookup) {
|
||||
is Normal -> lookup.key
|
||||
is PerWorld -> lookup.key
|
||||
else -> throw IllegalStateException()
|
||||
}
|
||||
|
||||
is PerWorld -> {
|
||||
// it will always be exact match here.
|
||||
// TODO add non-exact checking as a hint to the player?
|
||||
val action = IXplatAbstractions.INSTANCE.actionRegistry.get(lookup.key)
|
||||
val i18n = HexAPI.instance().getActionI18nKey(lookup.key)
|
||||
// what the hey let's make great spells golden
|
||||
action!!.action to i18n.asTranslatedComponent.gold
|
||||
val reqsEnlightenment = isOfTag(IXplatAbstractions.INSTANCE.actionRegistry, key, HexTags.Actions.REQUIRES_ENLIGHTENMENT)
|
||||
val canEnlighten = isOfTag(IXplatAbstractions.INSTANCE.actionRegistry, key, HexTags.Actions.CAN_START_ENLIGHTEN)
|
||||
|
||||
castedName = HexAPI.instance().getActionI18(key.location(), reqsEnlightenment)
|
||||
|
||||
if (!ctx.isCasterEnlightened && reqsEnlightenment) {
|
||||
Either.right(listOf(OperatorSideEffect.RequiredEnlightenment(canEnlighten)))
|
||||
} else {
|
||||
val regiEntry = IXplatAbstractions.INSTANCE.actionRegistry.get(key)!!
|
||||
Either.left(regiEntry.action)
|
||||
}
|
||||
|
||||
is Special -> {
|
||||
lookup.handler.act() to lookup.handler.name
|
||||
}
|
||||
|
||||
is PatternShapeMatch.Nothing -> throw MishapInvalidPattern()
|
||||
|
||||
else -> throw IllegalStateException()
|
||||
} else if (lookup is Special) {
|
||||
castedName = lookup.handler.name
|
||||
Either.left(lookup.handler.act())
|
||||
} else if (lookup is PatternShapeMatch.Nothing) {
|
||||
throw MishapInvalidPattern()
|
||||
} else {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
castedName = actionNamePair.second
|
||||
val action = actionNamePair.first
|
||||
|
||||
// TODO: the config denylist should be handled per VM type.
|
||||
// I just removed it for now, should re-add it...
|
||||
|
||||
// TODO need to check for enlightenment on VM
|
||||
val requiresAndFailedEnlightenment = action.isGreat && !ctx.isCasterEnlightened
|
||||
|
||||
val sideEffects = mutableListOf<OperatorSideEffect>()
|
||||
var stack2: List<Iota>? = null
|
||||
var cont2 = continuation
|
||||
var ravenmind2: Iota? = null
|
||||
|
||||
if (!requiresAndFailedEnlightenment || action.alwaysProcessGreatSpell) {
|
||||
if (lookupResult.left().isPresent) {
|
||||
val action = lookupResult.left().get()
|
||||
displayPatternDebug(false, 0, castedName)
|
||||
val result = action.operate(
|
||||
continuation,
|
||||
|
@ -265,13 +263,13 @@ class CastingHarness private constructor(
|
|||
ravenmind2 = result.newRavenmind
|
||||
// TODO parens also break prescience
|
||||
sideEffects.addAll(result.sideEffects)
|
||||
}
|
||||
|
||||
if (requiresAndFailedEnlightenment) {
|
||||
sideEffects.add(OperatorSideEffect.RequiredEnlightenment(action.causesBlindDiversion))
|
||||
} else {
|
||||
val problems = lookupResult.right().get()
|
||||
sideEffects.addAll(problems)
|
||||
}
|
||||
|
||||
// Stick a poofy particle effect at the caster position
|
||||
// TODO again this should be on the VM lalala
|
||||
if (this.ctx.spellCircle == null)
|
||||
sideEffects.add(
|
||||
OperatorSideEffect.Particles(
|
||||
|
|
|
@ -57,6 +57,11 @@ public class HexTags {
|
|||
*/
|
||||
public static final TagKey<ActionRegistryEntry> PER_WORLD_PATTERN = create("per_world_pattern");
|
||||
|
||||
/**
|
||||
* Actions that can cause Blind Diversion
|
||||
*/
|
||||
public static final TagKey<ActionRegistryEntry> CAN_START_ENLIGHTEN = create("can_start_enlighten");
|
||||
|
||||
public static TagKey<ActionRegistryEntry> create(String name) {
|
||||
return TagKey.create(IXplatAbstractions.INSTANCE.getActionRegistry().key(), modLoc(name));
|
||||
}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package at.petrak.hexcasting.common.casting.operators.akashic
|
||||
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import at.petrak.hexcasting.api.casting.*
|
||||
import at.petrak.hexcasting.api.casting.eval.CastingContext
|
||||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.casting.math.HexPattern
|
||||
import at.petrak.hexcasting.api.casting.mishaps.MishapNoAkashicRecord
|
||||
import at.petrak.hexcasting.api.casting.mishaps.MishapOthersName
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import at.petrak.hexcasting.common.blocks.akashic.BlockAkashicRecord
|
||||
import at.petrak.hexcasting.common.lib.HexSounds
|
||||
import net.minecraft.core.BlockPos
|
||||
|
@ -15,10 +15,6 @@ import net.minecraft.sounds.SoundSource
|
|||
object OpAkashicWrite : SpellAction {
|
||||
override val argc = 3
|
||||
|
||||
override val isGreat = true
|
||||
override val alwaysProcessGreatSpell = false
|
||||
override val causesBlindDiversion = false
|
||||
|
||||
override fun execute(
|
||||
args: List<Iota>,
|
||||
ctx: CastingContext
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
package at.petrak.hexcasting.common.casting.operators.math
|
||||
|
||||
import at.petrak.hexcasting.api.casting.Action
|
||||
import at.petrak.hexcasting.api.casting.ConstMediaAction
|
||||
import at.petrak.hexcasting.api.casting.asActionResult
|
||||
import at.petrak.hexcasting.api.casting.eval.CastingContext
|
||||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.utils.asTranslatedComponent
|
||||
import at.petrak.hexcasting.api.utils.lightPurple
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
|
||||
class OpNumberLiteral(val x: Double) : ConstMediaAction {
|
||||
override val argc: Int = 0
|
||||
|
||||
override fun execute(args: List<Iota>, ctx: CastingContext): List<Iota> {
|
||||
return this.x.asActionResult
|
||||
}
|
||||
|
||||
override fun getDisplayName(resLoc: ResourceLocation): Component {
|
||||
return "hexcasting.spell.${resLoc.toString()}".asTranslatedComponent(Action.DOUBLE_FORMATTER.format(x)).lightPurple
|
||||
}
|
||||
}
|
|
@ -16,7 +16,7 @@ import net.minecraft.world.level.block.state.BlockState
|
|||
import net.minecraft.world.level.material.Fluid
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class OpCreateFluid(override val isGreat: Boolean, val cost: Int, val bucket: Item, val cauldron: BlockState, val fluid: Fluid) : SpellAction {
|
||||
class OpCreateFluid(val cost: Int, val bucket: Item, val cauldron: BlockState, val fluid: Fluid) : SpellAction {
|
||||
override val argc = 1
|
||||
override fun execute(
|
||||
args: List<Iota>,
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package at.petrak.hexcasting.common.casting.operators.spells
|
||||
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import at.petrak.hexcasting.api.mod.HexTags
|
||||
import at.petrak.hexcasting.api.casting.ParticleSpray
|
||||
import at.petrak.hexcasting.api.casting.RenderedSpell
|
||||
import at.petrak.hexcasting.api.casting.SpellAction
|
||||
|
@ -10,6 +8,8 @@ import at.petrak.hexcasting.api.casting.getItemEntity
|
|||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.casting.mishaps.MishapBadItem
|
||||
import at.petrak.hexcasting.api.casting.mishaps.MishapBadOffhandItem
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import at.petrak.hexcasting.api.mod.HexTags
|
||||
import at.petrak.hexcasting.api.utils.extractMedia
|
||||
import at.petrak.hexcasting.api.utils.isMediaItem
|
||||
import at.petrak.hexcasting.common.items.magic.ItemMediaHolder
|
||||
|
@ -21,8 +21,6 @@ import net.minecraft.world.item.ItemStack
|
|||
object OpMakeBattery : SpellAction {
|
||||
override val argc = 1
|
||||
|
||||
override val isGreat = true
|
||||
|
||||
override fun execute(
|
||||
args: List<Iota>,
|
||||
ctx: CastingContext
|
||||
|
|
|
@ -12,7 +12,6 @@ class OpPotionEffect(
|
|||
val baseCost: Int,
|
||||
val allowPotency: Boolean,
|
||||
val potencyCubic: Boolean,
|
||||
override val isGreat: Boolean,
|
||||
) : SpellAction {
|
||||
override val argc: Int
|
||||
get() = if (this.allowPotency) 3 else 2
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package at.petrak.hexcasting.common.casting.operators.spells.great
|
||||
|
||||
import at.petrak.hexcasting.api.mod.HexConfig
|
||||
import at.petrak.hexcasting.api.casting.*
|
||||
import at.petrak.hexcasting.api.casting.eval.CastingContext
|
||||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.casting.mishaps.MishapAlreadyBrainswept
|
||||
import at.petrak.hexcasting.api.casting.mishaps.MishapBadBrainsweep
|
||||
import at.petrak.hexcasting.api.mod.HexConfig
|
||||
import at.petrak.hexcasting.common.recipe.BrainsweepRecipe
|
||||
import at.petrak.hexcasting.common.recipe.HexRecipeStuffRegistry
|
||||
import at.petrak.hexcasting.ktxt.tellWitnessesThatIWasMurdered
|
||||
|
@ -22,8 +22,6 @@ import net.minecraft.world.phys.Vec3
|
|||
object OpBrainsweep : SpellAction {
|
||||
override val argc = 2
|
||||
|
||||
override val isGreat = true
|
||||
|
||||
// this way you can hear the villager dying more : )
|
||||
override fun hasCastingSound(ctx: CastingContext) = false
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package at.petrak.hexcasting.common.casting.operators.spells.great
|
||||
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import at.petrak.hexcasting.api.player.FlightAbility
|
||||
import at.petrak.hexcasting.api.casting.*
|
||||
import at.petrak.hexcasting.api.casting.eval.CastingContext
|
||||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import at.petrak.hexcasting.api.player.FlightAbility
|
||||
import at.petrak.hexcasting.xplat.IXplatAbstractions
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
|
@ -14,7 +14,6 @@ import kotlin.math.roundToInt
|
|||
|
||||
object OpFlight : SpellAction {
|
||||
override val argc = 3
|
||||
override val isGreat = true
|
||||
override fun execute(
|
||||
args: List<Iota>,
|
||||
ctx: CastingContext
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package at.petrak.hexcasting.common.casting.operators.spells.great
|
||||
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import at.petrak.hexcasting.api.casting.ParticleSpray
|
||||
import at.petrak.hexcasting.api.casting.RenderedSpell
|
||||
import at.petrak.hexcasting.api.casting.SpellAction
|
||||
import at.petrak.hexcasting.api.casting.eval.CastingContext
|
||||
import at.petrak.hexcasting.api.casting.getVec3
|
||||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.world.entity.EntityType
|
||||
import net.minecraft.world.entity.LightningBolt
|
||||
|
@ -14,7 +14,6 @@ import net.minecraft.world.phys.Vec3
|
|||
|
||||
object OpLightning : SpellAction {
|
||||
override val argc = 1
|
||||
override val isGreat = true
|
||||
|
||||
override fun execute(
|
||||
args: List<Iota>,
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
package at.petrak.hexcasting.common.casting.operators.spells.great
|
||||
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import at.petrak.hexcasting.api.mod.HexConfig
|
||||
import at.petrak.hexcasting.api.mod.HexTags
|
||||
import at.petrak.hexcasting.api.casting.*
|
||||
import at.petrak.hexcasting.api.casting.eval.CastingContext
|
||||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.casting.mishaps.MishapImmuneEntity
|
||||
import at.petrak.hexcasting.api.casting.mishaps.MishapLocationTooFarAway
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import at.petrak.hexcasting.api.mod.HexConfig
|
||||
import at.petrak.hexcasting.api.mod.HexTags
|
||||
import at.petrak.hexcasting.common.network.MsgBlinkAck
|
||||
import at.petrak.hexcasting.xplat.IXplatAbstractions
|
||||
import net.minecraft.core.BlockPos
|
||||
|
@ -23,7 +23,6 @@ import net.minecraft.world.phys.Vec3
|
|||
// WRT its look vector
|
||||
object OpTeleport : SpellAction {
|
||||
override val argc = 2
|
||||
override val isGreat = true
|
||||
override fun execute(
|
||||
args: List<Iota>,
|
||||
ctx: CastingContext
|
||||
|
|
|
@ -1,15 +1,14 @@
|
|||
package at.petrak.hexcasting.common.casting.operators.spells.great
|
||||
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import at.petrak.hexcasting.api.casting.ParticleSpray
|
||||
import at.petrak.hexcasting.api.casting.RenderedSpell
|
||||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.casting.SpellAction
|
||||
import at.petrak.hexcasting.api.casting.eval.CastingContext
|
||||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
|
||||
class OpWeather(val rain: Boolean) : SpellAction {
|
||||
override val argc = 0
|
||||
override val isGreat = true
|
||||
|
||||
override fun execute(
|
||||
args: List<Iota>,
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
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.SpellAction
|
||||
import at.petrak.hexcasting.api.casting.eval.CastingContext
|
||||
import at.petrak.hexcasting.api.casting.getVec3
|
||||
import at.petrak.hexcasting.api.casting.iota.Iota
|
||||
import at.petrak.hexcasting.api.misc.MediaConstants
|
||||
import at.petrak.hexcasting.api.player.Sentinel
|
||||
import at.petrak.hexcasting.xplat.IXplatAbstractions
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class OpCreateSentinel(val extendsRange: Boolean) : SpellAction {
|
||||
override val argc = 1
|
||||
override val isGreat = this.extendsRange
|
||||
|
||||
override fun execute(
|
||||
args: List<Iota>,
|
||||
|
|
|
@ -241,7 +241,7 @@ public class HexActions {
|
|||
public static final ActionRegistryEntry COLORIZE = make("colorize",
|
||||
new ActionRegistryEntry(HexPattern.fromAngles("awddwqawqwawq", HexDir.EAST), OpColorize.INSTANCE));
|
||||
public static final ActionRegistryEntry CREATE_WATER = make("create_water",
|
||||
new ActionRegistryEntry(HexPattern.fromAngles("aqawqadaq", HexDir.SOUTH_EAST), new OpCreateFluid(false,
|
||||
new ActionRegistryEntry(HexPattern.fromAngles("aqawqadaq", HexDir.SOUTH_EAST), new OpCreateFluid(
|
||||
MediaConstants.DUST_UNIT,
|
||||
Items.WATER_BUCKET,
|
||||
Blocks.WATER_CAULDRON.defaultBlockState()
|
||||
|
@ -287,44 +287,44 @@ public class HexActions {
|
|||
|
||||
public static final ActionRegistryEntry POTION$WEAKNESS = make("potion/weakness", new ActionRegistryEntry(
|
||||
HexPattern.fromAngles("qqqqqaqwawaw", HexDir.NORTH_WEST), new OpPotionEffect(MobEffects.WEAKNESS,
|
||||
MediaConstants.DUST_UNIT / 10, true, false, false)
|
||||
MediaConstants.DUST_UNIT / 10, true, false)
|
||||
));
|
||||
public static final ActionRegistryEntry POTION$LEVITATION = make("potion/levitation", new ActionRegistryEntry(
|
||||
HexPattern.fromAngles("qqqqqawwawawd", HexDir.WEST), new OpPotionEffect(MobEffects.LEVITATION,
|
||||
MediaConstants.DUST_UNIT / 5, false, false, false)
|
||||
MediaConstants.DUST_UNIT / 5, false, false)
|
||||
));
|
||||
public static final ActionRegistryEntry POTION$WITHER = make("potion/wither", new ActionRegistryEntry(
|
||||
HexPattern.fromAngles("qqqqqaewawawe", HexDir.SOUTH_WEST), new OpPotionEffect(MobEffects.WITHER,
|
||||
MediaConstants.DUST_UNIT, true, false, false)
|
||||
MediaConstants.DUST_UNIT, true, false)
|
||||
));
|
||||
public static final ActionRegistryEntry POTION$POISON = make("potion/poison", new ActionRegistryEntry(
|
||||
HexPattern.fromAngles("qqqqqadwawaww", HexDir.SOUTH_EAST), new OpPotionEffect(MobEffects.POISON,
|
||||
MediaConstants.DUST_UNIT / 3, true, false, false)
|
||||
MediaConstants.DUST_UNIT / 3, true, false)
|
||||
));
|
||||
public static final ActionRegistryEntry POTION$SLOWNESS = make("potion/slowness", new ActionRegistryEntry(
|
||||
HexPattern.fromAngles("qqqqqadwawaw", HexDir.SOUTH_EAST), new OpPotionEffect(MobEffects.MOVEMENT_SLOWDOWN,
|
||||
MediaConstants.DUST_UNIT / 3, true, false, false)
|
||||
MediaConstants.DUST_UNIT / 3, true, false)
|
||||
));
|
||||
|
||||
public static final ActionRegistryEntry POTION$REGENERATION = make("potion/regeneration", new ActionRegistryEntry(
|
||||
HexPattern.fromAngles("qqqqaawawaedd", HexDir.NORTH_WEST), new OpPotionEffect(MobEffects.REGENERATION,
|
||||
MediaConstants.DUST_UNIT, true, true, true)
|
||||
MediaConstants.DUST_UNIT, true, true)
|
||||
));
|
||||
public static final ActionRegistryEntry POTION$NIGHT_VISION = make("potion/night_vision", new ActionRegistryEntry(
|
||||
HexPattern.fromAngles("qqqaawawaeqdd", HexDir.WEST), new OpPotionEffect(MobEffects.NIGHT_VISION,
|
||||
MediaConstants.DUST_UNIT / 5, false, true, true)
|
||||
MediaConstants.DUST_UNIT / 5, false, true)
|
||||
));
|
||||
public static final ActionRegistryEntry POTION$ABSORPTION = make("potion/absorption", new ActionRegistryEntry(
|
||||
HexPattern.fromAngles("qqaawawaeqqdd", HexDir.SOUTH_WEST), new OpPotionEffect(MobEffects.ABSORPTION,
|
||||
MediaConstants.DUST_UNIT, true, true, true)
|
||||
MediaConstants.DUST_UNIT, true, true)
|
||||
));
|
||||
public static final ActionRegistryEntry POTION$HASTE = make("potion/haste", new ActionRegistryEntry(
|
||||
HexPattern.fromAngles("qaawawaeqqqdd", HexDir.SOUTH_EAST), new OpPotionEffect(MobEffects.DIG_SPEED,
|
||||
MediaConstants.DUST_UNIT / 3, true, true, true)
|
||||
MediaConstants.DUST_UNIT / 3, true, true)
|
||||
));
|
||||
public static final ActionRegistryEntry POTION$STRENGTH = make("potion/strength", new ActionRegistryEntry(
|
||||
HexPattern.fromAngles("aawawaeqqqqdd", HexDir.EAST), new OpPotionEffect(MobEffects.DAMAGE_BOOST,
|
||||
MediaConstants.DUST_UNIT / 3, true, true, true)
|
||||
MediaConstants.DUST_UNIT / 3, true, true)
|
||||
));
|
||||
|
||||
public static final ActionRegistryEntry SENTINEL$CREATE = make("sentinel/create",
|
||||
|
@ -341,7 +341,7 @@ public class HexActions {
|
|||
public static final ActionRegistryEntry FLIGHT = make("flight",
|
||||
new ActionRegistryEntry(HexPattern.fromAngles("eawwaeawawaa", HexDir.NORTH_WEST), OpFlight.INSTANCE));
|
||||
public static final ActionRegistryEntry CREATE_LAVA = make("create_lava",
|
||||
new ActionRegistryEntry(HexPattern.fromAngles("eaqawqadaqd", HexDir.EAST), new OpCreateFluid(true,
|
||||
new ActionRegistryEntry(HexPattern.fromAngles("eaqawqadaqd", HexDir.EAST), new OpCreateFluid(
|
||||
MediaConstants.CRYSTAL_UNIT,
|
||||
Items.LAVA_BUCKET,
|
||||
Blocks.LAVA_CAULDRON.defaultBlockState(),
|
||||
|
|
|
@ -24,15 +24,9 @@ public class HexActionTagProvider extends TagsProvider<ActionRegistryEntry> {
|
|||
var loc = modLoc(normalGreat);
|
||||
var key = ResourceKey.create(IXplatAbstractions.INSTANCE.getActionRegistry().key(), loc);
|
||||
tag(HexTags.Actions.REQUIRES_ENLIGHTENMENT).add(key);
|
||||
tag(HexTags.Actions.CAN_START_ENLIGHTEN).add(key);
|
||||
tag(HexTags.Actions.PER_WORLD_PATTERN).add(key);
|
||||
}
|
||||
|
||||
for (var onlyEnlighten : new String[]{
|
||||
"akashic/write",
|
||||
}) {
|
||||
var loc = modLoc(onlyEnlighten);
|
||||
var key = ResourceKey.create(IXplatAbstractions.INSTANCE.getActionRegistry().key(), loc);
|
||||
tag(HexTags.Actions.REQUIRES_ENLIGHTENMENT).add(key);
|
||||
}
|
||||
// deciding that akashic write can be just a normal spell (as a treat)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// 1.19.2 2023-01-21T14:45:49.102988105 Tags for minecraft:item
|
||||
// 1.19.2 2023-01-21T15:43:08.87507582 Tags for minecraft:item
|
||||
5928bad07d3872bb60f29ef4f3c885c8e1967c20 data/hexcasting/tags/items/phial_base.json
|
||||
fdb48f194d7937ab6b423fa4b90a4d438bf6dd90 data/minecraft/tags/items/wooden_doors.json
|
||||
e5df19a1dc6eadf14cd9b0f0fe45a74330b745e9 data/hexcasting/tags/items/edified_planks.json
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// 1.19.2 2023-01-21T14:45:49.133731101 LootTables
|
||||
// 1.19.2 2023-01-21T15:43:08.837666395 LootTables
|
||||
01a50f557196c705c275722015cf893e0abe6425 data/hexcasting/loot_tables/inject/scroll_loot_many.json
|
||||
dec1d3592e82f99d9e059d9c771530f103b2bda5 data/hexcasting/loot_tables/blocks/empty_directrix.json
|
||||
2c42fc5d8c74c98ad15b8bd50f56541fccbef750 data/hexcasting/loot_tables/blocks/edified_tile.json
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// 1.19.2 2023-01-21T14:45:49.143179079 Tags for minecraft:block
|
||||
// 1.19.2 2023-01-21T15:43:08.873838666 Tags for minecraft:block
|
||||
20183cd61968ff6548df2dde1100b6378d68d64b data/minecraft/tags/blocks/wooden_buttons.json
|
||||
357eddf3cee6f16725bed0701d57b2ca3097d74d data/minecraft/tags/blocks/mineable/shovel.json
|
||||
5216ba5c57db29b8dee9aebc63a2e3b17c97dc17 data/minecraft/tags/blocks/wooden_trapdoors.json
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// 1.19.2 2023-01-21T14:45:49.142544446 Tags for hexcasting:action
|
||||
// 1.19.2 2023-01-21T15:43:08.846211098 Tags for hexcasting:action
|
||||
e5afc567ea17f035e4eb1d1d48825100b7f6ad68 data/hexcasting/tags/action/per_world_pattern.json
|
||||
e0464372b1bfe00bb9e9fdaa9889f88c31080cc4 data/hexcasting/tags/action/requires_enlightenment.json
|
||||
e5afc567ea17f035e4eb1d1d48825100b7f6ad68 data/hexcasting/tags/action/requires_enlightenment.json
|
||||
e5afc567ea17f035e4eb1d1d48825100b7f6ad68 data/hexcasting/tags/action/can_start_enlighten.json
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// 1.19.2 2023-01-21T14:45:49.119742079 Recipes
|
||||
// 1.19.2 2023-01-21T15:43:08.846955947 Recipes
|
||||
858dada9c41974f5aa80c66423bf371c9e176a53 data/hexcasting/recipes/pride_colorizer_demigirl.json
|
||||
bb0f91c534c888d1cff8793b49986dce236c7b2d data/hexcasting/advancements/recipes/hexcasting.creative_tab/dye_colorizer_white.json
|
||||
9f75d3e93ecbbbf3ed9a92b2943397e09dcae1a9 data/hexcasting/recipes/dye_colorizer_light_blue.json
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"hexcasting:lightning",
|
||||
"hexcasting:flight",
|
||||
"hexcasting:create_lava",
|
||||
"hexcasting:teleport",
|
||||
"hexcasting:sentinel/create/great",
|
||||
"hexcasting:dispel_rain",
|
||||
"hexcasting:summon_rain",
|
||||
"hexcasting:brainsweep"
|
||||
]
|
||||
}
|
|
@ -8,7 +8,6 @@
|
|||
"hexcasting:sentinel/create/great",
|
||||
"hexcasting:dispel_rain",
|
||||
"hexcasting:summon_rain",
|
||||
"hexcasting:brainsweep",
|
||||
"hexcasting:akashic/write"
|
||||
"hexcasting:brainsweep"
|
||||
]
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
// 1.19.2 2023-01-21T14:47:29.414121689 Tags for hexcasting:action
|
||||
// 1.19.2 2023-01-21T15:44:11.307837433 Tags for hexcasting:action
|
||||
7684713a5311ad151b5591d22757988c8462d647 data/hexcasting/tags/hexcasting/action/can_start_enlighten.json
|
||||
7684713a5311ad151b5591d22757988c8462d647 data/hexcasting/tags/hexcasting/action/per_world_pattern.json
|
||||
9eb0b98603394a44b9202d1ff6778a539edfdfa4 data/hexcasting/tags/hexcasting/action/requires_enlightenment.json
|
||||
7684713a5311ad151b5591d22757988c8462d647 data/hexcasting/tags/hexcasting/action/requires_enlightenment.json
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"values": [
|
||||
"hexcasting:lightning",
|
||||
"hexcasting:flight",
|
||||
"hexcasting:create_lava",
|
||||
"hexcasting:teleport",
|
||||
"hexcasting:sentinel/create/great",
|
||||
"hexcasting:dispel_rain",
|
||||
"hexcasting:summon_rain",
|
||||
"hexcasting:brainsweep"
|
||||
]
|
||||
}
|
|
@ -7,7 +7,6 @@
|
|||
"hexcasting:sentinel/create/great",
|
||||
"hexcasting:dispel_rain",
|
||||
"hexcasting:summon_rain",
|
||||
"hexcasting:brainsweep",
|
||||
"hexcasting:akashic/write"
|
||||
"hexcasting:brainsweep"
|
||||
]
|
||||
}
|
Loading…
Reference in a new issue