From 481b858e497dfe0da8ca62866fc0b7ad98ab875f Mon Sep 17 00:00:00 2001 From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com> Date: Thu, 5 Mar 2026 19:53:55 +0800 Subject: [PATCH 1/4] HextraPats create --- .../hextrapats/lang/en_us.flatten.json5 | 134 ++++++++++++++++++ .../hextrapats/lang/zh_cn.flatten.json5 | 134 ++++++++++++++++++ 2 files changed, 268 insertions(+) create mode 100644 projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 create mode 100644 projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 diff --git a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 new file mode 100644 index 000000000000..1fdaf3426de5 --- /dev/null +++ b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 @@ -0,0 +1,134 @@ +{ + "pages.hextrapats":{ + "hextrapats_consts.title": "Hextra Constants", + "hextrapats_logic.title": "Hextra Logic", + "hextrapats_retained_comparison.title": "Retaining Comparisons", + "hextrapats_vec_literals.title": "Vector Literals", + "hextrapats_math.title": "Hextra Math", + }, + hextrapats: { + page: { + consts: { + one: "The left-hand counter-clockwise pattern adds (1, 1, 1) to the stack; the right-hand clockwise pattern adds (-1, -1, -1)." + }, + logic: { + greater: "If the first vector is longer than the second, return True. Otherwise, return False.", + less: "If the first vector is shorter than the second, return True. Otherwise, return False.", + greater_eq: "If the first vector is longer or the same length as the second, return True. Otherwise, return False.", + less_eq: "If the first vector is shorter or the same length as the second, return True. Otherwise, return False.", + len_eq: "If the two vectors are the same length (within small tolerance), return True. Otherwise, return False.", + len_neq: "If the two vectors are not the same length (outside small tolerance), return True. Otherwise, return False.", + in_range: "If the first number is between the second and third, return True. Otherwise, return False. If the first value is a vector, compare its length instead.", + "in_range.ops": "The fourth number seems to describe how to check if the value is in the range.$(li)0: min < val < max$(li)1: min <= val < max$(li)2: min < val <= max$(li)3: min <= val <= max", + out_range: "If the first number is not between the second and third, return True. Otherwise, return False. If the first value is a vector, compare its length instead.", + "out_range.ops": "The fourth number seems to describe how to check if the value is outside the range.$(li)0: val < min or max < val$(li)1: val <= min or max < val$(li)2: val < min or max <= val$(li)3: val <= min or max <= val" + }, + retained_comparison: { + intro: "Sometimes, I want operate on two iotas after comparing them, but it gets rather annoying to have to execute $(l:patterns/stackmanip#hexcasting:2dup)$(action)Dioscuri Gambit/$ every time I do.", + detail: "With some experimentation, I have found that prepending a comparison with a clockwise triangle will cause the two inputs to not be consumed.", + greater: "Comp. Gambit: Maximus", + less: "Comp. Gambit: Minimus", + greater_eq: "Comp. Gambit: Maximus II", + less_eq: "Comp. Gambit: Minimus II", + equals: "Comp. Gambit: Equality", + not_equals: "Comp. Gambit: Inequality", + len_eq: "Comp. Gambit: Len. Eq.", + len_neq: "Comp. Gambit: Len. Ineq." + }, + vec_literals: { + intro: "Interestingly, attaching the tail of any Vector Reflection to the start of $(l:patterns/numbers)$(action)Number Reflection/$ makes it return a vector.", + x: "A head that sharply bends to the left will output a vector along the $(l:patterns/consts#hexcasting:const/vec/x)$(action)X axis/$.", + y: "A head that doesn't bend will output a vector along the $(l:patterns/consts#hexcasting:const/vec/y)$(action)Y axis/$.", + z: "A head that sharply bends to the right will output a vector along the $(l:patterns/consts#hexcasting:const/vec/z)$(action)Z axis/$.", + "1": "A head that slightly bends to the left will output a vector where $(l:patterns/hextrapats_consts#hextrapats:haha_ha_one)$(action)all 3 components are the same/$.", + detail: "First, I draw one of the eight shapes shown on the prior pages. Next, the $(italic)angles/$ following will modify a running count starting at 0.$(li)Forward: Add 1$(li)Left: Add 5$(li)Right: Add 10$(li)Sharp Left: Multiply by 2$(li)Sharp Right: Divide by 2.$(br)The clockwise version of the pattern, on the right of the other page, will negate the value at the very end. (The left-hand counter-clockwise version keeps the number positive).$(p)Once I finish drawing, a vector's pushed to the top of the stack.", + + example: { + "x10.header": "Example 1", + "x10": "This pattern pushes (10, 0, 0).", + "y7.header": "Example 2", + "y7": "This pattern pushes (0, 7, 0): 5 + 1 + 1.", + "z-32.header": "Example 3", + "z-32": "This pattern pushes (0, 0, -32): negate 1 + 5 + 10 * 2.", + "a4.5.header": "Example 4", + "a4.5": "This pattern pushes (4.5, 4.5, 4.5): 5 / 2 + 1 + 1." + } + }, + math: { + deg_to_rad: "Converts an angle in degrees to an angle in radians. Essentially multiplies by $(l:patterns/consts#hexcasting:const/double/pi)$(action)pi/$ then divides by 180.", + rad_to_deg: "Converts an angle in radians to an angle in degrees. Essentially multiplies by 180 then divides by $(l:patterns/consts#hexcasting:const/double/pi)$(action)pi/$.", + normalize: "Sets the length of the vector to one.", + rot_about_x: "Rotates the vector by the given angle in radians around the X axis.", + rot_about_y: "Rotates the vector by the given angle in radians around the Y axis.", + rot_about_z: "Rotates the vector by the given angle in radians around the Z axis.", + cons_about_x: "Converts an angle in radians to a unit vector where X=0. +Z at 0 radians and +Y at pi/4 radians.", + cons_about_y: "Converts an angle in radians to a unit vector where Y=0. +Z at 0 radians and -X at pi/4 radians. Some texts have mentioned something called $(thing)F3/$, but I haven't been able to tell what that means.", + cons_about_z: "Converts an angle in radians to a unit vector where Z=0. -X at 0 radians and +Y at pi/4 radians.", + scientific_exp: "Multiplies the number by 10^n, where n is the length of the tail. A downwards tail multiplies by 10^-n." + } + } + }, + hexcasting: { + action: { + "hextrapats:": { + haha_ha_one: "Vector Reflection +1", + eno_ah_ahah: "Vector Reflection -1", + + len_eq: "Length Equality Distillation", + len_neq: "Length Inequality Distillation", + + in_range: "Range Exaltation", + out_range: "Range Exaltation II", + + scaled_vec_x: "Vector Reflection X II", + scaled_vec_y: "Vector Reflection Y II", + scaled_vec_z: "Vector Reflection Z II", + scaled_vec_all: "Vector Reflection 1 II", + + deg_to_rad: "Radian Purification", + rad_to_deg: "Degree Purification", + normalize: "Norm Purification", + rot_about_x: "Pitch Distillation", + rot_about_y: "Yaw Distillation", + rot_about_z: "Roll Distillation", + cons_about_x: "Pitch Purification", + cons_about_y: "Yaw Purification", + cons_about_z: "Roll Purification", + + retained_comparison: "Comparison Gambit", + + scientific_exp: "Scientific Purification" + }, + + "book.hextrapats:": { + haha_ha_one: "Vector Rfln. +1/-1", + + len_eq: "Length Equality Dstl.", + len_neq: "Length Inequality Dstl.", + + scaled_vec_x: "Vector Rfln. +X/-X II", + scaled_vec_y: "Vector Rfln. +Y/-Y II", + scaled_vec_z: "Vector Rfln. +Z/-Z II", + scaled_vec_all: "Vector Rfln. +1/-1 II", + } + }, + "special.hextrapats:": { + scaled_vec_x: "Vector Reflection: (%s, 0, 0)", + scaled_vec_y: "Vector Reflection: (0, %s, 0)", + scaled_vec_z: "Vector Reflection: (0, 0, %s)", + scaled_vec_all: "Vector Reflection: (%s, %s, %s)", + retained_comparison: { + name: "Comparison Gambit: %s", + "op.hexcasting:": { + greater: "Maximus", + less: "Minimus", + greater_eq: "Maximus II", + less_eq: "Minimus II", + equals: "Equality", + not_equals: "Inequality" + } + }, + scientific_exp: "Scientific Purification: 10^%s" + } + } +} diff --git a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 new file mode 100644 index 000000000000..073940dd5871 --- /dev/null +++ b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 @@ -0,0 +1,134 @@ +{ + "pages.hextrapats":{ + "hextrapats_consts.title": "咒法新增:常量", + "hextrapats_logic.title": "咒法新增:逻辑", + "hextrapats_retained_comparison.title": "保留式比较", + "hextrapats_vec_literals.title": "向量常量", + "hextrapats_math.title": "咒法新增:数学", + }, + hextrapats: { + page: { + consts: { + one: "左图即逆时针图案会压入 (1, 1, 1);右图即顺时针图案会压入 (-1, -1, -1)。" + }, + logic: { + greater: "若第一个向量的长度长于第二个的,返回 True;否则返回 False。", + less: "若第一个向量的长度短于第二个的,返回 True;否则返回 False。", + greater_eq: "若第一个向量的长度长于或等于第二个的,返回 True;否则返回 False。", + less_eq: "若第一个向量的长度短于或等于第二个的,返回 True;否则返回 False。", + len_eq: "若两向量的长度相等(允许较小误差),返回 True;否则返回 False。", + len_neq: "若两向量的长度不相等(不计较小误差),返回 True;否则返回 False。", + in_range: "若第一个数在第二个和第三个之间,返回 True;否则返回 False。若第一个参数是向量,则比较其长度。", + "in_range.ops": "第四个数似乎描述了检验的方式。$(li)0:min < val < max$(li)1:min <= val < max$(li)2:min < val <= max$(li)3:min <= val <= max", + out_range: "若第一个数不在第二个和第三个之间,返回 True;否则返回 False。若第一个参数是向量,则比较其长度。", + "out_range.ops": "第四个数似乎描述了检验的方式。$(li)0:val < min 或 max < val$(li)1:val <= min 或 max < val$(li)2:val < min 或 max <= val$(li)3:val <= min 或 max <= val" + }, + retained_comparison: { + intro: "总有些时候,我会想要在比较两个 iota 之后还继续对它们执行操作,但这就需要每次都先运行$(l:patterns/stackmanip#hexcasting:2dup)$(action)狄俄斯库里之策略/$,确实有些麻烦。", + detail: "通过实验,我发现:在比较图案前加上一个顺时针的三角形,就可以保留两个输入参数了。", + greater: "比较之策略:至大", + less: "比较之策略:至小", + greater_eq: "比较之策略:至大第二型", + less_eq: "比较之策略:至小第二型", + equals: "比较之策略:相等", + not_equals: "比较之策略:不等", + len_eq: "比较之策略:长度相等", + len_neq: "比较之策略:长度不等" + }, + vec_literals: { + intro: "返回数的图案有种神奇的性质:把向量之精思的尾部加到$(l:patterns/numbers)$(action)数之精思/$的开头,就能返回一个向量。", + x: "向左急转的头部会返回 $(l:patterns/consts#hexcasting:const/vec/x)$(action)X 轴/$上的向量。", + y: "直线形状的头部会返回 $(l:patterns/consts#hexcasting:const/vec/y)$(action)Y 轴/$上的向量。", + z: "向右急转的头部会返回 $(l:patterns/consts#hexcasting:const/vec/z)$(action)Z 轴/$上的向量。", + "1": "向左微偏的头部会返回$(l:patterns/hextrapats_consts#hextrapats:haha_ha_one)$(action)所有 3 个分量都相等/$的向量。", + detail: "首先,绘制前页八种图案中的一种,默认数值为 0。然后,每一画的$(italic)方向/$会以对应方式修改该数值。$(li)前方:加 1$(li)左前方:加 5$(li)右前方:加 10$(li)左后方:乘 2$(li)右后方:除以 2$(br)顺时针绘制,也即各页右图,会在绘制完成后取相反数(如左图逆时针绘制则不取)。$(p)绘制完成后会返回对应向量。", + + example: { + "x10.header": "例图一", + "x10": "该图案会返回 (10, 0, 0)。", + "y7.header": "例图二", + "y7": "该图案会返回 (0, 7, 0):5 + 1 + 1。", + "z-32.header": "例图三", + "z-32": "该图案会返回 (0, 0, -32):(1 + 5 + 10) * 2 的相反数。", + "a4.5.header": "例图四", + "a4.5": "该图案会返回 (4.5, 4.5, 4.5):5 / 2 + 1 + 1。" + } + }, + math: { + deg_to_rad: "将角度变为弧度。相当于乘以 $(l:patterns/consts#hexcasting:const/double/pi)$(action)π/$ 再除以 180。", + rad_to_deg: "将弧度变为角度。相当于乘以 180 再除以 $(l:patterns/consts#hexcasting:const/double/pi)$(action)π/$。", + normalize: "将向量的长度变为 1。", + rot_about_x: "绕 X 轴将所给向量旋转所给弧度。", + rot_about_y: "绕 Y 轴将所给向量旋转所给弧度。", + rot_about_z: "绕 Z 轴将所给向量旋转所给弧度。", + cons_about_x: "将弧度角变为单位向量。该向量的 X 分量为 0。0 弧度对应 +Z,π/4 弧度对应 +Y。", + cons_about_y: "将弧度角变为单位向量。该向量的 Y 分量为 0。0 弧度对应 +Z,π/4 弧度对应 -X。某些文献提到过某种叫 $(thing)F3/$ 的东西,但我还不知道它的意义。", + cons_about_z: "将弧度角变为单位向量。该向量的 Z 分量为 0。0 弧度对应 -X,π/4 弧度对应 +Y。", + scientific_exp: "求所给数与 10^n 相乘的积。其中 n 为尾部的长度。尾部向下代表乘以 10^-n。" + } + } + }, + hexcasting: { + action: { + "hextrapats:": { + haha_ha_one: "向量之精思,+1型", + eno_ah_ahah: "向量之精思,-1型", + + len_eq: "长度相等之馏化", + len_neq: "长度不等之馏化", + + in_range: "范围之提整", + out_range: "范围之提整,第二型", + + scaled_vec_x: "向量之精思,X第二型", + scaled_vec_y: "向量之精思,Y第二型", + scaled_vec_z: "向量之精思,Z第二型", + scaled_vec_all: "向量之精思,1第二型", + + deg_to_rad: "弧度之纯化", + rad_to_deg: "角度之纯化", + normalize: "归一之纯化", + rot_about_x: "俯仰之馏化", + rot_about_y: "偏航之馏化", + rot_about_z: "滚转之馏化", + cons_about_x: "俯仰之纯化", + cons_about_y: "偏航之纯化", + cons_about_z: "滚转之纯化", + + retained_comparison: "比较之策略", + + scientific_exp: "科学计数之纯化" + }, + + "book.hextrapats:": { + haha_ha_one: "向量之精思,+1/-1型", + + len_eq: "长度相等之馏化", + len_neq: "长度不等之馏化", + + scaled_vec_x: "向量之精思,+X/-X第二型", + scaled_vec_y: "向量之精思,+Y/-Y第二型", + scaled_vec_z: "向量之精思,+Z/-Z第二型", + scaled_vec_all: "向量之精思,+1/-1第二型", + } + }, + "special.hextrapats:": { + scaled_vec_x: "向量之精思:(%s, 0, 0)", + scaled_vec_y: "向量之精思:(0, %s, 0)", + scaled_vec_z: "向量之精思:(0, 0, %s)", + scaled_vec_all: "向量之精思:(%s, %s, %s)", + retained_comparison: { + name: "比较之策略:%s", + "op.hexcasting:": { + greater: "至大", + less: "至小", + greater_eq: "至大第二型", + less_eq: "至小第二型", + equals: "相等", + not_equals: "不等" + } + }, + scientific_exp: "科学计数之纯化:10^%s" + } + } +} From 2a8135a61cdbc425e638d202e9f98461a4cc58ec Mon Sep 17 00:00:00 2001 From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com> Date: Fri, 6 Mar 2026 23:27:33 +0800 Subject: [PATCH 2/4] =?UTF-8?q?HextraPats=20update=EF=BC=9A=E5=AE=98?= =?UTF-8?q?=E5=BA=93=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hextrapats/lang/en_us.flatten.json5 | 4 ++-- .../hextrapats/lang/zh_cn.flatten.json5 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 index 1fdaf3426de5..017fd17ba838 100644 --- a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 +++ b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 @@ -62,9 +62,9 @@ rot_about_y: "Rotates the vector by the given angle in radians around the Y axis.", rot_about_z: "Rotates the vector by the given angle in radians around the Z axis.", cons_about_x: "Converts an angle in radians to a unit vector where X=0. +Z at 0 radians and +Y at pi/4 radians.", - cons_about_y: "Converts an angle in radians to a unit vector where Y=0. +Z at 0 radians and -X at pi/4 radians. Some texts have mentioned something called $(thing)F3/$, but I haven't been able to tell what that means.", + cons_about_y: "Converts an angle in radians to a unit vector where Y=0. +Z at 0 radians and -X at pi/4 radians. I've seen some texts related to this pattern mentioning something called $(thing)F3/$, but I couldn't figure out what that means.", cons_about_z: "Converts an angle in radians to a unit vector where Z=0. -X at 0 radians and +Y at pi/4 radians.", - scientific_exp: "Multiplies the number by 10^n, where n is the length of the tail. A downwards tail multiplies by 10^-n." + scientific_exp: "Multiplies the number by 10^n or 10^-n, where n is the length of the tail, depending on whether the start is similar to $(l:patterns/math#hexcasting:mul)$(action)Multiplicative Distillation/$ or $(l:patterns/math#hexcasting:div)$(action)Division Distillation/$." } } }, diff --git a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 index 073940dd5871..ca263ca4b7ba 100644 --- a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 +++ b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 @@ -62,9 +62,9 @@ rot_about_y: "绕 Y 轴将所给向量旋转所给弧度。", rot_about_z: "绕 Z 轴将所给向量旋转所给弧度。", cons_about_x: "将弧度角变为单位向量。该向量的 X 分量为 0。0 弧度对应 +Z,π/4 弧度对应 +Y。", - cons_about_y: "将弧度角变为单位向量。该向量的 Y 分量为 0。0 弧度对应 +Z,π/4 弧度对应 -X。某些文献提到过某种叫 $(thing)F3/$ 的东西,但我还不知道它的意义。", + cons_about_y: "将弧度角变为单位向量。该向量的 Y 分量为 0。0 弧度对应 +Z,π/4 弧度对应 -X。我曾读到过某些文献提到某种叫 $(thing)F3/$ 的东西,但我还找不出它的意义。", cons_about_z: "将弧度角变为单位向量。该向量的 Z 分量为 0。0 弧度对应 -X,π/4 弧度对应 +Y。", - scientific_exp: "求所给数与 10^n 相乘的积。其中 n 为尾部的长度。尾部向下代表乘以 10^-n。" + scientific_exp: "求所给数与 10^n 或 10^-n 相乘的积。其中 n 为尾部的长度,指数有无负号取决于图案开头更近似于$(l:patterns/math#hexcasting:mul)$(action)乘法之馏化/$还是$(l:patterns/math#hexcasting:div)$(action)除法之馏化/$。" } } }, From f28c16ac08ab0d345db175acc1b4b8fa2957af32 Mon Sep 17 00:00:00 2001 From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com> Date: Sun, 8 Mar 2026 02:05:26 +0800 Subject: [PATCH 3/4] =?UTF-8?q?HextraPats=20update=EF=BC=9A=E5=AE=98?= =?UTF-8?q?=E5=BA=93=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hextrapats/lang/en_us.flatten.json5 | 56 +++++++++++-------- .../hextrapats/lang/zh_cn.flatten.json5 | 56 +++++++++++-------- 2 files changed, 66 insertions(+), 46 deletions(-) diff --git a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 index 017fd17ba838..305a415ba81d 100644 --- a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 +++ b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 @@ -2,9 +2,10 @@ "pages.hextrapats":{ "hextrapats_consts.title": "Hextra Constants", "hextrapats_logic.title": "Hextra Logic", - "hextrapats_retained_comparison.title": "Retaining Comparisons", + "hextrapats_nocon.title": "Non-consuming Logic", "hextrapats_vec_literals.title": "Vector Literals", "hextrapats_math.title": "Hextra Math", + "hextrapats_lists.title": "Hextra Lists", }, hextrapats: { page: { @@ -23,17 +24,10 @@ out_range: "If the first number is not between the second and third, return True. Otherwise, return False. If the first value is a vector, compare its length instead.", "out_range.ops": "The fourth number seems to describe how to check if the value is outside the range.$(li)0: val < min or max < val$(li)1: val <= min or max < val$(li)2: val < min or max <= val$(li)3: val <= min or max <= val" }, - retained_comparison: { + nocon: { intro: "Sometimes, I want operate on two iotas after comparing them, but it gets rather annoying to have to execute $(l:patterns/stackmanip#hexcasting:2dup)$(action)Dioscuri Gambit/$ every time I do.", + name: "Comparison Gambit", detail: "With some experimentation, I have found that prepending a comparison with a clockwise triangle will cause the two inputs to not be consumed.", - greater: "Comp. Gambit: Maximus", - less: "Comp. Gambit: Minimus", - greater_eq: "Comp. Gambit: Maximus II", - less_eq: "Comp. Gambit: Minimus II", - equals: "Comp. Gambit: Equality", - not_equals: "Comp. Gambit: Inequality", - len_eq: "Comp. Gambit: Len. Eq.", - len_neq: "Comp. Gambit: Len. Ineq." }, vec_literals: { intro: "Interestingly, attaching the tail of any Vector Reflection to the start of $(l:patterns/numbers)$(action)Number Reflection/$ makes it return a vector.", @@ -65,6 +59,10 @@ cons_about_y: "Converts an angle in radians to a unit vector where Y=0. +Z at 0 radians and -X at pi/4 radians. I've seen some texts related to this pattern mentioning something called $(thing)F3/$, but I couldn't figure out what that means.", cons_about_z: "Converts an angle in radians to a unit vector where Z=0. -X at 0 radians and +Y at pi/4 radians.", scientific_exp: "Multiplies the number by 10^n or 10^-n, where n is the length of the tail, depending on whether the start is similar to $(l:patterns/math#hexcasting:mul)$(action)Multiplicative Distillation/$ or $(l:patterns/math#hexcasting:div)$(action)Division Distillation/$." + }, + lists: { + split: "Splits a list at the given index. [a, b, c, d, e], 2 will return [a, b], [c, d, e].", + swindle: "Reorders the elements of a list the same way $(l:patterns/stackmanip#hexcasting:swizzle)$(action)Swindler's Gambit/$ reorders the stack. Inputting a negative code will reorder the elements at the start instead of the end." } } }, @@ -95,9 +93,21 @@ cons_about_y: "Yaw Purification", cons_about_z: "Roll Purification", - retained_comparison: "Comparison Gambit", + "nocon/": { + greater: "Comparison Gambit: Maximus", + less: "Comparison Gambit: Minimus", + greater_eq: "Comparison Gambit: Maximus II", + less_eq: "Comparison Gambit: Minimus II", + eq: "Comparison Gambit: Equality", + neq: "Comparison Gambit: Inequality", + len_eq: "Comparison Gambit: Length Equality", + len_neq: "Comparison Gambit: Length Inequality", + }, + + scientific_exp: "Scientific Purification", - scientific_exp: "Scientific Purification" + split_list: "Separation Gambit", + swindle_list: "Swindler's Distillation" }, "book.hextrapats:": { @@ -110,6 +120,17 @@ scaled_vec_y: "Vector Rfln. +Y/-Y II", scaled_vec_z: "Vector Rfln. +Z/-Z II", scaled_vec_all: "Vector Rfln. +1/-1 II", + + "nocon/": { + greater: "Comp. Gambit: Maximus", + less: "Comp. Gambit: Minimus", + greater_eq: "Comp. Gambit: Maximus II", + less_eq: "Comp. Gambit: Minimus II", + eq: "Comp. Gambit: Equality", + neq: "Comp. Gambit: Inequality", + len_eq: "Comp. Gambit: Len. Eq.", + len_neq: "Comp. Gambit: Len. Ineq." + } } }, "special.hextrapats:": { @@ -117,17 +138,6 @@ scaled_vec_y: "Vector Reflection: (0, %s, 0)", scaled_vec_z: "Vector Reflection: (0, 0, %s)", scaled_vec_all: "Vector Reflection: (%s, %s, %s)", - retained_comparison: { - name: "Comparison Gambit: %s", - "op.hexcasting:": { - greater: "Maximus", - less: "Minimus", - greater_eq: "Maximus II", - less_eq: "Minimus II", - equals: "Equality", - not_equals: "Inequality" - } - }, scientific_exp: "Scientific Purification: 10^%s" } } diff --git a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 index ca263ca4b7ba..a3c6b8d94885 100644 --- a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 +++ b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 @@ -2,9 +2,10 @@ "pages.hextrapats":{ "hextrapats_consts.title": "咒法新增:常量", "hextrapats_logic.title": "咒法新增:逻辑", - "hextrapats_retained_comparison.title": "保留式比较", + "hextrapats_nocon.title": "保留式比较", "hextrapats_vec_literals.title": "向量常量", "hextrapats_math.title": "咒法新增:数学", + "hextrapats_lists.title": "咒法新增:列表", }, hextrapats: { page: { @@ -23,17 +24,10 @@ out_range: "若第一个数不在第二个和第三个之间,返回 True;否则返回 False。若第一个参数是向量,则比较其长度。", "out_range.ops": "第四个数似乎描述了检验的方式。$(li)0:val < min 或 max < val$(li)1:val <= min 或 max < val$(li)2:val < min 或 max <= val$(li)3:val <= min 或 max <= val" }, - retained_comparison: { + nocon: { intro: "总有些时候,我会想要在比较两个 iota 之后还继续对它们执行操作,但这就需要每次都先运行$(l:patterns/stackmanip#hexcasting:2dup)$(action)狄俄斯库里之策略/$,确实有些麻烦。", + name: "比较之策略", detail: "通过实验,我发现:在比较图案前加上一个顺时针的三角形,就可以保留两个输入参数了。", - greater: "比较之策略:至大", - less: "比较之策略:至小", - greater_eq: "比较之策略:至大第二型", - less_eq: "比较之策略:至小第二型", - equals: "比较之策略:相等", - not_equals: "比较之策略:不等", - len_eq: "比较之策略:长度相等", - len_neq: "比较之策略:长度不等" }, vec_literals: { intro: "返回数的图案有种神奇的性质:把向量之精思的尾部加到$(l:patterns/numbers)$(action)数之精思/$的开头,就能返回一个向量。", @@ -65,6 +59,10 @@ cons_about_y: "将弧度角变为单位向量。该向量的 Y 分量为 0。0 弧度对应 +Z,π/4 弧度对应 -X。我曾读到过某些文献提到某种叫 $(thing)F3/$ 的东西,但我还找不出它的意义。", cons_about_z: "将弧度角变为单位向量。该向量的 Z 分量为 0。0 弧度对应 -X,π/4 弧度对应 +Y。", scientific_exp: "求所给数与 10^n 或 10^-n 相乘的积。其中 n 为尾部的长度,指数有无负号取决于图案开头更近似于$(l:patterns/math#hexcasting:mul)$(action)乘法之馏化/$还是$(l:patterns/math#hexcasting:div)$(action)除法之馏化/$。" + }, + lists: { + split: "在所给下标处分割列表。[a, b, c, d, e], 2 会返回 [a, b], [c, d, e]。", + swindle: "重排列表的元素,方式与$(l:patterns/stackmanip#hexcasting:swizzle)$(action)骗徒之策略/$重排栈的一致。给定负值会从开头起进行重排,而非从末尾起。" } } }, @@ -95,9 +93,21 @@ cons_about_y: "偏航之纯化", cons_about_z: "滚转之纯化", - retained_comparison: "比较之策略", + "nocon/": { + greater: "比较之策略:至大", + less: "比较之策略:至小", + greater_eq: "比较之策略:至大第二型", + less_eq: "比较之策略:至小第二型", + eq: "比较之策略:相等", + neq: "比较之策略:不等", + len_eq: "比较之策略:长度相等", + len_neq: "比较之策略:长度不等", + }, + + scientific_exp: "科学计数之纯化", - scientific_exp: "科学计数之纯化" + split_list: "分割之策略", + swindle_list: "骗徒之馏化" }, "book.hextrapats:": { @@ -110,6 +120,17 @@ scaled_vec_y: "向量之精思,+Y/-Y第二型", scaled_vec_z: "向量之精思,+Z/-Z第二型", scaled_vec_all: "向量之精思,+1/-1第二型", + + "nocon/": { + greater: "比较之策略:至大", + less: "比较之策略:至小", + greater_eq: "比较之策略:至大第二型", + less_eq: "比较之策略:至小第二型", + eq: "比较之策略:相等", + neq: "比较之策略:不等", + len_eq: "比较之策略:长度相等", + len_neq: "比较之策略:长度不等" + } } }, "special.hextrapats:": { @@ -117,17 +138,6 @@ scaled_vec_y: "向量之精思:(0, %s, 0)", scaled_vec_z: "向量之精思:(0, 0, %s)", scaled_vec_all: "向量之精思:(%s, %s, %s)", - retained_comparison: { - name: "比较之策略:%s", - "op.hexcasting:": { - greater: "至大", - less: "至小", - greater_eq: "至大第二型", - less_eq: "至小第二型", - equals: "相等", - not_equals: "不等" - } - }, scientific_exp: "科学计数之纯化:10^%s" } } From 3809b5fe0cc9a2514252f10f2318b351691f5292 Mon Sep 17 00:00:00 2001 From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com> Date: Mon, 9 Mar 2026 16:52:03 +0800 Subject: [PATCH 4/4] =?UTF-8?q?HextraPats=20update=EF=BC=9A=E5=AE=98?= =?UTF-8?q?=E5=BA=93=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hextrapats/lang/en_us.flatten.json5 | 21 ++++++++++++++++--- .../hextrapats/lang/zh_cn.flatten.json5 | 21 ++++++++++++++++--- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 index 305a415ba81d..16cec10d6b9e 100644 --- a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 +++ b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/en_us.flatten.json5 @@ -52,16 +52,24 @@ deg_to_rad: "Converts an angle in degrees to an angle in radians. Essentially multiplies by $(l:patterns/consts#hexcasting:const/double/pi)$(action)pi/$ then divides by 180.", rad_to_deg: "Converts an angle in radians to an angle in degrees. Essentially multiplies by 180 then divides by $(l:patterns/consts#hexcasting:const/double/pi)$(action)pi/$.", normalize: "Sets the length of the vector to one.", + invert: "Multiplies the number/vector by -1.", + rand_zero: "Returns a random number between 0 (inclusive) and the number (exclusive).", + rand_range: "Returns a random number between the first number (inclusive) and the second (exclusive).", + rand_vec: "Returns a unit vector facing a random direction.", rot_about_x: "Rotates the vector by the given angle in radians around the X axis.", rot_about_y: "Rotates the vector by the given angle in radians around the Y axis.", rot_about_z: "Rotates the vector by the given angle in radians around the Z axis.", cons_about_x: "Converts an angle in radians to a unit vector where X=0. +Z at 0 radians and +Y at pi/4 radians.", cons_about_y: "Converts an angle in radians to a unit vector where Y=0. +Z at 0 radians and -X at pi/4 radians. I've seen some texts related to this pattern mentioning something called $(thing)F3/$, but I couldn't figure out what that means.", cons_about_z: "Converts an angle in radians to a unit vector where Z=0. -X at 0 radians and +Y at pi/4 radians.", - scientific_exp: "Multiplies the number by 10^n or 10^-n, where n is the length of the tail, depending on whether the start is similar to $(l:patterns/math#hexcasting:mul)$(action)Multiplicative Distillation/$ or $(l:patterns/math#hexcasting:div)$(action)Division Distillation/$." + scientific_exp: "Multiplies the number/vector by 10^n or 10^-n, where n is the length of the tail, depending on whether the start is similar to $(l:patterns/math#hexcasting:mul)$(action)Multiplicative Distillation/$ or $(l:patterns/math#hexcasting:div)$(action)Division Distillation/$." }, lists: { split: "Splits a list at the given index. [a, b, c, d, e], 2 will return [a, b], [c, d, e].", + "del_element/": { + first: "Remove the iota at the top of the stack, then remove the first instance of it from the list. If that iota was in the list, return True. Otherwise, return False.", + all: "Remove the iota at the top of the stack, then remove $(italic)all/$ instances of it from the list. Returns the number of occurrences of that iota." + }, swindle: "Reorders the elements of a list the same way $(l:patterns/stackmanip#hexcasting:swizzle)$(action)Swindler's Gambit/$ reorders the stack. Inputting a negative code will reorder the elements at the start instead of the end." } } @@ -86,12 +94,17 @@ deg_to_rad: "Radian Purification", rad_to_deg: "Degree Purification", normalize: "Norm Purification", + invert: "Reversal Purification", + rand_zero: "Entropy Purification", + rand_range: "Entropy Distillation", + rand_vec: "Chaos Reflection", rot_about_x: "Pitch Distillation", rot_about_y: "Yaw Distillation", rot_about_z: "Roll Distillation", cons_about_x: "Pitch Purification", cons_about_y: "Yaw Purification", cons_about_z: "Roll Purification", + scientific_exp: "Scientific Purification", "nocon/": { greater: "Comparison Gambit: Maximus", @@ -104,9 +117,11 @@ len_neq: "Comparison Gambit: Length Inequality", }, - scientific_exp: "Scientific Purification", - split_list: "Separation Gambit", + "del_element/": { + first: "Elimination Gambit", + all: "Elimination Gambit II" + }, swindle_list: "Swindler's Distillation" }, diff --git a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 index a3c6b8d94885..1224f5b0229e 100644 --- a/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 +++ b/projects/1.20-fabric/assets/modrinth-hextra-patterns/hextrapats/lang/zh_cn.flatten.json5 @@ -52,16 +52,24 @@ deg_to_rad: "将角度变为弧度。相当于乘以 $(l:patterns/consts#hexcasting:const/double/pi)$(action)π/$ 再除以 180。", rad_to_deg: "将弧度变为角度。相当于乘以 180 再除以 $(l:patterns/consts#hexcasting:const/double/pi)$(action)π/$。", normalize: "将向量的长度变为 1。", + invert: "求所给数/向量与 -1 相乘的积。", + rand_zero: "返回 0(包含)到所给数(不包含)之间的随机数。", + rand_range: "返回从第一个数(包含)到第二个数(不包含)之间的随机数。", + rand_vec: "返回朝向随机方向的单位向量。", rot_about_x: "绕 X 轴将所给向量旋转所给弧度。", rot_about_y: "绕 Y 轴将所给向量旋转所给弧度。", rot_about_z: "绕 Z 轴将所给向量旋转所给弧度。", cons_about_x: "将弧度角变为单位向量。该向量的 X 分量为 0。0 弧度对应 +Z,π/4 弧度对应 +Y。", cons_about_y: "将弧度角变为单位向量。该向量的 Y 分量为 0。0 弧度对应 +Z,π/4 弧度对应 -X。我曾读到过某些文献提到某种叫 $(thing)F3/$ 的东西,但我还找不出它的意义。", cons_about_z: "将弧度角变为单位向量。该向量的 Z 分量为 0。0 弧度对应 -X,π/4 弧度对应 +Y。", - scientific_exp: "求所给数与 10^n 或 10^-n 相乘的积。其中 n 为尾部的长度,指数有无负号取决于图案开头更近似于$(l:patterns/math#hexcasting:mul)$(action)乘法之馏化/$还是$(l:patterns/math#hexcasting:div)$(action)除法之馏化/$。" + scientific_exp: "求所给数/向量与 10^n 或 10^-n 相乘的积。其中 n 为尾部的长度,指数有无负号取决于图案开头更近似于$(l:patterns/math#hexcasting:mul)$(action)乘法之馏化/$还是$(l:patterns/math#hexcasting:div)$(action)除法之馏化/$。" }, lists: { split: "在所给下标处分割列表。[a, b, c, d, e], 2 会返回 [a, b], [c, d, e]。", + "del_element/": { + first: "移除栈顶 iota,而后移除列表中该 iota 第一次出现的实例。若列表中存在该 iota,返回 True;否则返回 False。", + all: "移除栈顶 iota,而后移除列表中该 iota 的$(italic)全部/$实例。返回该 iota 在列表中出现的次数。" + }, swindle: "重排列表的元素,方式与$(l:patterns/stackmanip#hexcasting:swizzle)$(action)骗徒之策略/$重排栈的一致。给定负值会从开头起进行重排,而非从末尾起。" } } @@ -86,12 +94,17 @@ deg_to_rad: "弧度之纯化", rad_to_deg: "角度之纯化", normalize: "归一之纯化", + invert: "反向之纯化", + rand_zero: "熵之纯化", + rand_range: "熵之馏化", + rand_vec: "混沌之精思", rot_about_x: "俯仰之馏化", rot_about_y: "偏航之馏化", rot_about_z: "滚转之馏化", cons_about_x: "俯仰之纯化", cons_about_y: "偏航之纯化", cons_about_z: "滚转之纯化", + scientific_exp: "科学计数之纯化", "nocon/": { greater: "比较之策略:至大", @@ -104,9 +117,11 @@ len_neq: "比较之策略:长度不等", }, - scientific_exp: "科学计数之纯化", - split_list: "分割之策略", + "del_element/": { + first: "消除之策略", + all: "消除之策略,第二型" + }, swindle_list: "骗徒之馏化" },