add logical operators and make scout's work better

This commit is contained in:
gamma-delta 2022-03-10 12:38:44 -06:00
parent 033d32a34f
commit 37ccd77f46
17 changed files with 702 additions and 438 deletions

View file

@ -10,6 +10,7 @@ import at.petrak.hexcasting.common.casting.operators.eval.OpEvalDelay;
import at.petrak.hexcasting.common.casting.operators.eval.OpForEach;
import at.petrak.hexcasting.common.casting.operators.lists.*;
import at.petrak.hexcasting.common.casting.operators.math.*;
import at.petrak.hexcasting.common.casting.operators.math.logic.*;
import at.petrak.hexcasting.common.casting.operators.selectors.OpGetCaster;
import at.petrak.hexcasting.common.casting.operators.selectors.OpGetEntitiesBy;
import at.petrak.hexcasting.common.casting.operators.selectors.OpGetEntityAt;
@ -85,6 +86,29 @@ public class RegisterPatterns {
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qeeeee", HexDir.EAST), prefix("deconstruct_vec"),
OpDeconstructVec.INSTANCE);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("wdw", HexDir.NORTH_EAST), prefix("and"),
OpAnd.INSTANCE);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("waw", HexDir.SOUTH_EAST), prefix("or"),
OpOr.INSTANCE);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("dwa", HexDir.NORTH_WEST), prefix("xor"),
OpXor.INSTANCE);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("e", HexDir.SOUTH_EAST), prefix("greater"),
new OpCompare((a, b) -> a > b));
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("q", HexDir.SOUTH_WEST), prefix("less"),
new OpCompare((a, b) -> a < b));
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("ea", HexDir.SOUTH_EAST), prefix("greater_eq"),
new OpCompare((a, b) -> a >= b));
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qd", HexDir.SOUTH_WEST), prefix("less_eq"),
new OpCompare((a, b) -> a <= b));
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("ad", HexDir.EAST), prefix("equals"),
new OpCompare((a, b) -> Math.abs(a - b) < 0.0001));
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("da", HexDir.EAST), prefix("not_equals"),
new OpCompare((a, b) -> Math.abs(a - b) >= 0.0001));
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("dw", HexDir.NORTH_WEST), prefix("not"),
OpNot.INSTANCE);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("aw", HexDir.NORTH_EAST), prefix("identity"),
OpIdentityKindOf.INSTANCE);
// == Spells ==
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("de", HexDir.NORTH_EAST), prefix("print"),

View file

@ -24,7 +24,7 @@ object OpEntityRaycast : ConstManaOperator {
endp,
AABB(origin, endp),
{ true },
Operator.MAX_DISTANCE
1_000_000.0
)
return Operator.spellListOf(
entityHitResult?.entity ?: Widget.NULL

View file

@ -0,0 +1,19 @@
package at.petrak.hexcasting.common.casting.operators.math.logic
import at.petrak.hexcasting.api.ConstManaOperator
import at.petrak.hexcasting.api.SpellDatum
import at.petrak.hexcasting.common.casting.CastingContext
import at.petrak.hexcasting.common.casting.Widget
object OpAnd : ConstManaOperator {
override val argc = 2
override fun execute(args: List<SpellDatum<*>>, ctx: CastingContext): List<SpellDatum<*>> {
return listOf(
if (args[0].payload == Widget.NULL)
SpellDatum.make(Widget.NULL)
else
args[1]
)
}
}

View file

@ -0,0 +1,20 @@
package at.petrak.hexcasting.common.casting.operators.math.logic
import at.petrak.hexcasting.api.ConstManaOperator
import at.petrak.hexcasting.api.Operator.Companion.getChecked
import at.petrak.hexcasting.api.Operator.Companion.spellListOf
import at.petrak.hexcasting.api.SpellDatum
import at.petrak.hexcasting.common.casting.CastingContext
import java.util.function.BiPredicate
class OpCompare(val cmp: BiPredicate<Double, Double>) : ConstManaOperator {
override val argc = 2
override fun execute(args: List<SpellDatum<*>>, ctx: CastingContext): List<SpellDatum<*>> {
val lhs = args.getChecked<Double>(0)
val rhs = args.getChecked<Double>(1)
return spellListOf(
if (cmp.test(lhs, rhs)) 1.0 else 0.0
)
}
}

View file

@ -0,0 +1,21 @@
package at.petrak.hexcasting.common.casting.operators.math.logic
import at.petrak.hexcasting.api.ConstManaOperator
import at.petrak.hexcasting.api.Operator.Companion.spellListOf
import at.petrak.hexcasting.api.SpellDatum
import at.petrak.hexcasting.common.casting.CastingContext
import at.petrak.hexcasting.common.casting.Widget
object OpIdentityKindOf : ConstManaOperator {
override val argc = 1
override fun execute(args: List<SpellDatum<*>>, ctx: CastingContext): List<SpellDatum<*>> {
return spellListOf(
when (args[0].payload) {
Widget.NULL -> 0.0
0.0 -> Widget.NULL
else -> args[0].payload
}
)
}
}

View file

@ -0,0 +1,16 @@
package at.petrak.hexcasting.common.casting.operators.math.logic
import at.petrak.hexcasting.api.ConstManaOperator
import at.petrak.hexcasting.api.Operator.Companion.spellListOf
import at.petrak.hexcasting.api.SpellDatum
import at.petrak.hexcasting.common.casting.CastingContext
import at.petrak.hexcasting.common.casting.Widget
object OpNot : ConstManaOperator {
override val argc = 1
override fun execute(args: List<SpellDatum<*>>, ctx: CastingContext): List<SpellDatum<*>> {
val falsy = args[0].payload == Widget.NULL || args[0].payload == 0.0
return spellListOf(if (falsy) 1.0 else 0.0)
}
}

View file

@ -0,0 +1,19 @@
package at.petrak.hexcasting.common.casting.operators.math.logic
import at.petrak.hexcasting.api.ConstManaOperator
import at.petrak.hexcasting.api.SpellDatum
import at.petrak.hexcasting.common.casting.CastingContext
import at.petrak.hexcasting.common.casting.Widget
object OpOr : ConstManaOperator {
override val argc = 2
override fun execute(args: List<SpellDatum<*>>, ctx: CastingContext): List<SpellDatum<*>> {
return listOf(
if (args[0].payload == Widget.NULL)
args[1]
else
args[0]
)
}
}

View file

@ -0,0 +1,21 @@
package at.petrak.hexcasting.common.casting.operators.math.logic
import at.petrak.hexcasting.api.ConstManaOperator
import at.petrak.hexcasting.api.SpellDatum
import at.petrak.hexcasting.common.casting.CastingContext
import at.petrak.hexcasting.common.casting.Widget
object OpXor : ConstManaOperator {
override val argc = 2
override fun execute(args: List<SpellDatum<*>>, ctx: CastingContext): List<SpellDatum<*>> {
return listOf(
if (args[0].payload != Widget.NULL && args[1].payload == Widget.NULL)
args[0]
else if (args[0].payload == Widget.NULL && args[1].payload != Widget.NULL)
args[1]
else
SpellDatum.make(Widget.NULL)
)
}
}

View file

@ -91,8 +91,8 @@
"hexcasting.message.cant_great_spell": "The spell failed, somehow... am I not skilled enough?",
"hexcasting.spell.hexcasting:get_caster": "Mind's Reflection",
"hexcasting.spell.hexcasting:get_entity_pos": "Compass' Distillation",
"hexcasting.spell.hexcasting:get_entity_look": "Alidade's Distillation",
"hexcasting.spell.hexcasting:get_entity_pos": "Compass' Purification",
"hexcasting.spell.hexcasting:get_entity_look": "Alidade's Purification",
"hexcasting.spell.hexcasting:raycast": "Archer's Distillation",
"hexcasting.spell.hexcasting:raycast/axis": "Architect's Distillation",
"hexcasting.spell.hexcasting:raycast/entity": "Scout's Distillation",
@ -131,10 +131,21 @@
"hexcasting.spell.hexcasting:sub": "Subtractive Distillation",
"hexcasting.spell.hexcasting:mul_dot": "Multiplicative Dstln.",
"hexcasting.spell.hexcasting:div_cross": "Division Dstln.",
"hexcasting.spell.hexcasting:abs_len": "Length Dstln.",
"hexcasting.spell.hexcasting:abs_len": "Length Purification",
"hexcasting.spell.hexcasting:pow_proj": "Power Distillation",
"hexcasting.spell.hexcasting:construct_vec": "Vector Exaltation",
"hexcasting.spell.hexcasting:deconstruct_vec": "Vector Disintegration",
"hexcasting.spell.hexcasting:and": "Conjunction Distillation",
"hexcasting.spell.hexcasting:or": "Disjunction Distillation",
"hexcasting.spell.hexcasting:xor": "Exclusion Distillation",
"hexcasting.spell.hexcasting:greater": "Maximus Distillation",
"hexcasting.spell.hexcasting:less": "Minimus Distillation",
"hexcasting.spell.hexcasting:greater_eq": "Maximus Distillation II",
"hexcasting.spell.hexcasting:less_eq": "Minimus Distillation II",
"hexcasting.spell.hexcasting:equals": "Equality Distillation",
"hexcasting.spell.hexcasting:not_equals": "Inequality Distillation",
"hexcasting.spell.hexcasting:not": "Negation Purification",
"hexcasting.spell.hexcasting:identity": "Identity Purification",
"hexcasting.spell.hexcasting:print": "Reveal",
"hexcasting.spell.hexcasting:explode": "Explosion",
"hexcasting.spell.hexcasting:explode/fire": "Fireball",
@ -474,6 +485,19 @@
"hexcasting.page.math14": "Combine three numbers at the top of the stack into a vector's X, Y, and Z components (top to bottom).",
"hexcasting.page.math15": "Split a vector into its X, Y, and Z components (top to bottom).",
"hexcasting.entry.logic": "Logical Operators",
"hexcasting.page.logic1": "If the first argument is greater than the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic2": "If the first argument is less than the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic3": "If the first argument is greater than or equal to the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic4": "If the first argument is less than or equal to the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic5": "If the first argument equals the second (within a small tolerance), return 1. Otherwise, return 0.",
"hexcasting.page.logic6": "If the first argument does not equal the second (outside a small tolerance), return 1. Otherwise, return 0.",
"hexcasting.page.logic7": "If the argument is 0 or Null, return 1. Otherwise, return 0.",
"hexcasting.page.logic8": "If the argument is 0, return Null. If it's Null, return 0. Otherwise, return the argument",
"hexcasting.page.logic9": "If the first argument is not Null, return it. Otherwise, return the second argument.",
"hexcasting.page.logic10": "If the first argument is Null, return Null. Otherwise, return the second argument.",
"hexcasting.page.logic11": "If either argument (but not both) is Null, return the non-Null argument. Otherwise, return Null.",
"hexcasting.entry.meta": "Meta-evaluation",
"hexcasting.page.meta1": "Remove the top iota from the stack and save it into the $(item)Focus/$ or $(item)Spellbook/$ in my other hand.",
"hexcasting.page.meta2": "Copy the iota stored in the $(item)Focus/$ or $(item)Spellbook/$ in my other hand, and add it to the stack.",

View file

@ -1,146 +1,146 @@
{
"name": "hexcasting.entry.entities",
"category": "hexcasting:patterns",
"icon": "minecraft:pig_spawn_egg",
"sortnum": 4,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity",
"anchor": "hexcasting:get_entity",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities1"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity/animal",
"anchor": "hexcasting:get_entity/animal",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities2"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity/monster",
"anchor": "hexcasting:get_entity/monster",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities3"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity/item",
"anchor": "hexcasting:get_entity/item",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities4"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity/player",
"anchor": "hexcasting:get_entity/player",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities5"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity/living",
"anchor": "hexcasting:get_entity/living",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities6"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/animal",
"anchor": "hexcasting:zone_entity/animal",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities7"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/not_animal",
"anchor": "hexcasting:zone_entity/not_animal",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities8"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/monster",
"anchor": "hexcasting:zone_entity/monster",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities9"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/not_monster",
"anchor": "hexcasting:zone_entity/not_monster",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities10"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/item",
"anchor": "hexcasting:zone_entity/item",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities11"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/not_item",
"anchor": "hexcasting:zone_entity/not_item",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities12"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/player",
"anchor": "hexcasting:zone_entity/player",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities13"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/not_player",
"anchor": "hexcasting:zone_entity/not_player",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities14"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/living",
"anchor": "hexcasting:zone_entity/living",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities15"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/not_living",
"anchor": "hexcasting:zone_entity/not_living",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities16"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity",
"anchor": "hexcasting:zone_entity",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities17"
}
]
"name": "hexcasting.entry.entities",
"category": "hexcasting:patterns",
"icon": "minecraft:pig_spawn_egg",
"sortnum": 5,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity",
"anchor": "hexcasting:get_entity",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities1"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity/animal",
"anchor": "hexcasting:get_entity/animal",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities2"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity/monster",
"anchor": "hexcasting:get_entity/monster",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities3"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity/item",
"anchor": "hexcasting:get_entity/item",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities4"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity/player",
"anchor": "hexcasting:get_entity/player",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities5"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity/living",
"anchor": "hexcasting:get_entity/living",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities6"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/animal",
"anchor": "hexcasting:zone_entity/animal",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities7"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/not_animal",
"anchor": "hexcasting:zone_entity/not_animal",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities8"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/monster",
"anchor": "hexcasting:zone_entity/monster",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities9"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/not_monster",
"anchor": "hexcasting:zone_entity/not_monster",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities10"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/item",
"anchor": "hexcasting:zone_entity/item",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities11"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/not_item",
"anchor": "hexcasting:zone_entity/not_item",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities12"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/player",
"anchor": "hexcasting:zone_entity/player",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities13"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/not_player",
"anchor": "hexcasting:zone_entity/not_player",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities14"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/living",
"anchor": "hexcasting:zone_entity/living",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities15"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity/not_living",
"anchor": "hexcasting:zone_entity/not_living",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities16"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:zone_entity",
"anchor": "hexcasting:zone_entity",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities17"
}
]
}

View file

@ -1,74 +1,74 @@
{
"name": "hexcasting.entry.lists",
"category": "hexcasting:patterns",
"icon": "minecraft:oak_sign",
"sortnum": 5,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:index",
"anchor": "hexcasting:index",
"input": "list, number",
"output": "any",
"text": "hexcasting.page.lists1"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:append",
"anchor": "hexcasting:append",
"input": "list, any",
"output": "any",
"text": "hexcasting.page.lists2"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:concat",
"anchor": "hexcasting:concat",
"input": "list, list",
"output": "list",
"text": "hexcasting.page.lists3"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:empty_list",
"anchor": "hexcasting:empty_list",
"input": "",
"output": "list",
"text": "hexcasting.page.lists4"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:singleton",
"anchor": "hexcasting:singleton",
"input": "any",
"output": "list",
"text": "hexcasting.page.lists5"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:last_n_list",
"anchor": "hexcasting:last_n_list",
"input": "num",
"output": "list",
"text": "hexcasting.page.lists6"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:list_size",
"anchor": "hexcasting:list_size",
"input": "list",
"output": "num",
"text": "hexcasting.page.lists7"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:reverse_list",
"anchor": "hexcasting:reverse_list",
"input": "list",
"output": "list",
"text": "hexcasting.page.lists8"
}
]
"name": "hexcasting.entry.lists",
"category": "hexcasting:patterns",
"icon": "minecraft:oak_sign",
"sortnum": 6,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:index",
"anchor": "hexcasting:index",
"input": "list, number",
"output": "any",
"text": "hexcasting.page.lists1"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:append",
"anchor": "hexcasting:append",
"input": "list, any",
"output": "any",
"text": "hexcasting.page.lists2"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:concat",
"anchor": "hexcasting:concat",
"input": "list, list",
"output": "list",
"text": "hexcasting.page.lists3"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:empty_list",
"anchor": "hexcasting:empty_list",
"input": "",
"output": "list",
"text": "hexcasting.page.lists4"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:singleton",
"anchor": "hexcasting:singleton",
"input": "any",
"output": "list",
"text": "hexcasting.page.lists5"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:last_n_list",
"anchor": "hexcasting:last_n_list",
"input": "num",
"output": "list",
"text": "hexcasting.page.lists6"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:list_size",
"anchor": "hexcasting:list_size",
"input": "list",
"output": "num",
"text": "hexcasting.page.lists7"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:reverse_list",
"anchor": "hexcasting:reverse_list",
"input": "list",
"output": "list",
"text": "hexcasting.page.lists8"
}
]
}

View file

@ -0,0 +1,98 @@
{
"name": "hexcasting.entry.logic",
"category": "hexcasting:patterns",
"icon": "minecraft:comparator",
"sortnum": 4,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:greater",
"anchor": "hexcasting:greater",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic1"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:less",
"anchor": "hexcasting:less",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic2"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:greater_eq",
"anchor": "hexcasting:greater_eq",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic3"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:less_eq",
"anchor": "hexcasting:less_eq",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic4"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:equals",
"anchor": "hexcasting:equals",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic5"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:not_equals",
"anchor": "hexcasting:not_equals",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic6"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:not",
"anchor": "hexcasting:not",
"input": "any",
"output": "number",
"text": "hexcasting.page.logic7"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:identity",
"anchor": "hexcasting:identity",
"input": "any",
"output": "any",
"text": "hexcasting.page.logic8"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:or",
"anchor": "hexcasting:or",
"input": "any, any",
"output": "any",
"text": "hexcasting.page.logic9"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:and",
"anchor": "hexcasting:and",
"input": "any, any",
"output": "any",
"text": "hexcasting.page.logic10"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:xor",
"anchor": "hexcasting:xor",
"input": "any, any",
"output": "any",
"text": "hexcasting.page.logic11"
}
]
}

View file

@ -1,105 +1,105 @@
{
"name": "hexcasting.entry.math",
"category": "hexcasting:patterns",
"icon": "minecraft:stick",
"sortnum": 2,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
{
"type": "patchouli:text",
"text": "hexcasting.page.math1"
},
{
"type": "patchouli:empty"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:add",
"anchor": "hexcasting:add",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math2"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math3"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:sub",
"anchor": "hexcasting:sub",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math4"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math5"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:mul_dot",
"anchor": "hexcasting:mul_dot",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math6"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math7"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:div_cross",
"anchor": "hexcasting:div_cross",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math8"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math9"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:abs_len",
"anchor": "hexcasting:abs_len",
"input": "num/vec",
"output": "number",
"text": "hexcasting.page.math10"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math11"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:pow_proj",
"anchor": "hexcasting:pow_proj",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math12"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math13"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:construct_vec",
"anchor": "hexcasting:construct_vec",
"input": "num, num, num",
"output": "vector",
"text": "hexcasting.page.math14"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:deconstruct_vec",
"anchor": "hexcasting:deconstruct_vec",
"input": "vector",
"output": "num, num, num",
"text": "hexcasting.page.math15"
}
]
"name": "hexcasting.entry.math",
"category": "hexcasting:patterns",
"icon": "minecraft:blaze_rod",
"sortnum": 2,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
{
"type": "patchouli:text",
"text": "hexcasting.page.math1"
},
{
"type": "patchouli:empty"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:add",
"anchor": "hexcasting:add",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math2"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math3"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:sub",
"anchor": "hexcasting:sub",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math4"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math5"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:mul_dot",
"anchor": "hexcasting:mul_dot",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math6"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math7"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:div_cross",
"anchor": "hexcasting:div_cross",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math8"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math9"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:abs_len",
"anchor": "hexcasting:abs_len",
"input": "num/vec",
"output": "number",
"text": "hexcasting.page.math10"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math11"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:pow_proj",
"anchor": "hexcasting:pow_proj",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math12"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math13"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:construct_vec",
"anchor": "hexcasting:construct_vec",
"input": "num, num, num",
"output": "vector",
"text": "hexcasting.page.math14"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:deconstruct_vec",
"anchor": "hexcasting:deconstruct_vec",
"input": "vector",
"output": "num, num, num",
"text": "hexcasting.page.math15"
}
]
}

View file

@ -1,50 +1,50 @@
{
"name": "hexcasting.entry.meta",
"category": "hexcasting:patterns",
"icon": "minecraft:shulker_box",
"sortnum": 6,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:write",
"anchor": "hexcasting:write",
"input": "any",
"output": "",
"text": "hexcasting.page.meta1"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:read",
"anchor": "hexcasting:read",
"input": "",
"output": "any",
"text": "hexcasting.page.meta2"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:eval",
"anchor": "hexcasting:eval",
"input": "list of patterns",
"output": "many",
"text": "hexcasting.page.meta3"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.meta4"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:for_each",
"anchor": "hexcasting:for_each",
"input": "list of patterns, list",
"output": "many",
"text": "hexcasting.page.meta5"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.meta6"
}
]
"name": "hexcasting.entry.meta",
"category": "hexcasting:patterns",
"icon": "minecraft:shulker_box",
"sortnum": 7,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:write",
"anchor": "hexcasting:write",
"input": "any",
"output": "",
"text": "hexcasting.page.meta1"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:read",
"anchor": "hexcasting:read",
"input": "",
"output": "any",
"text": "hexcasting.page.meta2"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:eval",
"anchor": "hexcasting:eval",
"input": "list of patterns",
"output": "many",
"text": "hexcasting.page.meta3"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.meta4"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:for_each",
"anchor": "hexcasting:for_each",
"input": "list of patterns, list",
"output": "many",
"text": "hexcasting.page.meta5"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.meta6"
}
]
}

View file

@ -1,67 +1,69 @@
{
"name": "hexcasting.entry.numbers",
"category": "hexcasting:patterns",
"icon": "minecraft:comparator",
"sortnum": 1,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
"name": "hexcasting.entry.numbers",
"category": "hexcasting:patterns",
"icon": "minecraft:stick",
"sortnum": 1,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
{
"type": "hexcasting:manual_pattern",
"header": "hexcasting.page.numbers1header",
"anchor": "Numbers",
"input": "hexcasting.page.numbers1",
"output": "number",
"args": "-> number",
"text": "",
"patterns": [
{
"type": "hexcasting:manual_pattern",
"header": "hexcasting.page.numbers1header",
"anchor": "Numbers",
"input": "hexcasting.page.numbers1",
"output": "number",
"args": "-> number",
"text": "",
"patterns": [{
"startdir": "SOUTH_EAST",
"signature": "aqaa"
}, {
"startdir": "NORTH_EAST",
"signature": "dedd",
"q": 3
}]
},
{
"type": "patchouli:text",
"text": "hexcasting.page.numbers2"
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers3header",
"text": "hexcasting.page.numbers3",
"patterns": {
"startdir": "SOUTH_EAST",
"signature": "aqaae"
}
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers4header",
"text": "hexcasting.page.numbers4",
"patterns": {
"startdir": "SOUTH_WEST",
"signature": "aqaaqww"
}
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers5header",
"text": "hexcasting.page.numbers5",
"patterns": {
"startdir": "NORTH_EAST",
"signature": "deddwqea"
}
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers6header",
"text": "hexcasting.page.numbers6",
"patterns": {
"startdir": "SOUTH_EAST",
"signature": "aqaaqdww"
}
"startdir": "SOUTH_EAST",
"signature": "aqaa"
}, {
"startdir": "NORTH_EAST",
"signature": "dedd",
"q": 3
}
]
]
},
{
"type": "patchouli:text",
"text": "hexcasting.page.numbers2"
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers3header",
"text": "hexcasting.page.numbers3",
"patterns": {
"startdir": "SOUTH_EAST",
"signature": "aqaae"
}
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers4header",
"text": "hexcasting.page.numbers4",
"patterns": {
"startdir": "SOUTH_WEST",
"signature": "aqaaqww"
}
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers5header",
"text": "hexcasting.page.numbers5",
"patterns": {
"startdir": "NORTH_EAST",
"signature": "deddwqea"
}
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers6header",
"text": "hexcasting.page.numbers6",
"patterns": {
"startdir": "SOUTH_EAST",
"signature": "aqaaqdww"
}
}
]
}

View file

@ -2,10 +2,10 @@
"name": "hexcasting.spell.hexcasting:colorize",
"category": "hexcasting:patterns/spells",
"icon": "hexcasting:pride_colorizer_1",
"sortnum": 8,
"sortnum": 5,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [
"pages": [
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:colorize",

View file

@ -1,8 +1,8 @@
{
"name": "hexcasting.entry.sentinels",
"category": "hexcasting:patterns",
"category": "hexcasting:patterns/spells",
"icon": "minecraft:purple_candle",
"sortnum": 7,
"sortnum": 4,
"advancement": "hexcasting:root",
"read_by_default": true,
"pages": [