From 82e0bf3b228b4ca8c947435e776b56b8f19a5b32 Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Wed, 15 Oct 2025 03:30:23 +0800
Subject: [PATCH 01/14] Hexic update
---
.../en_us/entries/addon/hexic/nbt.json | 9 --
.../zh_cn/entries/addon/hexic/nbt.json | 9 --
.../entries/addon/hexic/addendum/strings.json | 16 +++
.../entries/addon/hexic/greater_reveal.json | 18 ++++
.../en_us/entries/addon/hexic/maps.json | 65 +++++++++++
.../entries/addon/hexic/media_bundle.json | 16 +++
.../en_us/entries/addon/hexic/mediaweave.json | 9 ++
.../en_us/entries/addon/hexic/metatables.json | 39 +++++++
.../en_us/entries/addon/hexic/nbt.json | 58 ++++++++++
.../en_us/entries/addon/hexic/shard.json | 10 ++
.../en_us/entries/addon/hexic/staffcast.json | 25 +++++
.../entries/addon/hexic/stringworms.json | 9 ++
.../entries/addon/hexic/addendum/strings.json | 16 +++
.../entries/addon/hexic/greater_reveal.json | 18 ++++
.../zh_cn/entries/addon/hexic/maps.json | 65 +++++++++++
.../entries/addon/hexic/media_bundle.json | 16 +++
.../zh_cn/entries/addon/hexic/mediaweave.json | 9 ++
.../zh_cn/entries/addon/hexic/metatables.json | 39 +++++++
.../zh_cn/entries/addon/hexic/nbt.json | 58 ++++++++++
.../zh_cn/entries/addon/hexic/shard.json | 10 ++
.../zh_cn/entries/addon/hexic/staffcast.json | 25 +++++
.../entries/addon/hexic/stringworms.json | 9 ++
.../modrinth-hexic/hexic/lang/en_us.json | 101 ++++++++++++++++++
.../modrinth-hexic/hexic/lang/zh_cn.json | 101 ++++++++++++++++++
24 files changed, 732 insertions(+), 18 deletions(-)
delete mode 100644 projects/1.20-fabric/assets/1UNKNOWN/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/nbt.json
delete mode 100644 projects/1.20-fabric/assets/1UNKNOWN/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/nbt.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/addendum/strings.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/greater_reveal.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/maps.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/media_bundle.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/mediaweave.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/metatables.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/nbt.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/shard.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/staffcast.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/stringworms.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/addendum/strings.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/greater_reveal.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/maps.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/media_bundle.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/mediaweave.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/metatables.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/nbt.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/shard.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/staffcast.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/stringworms.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
diff --git a/projects/1.20-fabric/assets/1UNKNOWN/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/nbt.json b/projects/1.20-fabric/assets/1UNKNOWN/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/nbt.json
deleted file mode 100644
index 994547e82d04..000000000000
--- a/projects/1.20-fabric/assets/1UNKNOWN/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/nbt.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "Nature's Records",
- "category": "hexcasting:patterns",
- "icon": "minecraft:glow_ink_sac",
- "advancement": "hexcasting:enlightenment",
- "pages": [
- "So many things... Chest items? Tools breaking? Did I leave iron in my pack? Or was it beef?
How does Nature $(o)remember/$?
There’s... there $(l)must/$ be a $(o)structure/$ to it.
And if there is—
then I can $(o)shatter/$ it.
$(l)Nature will kneel. It must kneel./$"
- ]
-}
diff --git a/projects/1.20-fabric/assets/1UNKNOWN/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/nbt.json b/projects/1.20-fabric/assets/1UNKNOWN/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/nbt.json
deleted file mode 100644
index f744e32acf35..000000000000
--- a/projects/1.20-fabric/assets/1UNKNOWN/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/nbt.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "自然的记录",
- "category": "hexcasting:patterns",
- "icon": "minecraft:glow_ink_sac",
- "advancement": "hexcasting:enlightenment",
- "pages": [
- "信息太多了……箱子里的物品?工具有没有坏?我的包里是不是还有几锭铁?还是说留了几块牛肉?
自然到底是怎么$(o)记住/$的?
这些信息肯定……$(l)肯定/$有其$(o)结构/$。
要是真的有——
我就能$(o)打破/$它。
$(l)自然将臣服。它必然臣服。/$"
- ]
-}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/addendum/strings.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/addendum/strings.json
new file mode 100644
index 000000000000..8c9a3a579094
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/addendum/strings.json
@@ -0,0 +1,16 @@
+{
+ "name": "Strings: An Addendum",
+ "icon": "minecraft:string",
+ "category": "hexcasting:patterns",
+ "pages": [
+ "For some strange reason, I feel the need to document this pattern in a separate chapter, despite its resemblance to $(l:patterns/strings#moreiotas:string/chat/caster)Whisper Reflection/$ — something about \"mods shouldn't modify other mods' entries\" and all that.",
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:murmur",
+ "anchor": "hexic:murmur",
+ "input": "",
+ "output": "str",
+ "text": "Adds the phrase on the $(o)tip of my tongue/$ to the stack, regardless of whether I intend to say it."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/greater_reveal.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/greater_reveal.json
new file mode 100644
index 000000000000..1e0659eda14e
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/greater_reveal.json
@@ -0,0 +1,18 @@
+{
+ "name": "Greater Reveal",
+ "category": "hexcasting:patterns",
+ "icon": "minecraft:bell",
+ "pages": [
+ "Though my _Hexes can use $(l:hexcasting:patterns/basics#hexcasting:print)$(action)Reveal/$ to transmit information to my mind, the resulting message is ephemeral — unless I stand still and reflect on what I've heard recently, it will slip away like anything else someone says. Additionally, constantly hammering my mind with iotas distracts me from more important things.",
+ "Thus, I've devised a new pattern of my own. It's similar to $(l:hexcasting:patterns/basics#hexcasting:print)$(action)Reveal/$, but the message is lodged well within my mind, and I forget it instantly if I replace it with something else. It can also take a list of messages, for convenience.",
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:reveal",
+ "op_id": "hexic:reveal",
+ "input": "[iota] | iota",
+ "output": "",
+ "text": "Takes a list of iotas (or a single non-iota, which is treated as a list with one element) and displays them permanently to the caster. Displayed iotas survive all methods that would clear a normal Reveal, and can only be cleared by another casting of Greater Reveal."
+ },
+ "$(o)To be a Hexcaster is to glimpse a truth that might best be hidden./$"
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/maps.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/maps.json
new file mode 100644
index 000000000000..6c87ecc6f4c7
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/maps.json
@@ -0,0 +1,65 @@
+{
+ "name": "Maps",
+ "category": "hexcasting:patterns",
+ "icon": "minecraft:filled_map",
+ "advancement": "hexcasting:root",
+ "pages": [
+ "Maps are an efficient structure holding pairings of some iota to some other iota. While this is perfectly possible using merely list operations, dedicated map iotas use some arcane substance called a '$(thing)Hash/$'. While this doesn't reduce the $(o)operations/$ required to access a map, it desperately reduces the load on Nature, nearing O(1) for most access.",
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:empty_map",
+ "anchor": "hexic:empty_map",
+ "input": "",
+ "output": "map<⊥, ⊥>",
+ "text": "Creates a new empty map for my usage."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:add",
+ "anchor": "hexcasting:add",
+ "input": "map, map",
+ "output": "map",
+ "text": "Merges two maps together. Maps cannot have duplicate items: any entry in the latter map will override that in the first map."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:sub",
+ "anchor": "hexcasting:sub",
+ "input": "map, map",
+ "output": "map",
+ "text": "Removes every entry in the first map that is found in the second map. The values in the second map are ignored."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:index",
+ "anchor": "hexcasting:index",
+ "input": "map, k",
+ "output": "v?",
+ "text": "Disintegrates the map, returning only the value associated with the given key. O(1), unlike scanning a list."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:unappend",
+ "anchor": "hexcasting:unappend",
+ "input": "map",
+ "output": "map, (k, v)?",
+ "text": "Shaves off one element of a map. Which element gets shaved off is undefined and subject to Nature's whims. If used on an empty map, returns two nulls."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:replace",
+ "anchor": "hexcasting:replace",
+ "input": "map, k, v",
+ "output": "map",
+ "text": "Replaces the element associated with $(n)k/$ with $(n)v/$. If $(n)k/$ is not present in the map, the entry is created."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:remove_from",
+ "anchor": "hexcasting:remove_from",
+ "input": "map, k",
+ "output": "map",
+ "text": "Throws out the map's association for the given key. If there is no matching association, the map is returned unchanged."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/media_bundle.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/media_bundle.json
new file mode 100644
index 000000000000..0979edbf81b5
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/media_bundle.json
@@ -0,0 +1,16 @@
+
+{
+ "name": "Media Pouches",
+ "category": "hexcasting:items",
+ "icon": "hexic:small_preferred_bundle",
+ "sortnum": 1,
+ "pages": [
+ "Though a $(l:items/phials)$(item)Phial/$ is my ultimate goal for _media storage, knitting a pouch out of $(l:addon/hexic/mediaweave)$(item)mediaweave/$ may help me manage my amethyst better. Only a few cloths are needed to give me some decent capacity. Each pouch holds six slots, and I can extend their capacity to twelve with a bit more weave. A small pouch may go within a large pouch, but neither size can be placed within itself.",
+ "Upon Nature's request for _media, my pouches will offer themselves and their contents first of all; similarly, if I attempt to $(l:patterns/spells/hexcasting#hexcasting:recharge)$(action)Recharge/$ a pouch, the inserted _media will form a 'cloud' of sorts inside, which will settle into any $(l:items/hexcasting)$(item)trinket/$ or similar within.",
+ {
+ "type": "patchouli:text",
+ "advancement": "hexcasting:enlightenment",
+ "text": "Something strange about these pouches I have noticed. I can feel the _media $(o)hesitant/$— $(o)resistant/$, even— to leave the pouch. Only the media Nature— no, I— ask for is pulled from the pouch. As amethyst shatters inside, I feel the leftover _media bouncing, ping-ponging, $(o)trapped/$ in the walls until it evaporates. A battery within— my beloved $(l:items/phials)$(item)Phial/$, or an $(l:items/hexcasting)$(item)Artifact/$ of mine, could grab bits of this cloud, with none of the costs $(l:patterns/spells/hexcasting#hexcasting:recharge)$(action)directing the clouds myself/$ incurs."
+ }
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/mediaweave.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/mediaweave.json
new file mode 100644
index 000000000000..b18a138be653
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/mediaweave.json
@@ -0,0 +1,9 @@
+{
+ "name": "Mediaweave",
+ "category": "hexcasting:items",
+ "icon": "hexic:preferred_mediaweave",
+ "advancement": "hexcasting:root",
+ "pages": [
+ "A perversion of $(l:hexcasting:patterns/spells/blockworks#hexcasting:edify)$(action)Edify Sapling/$ lets me knit a fabric out of wool and _media. It acts similar to a $(l:hexcasting:items/thought_knot)$(item)Thought-Knot/$, but can only hold _Hexes — standard iotas fizzle instead of embedding themselves in the fabric. Additionally, the weave, radiating with raw energy, can passively exert force on nearby _media, with no mind involved — nothing as powerful as a _Hex, but still useful nonetheless."
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/metatables.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/metatables.json
new file mode 100644
index 000000000000..f0e626cdb76d
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/metatables.json
@@ -0,0 +1,39 @@
+{
+ "name": "Iota Patching",
+ "category": "hexcasting:patterns",
+ "icon": "minecraft:calibrated_sculk_sensor",
+ "advancement": "hexcasting:root",
+ "pages": [
+ "I've discovered a way to create a new type of iota — an abhorrence against Nature of my own doing. This pattern weaves a 'sheath' of _media out of some iota, letting me customize several attributes of the new iota. Though this can make my spells more expressive, this ability is not to be taken lightly — I cannot imagine the mischief others would do with these 'patchwork' iotas.",
+ "To assemble a patchwork iota, I must provide four source iotas:$(br)$(li)The 'userdata' iota, passed to my overload _Hexes.$(li)The 'display' iota, visible to my eyes.$(li)A color for the iota, as an RGB vector in the 0-1 range.$(li)A pointer to an $(thing)overload map./$",
+ "Such an 'overload map' is merely a regular $(l:addon/hexic/maps)$(thing)Map/$ iota (mapping patterns to the _Hexes they should be replaced with), but stored within a $(l:properties)$(thing)Property/$. I assume that Nature's reason for boxing like this is to save space: it's likely I'll have many patched iotas all using the same overloads. This also gives me the convenience of updating every instance with merely $(l:properties#hexcellular:set_property)$(action)Schrödinger's Gambit/$, rather than finding and updating them all by hand.",
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:metatable",
+ "op_id": "hexic:metatable",
+ "input": "iota, iota, vec, property",
+ "output": "patchwork",
+ "text": "$(br)Constructs a Patchwork iota from the userdata (iota stored inside), display iota (visible to my eyes), color, and an overload map."
+ },
+ {
+ "type": "patchouli:text",
+ "flag": "!mod:hexdoc",
+ "text": "These $(thing)overload maps/$ resemble a technique I've seen before — the concept of redefining patterns on a fundamental level resembles the moon cultists' (little time to explain) $(l:https://www.lua.org/pil/13.html)metatables/$, which allow associating a table with another table to redefine its operations. When my 'metamethods' are invoked, the userdata iota is pushed to the top of the stack. All other information about the patchwork disintegrates: I'll need to recreate it from scratch (maybe I should use a"
+ },
+ {
+ "type": "patchouli:text",
+ "flag": "!mod:hexdoc",
+ "text": "'constructor' macro?) if I want to return a new iota of the same type.$(br2)Important note: unlike these 'metatables' I've heard about, patchwork $(o)replaces/$ the behavior of the underlying iota. For example, operators such as won't work on two patchwork numbers unless I define it myself. However, I feel uneasy relying on this behavior — Nature will be perfectly happy to change this at any moment."
+ },
+ {
+ "type": "patchouli:text",
+ "flag": "mod:hexdoc",
+ "text": "These $(thing)overload maps/$ resemble a technique I've seen before — the concept of redefining patterns on a fundamental level resembles the moon cultists' (little time to explain) $(l:https://www.lua.org/pil/13.html)metatables/$, which allow associating a table with another table to redefine its operations. When my 'metamethods' are invoked, the userdata iota is pushed to the top of the stack. All other information about the patchwork disintegrates: I'll need to recreate it from scratch (maybe I should use a 'constructor' macro?) if I want to return a new iota of the same type."
+ },
+ {
+ "type": "patchouli:text",
+ "flag": "mod:hexdoc",
+ "text": "Important note: unlike these 'metatables' I've heard about, patchwork $(o)replaces/$ the behavior of the underlying iota. For example, operators such as won't work on two patchwork numbers unless I define it myself. However, I feel uneasy relying on this behavior — Nature will be perfectly happy to change this at any moment."
+ }
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/nbt.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/nbt.json
new file mode 100644
index 000000000000..3271904a1328
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/nbt.json
@@ -0,0 +1,58 @@
+{
+ "name": "Nature's Records",
+ "category": "hexcasting:patterns",
+ "icon": "minecraft:glow_ink_sac",
+ "advancement": "hexcasting:enlightenment",
+ "pages": [
+ "My studies have led me to understand the fabric undermining every facet of this world. Nature's memory manifests itself as a recursive structure of 'tags' of several types. I've documented these over the next few pages. Though many types of tag appear to be redundant with each other, I must keep in mind that they are not freely interchangeable — and since I am dealing directly with Nature's memories, such a mistake could be worse than fatal.",
+ "If everything in the world is merely reduced to a tag... what am I? Is my entire existence reducible to a pile of bytes? At least this gives me some comfort, knowing that the villagers I've sacrificed in my journey truly had no life of their own... what about mine? What am I? Were the words I am writing in this very book, just a manifestation of random ones and zeroes?$(2br)I best not ponder too much. Though I may pry into everything I wish in detail, doing so would suck the joy from this illusion.",
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/lift1",
+ "op_id": "hexic:nbt/lift1",
+ "input": "number",
+ "output": "nbt",
+ "text": "Converts a number into a Byte tag: an integer between -128 and 127, inclusive."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/lift2",
+ "op_id": "hexic:nbt/lift2",
+ "input": "number",
+ "output": "nbt",
+ "text": "Converts a number into a Short tag, between -65536 and 65535."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/lift4",
+ "op_id": "hexic:nbt/lift4",
+ "input": "number",
+ "output": "nbt",
+ "text": "Converts a number into an Int tag, between roughly negative 2 billion and positive 2 billion."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/lift8",
+ "op_id": "hexic:nbt/lift8",
+ "input": "number",
+ "output": "nbt",
+ "text": "Converts a number into a Long tag: bounded to 9 quintillion, which I will likely never reach."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/liftd",
+ "op_id": "hexic:nbt/liftd",
+ "input": "number",
+ "output": "nbt",
+ "text": "Converts a number into a Double tag. Oddly, doubles seem to perfectly correspond to my knowledge of numbers, plus the ability to represent infinities and non-numbers."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/liftf",
+ "op_id": "hexic:nbt/liftf",
+ "input": "number",
+ "output": "nbt",
+ "text": "Converts a number into a Float tag. These seem similar to Doubles, albeit with less precision."
+ }
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/shard.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/shard.json
new file mode 100644
index 000000000000..22127f31fe36
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/shard.json
@@ -0,0 +1,10 @@
+{
+ "name": "Echo Shards",
+ "category": "hexcasting:items",
+ "icon": "minecraft:echo_shard",
+ "advancement": "hexcasting:root",
+ "pages": [
+ "Ever since acquiring a few $(item)Echo Shards/$ from one of those ancient cities, my _Hexes have felt... restrained in a way, as if the shards were trying to absorb them. Holding a shard in my other hand would let it do so, and would let me release all of the patterns I've drawn at once.",
+ "This behavior seems rather useful for quickly casting prepared spells. For example, if I let my shard absorb a simple raycast Hex, I could release it all-at-once against an entity rather than having to catch it off-guard standing still. Patterns released from an $(item)Echo Shard/$ are cast against my staff stack, letting me use the newly-found entity by hand."
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/staffcast.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/staffcast.json
new file mode 100644
index 000000000000..20f43061f0ca
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/staffcast.json
@@ -0,0 +1,25 @@
+{
+ "name": "Staffcasting Patterns",
+ "category": "hexcasting:patterns",
+ "icon": "hexcasting:staff/mindsplice",
+ "pages": [
+ "These patterns force me to cast a _Hex as if I drew it by hand. There are two variants of this pattern: the Greater version keeps the stack from the outside, while the Lesser version uses my staff's stack. My ravenmind is preserved in both cases.",
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:staffcast_factory",
+ "op_id": "hexic:staffcast_factory",
+ "input": "∀αβ. α, [α → β]",
+ "output": "β",
+ "text": "Coerces my staff to cast a _Hex. The hex uses the stack of the outer casting environment."
+ },
+ "Something's odd about how these patterns are named. I can simulate the Greater variant with merely a wrapper around the Lesser variant, but accessing the staff's stack itself is impossible with purely Greater. Does this not make Lesser strictly more powerful than Greater?",
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:staffcast_factory/lazy",
+ "op_id": "hexic:staffcast_factory/lazy",
+ "input": "[? → ?]",
+ "output": "",
+ "text": "Coerces my staff to cast a _Hex. The hex uses the stack of the staff itself, but keeps the outer environment's ravenmind."
+ }
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/stringworms.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/stringworms.json
new file mode 100644
index 000000000000..1646daa2ec08
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/stringworms.json
@@ -0,0 +1,9 @@
+{
+ "name": "Stringworms",
+ "category": "hexcasting:items",
+ "advancement": "hexcasting:root",
+ "icon": "hexic:preferred_stringworm",
+ "pages": [
+ "A strange object I've discovered, stringworms are worm imitations made from fuzz. I'd imagine some people would have fun playing with them, but they have no use in my studies."
+ ]
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/addendum/strings.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/addendum/strings.json
new file mode 100644
index 000000000000..72b318f79691
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/addendum/strings.json
@@ -0,0 +1,16 @@
+{
+ "name": "字符串:附录",
+ "icon": "minecraft:string",
+ "category": "hexcasting:patterns",
+ "pages": [
+ "不知为什么,我总觉得这个图案应该新开一章介绍,尽管它$(l:patterns/strings#moreiotas:string/chat/caster)耳语之精思/$很像。大概是因为“模组不应改动其他模组的条目”吧。",
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:murmur",
+ "anchor": "hexic:murmur",
+ "input": "",
+ "output": "str",
+ "text": "将$(o)在我嘴边/$的话语压入栈中,后续是否要说出不影响结果。"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/greater_reveal.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/greater_reveal.json
new file mode 100644
index 000000000000..30c0c8679418
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/greater_reveal.json
@@ -0,0 +1,18 @@
+{
+ "name": "卓越揭示",
+ "category": "hexcasting:patterns",
+ "icon": "minecraft:bell",
+ "pages": [
+ "虽然我的$(hex)咒术/$可以用$(l:hexcasting:patterns/basics#hexcasting:print)$(action)揭示/$向我的意识传输信息,所得的结果却总是难以把握。除非我站定,仔细想我刚刚听到了什么,不然它就会隐入到其他人说的话中,以至于完全无法分辨。而且,不断往意识里塞 iota 也让我根本没法专心做要紧的事情。",
+ "因此,我自己设计了一个图案。它的功能和$(l:hexcasting:patterns/basics#hexcasting:print)$(action)揭示/$类似,但发来的消息会牢牢嵌在我的意识里,而且一经替换就会立刻遗忘。为方便起见,它还能接受一个消息列表。",
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:reveal",
+ "op_id": "hexic:reveal",
+ "input": "[iota] | iota",
+ "output": "",
+ "text": "接受 iota 列表(或单个非 iota,此时视作单元素列表)并永久性将其展示给施法者。清除普通揭示的方法无法清除此操作展示的 iota,而是只能通过再次施放卓越揭示清除。"
+ },
+ "$(o)成为咒术师,就是去探索本不应被知晓的真相。/$"
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/maps.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/maps.json
new file mode 100644
index 000000000000..024d071e3e69
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/maps.json
@@ -0,0 +1,65 @@
+{
+ "name": "映射",
+ "category": "hexcasting:patterns",
+ "icon": "minecraft:filled_map",
+ "advancement": "hexcasting:root",
+ "pages": [
+ "映射是能存储 iota 对的高效结构。虽然这种功能只靠列表操作也能做到,但专门设计的映射 iota 用到了某种奥秘物件,称作“$(thing)哈希/$”。这种区别并不会减少访问映射所需$(o)运算符/$的数量,却能大幅降低自然的负载,大多数访问下接近于 O(1)。",
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:empty_map",
+ "anchor": "hexic:empty_map",
+ "input": "",
+ "output": "map<⊥, ⊥>",
+ "text": "创建一个空映射以供使用。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:add",
+ "anchor": "hexcasting:add",
+ "input": "map, map",
+ "output": "map",
+ "text": "合并两个映射。映射中不允许存在重复项:后一映射的项会覆盖前一映射的。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:sub",
+ "anchor": "hexcasting:sub",
+ "input": "map, map",
+ "output": "map",
+ "text": "从第一个映射中移除第二个映射的项。比对时忽略第二个映射中项的值。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:index",
+ "anchor": "hexcasting:index",
+ "input": "map, k",
+ "output": "v?",
+ "text": "拆解映射,返回与所给键相关的值。和扫描列表不一样,此操作的复杂度是 O(1)。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:unappend",
+ "anchor": "hexcasting:unappend",
+ "input": "map",
+ "output": "map, (k, v)?",
+ "text": "从映射中取出一个项。删去哪个项没有定论,完全由自然随意决定。对空映射使用时返回两个 Null。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:replace",
+ "anchor": "hexcasting:replace",
+ "input": "map, k, v",
+ "output": "map",
+ "text": "将键为 $(n)k/$ 的项的值换为 $(n)v/$。若映射内没有 $(n)k/$ 键,则新建项。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:remove_from",
+ "anchor": "hexcasting:remove_from",
+ "input": "map, k",
+ "output": "map",
+ "text": "从映射中删去所给键对应的项。若未找到相应项,则原样返回映射。"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/media_bundle.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/media_bundle.json
new file mode 100644
index 000000000000..22ff4f4f69ea
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/media_bundle.json
@@ -0,0 +1,16 @@
+
+{
+ "name": "媒质口袋",
+ "category": "hexcasting:items",
+ "icon": "hexic:small_preferred_bundle",
+ "sortnum": 1,
+ "pages": [
+ "$(l:items/phials)$(item)媒质之瓶/$是我在$(media)媒质/$存储研究上的终极目标,不过,用$(l:addon/hexic/mediaweave)$(item)媒质布匹/$编织出的口袋也可以协助我管理紫水晶。要的布匹数量不多,造出的口袋容量却不小。每个口袋都有六个槽位,再花少量布匹可以扩充到十二个。小号口袋可以放在大号口袋里面,但两者都不接受同尺寸的口袋。",
+ "在自然要求支付$(media)媒质/$时,口袋的内容物会优先消耗。与之类似,对口袋$(l:patterns/spells/hexcasting#hexcasting:recharge)$(action)重新充能/$时,充入的$(media)媒质/$会在口袋内形成某种“云”,而后就将凝集在口袋内的任意$(l:items/hexcasting)$(item)缀品/$及其类似物。",
+ {
+ "type": "patchouli:text",
+ "advancement": "hexcasting:enlightenment",
+ "text": "我注意到这些口袋有个怪性质。我能感受到,$(media)媒质/$$(o)不愿意/$,甚至是$(o)抗拒/$离开口袋。只有自然——不对,我——支取的媒质会离开。随着其中紫水晶的破碎,我能感受到残余的$(media)媒质/$在口袋中回弹、反弹,可以说是$(o)困在/$了口袋中,直到最终蒸发消散。口袋中的储库——我最爱的$(l:items/phials)$(item)媒质之瓶/$,或是$(l:items/hexcasting)$(item)造物/$——会自发吸引媒质云,$(l:patterns/spells/hexcasting#hexcasting:recharge)$(action)我亲自指引媒质云/$也因此不会产生消耗。"
+ }
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/mediaweave.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/mediaweave.json
new file mode 100644
index 000000000000..c070a5ae947d
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/mediaweave.json
@@ -0,0 +1,9 @@
+{
+ "name": "媒质布匹",
+ "category": "hexcasting:items",
+ "icon": "hexic:preferred_mediaweave",
+ "advancement": "hexcasting:root",
+ "pages": [
+ "我化用了$(l:hexcasting:patterns/spells/blockworks#hexcasting:edify)$(action)启迪树苗/$,将羊毛和$(media)媒质/$编织成了布匹。它的行为与$(l:hexcasting:items/thought_knot)$(item)结念绳/$类似,但它只接受$(hex)咒术/$;其他的 iota 不会融入布匹而是会消散。此外,这块布匹还散发着能量,能常态向周围的$(media)媒质/$施加力,无需意识参与。没有比传统的$(hex)咒术/$强到哪里去,却依然很有用。"
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/metatables.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/metatables.json
new file mode 100644
index 000000000000..6f994a141c46
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/metatables.json
@@ -0,0 +1,39 @@
+{
+ "name": "Iota 修补",
+ "category": "hexcasting:patterns",
+ "icon": "minecraft:calibrated_sculk_sensor",
+ "advancement": "hexcasting:root",
+ "pages": [
+ "我找到了制造新种类 iota 的方法——由我对自然行径的憎恶催生。这个图案会在 iota 外部编织一层$(media)媒质/“鞘”,以让我自定义新 iota 的多个属性。虽然这么做会让我的咒术更昂贵,但也不应轻视这种力量——我无法想象,其他人靠这些“修补”iota 能干出什么恶事。",
+ "构造修补 iota 时,必须提供 4 个来源 iota:$(br)$(li)自定义数据(userdata),真正传递给重载$(hex)咒术/$的 iota。$(li)所谓“展示”iota,我视角下 iota 的样子。$(li)Iota 的颜色,形式为 RGB 向量,分量值域为 0 到 1。$(li)指向$(thing)重载映射/$的指针。",
+ "此处提到的“重载映射”只是一个普通的$(l:addon/hexic/maps)$(thing)映射/$ iota(图案至$(hex)咒术/$的映射,后者替代前者执行),但需整体存储在$(l:properties)$(thing)质性/$内。我推测自然进行封装是为了省空间,因为我可能会在多个修补 iota 中用到同一个重载映射。这同时也方便我更新所有实例——用一条$(l:properties#hexcellular:set_property)$(action)薛定谔之策略/$就可以了,不需要逐一找出更新。",
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:metatable",
+ "op_id": "hexic:metatable",
+ "input": "iota, iota, vec, property",
+ "output": "patchwork",
+ "text": "$(br)使用自定义数据(userdata,内部存储的 iota)、展示 iota(实际看见的 iota)、颜色、重载映射创建一个修补 iota。"
+ },
+ {
+ "type": "patchouli:text",
+ "flag": "!mod:hexdoc",
+ "text": "这些$(thing)重载映射/$和我之前见过的一种技巧很像:在基础层面上重新定义图案。那些月之邪教徒(没位置解释)用到的$(l:https://www.lua.org/pil/13.html)元表/$——关联两张表来重新定义运算符——也跟它很类似。每当唤起我这边的“元方法”时,即会将自定义数据压栈。修补 iota 的其他信息则都遗失了;如果要返回同种 iota,就需要从头再构建一遍。也许可以用个“构造”宏?"
+ },
+ {
+ "type": "patchouli:text",
+ "flag": "!mod:hexdoc",
+ "text": "重要注意事项:和我听说的“元表”不一样,修补会$(o)替换/$其下 iota 的行为。比如说,等运算符无法作用于两个修补后的数,除非我自行定义行为。不过,我总觉得这个特性不太值得信赖;自然随时都有可能修改这个特性。"
+ },
+ {
+ "type": "patchouli:text",
+ "flag": "mod:hexdoc",
+ "text": "这些$(thing)重载映射/$和我之前见过的一种技巧很像:在基础层面上重新定义图案。那些月之邪教徒(没位置解释)用到的$(l:https://www.lua.org/pil/13.html)元表/$——关联两张表来重新定义运算符——也跟它很类似。每当唤起我这边的“元方法”时,即会将自定义数据压栈。修补 iota 的其他信息则都遗失了;如果要返回同种 iota,就需要从头再构建一遍。也许可以用个“构造”宏?"
+ },
+ {
+ "type": "patchouli:text",
+ "flag": "mod:hexdoc",
+ "text": "重要注意事项:和我听说的“元表”不一样,修补会$(o)替换/$其下 iota 的行为。比如说,等运算符无法作用于两个修补后的数,除非我自行定义行为。不过,我总觉得这个特性不太值得信赖;自然随时都有可能修改这个特性。"
+ }
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/nbt.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/nbt.json
new file mode 100644
index 000000000000..109ca36241aa
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/nbt.json
@@ -0,0 +1,58 @@
+{
+ "name": "自然的记录",
+ "category": "hexcasting:patterns",
+ "icon": "minecraft:glow_ink_sac",
+ "advancement": "hexcasting:enlightenment",
+ "pages": [
+ "我的研究向我揭示了这个世界中现实之纤维的方方面面。自然的记录表现为多个类型的“标签”构成的递归式结构。我在后面几页记述了它们。虽然有些类型在其他类型面前像是冗余,我也必须时刻小心,要记住它们不可随意互换。而因为我操纵的是自然的记录本身,犯下的错可能会远超所谓“致命”的范畴。",
+ "如果万事万物都能简化成标签……那我是什么?我的存在难道也能简化成一堆数据?不过这起码让我安了心,我先前牺牲的所有村民本质上没有它们自己的生命……那我呢?我是什么?我现在在这本书上写下的字,难道只是一串零和一?$(2br)我最好别想得太多。我能随意操控万事万物的所有侧面,想太多只会让这种能力变得无趣。",
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/lift1",
+ "op_id": "hexic:nbt/lift1",
+ "input": "number",
+ "output": "nbt",
+ "text": "将数转变成字节标签:在 -128 到 127 之间(两端闭)的整数。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/lift2",
+ "op_id": "hexic:nbt/lift2",
+ "input": "number",
+ "output": "nbt",
+ "text": "将数转变成短整型标签:在 -65536 到 65535 之间。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/lift4",
+ "op_id": "hexic:nbt/lift4",
+ "input": "number",
+ "output": "nbt",
+ "text": "将数转变成整型标签:在大约负 20 亿到正 20 亿之间。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/lift8",
+ "op_id": "hexic:nbt/lift8",
+ "input": "number",
+ "output": "nbt",
+ "text": "将数转变成长整型标签:范围约是 900 京,大概率永远都超不出去。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/liftd",
+ "op_id": "hexic:nbt/liftd",
+ "input": "number",
+ "output": "nbt",
+ "text": "将数转变为双精度浮点型标签。奇怪的是,双精度浮点型似乎和我对数的认知完全一致,而且还有表示无限和非数的能力。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:nbt/liftf",
+ "op_id": "hexic:nbt/liftf",
+ "input": "number",
+ "output": "nbt",
+ "text": "将数转变为单精度浮点型标签。它们和双精度浮点型很相似,但其精度较低。"
+ }
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/shard.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/shard.json
new file mode 100644
index 000000000000..f17c395b0d71
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/shard.json
@@ -0,0 +1,10 @@
+{
+ "name": "回响碎片",
+ "category": "hexcasting:items",
+ "icon": "minecraft:echo_shard",
+ "advancement": "hexcasting:root",
+ "pages": [
+ "自从我在那些远古城市里找到几个$(item)回响碎片/$后,我就觉得我的$(hex)咒术/$有些……被限制了,好像那些碎片在吸收它们。在另一只手中持有回响碎片,它就会吸收我绘制的所有图案,而后在同一时刻一起施放。",
+ "此行为在快速施放写好的咒术时比较有用。比如说,让回响碎片吸收一则简单的射线追踪咒术,后续就可以对着实体一次性施放,而不用等它走神站着不动时再一个个图案绘制。$(item)回响碎片/$运行的图案会使用我的法杖栈。所以,前例追踪到的实体可在法杖处直接使用。"
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/staffcast.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/staffcast.json
new file mode 100644
index 000000000000..34432d911fcd
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/staffcast.json
@@ -0,0 +1,25 @@
+{
+ "name": "法杖施法图案",
+ "category": "hexcasting:patterns",
+ "icon": "hexcasting:staff/mindsplice",
+ "pages": [
+ "这些图案施放$(hex)咒术/$的方式与我亲自绘制图案一致。此类图案共有两种:卓越版本会借用外部栈,初等版本会使用法杖栈。两种图案均会保留渡鸦之思。",
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:staffcast_factory",
+ "op_id": "hexic:staffcast_factory",
+ "input": "∀αβ. α, [α → β]",
+ "output": "β",
+ "text": "让法杖施放$(hex)咒术/$。施放时会使用外部施法环境的栈。"
+ },
+ "这些图案的名称有些怪。在初等版本外套一层包装器,即可模拟卓越版本;但仅使用卓越版本却完全无法访问法杖栈。严格说来,不应该是初等版本比卓越版本更强大吗?",
+ {
+ "type": "hexcasting:pattern",
+ "anchor": "hexic:staffcast_factory/lazy",
+ "op_id": "hexic:staffcast_factory/lazy",
+ "input": "[? → ?]",
+ "output": "",
+ "text": "让法杖施放$(hex)咒术/$。咒术会使用法杖自身的栈,但会保留其外部环境的渡鸦之思。"
+ }
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/stringworms.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/stringworms.json
new file mode 100644
index 000000000000..da03b139c310
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/stringworms.json
@@ -0,0 +1,9 @@
+{
+ "name": "线虫",
+ "category": "hexcasting:items",
+ "advancement": "hexcasting:root",
+ "icon": "hexic:preferred_stringworm",
+ "pages": [
+ "线虫——我发现的一系列奇怪物品,它们是一团毛绒形成的、类似虫子的事物。有些人可能会跟它们玩得很开心,但我的研究里用不到它们。"
+ ]
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
new file mode 100644
index 000000000000..4df89bb62f84
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -0,0 +1,101 @@
+{
+ "hexcasting.action.hexic:nbt/lift1": "Secretary's Purification: Byte",
+ "hexcasting.action.hexic:nbt/lift2": "Secretary's Purification: Short",
+ "hexcasting.action.hexic:nbt/lift4": "Secretary's Purification: Integer",
+ "hexcasting.action.hexic:nbt/lift8": "Secretary's Purification: Long",
+ "hexcasting.action.hexic:nbt/liftf": "Secretary's Purification: Float",
+ "hexcasting.action.hexic:nbt/liftd": "Secretary's Purification: Double",
+ "hexcasting.action.hexic:nbt/literal/collection": "Secretary's Reflection: Collection",
+ "hexcasting.action.hexic:nbt/literal/list": "Secretary's Reflection: Vacant List",
+ "hexcasting.action.hexic:nbt/literal/array1": "Secretary's Reflection: Vacant Byte Array",
+ "hexcasting.action.hexic:nbt/literal/array2": "Secretary's Reflection: Vacant Short Array",
+ "hexcasting.action.hexic:nbt/literal/array4": "Secretary's Reflection: Vacant Integer Array",
+ "hexcasting.action.hexic:empty_map": "Vacant Reflection: Map",
+ "hexcasting.action.hexic:nbt/serialize": "Exporter's Purification",
+ "hexcasting.action.hexic:tripwire": "Tripwire Reflection",
+ "hexcasting.action.hexic:nbt/deserialize": "Importer's Purification",
+ "hexcasting.action.hexic:jvm/class_of_iota": "Classifier Purification II",
+ "hexcasting.action.hexic:jvm/class_of_payload": "Classifier Purification I",
+ "hexcasting.action.hexic:jvm/newinstance_unboxed": "Constructor Purification II",
+ "hexcasting.action.hexic:jvm/newinstance_boxed": "Constructor Purification I",
+ "hexcasting.action.hexic:malloc": "Allocator's Purification",
+ "hexcasting.action.hexic:free": "Deallocator's Gambit",
+ "hexcasting.action.hexic:staffcast_factory": "Lani's Greater Gambit",
+ "hexcasting.action.hexic:staffcast_factory/lazy": "Lani's Lesser Gambit",
+ "hexcasting.action.hexic:metatable": "Patchwork Exaltation",
+ "hexcasting.action.hexic:murmur": "Murmur Reflection",
+ "hexcasting.action.hexic:reveal": "Greater Reveal",
+
+ "hexcasting.iota.hexic:tripwire": "Tripwire",
+ "hexcasting.iota.hexic:nbt": "Tag",
+ "hexcasting.iota.hexic:variant": "Object Variant",
+ "hexcasting.iota.hexic:stack": "Object Stack",
+ "hexcasting.iota.hexic:jvm/class": "Class",
+ "hexcasting.iota.hexic:jvm/pointer": "Address",
+
+ "hexic.bad_metatable": "Expected a map in the §a%s§r property but got %s",
+
+ "item.hexic.black_mediaweave": "Black Mediaweave",
+ "item.hexic.blue_mediaweave": "Blue Mediaweave",
+ "item.hexic.brown_mediaweave": "Brown Mediaweave",
+ "item.hexic.cyan_mediaweave": "Cyan Mediaweave",
+ "item.hexic.gray_mediaweave": "Gray Mediaweave",
+ "item.hexic.green_mediaweave": "Green Mediaweave",
+ "item.hexic.light_blue_mediaweave": "Light Blue Mediaweave",
+ "item.hexic.light_gray_mediaweave": "Light Gray Mediaweave",
+ "item.hexic.lime_mediaweave": "Lime Mediaweave",
+ "item.hexic.magenta_mediaweave": "Magenta Mediaweave",
+ "item.hexic.orange_mediaweave": "Orange Mediaweave",
+ "item.hexic.pink_mediaweave": "Pink Mediaweave",
+ "item.hexic.purple_mediaweave": "Purple Mediaweave",
+ "item.hexic.red_mediaweave": "Red Mediaweave",
+ "item.hexic.white_mediaweave": "White Mediaweave",
+ "item.hexic.yellow_mediaweave": "Yellow Mediaweave",
+ "item.hexic.stringworm_action": "Stringworm",
+ "item.hexic.stringworm_hex": "Stringworm",
+ "item.hexic.stringworm_media": "Stringworm",
+ "item.hexic.stringworm_thing": "Stringworm",
+ "item.hexic.small_black_bundle": "Small Black Media Pouch",
+ "item.hexic.small_blue_bundle": "Small Blue Media Pouch",
+ "item.hexic.small_brown_bundle": "Small Brown Media Pouch",
+ "item.hexic.small_cyan_bundle": "Small Cyan Media Pouch",
+ "item.hexic.small_gray_bundle": "Small Gray Media Pouch",
+ "item.hexic.small_green_bundle": "Small Green Media Pouch",
+ "item.hexic.small_light_blue_bundle": "Small Light Blue Media Pouch",
+ "item.hexic.small_light_gray_bundle": "Small Light Gray Media Pouch",
+ "item.hexic.small_lime_bundle": "Small Lime Media Pouch",
+ "item.hexic.small_magenta_bundle": "Small Magenta Media Pouch",
+ "item.hexic.small_orange_bundle": "Small Orange Media Pouch",
+ "item.hexic.small_pink_bundle": "Small Pink Media Pouch",
+ "item.hexic.small_purple_bundle": "Small Purple Media Pouch",
+ "item.hexic.small_red_bundle": "Small Red Media Pouch",
+ "item.hexic.small_white_bundle": "Small White Media Pouch",
+ "item.hexic.small_yellow_bundle": "Small Yellow Media Pouch",
+ "item.hexic.large_black_bundle": "Large Black Media Pouch",
+ "item.hexic.large_blue_bundle": "Large Blue Media Pouch",
+ "item.hexic.large_brown_bundle": "Large Brown Media Pouch",
+ "item.hexic.large_cyan_bundle": "Large Cyan Media Pouch",
+ "item.hexic.large_gray_bundle": "Large Gray Media Pouch",
+ "item.hexic.large_green_bundle": "Large Green Media Pouch",
+ "item.hexic.large_light_blue_bundle": "Large Light Blue Media Pouch",
+ "item.hexic.large_light_gray_bundle": "Large Light Gray Media Pouch",
+ "item.hexic.large_lime_bundle": "Large Lime Media Pouch",
+ "item.hexic.large_magenta_bundle": "Large Magenta Media Pouch",
+ "item.hexic.large_orange_bundle": "Large Orange Media Pouch",
+ "item.hexic.large_pink_bundle": "Large Pink Media Pouch",
+ "item.hexic.large_purple_bundle": "Large Purple Media Pouch",
+ "item.hexic.large_red_bundle": "Large Red Media Pouch",
+ "item.hexic.large_white_bundle": "Large White Media Pouch",
+ "item.hexic.large_yellow_bundle": "Large Yellow Media Pouch",
+ "item.hexic.stringworm_pigmented": "Shimmering %s",
+
+ "tag.item.hexic.mediaweaves": "Mediaweave",
+ "hexic.media_bundle.items": "%s/%s",
+ "hexic.media.infinite": "%s: %s",
+ "hexic.media.finite": "%s: %s/%s (%s)",
+ "hexic.media.external": "Media",
+ "hexic.media.internal": "Trinkets",
+ "item.hexic.wizard": "Wizard",
+ "hexdoc.hexic.title": "Hexic",
+ "hexdoc.hexic.description": "Miscellaneous neat features and QoL patterns for Hex Casting"
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
new file mode 100644
index 000000000000..673b24cbbf72
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -0,0 +1,101 @@
+{
+ "hexcasting.action.hexic:nbt/lift1": "秘书之纯化:字节",
+ "hexcasting.action.hexic:nbt/lift2": "秘书之纯化:短整型",
+ "hexcasting.action.hexic:nbt/lift4": "秘书之纯化:整型",
+ "hexcasting.action.hexic:nbt/lift8": "秘书之纯化:长整型",
+ "hexcasting.action.hexic:nbt/liftf": "秘书之纯化:单精度浮点型",
+ "hexcasting.action.hexic:nbt/liftd": "秘书之纯化:双精度浮点型",
+ "hexcasting.action.hexic:nbt/literal/collection": "秘书之精思:容器",
+ "hexcasting.action.hexic:nbt/literal/list": "秘书之精思:空列表",
+ "hexcasting.action.hexic:nbt/literal/array1": "秘书之精思:空字节数组",
+ "hexcasting.action.hexic:nbt/literal/array2": "秘书之精思:空短整型数组",
+ "hexcasting.action.hexic:nbt/literal/array4": "秘书之精思:空整型数组",
+ "hexcasting.action.hexic:empty_map": "空无之精思:映射",
+ "hexcasting.action.hexic:nbt/serialize": "导出器之纯化",
+ "hexcasting.action.hexic:tripwire": "绊线之精思",
+ "hexcasting.action.hexic:nbt/deserialize": "导入器之纯化",
+ "hexcasting.action.hexic:jvm/class_of_iota": "判类器之纯化,第二型",
+ "hexcasting.action.hexic:jvm/class_of_payload": "判类器之纯化,第一型",
+ "hexcasting.action.hexic:jvm/newinstance_unboxed": "构造器之纯化,第二型",
+ "hexcasting.action.hexic:jvm/newinstance_boxed": "构造器之纯化,第一型",
+ "hexcasting.action.hexic:malloc": "分配器之纯化",
+ "hexcasting.action.hexic:free": "释放器之策略",
+ "hexcasting.action.hexic:staffcast_factory": "Lani之卓越策略",
+ "hexcasting.action.hexic:staffcast_factory/lazy": "Lani之初等策略",
+ "hexcasting.action.hexic:metatable": "修补之提整",
+ "hexcasting.action.hexic:murmur": "私语之精思",
+ "hexcasting.action.hexic:reveal": "卓越揭示",
+
+ "hexcasting.iota.hexic:tripwire": "绊线",
+ "hexcasting.iota.hexic:nbt": "标签",
+ "hexcasting.iota.hexic:variant": "物体变种",
+ "hexcasting.iota.hexic:stack": "物体组",
+ "hexcasting.iota.hexic:jvm/class": "类",
+ "hexcasting.iota.hexic:jvm/pointer": "地址",
+
+ "hexic.bad_metatable": "§a%s§r质性中本应包含一个映射,而实际为%s",
+
+ "item.hexic.black_mediaweave": "黑色媒质布匹",
+ "item.hexic.blue_mediaweave": "蓝色媒质布匹",
+ "item.hexic.brown_mediaweave": "棕色媒质布匹",
+ "item.hexic.cyan_mediaweave": "青色媒质布匹",
+ "item.hexic.gray_mediaweave": "灰色媒质布匹",
+ "item.hexic.green_mediaweave": "绿色媒质布匹",
+ "item.hexic.light_blue_mediaweave": "淡蓝色媒质布匹",
+ "item.hexic.light_gray_mediaweave": "淡灰色媒质布匹",
+ "item.hexic.lime_mediaweave": "黄绿色媒质布匹",
+ "item.hexic.magenta_mediaweave": "品红色媒质布匹",
+ "item.hexic.orange_mediaweave": "橙色媒质布匹",
+ "item.hexic.pink_mediaweave": "粉红色媒质布匹",
+ "item.hexic.purple_mediaweave": "紫色媒质布匹",
+ "item.hexic.red_mediaweave": "红色媒质布匹",
+ "item.hexic.white_mediaweave": "白色媒质布匹",
+ "item.hexic.yellow_mediaweave": "黄色媒质布匹",
+ "item.hexic.stringworm_action": "线虫",
+ "item.hexic.stringworm_hex": "线虫",
+ "item.hexic.stringworm_media": "线虫",
+ "item.hexic.stringworm_thing": "线虫",
+ "item.hexic.small_black_bundle": "小型黑色媒质口袋",
+ "item.hexic.small_blue_bundle": "小型蓝色媒质口袋",
+ "item.hexic.small_brown_bundle": "小型棕色媒质口袋",
+ "item.hexic.small_cyan_bundle": "小型青色媒质口袋",
+ "item.hexic.small_gray_bundle": "小型灰色媒质口袋",
+ "item.hexic.small_green_bundle": "小型绿色媒质口袋",
+ "item.hexic.small_light_blue_bundle": "小型淡蓝色媒质口袋",
+ "item.hexic.small_light_gray_bundle": "小型淡灰色媒质口袋",
+ "item.hexic.small_lime_bundle": "小型黄绿色媒质口袋",
+ "item.hexic.small_magenta_bundle": "小型品红色媒质口袋",
+ "item.hexic.small_orange_bundle": "小型橙色媒质口袋",
+ "item.hexic.small_pink_bundle": "小型粉红色媒质口袋",
+ "item.hexic.small_purple_bundle": "小型紫色媒质口袋",
+ "item.hexic.small_red_bundle": "小型红色媒质口袋",
+ "item.hexic.small_white_bundle": "小型白色媒质口袋",
+ "item.hexic.small_yellow_bundle": "小型黄色媒质口袋",
+ "item.hexic.large_black_bundle": "大型黑色媒质口袋",
+ "item.hexic.large_blue_bundle": "大型蓝色媒质口袋",
+ "item.hexic.large_brown_bundle": "大型棕色媒质口袋",
+ "item.hexic.large_cyan_bundle": "大型青色媒质口袋",
+ "item.hexic.large_gray_bundle": "大型灰色媒质口袋",
+ "item.hexic.large_green_bundle": "大型绿色媒质口袋",
+ "item.hexic.large_light_blue_bundle": "大型淡蓝色媒质口袋",
+ "item.hexic.large_light_gray_bundle": "大型淡灰色媒质口袋",
+ "item.hexic.large_lime_bundle": "大型黄绿色媒质口袋",
+ "item.hexic.large_magenta_bundle": "大型品红色媒质口袋",
+ "item.hexic.large_orange_bundle": "大型橙色媒质口袋",
+ "item.hexic.large_pink_bundle": "大型粉红色媒质口袋",
+ "item.hexic.large_purple_bundle": "大型紫色媒质口袋",
+ "item.hexic.large_red_bundle": "大型红色媒质口袋",
+ "item.hexic.large_white_bundle": "大型白色媒质口袋",
+ "item.hexic.large_yellow_bundle": "大型黄色媒质口袋",
+ "item.hexic.stringworm_pigmented": "闪亮的%s",
+
+ "tag.item.hexic.mediaweaves": "媒质布匹",
+ "hexic.media_bundle.items": "%s/%s",
+ "hexic.media.infinite": "%s:%s",
+ "hexic.media.finite": "%s:%s/%s(%s)",
+ "hexic.media.external": "媒质",
+ "hexic.media.internal": "缀品等",
+ "item.hexic.wizard": "巫师",
+ "hexdoc.hexic.title": "Hexic",
+ "hexdoc.hexic.description": "各种好用的特性和提升体验的图案,专为咒法学设计"
+}
\ No newline at end of file
From 1b2ec9a6d48263a108d41b175992955409552cdb Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Sun, 19 Oct 2025 03:58:04 +0800
Subject: [PATCH 02/14] =?UTF-8?q?Hexic=20update=EF=BC=9A=E5=AE=98=E5=BA=93?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../entries/addon/hexic/addendum/strings.json | 16 ------
.../en_us/entries/addon/hexic/list2.json | 49 +++++++++++++++++++
.../entries/addon/hexic/addendum/strings.json | 16 ------
.../zh_cn/entries/addon/hexic/list2.json | 49 +++++++++++++++++++
.../hexic/jsonpatch/pigment_manip.jsonpatch | 11 +++++
.../jsonpatch/pigment_manip.zh_cn.jsonpatch | 11 +++++
.../hexic/jsonpatch/strings.jsonpatch | 11 +++++
.../hexic/jsonpatch/strings.zh_cn.jsonpatch | 11 +++++
.../modrinth-hexic/hexic/lang/en_us.json | 11 ++++-
.../modrinth-hexic/hexic/lang/zh_cn.json | 11 ++++-
10 files changed, 160 insertions(+), 36 deletions(-)
delete mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/addendum/strings.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/list2.json
delete mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/addendum/strings.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/list2.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.jsonpatch
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.zh_cn.jsonpatch
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.jsonpatch
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.zh_cn.jsonpatch
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/addendum/strings.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/addendum/strings.json
deleted file mode 100644
index 8c9a3a579094..000000000000
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/addendum/strings.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "Strings: An Addendum",
- "icon": "minecraft:string",
- "category": "hexcasting:patterns",
- "pages": [
- "For some strange reason, I feel the need to document this pattern in a separate chapter, despite its resemblance to $(l:patterns/strings#moreiotas:string/chat/caster)Whisper Reflection/$ — something about \"mods shouldn't modify other mods' entries\" and all that.",
- {
- "type": "hexcasting:pattern",
- "op_id": "hexic:murmur",
- "anchor": "hexic:murmur",
- "input": "",
- "output": "str",
- "text": "Adds the phrase on the $(o)tip of my tongue/$ to the stack, regardless of whether I intend to say it."
- }
- ]
-}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/list2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/list2.json
new file mode 100644
index 000000000000..00566374bcc1
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/list2.json
@@ -0,0 +1,49 @@
+{
+ "name": "Advanced Lists",
+ "category": "hexcasting:patterns",
+ "icon": "minecraft:birch_sign",
+ "advancement": "hexcasting:root",
+ "pages": [
+ "These patterns seem to represent common operations I perform on lists. Though these are perfectly possible to do with normal $(l:patterns/lists)List Manipulation/$, it often requires more effort. Perhaps Nature willed them into existence to better understand what I'm doing... or perhaps they are my own invention?",
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:rotate",
+ "anchor": "hexic:rotate",
+ "input": "[a], int",
+ "output": "[a]",
+ "text": "Rotates the array leftward: an argument of 1 moves the first item of the list to the end. Negative numbers allow rotating the list rightward."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:take",
+ "anchor": "hexic:take/count",
+ "input": "[a], int",
+ "output": "[a]",
+ "text": "Selects the first few elements from the input list. If the number is negative, selects the last few elements instead."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:drop",
+ "anchor": "hexic:drop/count",
+ "input": "[a], int",
+ "output": "[a]",
+ "text": "Drops the first few elements from the input list; the dual to $(l:addon/hexic/lists2#hexic:take/count)$(action)Retention Distillation/$."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:take",
+ "anchor": "hexic:take/list",
+ "input": "[a], [int]",
+ "output": "[a]",
+ "text": "Selects from the list only elements corresponding to the given indices. Unlike $(l:patterns/lists#hexcasting:index)$(action)Selection Distillation/$, this cannot reorder or duplicate iotas."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:drop",
+ "anchor": "hexic:drop/list",
+ "input": "[a], [int]",
+ "output": "[a]",
+ "text": "Drops from the list iotas at the given indices. All other iotas are kept in the same order as the input."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/addendum/strings.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/addendum/strings.json
deleted file mode 100644
index 72b318f79691..000000000000
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/addendum/strings.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "字符串:附录",
- "icon": "minecraft:string",
- "category": "hexcasting:patterns",
- "pages": [
- "不知为什么,我总觉得这个图案应该新开一章介绍,尽管它$(l:patterns/strings#moreiotas:string/chat/caster)耳语之精思/$很像。大概是因为“模组不应改动其他模组的条目”吧。",
- {
- "type": "hexcasting:pattern",
- "op_id": "hexic:murmur",
- "anchor": "hexic:murmur",
- "input": "",
- "output": "str",
- "text": "将$(o)在我嘴边/$的话语压入栈中,后续是否要说出不影响结果。"
- }
- ]
-}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/list2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/list2.json
new file mode 100644
index 000000000000..6b69156422b1
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/list2.json
@@ -0,0 +1,49 @@
+{
+ "name": "高阶列表",
+ "category": "hexcasting:patterns",
+ "icon": "minecraft:birch_sign",
+ "advancement": "hexcasting:root",
+ "pages": [
+ "这些图案似乎对应着我常对列表执行的操作。虽然说它们的功能可以用普通的$(l:patterns/lists)列表操作/$实现,但一般会更加麻烦。可能是自然为了理解我做的事而创造了它们……还是我自己发明了它们?",
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:rotate",
+ "anchor": "hexic:rotate",
+ "input": "[a], int",
+ "output": "[a]",
+ "text": "向左旋转列表:参数为 1 时,首个列表元素会移动到末尾。负数参数会向右旋转列表。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:take",
+ "anchor": "hexic:take/count",
+ "input": "[a], int",
+ "output": "[a]",
+ "text": "选出所给列表开头的若干元素。负数参数则选出末尾的若干元素。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:drop",
+ "anchor": "hexic:drop/count",
+ "input": "[a], int",
+ "output": "[a]",
+ "text": "删去列表开头的若干元素;它是$(l:addon/hexic/lists2#hexic:take/count)$(action)维持之馏化/$的对偶。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:take",
+ "anchor": "hexic:take/list",
+ "input": "[a], [int]",
+ "output": "[a]",
+ "text": "从列表中选出所给下标对应的元素。和$(l:patterns/lists#hexcasting:index)$(action)选择之馏化/$不同的是,此图案无法重排或复制 iota。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:drop",
+ "anchor": "hexic:drop/list",
+ "input": "[a], [int]",
+ "output": "[a]",
+ "text": "删去列表中所给下标的元素。其他 iota 的顺序不变。"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.jsonpatch
new file mode 100644
index 000000000000..d8b54b209c2b
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.jsonpatch
@@ -0,0 +1,11 @@
+@version "1";
+@target "hexcasting:patchouli_books/thehexbook/en_us/entries/patterns/spells/pigments.json";
+
+$pages = arrays.push($pages, {
+ type: "hexcasting:pattern",
+ op_id: "hexic:dye_offhand",
+ anchor: "hexic:dye_offhand",
+ input: "pigment",
+ output: "",
+ text: "Imbues the item held in my offhand (e.g. a $(l:items/hexcasting)$(item)casting item/$) with the given pigment."
+});
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.zh_cn.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.zh_cn.jsonpatch
new file mode 100644
index 000000000000..e7d14e27ff38
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.zh_cn.jsonpatch
@@ -0,0 +1,11 @@
+@version "1";
+@target "hexcasting:patchouli_books/thehexbook/zh_cn/entries/patterns/spells/pigments.json";
+
+$pages = arrays.push($pages, {
+ type: "hexcasting:pattern",
+ op_id: "hexic:dye_offhand",
+ anchor: "hexic:dye_offhand",
+ input: "pigment",
+ output: "",
+ text: "将所给染色剂内化到我副手中的物品(如$(l:items/hexcasting)$(item)施法物品/$)里。"
+});
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.jsonpatch
new file mode 100644
index 000000000000..6f37647ea315
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.jsonpatch
@@ -0,0 +1,11 @@
+@version "1";
+@target "hexcasting:patchouli_books/thehexbook/en_us/entries/patterns/strings.json";
+
+$pages = arrays.insert($pages, 11, {
+ type: "hexcasting:pattern",
+ op_id: "hexic:murmur",
+ anchor: "hexic:murmur",
+ input: "",
+ output: "str",
+ text: "Adds the phrase on the $(o)tip of my tongue/$ to the stack, regardless of whether I intend to say it."
+});
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.zh_cn.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.zh_cn.jsonpatch
new file mode 100644
index 000000000000..aa06dce4d8e4
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.zh_cn.jsonpatch
@@ -0,0 +1,11 @@
+@version "1";
+@target "hexcasting:patchouli_books/thehexbook/zh_cn/entries/patterns/strings.json";
+
+$pages = arrays.insert($pages, 11, {
+ type: "hexcasting:pattern",
+ op_id: "hexic:murmur",
+ anchor: "hexic:murmur",
+ input: "",
+ output: "str",
+ text: "将$(o)在我嘴边/$的话语压入栈中,后续是否要说出不影响结果。"
+});
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
index 4df89bb62f84..930889d8717b 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -25,11 +25,16 @@
"hexcasting.action.hexic:metatable": "Patchwork Exaltation",
"hexcasting.action.hexic:murmur": "Murmur Reflection",
"hexcasting.action.hexic:reveal": "Greater Reveal",
+ "hexcasting.action.hexic:dye_offhand": "Apply Pigment",
+ "hexcasting.action.hexic:rotate": "Ferris Distillation",
+ "hexcasting.action.hexic:take": "Retention Distillation",
+ "hexcasting.action.hexic:drop": "Rejection Distillation",
+
+ "hexcasting.mishap.invalid_value.class.hexic:int_or_list": "§aint§r or §5[§aint§5]§r",
"hexcasting.iota.hexic:tripwire": "Tripwire",
"hexcasting.iota.hexic:nbt": "Tag",
- "hexcasting.iota.hexic:variant": "Object Variant",
- "hexcasting.iota.hexic:stack": "Object Stack",
+ "hexcasting.iota.hexic:variant": "Concept",
"hexcasting.iota.hexic:jvm/class": "Class",
"hexcasting.iota.hexic:jvm/pointer": "Address",
@@ -51,6 +56,7 @@
"item.hexic.red_mediaweave": "Red Mediaweave",
"item.hexic.white_mediaweave": "White Mediaweave",
"item.hexic.yellow_mediaweave": "Yellow Mediaweave",
+ "item.hexic.stringworm_pure": "Stringworm",
"item.hexic.stringworm_action": "Stringworm",
"item.hexic.stringworm_hex": "Stringworm",
"item.hexic.stringworm_media": "Stringworm",
@@ -95,6 +101,7 @@
"hexic.media.finite": "%s: %s/%s (%s)",
"hexic.media.external": "Media",
"hexic.media.internal": "Trinkets",
+ "text.hexic.pigment_holder_item": "an item storing a pigment",
"item.hexic.wizard": "Wizard",
"hexdoc.hexic.title": "Hexic",
"hexdoc.hexic.description": "Miscellaneous neat features and QoL patterns for Hex Casting"
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
index 673b24cbbf72..18dd4aed26e7 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -25,11 +25,16 @@
"hexcasting.action.hexic:metatable": "修补之提整",
"hexcasting.action.hexic:murmur": "私语之精思",
"hexcasting.action.hexic:reveal": "卓越揭示",
+ "hexcasting.action.hexic:dye_offhand": "应用染色剂",
+ "hexcasting.action.hexic:rotate": "摩天轮之馏化",
+ "hexcasting.action.hexic:take": "维持之馏化",
+ "hexcasting.action.hexic:drop": "拒斥之馏化",
+
+ "hexcasting.mishap.invalid_value.class.hexic:int_or_list": "§aint§r或§5[§aint§5]§r",
"hexcasting.iota.hexic:tripwire": "绊线",
"hexcasting.iota.hexic:nbt": "标签",
- "hexcasting.iota.hexic:variant": "物体变种",
- "hexcasting.iota.hexic:stack": "物体组",
+ "hexcasting.iota.hexic:variant": "概念",
"hexcasting.iota.hexic:jvm/class": "类",
"hexcasting.iota.hexic:jvm/pointer": "地址",
@@ -51,6 +56,7 @@
"item.hexic.red_mediaweave": "红色媒质布匹",
"item.hexic.white_mediaweave": "白色媒质布匹",
"item.hexic.yellow_mediaweave": "黄色媒质布匹",
+ "item.hexic.stringworm_pure": "线虫",
"item.hexic.stringworm_action": "线虫",
"item.hexic.stringworm_hex": "线虫",
"item.hexic.stringworm_media": "线虫",
@@ -95,6 +101,7 @@
"hexic.media.finite": "%s:%s/%s(%s)",
"hexic.media.external": "媒质",
"hexic.media.internal": "缀品等",
+ "text.hexic.pigment_holder_item": "存有染色剂的物品",
"item.hexic.wizard": "巫师",
"hexdoc.hexic.title": "Hexic",
"hexdoc.hexic.description": "各种好用的特性和提升体验的图案,专为咒法学设计"
From 69c9694da71be2d83b1c7b8be86ce9d51d989171 Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Wed, 22 Oct 2025 13:50:01 +0800
Subject: [PATCH 03/14] =?UTF-8?q?Hexic=20update=EF=BC=9A=E5=AE=98=E5=BA=93?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../en_us/entries/addon/hexic/no.json | 17 ++
.../zh_cn/entries/addon/hexic/no.json | 17 ++
.../modrinth-hexic/hexic/lang/en_us.json | 147 ++++++++++--------
.../modrinth-hexic/hexic/lang/zh_cn.json | 131 +++++++++-------
4 files changed, 186 insertions(+), 126 deletions(-)
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/no.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/no.json
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/no.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/no.json
new file mode 100644
index 000000000000..b55112296580
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/no.json
@@ -0,0 +1,17 @@
+{
+ "name": "Nature's Revenge",
+ "advancement": "hexcasting:enlightenment",
+ "category": "hexcasting:patterns",
+ "icon": "arrow",
+ "pages": [
+ "No. No. No. I— I thought Horrible was bad— etched into every waking moment— no— no— it hurts— must draw— can't draw— what have I done— why must Nature be like this— ",
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:whatthefuck",
+ "anchor": "hexic:whatthefuck",
+ "input": "???",
+ "output": "???",
+ "text": "How could one even begin to draw this?"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/no.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/no.json
new file mode 100644
index 000000000000..9115c93b8e43
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/no.json
@@ -0,0 +1,17 @@
+{
+ "name": "自然的复仇",
+ "advancement": "hexcasting:enlightenment",
+ "category": "hexcasting:patterns",
+ "icon": "arrow",
+ "pages": [
+ "不、不、不。我——我还觉得“可怕的东西”已经够糟了——没法从意识中消除——不——不——好痛——必须绘制——画不出来——我都做了什么——自然为什么要这样——",
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:whatthefuck",
+ "anchor": "hexic:whatthefuck",
+ "input": "???",
+ "output": "???",
+ "text": "到底要怎么画啊?"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
index 930889d8717b..c541e26dea25 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -1,82 +1,55 @@
{
+ "hexcasting.action.hexic:drop": "Rejection Distillation",
+ "hexcasting.action.hexic:dye_offhand": "Apply Pigment",
+ "hexcasting.action.hexic:empty_map": "Vacant Reflection: Map",
+ "hexcasting.action.hexic:free": "Deallocator's Gambit",
+ "hexcasting.action.hexic:jvm/class_of_iota": "Classifier Purification II",
+ "hexcasting.action.hexic:jvm/class_of_payload": "Classifier Purification I",
+ "hexcasting.action.hexic:jvm/newinstance_boxed": "Constructor Purification I",
+ "hexcasting.action.hexic:jvm/newinstance_unboxed": "Constructor Purification II",
+ "hexcasting.action.hexic:malloc": "Allocator's Purification",
+ "hexcasting.action.hexic:metatable": "Patchwork Exaltation",
+ "hexcasting.action.hexic:murmur": "Murmur Reflection",
+ "hexcasting.action.hexic:nbt/deserialize": "Importer's Purification",
"hexcasting.action.hexic:nbt/lift1": "Secretary's Purification: Byte",
"hexcasting.action.hexic:nbt/lift2": "Secretary's Purification: Short",
"hexcasting.action.hexic:nbt/lift4": "Secretary's Purification: Integer",
"hexcasting.action.hexic:nbt/lift8": "Secretary's Purification: Long",
- "hexcasting.action.hexic:nbt/liftf": "Secretary's Purification: Float",
"hexcasting.action.hexic:nbt/liftd": "Secretary's Purification: Double",
- "hexcasting.action.hexic:nbt/literal/collection": "Secretary's Reflection: Collection",
- "hexcasting.action.hexic:nbt/literal/list": "Secretary's Reflection: Vacant List",
+ "hexcasting.action.hexic:nbt/liftf": "Secretary's Purification: Float",
"hexcasting.action.hexic:nbt/literal/array1": "Secretary's Reflection: Vacant Byte Array",
"hexcasting.action.hexic:nbt/literal/array2": "Secretary's Reflection: Vacant Short Array",
"hexcasting.action.hexic:nbt/literal/array4": "Secretary's Reflection: Vacant Integer Array",
- "hexcasting.action.hexic:empty_map": "Vacant Reflection: Map",
+ "hexcasting.action.hexic:nbt/literal/collection": "Secretary's Reflection: Collection",
+ "hexcasting.action.hexic:nbt/literal/list": "Secretary's Reflection: Vacant List",
"hexcasting.action.hexic:nbt/serialize": "Exporter's Purification",
- "hexcasting.action.hexic:tripwire": "Tripwire Reflection",
- "hexcasting.action.hexic:nbt/deserialize": "Importer's Purification",
- "hexcasting.action.hexic:jvm/class_of_iota": "Classifier Purification II",
- "hexcasting.action.hexic:jvm/class_of_payload": "Classifier Purification I",
- "hexcasting.action.hexic:jvm/newinstance_unboxed": "Constructor Purification II",
- "hexcasting.action.hexic:jvm/newinstance_boxed": "Constructor Purification I",
- "hexcasting.action.hexic:malloc": "Allocator's Purification",
- "hexcasting.action.hexic:free": "Deallocator's Gambit",
- "hexcasting.action.hexic:staffcast_factory": "Lani's Greater Gambit",
- "hexcasting.action.hexic:staffcast_factory/lazy": "Lani's Lesser Gambit",
- "hexcasting.action.hexic:metatable": "Patchwork Exaltation",
- "hexcasting.action.hexic:murmur": "Murmur Reflection",
"hexcasting.action.hexic:reveal": "Greater Reveal",
- "hexcasting.action.hexic:dye_offhand": "Apply Pigment",
"hexcasting.action.hexic:rotate": "Ferris Distillation",
+ "hexcasting.action.hexic:staffcast_factory": "Lani's Greater Gambit",
+ "hexcasting.action.hexic:staffcast_factory/lazy": "Lani's Lesser Gambit",
"hexcasting.action.hexic:take": "Retention Distillation",
- "hexcasting.action.hexic:drop": "Rejection Distillation",
-
- "hexcasting.mishap.invalid_value.class.hexic:int_or_list": "§aint§r or §5[§aint§5]§r",
-
- "hexcasting.iota.hexic:tripwire": "Tripwire",
- "hexcasting.iota.hexic:nbt": "Tag",
- "hexcasting.iota.hexic:variant": "Concept",
+ "hexcasting.action.hexic:tripwire": "Tripwire Reflection",
+ "hexcasting.action.hexic:whatthefuck": "Suffering",
"hexcasting.iota.hexic:jvm/class": "Class",
"hexcasting.iota.hexic:jvm/pointer": "Address",
-
+ "hexcasting.iota.hexic:nbt": "Tag",
+ "hexcasting.iota.hexic:tripwire": "Tripwire",
+ "hexcasting.iota.hexic:variant": "Concept",
+ "hexcasting.mishap.invalid_value.class.hexic:int_or_list": "§aint§r or §5[§aint§5]§r",
+ "hexdoc.hexic.description": "Miscellaneous neat features and QoL patterns for Hex Casting",
+ "hexdoc.hexic.title": "Hexic",
"hexic.bad_metatable": "Expected a map in the §a%s§r property but got %s",
-
+ "hexic.media.external": "Media",
+ "hexic.media.finite": "%s: %s/%s (%s)",
+ "hexic.media.infinite": "%s: %s",
+ "hexic.media.internal": "Trinkets",
+ "hexic.media_bundle.items": "%s/%s",
"item.hexic.black_mediaweave": "Black Mediaweave",
"item.hexic.blue_mediaweave": "Blue Mediaweave",
"item.hexic.brown_mediaweave": "Brown Mediaweave",
"item.hexic.cyan_mediaweave": "Cyan Mediaweave",
"item.hexic.gray_mediaweave": "Gray Mediaweave",
"item.hexic.green_mediaweave": "Green Mediaweave",
- "item.hexic.light_blue_mediaweave": "Light Blue Mediaweave",
- "item.hexic.light_gray_mediaweave": "Light Gray Mediaweave",
- "item.hexic.lime_mediaweave": "Lime Mediaweave",
- "item.hexic.magenta_mediaweave": "Magenta Mediaweave",
- "item.hexic.orange_mediaweave": "Orange Mediaweave",
- "item.hexic.pink_mediaweave": "Pink Mediaweave",
- "item.hexic.purple_mediaweave": "Purple Mediaweave",
- "item.hexic.red_mediaweave": "Red Mediaweave",
- "item.hexic.white_mediaweave": "White Mediaweave",
- "item.hexic.yellow_mediaweave": "Yellow Mediaweave",
- "item.hexic.stringworm_pure": "Stringworm",
- "item.hexic.stringworm_action": "Stringworm",
- "item.hexic.stringworm_hex": "Stringworm",
- "item.hexic.stringworm_media": "Stringworm",
- "item.hexic.stringworm_thing": "Stringworm",
- "item.hexic.small_black_bundle": "Small Black Media Pouch",
- "item.hexic.small_blue_bundle": "Small Blue Media Pouch",
- "item.hexic.small_brown_bundle": "Small Brown Media Pouch",
- "item.hexic.small_cyan_bundle": "Small Cyan Media Pouch",
- "item.hexic.small_gray_bundle": "Small Gray Media Pouch",
- "item.hexic.small_green_bundle": "Small Green Media Pouch",
- "item.hexic.small_light_blue_bundle": "Small Light Blue Media Pouch",
- "item.hexic.small_light_gray_bundle": "Small Light Gray Media Pouch",
- "item.hexic.small_lime_bundle": "Small Lime Media Pouch",
- "item.hexic.small_magenta_bundle": "Small Magenta Media Pouch",
- "item.hexic.small_orange_bundle": "Small Orange Media Pouch",
- "item.hexic.small_pink_bundle": "Small Pink Media Pouch",
- "item.hexic.small_purple_bundle": "Small Purple Media Pouch",
- "item.hexic.small_red_bundle": "Small Red Media Pouch",
- "item.hexic.small_white_bundle": "Small White Media Pouch",
- "item.hexic.small_yellow_bundle": "Small Yellow Media Pouch",
"item.hexic.large_black_bundle": "Large Black Media Pouch",
"item.hexic.large_blue_bundle": "Large Blue Media Pouch",
"item.hexic.large_brown_bundle": "Large Brown Media Pouch",
@@ -93,16 +66,56 @@
"item.hexic.large_red_bundle": "Large Red Media Pouch",
"item.hexic.large_white_bundle": "Large White Media Pouch",
"item.hexic.large_yellow_bundle": "Large Yellow Media Pouch",
+ "item.hexic.light_blue_mediaweave": "Light Blue Mediaweave",
+ "item.hexic.light_gray_mediaweave": "Light Gray Mediaweave",
+ "item.hexic.lime_mediaweave": "Lime Mediaweave",
+ "item.hexic.magenta_mediaweave": "Magenta Mediaweave",
+ "item.hexic.orange_mediaweave": "Orange Mediaweave",
+ "item.hexic.pen.black": "Black Pen",
+ "item.hexic.pen.blue": "Blue Pen",
+ "item.hexic.pen.brown": "Brown Pen",
+ "item.hexic.pen.cyan": "Cyan Pen",
+ "item.hexic.pen.gray": "Gray Pen",
+ "item.hexic.pen.green": "Green Pen",
+ "item.hexic.pen.light_blue": "Light Blue Pen",
+ "item.hexic.pen.light_gray": "Light Gray Pen",
+ "item.hexic.pen.lime": "Lime Pen",
+ "item.hexic.pen.magenta": "Magenta Pen",
+ "item.hexic.pen.orange": "Orange Pen",
+ "item.hexic.pen.pink": "Pink Pen",
+ "item.hexic.pen.purple": "Purple Pen",
+ "item.hexic.pen.red": "Red Pen",
+ "item.hexic.pen.white": "White Pen",
+ "item.hexic.pen.yellow": "Yellow Pen",
+ "item.hexic.pink_mediaweave": "Pink Mediaweave",
+ "item.hexic.purple_mediaweave": "Purple Mediaweave",
+ "item.hexic.red_mediaweave": "Red Mediaweave",
+ "item.hexic.small_black_bundle": "Black Media Pouch",
+ "item.hexic.small_blue_bundle": "Blue Media Pouch",
+ "item.hexic.small_brown_bundle": "Brown Media Pouch",
+ "item.hexic.small_cyan_bundle": "Cyan Media Pouch",
+ "item.hexic.small_gray_bundle": "Gray Media Pouch",
+ "item.hexic.small_green_bundle": "Green Media Pouch",
+ "item.hexic.small_light_blue_bundle": "Light Blue Media Pouch",
+ "item.hexic.small_light_gray_bundle": "Light Gray Media Pouch",
+ "item.hexic.small_lime_bundle": "Lime Media Pouch",
+ "item.hexic.small_magenta_bundle": "Magenta Media Pouch",
+ "item.hexic.small_orange_bundle": "Orange Media Pouch",
+ "item.hexic.small_pink_bundle": "Pink Media Pouch",
+ "item.hexic.small_purple_bundle": "Purple Media Pouch",
+ "item.hexic.small_red_bundle": "Red Media Pouch",
+ "item.hexic.small_white_bundle": "White Media Pouch",
+ "item.hexic.small_yellow_bundle": "Yellow Media Pouch",
+ "item.hexic.stringworm_action": "Stringworm",
+ "item.hexic.stringworm_hex": "Stringworm",
+ "item.hexic.stringworm_media": "Stringworm",
"item.hexic.stringworm_pigmented": "Shimmering %s",
-
- "tag.item.hexic.mediaweaves": "Mediaweave",
- "hexic.media_bundle.items": "%s/%s",
- "hexic.media.infinite": "%s: %s",
- "hexic.media.finite": "%s: %s/%s (%s)",
- "hexic.media.external": "Media",
- "hexic.media.internal": "Trinkets",
- "text.hexic.pigment_holder_item": "an item storing a pigment",
+ "item.hexic.stringworm_pure": "Stringworm",
+ "item.hexic.stringworm_thing": "Stringworm",
+ "item.hexic.white_mediaweave": "White Mediaweave",
"item.hexic.wizard": "Wizard",
- "hexdoc.hexic.title": "Hexic",
- "hexdoc.hexic.description": "Miscellaneous neat features and QoL patterns for Hex Casting"
+ "item.hexic.yellow_mediaweave": "Yellow Mediaweave",
+ "itemGroup.hexic.group": "Hexic",
+ "tag.item.hexic.mediaweaves": "Mediaweave",
+ "text.hexic.pigment_holder_item": "an item storing a pigment"
}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
index 18dd4aed26e7..83ac60cf3fcd 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -1,66 +1,95 @@
{
+ "hexcasting.action.hexic:drop": "拒斥之馏化",
+ "hexcasting.action.hexic:dye_offhand": "应用染色剂",
+ "hexcasting.action.hexic:empty_map": "空无之精思:映射",
+ "hexcasting.action.hexic:free": "释放器之策略",
+ "hexcasting.action.hexic:jvm/class_of_iota": "判类器之纯化,第二型",
+ "hexcasting.action.hexic:jvm/class_of_payload": "判类器之纯化,第一型",
+ "hexcasting.action.hexic:jvm/newinstance_boxed": "构造器之纯化,第一型",
+ "hexcasting.action.hexic:jvm/newinstance_unboxed": "构造器之纯化,第二型",
+ "hexcasting.action.hexic:malloc": "分配器之纯化",
+ "hexcasting.action.hexic:metatable": "修补之提整",
+ "hexcasting.action.hexic:murmur": "私语之精思",
+ "hexcasting.action.hexic:nbt/deserialize": "导入器之纯化",
"hexcasting.action.hexic:nbt/lift1": "秘书之纯化:字节",
"hexcasting.action.hexic:nbt/lift2": "秘书之纯化:短整型",
"hexcasting.action.hexic:nbt/lift4": "秘书之纯化:整型",
"hexcasting.action.hexic:nbt/lift8": "秘书之纯化:长整型",
- "hexcasting.action.hexic:nbt/liftf": "秘书之纯化:单精度浮点型",
"hexcasting.action.hexic:nbt/liftd": "秘书之纯化:双精度浮点型",
- "hexcasting.action.hexic:nbt/literal/collection": "秘书之精思:容器",
- "hexcasting.action.hexic:nbt/literal/list": "秘书之精思:空列表",
+ "hexcasting.action.hexic:nbt/liftf": "秘书之纯化:单精度浮点型",
"hexcasting.action.hexic:nbt/literal/array1": "秘书之精思:空字节数组",
"hexcasting.action.hexic:nbt/literal/array2": "秘书之精思:空短整型数组",
"hexcasting.action.hexic:nbt/literal/array4": "秘书之精思:空整型数组",
- "hexcasting.action.hexic:empty_map": "空无之精思:映射",
+ "hexcasting.action.hexic:nbt/literal/collection": "秘书之精思:容器",
+ "hexcasting.action.hexic:nbt/literal/list": "秘书之精思:空列表",
"hexcasting.action.hexic:nbt/serialize": "导出器之纯化",
- "hexcasting.action.hexic:tripwire": "绊线之精思",
- "hexcasting.action.hexic:nbt/deserialize": "导入器之纯化",
- "hexcasting.action.hexic:jvm/class_of_iota": "判类器之纯化,第二型",
- "hexcasting.action.hexic:jvm/class_of_payload": "判类器之纯化,第一型",
- "hexcasting.action.hexic:jvm/newinstance_unboxed": "构造器之纯化,第二型",
- "hexcasting.action.hexic:jvm/newinstance_boxed": "构造器之纯化,第一型",
- "hexcasting.action.hexic:malloc": "分配器之纯化",
- "hexcasting.action.hexic:free": "释放器之策略",
- "hexcasting.action.hexic:staffcast_factory": "Lani之卓越策略",
- "hexcasting.action.hexic:staffcast_factory/lazy": "Lani之初等策略",
- "hexcasting.action.hexic:metatable": "修补之提整",
- "hexcasting.action.hexic:murmur": "私语之精思",
"hexcasting.action.hexic:reveal": "卓越揭示",
- "hexcasting.action.hexic:dye_offhand": "应用染色剂",
"hexcasting.action.hexic:rotate": "摩天轮之馏化",
+ "hexcasting.action.hexic:staffcast_factory": "Lani之卓越策略",
+ "hexcasting.action.hexic:staffcast_factory/lazy": "Lani之初等策略",
"hexcasting.action.hexic:take": "维持之馏化",
- "hexcasting.action.hexic:drop": "拒斥之馏化",
-
- "hexcasting.mishap.invalid_value.class.hexic:int_or_list": "§aint§r或§5[§aint§5]§r",
-
- "hexcasting.iota.hexic:tripwire": "绊线",
- "hexcasting.iota.hexic:nbt": "标签",
- "hexcasting.iota.hexic:variant": "概念",
+ "hexcasting.action.hexic:tripwire": "绊线之精思",
+ "hexcasting.action.hexic:whatthefuck": "苦痛",
"hexcasting.iota.hexic:jvm/class": "类",
"hexcasting.iota.hexic:jvm/pointer": "地址",
-
+ "hexcasting.iota.hexic:nbt": "标签",
+ "hexcasting.iota.hexic:tripwire": "绊线",
+ "hexcasting.iota.hexic:variant": "概念",
+ "hexcasting.mishap.invalid_value.class.hexic:int_or_list": "§aint§r或§5[§aint§5]§r",
+ "hexdoc.hexic.description": "各种好用的特性和提升体验的图案,专为咒法学设计",
+ "hexdoc.hexic.title": "Hexic",
"hexic.bad_metatable": "§a%s§r质性中本应包含一个映射,而实际为%s",
-
+ "hexic.media.external": "媒质",
+ "hexic.media.finite": "%s:%s/%s(%s)",
+ "hexic.media.infinite": "%s:%s",
+ "hexic.media.internal": "缀品等",
+ "hexic.media_bundle.items": "%s/%s",
"item.hexic.black_mediaweave": "黑色媒质布匹",
"item.hexic.blue_mediaweave": "蓝色媒质布匹",
"item.hexic.brown_mediaweave": "棕色媒质布匹",
"item.hexic.cyan_mediaweave": "青色媒质布匹",
"item.hexic.gray_mediaweave": "灰色媒质布匹",
"item.hexic.green_mediaweave": "绿色媒质布匹",
+ "item.hexic.large_black_bundle": "大型黑色媒质口袋",
+ "item.hexic.large_blue_bundle": "大型蓝色媒质口袋",
+ "item.hexic.large_brown_bundle": "大型棕色媒质口袋",
+ "item.hexic.large_cyan_bundle": "大型青色媒质口袋",
+ "item.hexic.large_gray_bundle": "大型灰色媒质口袋",
+ "item.hexic.large_green_bundle": "大型绿色媒质口袋",
+ "item.hexic.large_light_blue_bundle": "大型淡蓝色媒质口袋",
+ "item.hexic.large_light_gray_bundle": "大型淡灰色媒质口袋",
+ "item.hexic.large_lime_bundle": "大型黄绿色媒质口袋",
+ "item.hexic.large_magenta_bundle": "大型品红色媒质口袋",
+ "item.hexic.large_orange_bundle": "大型橙色媒质口袋",
+ "item.hexic.large_pink_bundle": "大型粉红色媒质口袋",
+ "item.hexic.large_purple_bundle": "大型紫色媒质口袋",
+ "item.hexic.large_red_bundle": "大型红色媒质口袋",
+ "item.hexic.large_white_bundle": "大型白色媒质口袋",
+ "item.hexic.large_yellow_bundle": "大型黄色媒质口袋",
"item.hexic.light_blue_mediaweave": "淡蓝色媒质布匹",
"item.hexic.light_gray_mediaweave": "淡灰色媒质布匹",
"item.hexic.lime_mediaweave": "黄绿色媒质布匹",
"item.hexic.magenta_mediaweave": "品红色媒质布匹",
"item.hexic.orange_mediaweave": "橙色媒质布匹",
+ "item.hexic.pen.black": "黑色咒笔",
+ "item.hexic.pen.blue": "蓝色咒笔",
+ "item.hexic.pen.brown": "棕色咒笔",
+ "item.hexic.pen.cyan": "青色咒笔",
+ "item.hexic.pen.gray": "灰色咒笔",
+ "item.hexic.pen.green": "绿色咒笔",
+ "item.hexic.pen.light_blue": "淡蓝色咒笔",
+ "item.hexic.pen.light_gray": "淡灰色咒笔",
+ "item.hexic.pen.lime": "黄绿色咒笔",
+ "item.hexic.pen.magenta": "品红色咒笔",
+ "item.hexic.pen.orange": "橙色咒笔",
+ "item.hexic.pen.pink": "粉红色咒笔",
+ "item.hexic.pen.purple": "紫色咒笔",
+ "item.hexic.pen.red": "红色咒笔",
+ "item.hexic.pen.white": "白色咒笔",
+ "item.hexic.pen.yellow": "黄色咒笔",
"item.hexic.pink_mediaweave": "粉红色媒质布匹",
"item.hexic.purple_mediaweave": "紫色媒质布匹",
"item.hexic.red_mediaweave": "红色媒质布匹",
- "item.hexic.white_mediaweave": "白色媒质布匹",
- "item.hexic.yellow_mediaweave": "黄色媒质布匹",
- "item.hexic.stringworm_pure": "线虫",
- "item.hexic.stringworm_action": "线虫",
- "item.hexic.stringworm_hex": "线虫",
- "item.hexic.stringworm_media": "线虫",
- "item.hexic.stringworm_thing": "线虫",
"item.hexic.small_black_bundle": "小型黑色媒质口袋",
"item.hexic.small_blue_bundle": "小型蓝色媒质口袋",
"item.hexic.small_brown_bundle": "小型棕色媒质口袋",
@@ -77,32 +106,16 @@
"item.hexic.small_red_bundle": "小型红色媒质口袋",
"item.hexic.small_white_bundle": "小型白色媒质口袋",
"item.hexic.small_yellow_bundle": "小型黄色媒质口袋",
- "item.hexic.large_black_bundle": "大型黑色媒质口袋",
- "item.hexic.large_blue_bundle": "大型蓝色媒质口袋",
- "item.hexic.large_brown_bundle": "大型棕色媒质口袋",
- "item.hexic.large_cyan_bundle": "大型青色媒质口袋",
- "item.hexic.large_gray_bundle": "大型灰色媒质口袋",
- "item.hexic.large_green_bundle": "大型绿色媒质口袋",
- "item.hexic.large_light_blue_bundle": "大型淡蓝色媒质口袋",
- "item.hexic.large_light_gray_bundle": "大型淡灰色媒质口袋",
- "item.hexic.large_lime_bundle": "大型黄绿色媒质口袋",
- "item.hexic.large_magenta_bundle": "大型品红色媒质口袋",
- "item.hexic.large_orange_bundle": "大型橙色媒质口袋",
- "item.hexic.large_pink_bundle": "大型粉红色媒质口袋",
- "item.hexic.large_purple_bundle": "大型紫色媒质口袋",
- "item.hexic.large_red_bundle": "大型红色媒质口袋",
- "item.hexic.large_white_bundle": "大型白色媒质口袋",
- "item.hexic.large_yellow_bundle": "大型黄色媒质口袋",
+ "item.hexic.stringworm_action": "线虫",
+ "item.hexic.stringworm_hex": "线虫",
+ "item.hexic.stringworm_media": "线虫",
"item.hexic.stringworm_pigmented": "闪亮的%s",
-
- "tag.item.hexic.mediaweaves": "媒质布匹",
- "hexic.media_bundle.items": "%s/%s",
- "hexic.media.infinite": "%s:%s",
- "hexic.media.finite": "%s:%s/%s(%s)",
- "hexic.media.external": "媒质",
- "hexic.media.internal": "缀品等",
- "text.hexic.pigment_holder_item": "存有染色剂的物品",
+ "item.hexic.stringworm_pure": "线虫",
+ "item.hexic.stringworm_thing": "线虫",
+ "item.hexic.white_mediaweave": "白色媒质布匹",
"item.hexic.wizard": "巫师",
- "hexdoc.hexic.title": "Hexic",
- "hexdoc.hexic.description": "各种好用的特性和提升体验的图案,专为咒法学设计"
+ "item.hexic.yellow_mediaweave": "黄色媒质布匹",
+ "itemGroup.hexic.group": "Hexic",
+ "tag.item.hexic.mediaweaves": "媒质布匹",
+ "text.hexic.pigment_holder_item": "存有染色剂的物品"
}
\ No newline at end of file
From 8303464f7aee661e5f9093e9cd9f19e2e9561f11 Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Thu, 23 Oct 2025 22:53:11 +0800
Subject: [PATCH 04/14] =?UTF-8?q?Hexic=20update=EF=BC=9A=E5=AE=98=E5=BA=93?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../entries/addon/hexic/stringworms.json | 4 +-
.../modrinth-hexic/hexic/lang/en_us.json | 34 +++++++++++++-
.../modrinth-hexic/hexic/lang/zh_cn.json | 44 ++++++++++++++++---
3 files changed, 73 insertions(+), 9 deletions(-)
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/stringworms.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/stringworms.json
index da03b139c310..3d28595d3ed5 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/stringworms.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/stringworms.json
@@ -1,9 +1,9 @@
{
- "name": "线虫",
+ "name": "毛绒线虫",
"category": "hexcasting:items",
"advancement": "hexcasting:root",
"icon": "hexic:preferred_stringworm",
"pages": [
- "线虫——我发现的一系列奇怪物品,它们是一团毛绒形成的、类似虫子的事物。有些人可能会跟它们玩得很开心,但我的研究里用不到它们。"
+ "毛绒线虫——我发现的一系列奇怪物品,它们是一团毛绒形成的、类似虫子的事物。有些人可能会跟它们玩得很开心,但我的研究里用不到它们。"
]
}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
index c541e26dea25..86daa17f3ec6 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -44,6 +44,7 @@
"hexic.media.infinite": "%s: %s",
"hexic.media.internal": "Trinkets",
"hexic.media_bundle.items": "%s/%s",
+ "hexic.spell_memory": "Hex memorized",
"item.hexic.black_mediaweave": "Black Mediaweave",
"item.hexic.blue_mediaweave": "Blue Mediaweave",
"item.hexic.brown_mediaweave": "Brown Mediaweave",
@@ -106,10 +107,41 @@
"item.hexic.small_red_bundle": "Red Media Pouch",
"item.hexic.small_white_bundle": "White Media Pouch",
"item.hexic.small_yellow_bundle": "Yellow Media Pouch",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_black": "Shimmering Black Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_blue": "Shimmering Blue Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_brown": "Shimmering Brown Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_cyan": "Shimmering Cyan Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_gray": "Shimmering Gray Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_green": "Shimmering Green Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_light_blue": "Shimmering Light Blue Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_light_gray": "Shimmering Light Gray Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_lime": "Shimmering Lime Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_magenta": "Shimmering Magenta Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_orange": "Shimmering Orange Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_pink": "Shimmering Pink Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_purple": "Shimmering Purple Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_red": "Shimmering Red Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_white": "Shimmering White Stringworm",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_yellow": "Shimmering Yellow Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_agender": "Shimmering Agender Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_aroace": "Shimmering Aroace Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_aromantic": "Shimmering Aromantic Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_asexual": "Shimmering Asexual Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_bisexual": "Shimmering Bisexual Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_demiboy": "Shimmering Demiboy Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_demigirl": "Shimmering Demigirl Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_gay": "Shimmering Gay Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_genderfluid": "Shimmering Genderfluid Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_genderqueer": "Shimmering Genderqueer Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_intersex": "Shimmering Intersex Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_lesbian": "Shimmering Lesbian Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_nonbinary": "Shimmering Non-Binary Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_pansexual": "Shimmering Pansexual Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_plural": "Shimmering Plural Stringworm",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_transgender": "Shimmering Transgender Stringworm",
"item.hexic.stringworm_action": "Stringworm",
"item.hexic.stringworm_hex": "Stringworm",
"item.hexic.stringworm_media": "Stringworm",
- "item.hexic.stringworm_pigmented": "Shimmering %s",
"item.hexic.stringworm_pure": "Stringworm",
"item.hexic.stringworm_thing": "Stringworm",
"item.hexic.white_mediaweave": "White Mediaweave",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
index 83ac60cf3fcd..d4b445d3e544 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -44,6 +44,7 @@
"hexic.media.infinite": "%s:%s",
"hexic.media.internal": "缀品等",
"hexic.media_bundle.items": "%s/%s",
+ "hexic.spell_memory": "所记忆的咒术",
"item.hexic.black_mediaweave": "黑色媒质布匹",
"item.hexic.blue_mediaweave": "蓝色媒质布匹",
"item.hexic.brown_mediaweave": "棕色媒质布匹",
@@ -106,12 +107,43 @@
"item.hexic.small_red_bundle": "小型红色媒质口袋",
"item.hexic.small_white_bundle": "小型白色媒质口袋",
"item.hexic.small_yellow_bundle": "小型黄色媒质口袋",
- "item.hexic.stringworm_action": "线虫",
- "item.hexic.stringworm_hex": "线虫",
- "item.hexic.stringworm_media": "线虫",
- "item.hexic.stringworm_pigmented": "闪亮的%s",
- "item.hexic.stringworm_pure": "线虫",
- "item.hexic.stringworm_thing": "线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_black": "闪亮的黑色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_blue": "闪亮的蓝色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_brown": "闪亮的棕色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_cyan": "闪亮的青色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_gray": "闪亮的灰色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_green": "闪亮的绿色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_light_blue": "闪亮的淡蓝色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_light_gray": "闪亮的淡灰色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_lime": "闪亮的黄绿色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_magenta": "闪亮的品红色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_orange": "闪亮的橙色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_pink": "闪亮的粉红色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_purple": "闪亮的紫色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_red": "闪亮的红色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_white": "闪亮的白色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.dye_colorizer_yellow": "闪亮的黄色毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_agender": "闪亮的无性别毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_aroace": "闪亮的无浪漫倾向无性恋毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_aromantic": "闪亮的无浪漫倾向毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_asexual": "闪亮的无性恋毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_bisexual": "闪亮的双性恋毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_demiboy": "闪亮的部分男性毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_demigirl": "闪亮的部分女性毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_gay": "闪亮的男同性恋毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_genderfluid": "闪亮的性别流体毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_genderqueer": "闪亮的性别酷儿毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_intersex": "闪亮的双性人毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_lesbian": "闪亮的女同性恋毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_nonbinary": "闪亮的非二元性别毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_pansexual": "闪亮的泛性恋毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_plural": "闪亮的多重人格毛绒线虫",
+ "item.hexic.stringworm.item.hexcasting.pride_colorizer_transgender": "闪亮的跨性别毛绒线虫",
+ "item.hexic.stringworm_action": "毛绒线虫",
+ "item.hexic.stringworm_hex": "毛绒线虫",
+ "item.hexic.stringworm_media": "毛绒线虫",
+ "item.hexic.stringworm_pure": "毛绒线虫",
+ "item.hexic.stringworm_thing": "毛绒线虫",
"item.hexic.white_mediaweave": "白色媒质布匹",
"item.hexic.wizard": "巫师",
"item.hexic.yellow_mediaweave": "黄色媒质布匹",
From e5f0d4f3718a177e613a8b66c4d8d2f0a74611a7 Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Fri, 24 Oct 2025 15:19:30 +0800
Subject: [PATCH 05/14] =?UTF-8?q?Hexic=20update=EF=BC=9A=E5=AE=98=E5=BA=93?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../en_us/entries/addon/hexic/list2.json | 18 +++++++++++++++++-
.../en_us/entries/addon/hexic/pen.json | 9 +++++++++
.../zh_cn/entries/addon/hexic/list2.json | 16 ++++++++++++++++
.../zh_cn/entries/addon/hexic/pen.json | 9 +++++++++
.../hexic/jsonpatch/math.jsonpatch | 11 +++++++++++
.../hexic/jsonpatch/math.zh_cn.jsonpatch | 11 +++++++++++
.../modrinth-hexic/hexic/lang/en_us.json | 2 ++
.../modrinth-hexic/hexic/lang/zh_cn.json | 2 ++
8 files changed, 77 insertions(+), 1 deletion(-)
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/pen.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/pen.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.jsonpatch
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.zh_cn.jsonpatch
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/list2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/list2.json
index 00566374bcc1..43eb7f5b3729 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/list2.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/list2.json
@@ -44,6 +44,22 @@
"input": "[a], [int]",
"output": "[a]",
"text": "Drops from the list iotas at the given indices. All other iotas are kept in the same order as the input."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:where",
+ "anchor": "hexic:where/bool",
+ "input": "[bool]",
+ "output": "[int]",
+ "text": "Creates a list of the indices for which True is present. For example, [True, False, True] becomes [0, 2]. I can also mix bools and ints in the input list."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:where",
+ "anchor": "hexic:where/num",
+ "input": "[num]",
+ "output": "[int]",
+ "text": "Adds each index to the list based on the value. For example, [1, 2, 3] becomes [0, 1, 1, 2, 2, 2]. Zero or negative numbers do not appear at all."
}
]
-}
\ No newline at end of file
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/pen.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/pen.json
new file mode 100644
index 000000000000..abed241e06e3
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/pen.json
@@ -0,0 +1,9 @@
+{
+ "name": "Crystal Pens",
+ "icon": "hexic:preferred_pen",
+ "advancement": "hexcasting:root",
+ "category": "hexcasting:items",
+ "pages": [
+ "A pen made of amethyst allows me to sketch patterns in midair as input to my spells. Though I use my pen like a normal staff, patterns I draw with it are merely stored in an internal list rather than executed."
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/list2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/list2.json
index 6b69156422b1..32277cbacf7c 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/list2.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/list2.json
@@ -44,6 +44,22 @@
"input": "[a], [int]",
"output": "[a]",
"text": "删去列表中所给下标的元素。其他 iota 的顺序不变。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:where",
+ "anchor": "hexic:where/bool",
+ "input": "[bool]",
+ "output": "[int]",
+ "text": "将输入中 True 所处位置的下标组为列表返回。例如,[True, False, True] 会变为 [0, 2]。输入列表中允许混用布尔值和整数。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:where",
+ "anchor": "hexic:where/num",
+ "input": "[num]",
+ "output": "[int]",
+ "text": "根据数值将各下标组为列表返回。例如,[1, 2, 3] 会变为 [0, 1, 1, 2, 2, 2]。0 和负数处的下标不会在返回值中出现。"
}
]
}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/pen.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/pen.json
new file mode 100644
index 000000000000..a91624d1b714
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/pen.json
@@ -0,0 +1,9 @@
+{
+ "name": "咒笔",
+ "icon": "hexic:preferred_pen",
+ "advancement": "hexcasting:root",
+ "category": "hexcasting:items",
+ "pages": [
+ "由紫水晶制成的笔,能在空中绘制图案以用作法术的输入。咒笔的使用方法和普通的法杖类似,但用它绘制的图案只会存入内部列表,而不会执行。"
+ ]
+}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.jsonpatch
new file mode 100644
index 000000000000..438b91c9106d
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.jsonpatch
@@ -0,0 +1,11 @@
+@version "1";
+@target "hexcasting:patchouli_books/thehexbook/en_us/entries/patterns/math.json";
+
+$pages = arrays.insert($pages, 19, {
+ type: "hexcasting:pattern",
+ op_id: "hexic:non_fuckass_modulo",
+ anchor: "hexic:non_fuckass_modulo",
+ input: "num, num",
+ output: "num",
+ text: "Similar to Modulus, but differs for negative numbers: -8 %%₁ 3 = -2, but -8 %%₂ 3 = 1."
+});
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.zh_cn.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.zh_cn.jsonpatch
new file mode 100644
index 000000000000..33685e62e9e1
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.zh_cn.jsonpatch
@@ -0,0 +1,11 @@
+@version "1";
+@target "hexcasting:patchouli_books/thehexbook/zh_cn/entries/patterns/math.json";
+
+$pages = arrays.insert($pages, 19, {
+ type: "hexcasting:pattern",
+ op_id: "hexic:non_fuckass_modulo",
+ anchor: "hexic:non_fuckass_modulo",
+ input: "num, num",
+ output: "num",
+ text: "与余数之馏化类似,但两者在负数上的表现不同:-8 %%₁ 3 = -2,而 -8 %%₂ 3 = 1。"
+});
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
index 86daa17f3ec6..499e39bad14b 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -23,6 +23,7 @@
"hexcasting.action.hexic:nbt/literal/collection": "Secretary's Reflection: Collection",
"hexcasting.action.hexic:nbt/literal/list": "Secretary's Reflection: Vacant List",
"hexcasting.action.hexic:nbt/serialize": "Exporter's Purification",
+ "hexcasting.action.hexic:non_fuckass_modulo": "Modulus Distillation II",
"hexcasting.action.hexic:reveal": "Greater Reveal",
"hexcasting.action.hexic:rotate": "Ferris Distillation",
"hexcasting.action.hexic:staffcast_factory": "Lani's Greater Gambit",
@@ -30,6 +31,7 @@
"hexcasting.action.hexic:take": "Retention Distillation",
"hexcasting.action.hexic:tripwire": "Tripwire Reflection",
"hexcasting.action.hexic:whatthefuck": "Suffering",
+ "hexcasting.action.hexic:where": "Deductive Purification",
"hexcasting.iota.hexic:jvm/class": "Class",
"hexcasting.iota.hexic:jvm/pointer": "Address",
"hexcasting.iota.hexic:nbt": "Tag",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
index d4b445d3e544..ea4b54a7fdf3 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -23,6 +23,7 @@
"hexcasting.action.hexic:nbt/literal/collection": "秘书之精思:容器",
"hexcasting.action.hexic:nbt/literal/list": "秘书之精思:空列表",
"hexcasting.action.hexic:nbt/serialize": "导出器之纯化",
+ "hexcasting.action.hexic:non_fuckass_modulo": "余数之馏化,第二型",
"hexcasting.action.hexic:reveal": "卓越揭示",
"hexcasting.action.hexic:rotate": "摩天轮之馏化",
"hexcasting.action.hexic:staffcast_factory": "Lani之卓越策略",
@@ -30,6 +31,7 @@
"hexcasting.action.hexic:take": "维持之馏化",
"hexcasting.action.hexic:tripwire": "绊线之精思",
"hexcasting.action.hexic:whatthefuck": "苦痛",
+ "hexcasting.action.hexic:where": "演绎之纯化",
"hexcasting.iota.hexic:jvm/class": "类",
"hexcasting.iota.hexic:jvm/pointer": "地址",
"hexcasting.iota.hexic:nbt": "标签",
From 78e1d67a47664b6ce02055d5e4fdeb3700fef2b3 Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Fri, 24 Oct 2025 16:31:41 +0800
Subject: [PATCH 06/14] Hexic fix
---
.../en_us/entries/addon/hexic/{list2.json => lists2.json} | 0
.../zh_cn/entries/addon/hexic/{list2.json => lists2.json} | 0
.../thehexbook/zh_cn/entries/addon/hexic/metatables.json | 2 +-
3 files changed, 1 insertion(+), 1 deletion(-)
rename projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/{list2.json => lists2.json} (100%)
rename projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/{list2.json => lists2.json} (100%)
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/list2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
similarity index 100%
rename from projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/list2.json
rename to projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/list2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
similarity index 100%
rename from projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/list2.json
rename to projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/metatables.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/metatables.json
index 6f994a141c46..1db5121c80f3 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/metatables.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/metatables.json
@@ -4,7 +4,7 @@
"icon": "minecraft:calibrated_sculk_sensor",
"advancement": "hexcasting:root",
"pages": [
- "我找到了制造新种类 iota 的方法——由我对自然行径的憎恶催生。这个图案会在 iota 外部编织一层$(media)媒质/“鞘”,以让我自定义新 iota 的多个属性。虽然这么做会让我的咒术更昂贵,但也不应轻视这种力量——我无法想象,其他人靠这些“修补”iota 能干出什么恶事。",
+ "我找到了制造新种类 iota 的方法——由我对自然行径的憎恶催生。这个图案会在 iota 外部编织一层$(media)媒质/$“鞘”,以让我自定义新 iota 的多个属性。虽然这么做会让我的咒术更昂贵,但也不应轻视这种力量——我无法想象,其他人靠这些“修补”iota 能干出什么恶事。",
"构造修补 iota 时,必须提供 4 个来源 iota:$(br)$(li)自定义数据(userdata),真正传递给重载$(hex)咒术/$的 iota。$(li)所谓“展示”iota,我视角下 iota 的样子。$(li)Iota 的颜色,形式为 RGB 向量,分量值域为 0 到 1。$(li)指向$(thing)重载映射/$的指针。",
"此处提到的“重载映射”只是一个普通的$(l:addon/hexic/maps)$(thing)映射/$ iota(图案至$(hex)咒术/$的映射,后者替代前者执行),但需整体存储在$(l:properties)$(thing)质性/$内。我推测自然进行封装是为了省空间,因为我可能会在多个修补 iota 中用到同一个重载映射。这同时也方便我更新所有实例——用一条$(l:properties#hexcellular:set_property)$(action)薛定谔之策略/$就可以了,不需要逐一找出更新。",
{
From 5c048f1bb04d912627160537b8ec90f02f878fe8 Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Sat, 25 Oct 2025 01:25:40 +0800
Subject: [PATCH 07/14] =?UTF-8?q?Hexic=20update=EF=BC=9A=E5=AE=98=E5=BA=93?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../modrinth-hexic/hexic/jsonpatch/math.jsonpatch | 11 -----------
.../hexic/jsonpatch/math.zh_cn.jsonpatch | 11 -----------
.../hexic/jsonpatch/pigment_manip.jsonpatch | 11 -----------
.../hexic/jsonpatch/pigment_manip.zh_cn.jsonpatch | 11 -----------
.../modrinth-hexic/hexic/jsonpatch/strings.jsonpatch | 11 -----------
.../hexic/jsonpatch/strings.zh_cn.jsonpatch | 11 -----------
.../assets/modrinth-hexic/hexic/lang/en_us.json | 5 ++++-
.../assets/modrinth-hexic/hexic/lang/zh_cn.json | 5 ++++-
8 files changed, 8 insertions(+), 68 deletions(-)
delete mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.jsonpatch
delete mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.zh_cn.jsonpatch
delete mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.jsonpatch
delete mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.zh_cn.jsonpatch
delete mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.jsonpatch
delete mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.zh_cn.jsonpatch
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.jsonpatch
deleted file mode 100644
index 438b91c9106d..000000000000
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.jsonpatch
+++ /dev/null
@@ -1,11 +0,0 @@
-@version "1";
-@target "hexcasting:patchouli_books/thehexbook/en_us/entries/patterns/math.json";
-
-$pages = arrays.insert($pages, 19, {
- type: "hexcasting:pattern",
- op_id: "hexic:non_fuckass_modulo",
- anchor: "hexic:non_fuckass_modulo",
- input: "num, num",
- output: "num",
- text: "Similar to Modulus, but differs for negative numbers: -8 %%₁ 3 = -2, but -8 %%₂ 3 = 1."
-});
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.zh_cn.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.zh_cn.jsonpatch
deleted file mode 100644
index 33685e62e9e1..000000000000
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/math.zh_cn.jsonpatch
+++ /dev/null
@@ -1,11 +0,0 @@
-@version "1";
-@target "hexcasting:patchouli_books/thehexbook/zh_cn/entries/patterns/math.json";
-
-$pages = arrays.insert($pages, 19, {
- type: "hexcasting:pattern",
- op_id: "hexic:non_fuckass_modulo",
- anchor: "hexic:non_fuckass_modulo",
- input: "num, num",
- output: "num",
- text: "与余数之馏化类似,但两者在负数上的表现不同:-8 %%₁ 3 = -2,而 -8 %%₂ 3 = 1。"
-});
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.jsonpatch
deleted file mode 100644
index d8b54b209c2b..000000000000
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.jsonpatch
+++ /dev/null
@@ -1,11 +0,0 @@
-@version "1";
-@target "hexcasting:patchouli_books/thehexbook/en_us/entries/patterns/spells/pigments.json";
-
-$pages = arrays.push($pages, {
- type: "hexcasting:pattern",
- op_id: "hexic:dye_offhand",
- anchor: "hexic:dye_offhand",
- input: "pigment",
- output: "",
- text: "Imbues the item held in my offhand (e.g. a $(l:items/hexcasting)$(item)casting item/$) with the given pigment."
-});
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.zh_cn.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.zh_cn.jsonpatch
deleted file mode 100644
index e7d14e27ff38..000000000000
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/pigment_manip.zh_cn.jsonpatch
+++ /dev/null
@@ -1,11 +0,0 @@
-@version "1";
-@target "hexcasting:patchouli_books/thehexbook/zh_cn/entries/patterns/spells/pigments.json";
-
-$pages = arrays.push($pages, {
- type: "hexcasting:pattern",
- op_id: "hexic:dye_offhand",
- anchor: "hexic:dye_offhand",
- input: "pigment",
- output: "",
- text: "将所给染色剂内化到我副手中的物品(如$(l:items/hexcasting)$(item)施法物品/$)里。"
-});
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.jsonpatch
deleted file mode 100644
index 6f37647ea315..000000000000
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.jsonpatch
+++ /dev/null
@@ -1,11 +0,0 @@
-@version "1";
-@target "hexcasting:patchouli_books/thehexbook/en_us/entries/patterns/strings.json";
-
-$pages = arrays.insert($pages, 11, {
- type: "hexcasting:pattern",
- op_id: "hexic:murmur",
- anchor: "hexic:murmur",
- input: "",
- output: "str",
- text: "Adds the phrase on the $(o)tip of my tongue/$ to the stack, regardless of whether I intend to say it."
-});
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.zh_cn.jsonpatch b/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.zh_cn.jsonpatch
deleted file mode 100644
index aa06dce4d8e4..000000000000
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/jsonpatch/strings.zh_cn.jsonpatch
+++ /dev/null
@@ -1,11 +0,0 @@
-@version "1";
-@target "hexcasting:patchouli_books/thehexbook/zh_cn/entries/patterns/strings.json";
-
-$pages = arrays.insert($pages, 11, {
- type: "hexcasting:pattern",
- op_id: "hexic:murmur",
- anchor: "hexic:murmur",
- input: "",
- output: "str",
- text: "将$(o)在我嘴边/$的话语压入栈中,后续是否要说出不影响结果。"
-});
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
index 499e39bad14b..82c53e674c99 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -1,4 +1,7 @@
{
+ "book.hexic.page.dye_offhand": "Imbues the item held in my offhand (e.g. a $(l:items/hexcasting)$(item)casting item/$) with the given pigment.",
+ "book.hexic.page.modulo": "Similar to Modulus, but differs for negative numbers: -8 %%₁ 3 = -2, but -8 %%₂ 3 = 1.",
+ "book.hexic.page.murmur": "Adds the phrase on the $(o)tip of my tongue/$ to the stack, regardless of whether I intend to say it.",
"hexcasting.action.hexic:drop": "Rejection Distillation",
"hexcasting.action.hexic:dye_offhand": "Apply Pigment",
"hexcasting.action.hexic:empty_map": "Vacant Reflection: Map",
@@ -9,6 +12,7 @@
"hexcasting.action.hexic:jvm/newinstance_unboxed": "Constructor Purification II",
"hexcasting.action.hexic:malloc": "Allocator's Purification",
"hexcasting.action.hexic:metatable": "Patchwork Exaltation",
+ "hexcasting.action.hexic:modulo": "Modulus Distillation II",
"hexcasting.action.hexic:murmur": "Murmur Reflection",
"hexcasting.action.hexic:nbt/deserialize": "Importer's Purification",
"hexcasting.action.hexic:nbt/lift1": "Secretary's Purification: Byte",
@@ -23,7 +27,6 @@
"hexcasting.action.hexic:nbt/literal/collection": "Secretary's Reflection: Collection",
"hexcasting.action.hexic:nbt/literal/list": "Secretary's Reflection: Vacant List",
"hexcasting.action.hexic:nbt/serialize": "Exporter's Purification",
- "hexcasting.action.hexic:non_fuckass_modulo": "Modulus Distillation II",
"hexcasting.action.hexic:reveal": "Greater Reveal",
"hexcasting.action.hexic:rotate": "Ferris Distillation",
"hexcasting.action.hexic:staffcast_factory": "Lani's Greater Gambit",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
index ea4b54a7fdf3..70bfb86634d5 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -1,4 +1,7 @@
{
+ "book.hexic.page.dye_offhand": "将所给染色剂内化到我副手中的物品(如$(l:items/hexcasting)$(item)施法物品/$)里。",
+ "book.hexic.page.modulo": "与余数之馏化类似,但两者在负数上的表现不同:-8 %%₁ 3 = -2,而 -8 %%₂ 3 = 1。",
+ "book.hexic.page.murmur": "将$(o)在我嘴边/$的话语压入栈中,后续是否要说出不影响结果。",
"hexcasting.action.hexic:drop": "拒斥之馏化",
"hexcasting.action.hexic:dye_offhand": "应用染色剂",
"hexcasting.action.hexic:empty_map": "空无之精思:映射",
@@ -9,6 +12,7 @@
"hexcasting.action.hexic:jvm/newinstance_unboxed": "构造器之纯化,第二型",
"hexcasting.action.hexic:malloc": "分配器之纯化",
"hexcasting.action.hexic:metatable": "修补之提整",
+ "hexcasting.action.hexic:modulo": "余数之馏化,第二型",
"hexcasting.action.hexic:murmur": "私语之精思",
"hexcasting.action.hexic:nbt/deserialize": "导入器之纯化",
"hexcasting.action.hexic:nbt/lift1": "秘书之纯化:字节",
@@ -23,7 +27,6 @@
"hexcasting.action.hexic:nbt/literal/collection": "秘书之精思:容器",
"hexcasting.action.hexic:nbt/literal/list": "秘书之精思:空列表",
"hexcasting.action.hexic:nbt/serialize": "导出器之纯化",
- "hexcasting.action.hexic:non_fuckass_modulo": "余数之馏化,第二型",
"hexcasting.action.hexic:reveal": "卓越揭示",
"hexcasting.action.hexic:rotate": "摩天轮之馏化",
"hexcasting.action.hexic:staffcast_factory": "Lani之卓越策略",
From 233f1c3492606b2683df5930b5be354d31295070 Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Mon, 3 Nov 2025 02:56:48 +0800
Subject: [PATCH 08/14] =?UTF-8?q?Hexic=20update=EF=BC=9A=E5=AE=98=E5=BA=93?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json | 5 +++--
.../1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json | 5 +++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
index 82c53e674c99..8f70f7969749 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -22,8 +22,8 @@
"hexcasting.action.hexic:nbt/liftd": "Secretary's Purification: Double",
"hexcasting.action.hexic:nbt/liftf": "Secretary's Purification: Float",
"hexcasting.action.hexic:nbt/literal/array1": "Secretary's Reflection: Vacant Byte Array",
- "hexcasting.action.hexic:nbt/literal/array2": "Secretary's Reflection: Vacant Short Array",
- "hexcasting.action.hexic:nbt/literal/array4": "Secretary's Reflection: Vacant Integer Array",
+ "hexcasting.action.hexic:nbt/literal/array2": "Secretary's Reflection: Vacant Integer Array",
+ "hexcasting.action.hexic:nbt/literal/array4": "Secretary's Reflection: Vacant Long Array",
"hexcasting.action.hexic:nbt/literal/collection": "Secretary's Reflection: Collection",
"hexcasting.action.hexic:nbt/literal/list": "Secretary's Reflection: Vacant List",
"hexcasting.action.hexic:nbt/serialize": "Exporter's Purification",
@@ -154,5 +154,6 @@
"item.hexic.yellow_mediaweave": "Yellow Mediaweave",
"itemGroup.hexic.group": "Hexic",
"tag.item.hexic.mediaweaves": "Mediaweave",
+ "text.hexic.or_map": "%s or map",
"text.hexic.pigment_holder_item": "an item storing a pigment"
}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
index 70bfb86634d5..950f8ec00333 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -22,8 +22,8 @@
"hexcasting.action.hexic:nbt/liftd": "秘书之纯化:双精度浮点型",
"hexcasting.action.hexic:nbt/liftf": "秘书之纯化:单精度浮点型",
"hexcasting.action.hexic:nbt/literal/array1": "秘书之精思:空字节数组",
- "hexcasting.action.hexic:nbt/literal/array2": "秘书之精思:空短整型数组",
- "hexcasting.action.hexic:nbt/literal/array4": "秘书之精思:空整型数组",
+ "hexcasting.action.hexic:nbt/literal/array2": "秘书之精思:空整型数组",
+ "hexcasting.action.hexic:nbt/literal/array4": "秘书之精思:空长整型数组",
"hexcasting.action.hexic:nbt/literal/collection": "秘书之精思:容器",
"hexcasting.action.hexic:nbt/literal/list": "秘书之精思:空列表",
"hexcasting.action.hexic:nbt/serialize": "导出器之纯化",
@@ -154,5 +154,6 @@
"item.hexic.yellow_mediaweave": "黄色媒质布匹",
"itemGroup.hexic.group": "Hexic",
"tag.item.hexic.mediaweaves": "媒质布匹",
+ "text.hexic.or_map": "%s或映射",
"text.hexic.pigment_holder_item": "存有染色剂的物品"
}
\ No newline at end of file
From bd058a25d328c59eb82fbfe6636168696bae6032 Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Sat, 22 Nov 2025 05:12:54 +0800
Subject: [PATCH 09/14] =?UTF-8?q?Hexic=20update=EF=BC=9A=E5=AE=98=E5=BA=93?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../thehexbook/en_us/entries/addon/hexic/lists2.json | 10 +++++++++-
.../thehexbook/zh_cn/entries/addon/hexic/lists2.json | 8 ++++++++
.../assets/modrinth-hexic/hexic/lang/en_us.json | 9 +++++++--
.../assets/modrinth-hexic/hexic/lang/zh_cn.json | 9 +++++++--
4 files changed, 31 insertions(+), 5 deletions(-)
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
index 43eb7f5b3729..a4637fd5ecdf 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
@@ -11,7 +11,7 @@
"anchor": "hexic:rotate",
"input": "[a], int",
"output": "[a]",
- "text": "Rotates the array leftward: an argument of 1 moves the first item of the list to the end. Negative numbers allow rotating the list rightward."
+ "text": "Rotates the list leftward: an argument of 1 moves the first item of the list to the end. Negative numbers allow rotating the list rightward."
},
{
"type": "hexcasting:pattern",
@@ -60,6 +60,14 @@
"input": "[num]",
"output": "[int]",
"text": "Adds each index to the list based on the value. For example, [1, 2, 3] becomes [0, 1, 1, 2, 2, 2]. Zero or negative numbers do not appear at all."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:extract",
+ "anchor": "hexic:extract",
+ "input": "[a], int",
+ "output": "[a], [a], a",
+ "text": "Extracts an iota from the given list, and breaks the list apart around it. Returns all items before the iota, all items after the iota, and finally the iota itself."
}
]
}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
index 32277cbacf7c..9b5544fdcb25 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
@@ -60,6 +60,14 @@
"input": "[num]",
"output": "[int]",
"text": "根据数值将各下标组为列表返回。例如,[1, 2, 3] 会变为 [0, 1, 1, 2, 2, 2]。0 和负数处的下标不会在返回值中出现。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:extract",
+ "anchor": "hexic:extract",
+ "input": "[a], int",
+ "output": "[a], [a], a",
+ "text": "从所给列表中取出 iota,并在该位置分割列表。返回指定 iota 左侧的所有元素,其右侧的所有元素,最后返回该 iota。"
}
]
}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
index 8f70f7969749..aca5e8defe99 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -5,6 +5,8 @@
"hexcasting.action.hexic:drop": "Rejection Distillation",
"hexcasting.action.hexic:dye_offhand": "Apply Pigment",
"hexcasting.action.hexic:empty_map": "Vacant Reflection: Map",
+ "hexcasting.action.hexic:extract": "Excisor's Gambit",
+ "hexcasting.action.hexic:fox": "Vulpine Gambit",
"hexcasting.action.hexic:free": "Deallocator's Gambit",
"hexcasting.action.hexic:jvm/class_of_iota": "Classifier Purification II",
"hexcasting.action.hexic:jvm/class_of_payload": "Classifier Purification I",
@@ -33,10 +35,9 @@
"hexcasting.action.hexic:staffcast_factory/lazy": "Lani's Lesser Gambit",
"hexcasting.action.hexic:take": "Retention Distillation",
"hexcasting.action.hexic:tripwire": "Tripwire Reflection",
+ "hexcasting.action.hexic:unfox": "Vulpine Expulsion",
"hexcasting.action.hexic:whatthefuck": "Suffering",
"hexcasting.action.hexic:where": "Deductive Purification",
- "hexcasting.iota.hexic:jvm/class": "Class",
- "hexcasting.iota.hexic:jvm/pointer": "Address",
"hexcasting.iota.hexic:nbt": "Tag",
"hexcasting.iota.hexic:tripwire": "Tripwire",
"hexcasting.iota.hexic:variant": "Concept",
@@ -144,6 +145,10 @@
"item.hexic.stringworm.item.hexcasting.pride_colorizer_pansexual": "Shimmering Pansexual Stringworm",
"item.hexic.stringworm.item.hexcasting.pride_colorizer_plural": "Shimmering Plural Stringworm",
"item.hexic.stringworm.item.hexcasting.pride_colorizer_transgender": "Shimmering Transgender Stringworm",
+ "item.hexic.stringworm.item.oneironaut.pigment_flame": "Shimmering Flame Stringworm",
+ "item.hexic.stringworm.item.oneironaut.pigment_echo": "Shimmering Echo Stringworm",
+ "item.hexic.stringworm.item.oneironaut.pigment_noosphere": "Shimmering Noetic Stringworm",
+ "item.hexic.stringworm.item.oneironaut.pigment_frenzyflame": "Shimmering Frenzy Stringworm",
"item.hexic.stringworm_action": "Stringworm",
"item.hexic.stringworm_hex": "Stringworm",
"item.hexic.stringworm_media": "Stringworm",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
index 950f8ec00333..d0b7246fd225 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -5,6 +5,8 @@
"hexcasting.action.hexic:drop": "拒斥之馏化",
"hexcasting.action.hexic:dye_offhand": "应用染色剂",
"hexcasting.action.hexic:empty_map": "空无之精思:映射",
+ "hexcasting.action.hexic:extract": "切除器之策略",
+ "hexcasting.action.hexic:fox": "狐狸之策略",
"hexcasting.action.hexic:free": "释放器之策略",
"hexcasting.action.hexic:jvm/class_of_iota": "判类器之纯化,第二型",
"hexcasting.action.hexic:jvm/class_of_payload": "判类器之纯化,第一型",
@@ -33,10 +35,9 @@
"hexcasting.action.hexic:staffcast_factory/lazy": "Lani之初等策略",
"hexcasting.action.hexic:take": "维持之馏化",
"hexcasting.action.hexic:tripwire": "绊线之精思",
+ "hexcasting.action.hexic:unfox": "狐狸之驱逐",
"hexcasting.action.hexic:whatthefuck": "苦痛",
"hexcasting.action.hexic:where": "演绎之纯化",
- "hexcasting.iota.hexic:jvm/class": "类",
- "hexcasting.iota.hexic:jvm/pointer": "地址",
"hexcasting.iota.hexic:nbt": "标签",
"hexcasting.iota.hexic:tripwire": "绊线",
"hexcasting.iota.hexic:variant": "概念",
@@ -144,6 +145,10 @@
"item.hexic.stringworm.item.hexcasting.pride_colorizer_pansexual": "闪亮的泛性恋毛绒线虫",
"item.hexic.stringworm.item.hexcasting.pride_colorizer_plural": "闪亮的多重人格毛绒线虫",
"item.hexic.stringworm.item.hexcasting.pride_colorizer_transgender": "闪亮的跨性别毛绒线虫",
+ "item.hexic.stringworm.item.oneironaut.pigment_flame": "闪亮的火焰毛绒线虫",
+ "item.hexic.stringworm.item.oneironaut.pigment_echo": "闪亮的回响毛绒线虫",
+ "item.hexic.stringworm.item.oneironaut.pigment_noosphere": "闪亮的智识毛绒线虫",
+ "item.hexic.stringworm.item.oneironaut.pigment_frenzyflame": "闪亮的狂热毛绒线虫",
"item.hexic.stringworm_action": "毛绒线虫",
"item.hexic.stringworm_hex": "毛绒线虫",
"item.hexic.stringworm_media": "毛绒线虫",
From e67dd68b14535fdd123b7d0889f5d443317686ed Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Tue, 25 Nov 2025 16:54:55 +0800
Subject: [PATCH 10/14] =?UTF-8?q?Hexic=20update=EF=BC=9A=E5=AE=98=E5=BA=93?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../en_us/entries/addon/hexic/lists2.json | 24 +++++++++++++++++
.../zh_cn/entries/addon/hexic/lists2.json | 26 ++++++++++++++++++-
.../modrinth-hexic/hexic/lang/en_us.json | 10 +++++++
.../modrinth-hexic/hexic/lang/zh_cn.json | 10 +++++++
4 files changed, 69 insertions(+), 1 deletion(-)
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
index a4637fd5ecdf..d79e6f8275a1 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
@@ -61,6 +61,22 @@
"output": "[int]",
"text": "Adds each index to the list based on the value. For example, [1, 2, 3] becomes [0, 1, 1, 2, 2, 2]. Zero or negative numbers do not appear at all."
},
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:mul",
+ "anchor": "hexcasting:mul",
+ "input": "[a], [b]",
+ "output": "[[a, b]]",
+ "text": "Calculates the outer product of two lists. The resulting list has an entry for every possible pairing between the input lists."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:mul",
+ "anchor": "hexcasting:mul",
+ "input": "[a], [b]",
+ "output": "[[a, b]]",
+ "text": "Calculates the inner product of two lists. If the two lists were arranged side-by-side, the resulting list has one entry for every row (unpaired elements are skipped)."
+ },
{
"type": "hexcasting:pattern",
"op_id": "hexic:extract",
@@ -68,6 +84,14 @@
"input": "[a], int",
"output": "[a], [a], a",
"text": "Extracts an iota from the given list, and breaks the list apart around it. Returns all items before the iota, all items after the iota, and finally the iota itself."
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:grep",
+ "anchor": "hexic:grep",
+ "input": "[a], [a → bool]",
+ "output": "[a]",
+ "text": "Discards iotas from the given list unless they satisfy the given predicate. Using $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ discards the current and all remaining iotas."
}
]
}
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
index 9b5544fdcb25..c8e00645324d 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
@@ -61,13 +61,37 @@
"output": "[int]",
"text": "根据数值将各下标组为列表返回。例如,[1, 2, 3] 会变为 [0, 1, 1, 2, 2, 2]。0 和负数处的下标不会在返回值中出现。"
},
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:mul",
+ "anchor": "hexcasting:mul",
+ "input": "[a], [b]",
+ "output": "[[a, b]]",
+ "text": "计算两列表的外积。即在两输入列表各取一个元素,将所有可能的值对组为列表返回。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexcasting:mul",
+ "anchor": "hexcasting:mul",
+ "input": "[a], [b]",
+ "output": "[[a, b]]",
+ "text": "计算两列表的内积。即纵向排布两列表的元素,而后相邻排列两列表,将每行的元素对组为列表返回(跳过未配对的元素)。"
+ },
{
"type": "hexcasting:pattern",
"op_id": "hexic:extract",
"anchor": "hexic:extract",
"input": "[a], int",
"output": "[a], [a], a",
- "text": "从所给列表中取出 iota,并在该位置分割列表。返回指定 iota 左侧的所有元素,其右侧的所有元素,最后返回该 iota。"
+ "text": "从所给列表中取出 iota,并在该位置分割列表。返回指定 iota 左侧的所有元素,而后返回其右侧的所有元素,最后返回该 iota。"
+ },
+ {
+ "type": "hexcasting:pattern",
+ "op_id": "hexic:grep",
+ "anchor": "hexic:grep",
+ "input": "[a], [a → bool]",
+ "output": "[a]",
+ "text": "从所给列表中移除不满足所给谓词的 iota。使用$(l:patterns/meta#hexcasting:halt)$(action)卡戎之策略/$会清除当前 iota 和后续所有 iota。"
}
]
}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
index aca5e8defe99..c19dde4cf7fd 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -1,13 +1,18 @@
{
"book.hexic.page.dye_offhand": "Imbues the item held in my offhand (e.g. a $(l:items/hexcasting)$(item)casting item/$) with the given pigment.",
+ "book.hexic.page.erase": "Erases the _Hex or iota contained within a dropped item or block. Costs one dust per item.",
+ "book.hexic.page.get_other_caster": "Adds the closest sentient being, excluding me, to the stack.",
"book.hexic.page.modulo": "Similar to Modulus, but differs for negative numbers: -8 %%₁ 3 = -2, but -8 %%₂ 3 = 1.",
"book.hexic.page.murmur": "Adds the phrase on the $(o)tip of my tongue/$ to the stack, regardless of whether I intend to say it.",
"hexcasting.action.hexic:drop": "Rejection Distillation",
"hexcasting.action.hexic:dye_offhand": "Apply Pigment",
"hexcasting.action.hexic:empty_map": "Vacant Reflection: Map",
+ "hexcasting.action.hexic:erase": "Erase Block",
"hexcasting.action.hexic:extract": "Excisor's Gambit",
"hexcasting.action.hexic:fox": "Vulpine Gambit",
"hexcasting.action.hexic:free": "Deallocator's Gambit",
+ "hexcasting.action.hexic:get_other_caster": "Dual's Reflection",
+ "hexcasting.action.hexic:grep": "Refinement Distillation",
"hexcasting.action.hexic:jvm/class_of_iota": "Classifier Purification II",
"hexcasting.action.hexic:jvm/class_of_payload": "Classifier Purification I",
"hexcasting.action.hexic:jvm/newinstance_boxed": "Constructor Purification I",
@@ -38,9 +43,14 @@
"hexcasting.action.hexic:unfox": "Vulpine Expulsion",
"hexcasting.action.hexic:whatthefuck": "Suffering",
"hexcasting.action.hexic:where": "Deductive Purification",
+ "hexcasting.special.hexic:tuple": "Coupler's Gambit",
+ "hexcasting.special.hexic:tuple.n": "Coupler's Gambit %s",
"hexcasting.iota.hexic:nbt": "Tag",
"hexcasting.iota.hexic:tripwire": "Tripwire",
"hexcasting.iota.hexic:variant": "Concept",
+ "hexcasting.mishap.bad_block.hexic:erase": "a block holding a casting item or acting as an iota holder",
+ "hexcasting.mishap.bad_item.hexic:erase": "a casting item or iota holder",
+ "hexcasting.mishap.invalid_value.class.hexic:erase": "an item entity or vector",
"hexcasting.mishap.invalid_value.class.hexic:int_or_list": "§aint§r or §5[§aint§5]§r",
"hexdoc.hexic.description": "Miscellaneous neat features and QoL patterns for Hex Casting",
"hexdoc.hexic.title": "Hexic",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
index d0b7246fd225..49f7eddfe92c 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -1,13 +1,18 @@
{
"book.hexic.page.dye_offhand": "将所给染色剂内化到我副手中的物品(如$(l:items/hexcasting)$(item)施法物品/$)里。",
+ "book.hexic.page.erase": "清除物品实体或方块中的$(hex)咒术/$或 iota。每个物品消耗 1 个紫水晶粉。",
+ "book.hexic.page.get_other_caster": "将离我最近的有智慧存在压入栈,我自己不计入统计范围。",
"book.hexic.page.modulo": "与余数之馏化类似,但两者在负数上的表现不同:-8 %%₁ 3 = -2,而 -8 %%₂ 3 = 1。",
"book.hexic.page.murmur": "将$(o)在我嘴边/$的话语压入栈中,后续是否要说出不影响结果。",
"hexcasting.action.hexic:drop": "拒斥之馏化",
"hexcasting.action.hexic:dye_offhand": "应用染色剂",
"hexcasting.action.hexic:empty_map": "空无之精思:映射",
+ "hexcasting.action.hexic:erase": "清除方块",
"hexcasting.action.hexic:extract": "切除器之策略",
"hexcasting.action.hexic:fox": "狐狸之策略",
"hexcasting.action.hexic:free": "释放器之策略",
+ "hexcasting.action.hexic:get_other_caster": "对偶之精思",
+ "hexcasting.action.hexic:grep": "精炼之馏化",
"hexcasting.action.hexic:jvm/class_of_iota": "判类器之纯化,第二型",
"hexcasting.action.hexic:jvm/class_of_payload": "判类器之纯化,第一型",
"hexcasting.action.hexic:jvm/newinstance_boxed": "构造器之纯化,第一型",
@@ -38,9 +43,14 @@
"hexcasting.action.hexic:unfox": "狐狸之驱逐",
"hexcasting.action.hexic:whatthefuck": "苦痛",
"hexcasting.action.hexic:where": "演绎之纯化",
+ "hexcasting.special.hexic:tuple": "耦合器之策略",
+ "hexcasting.special.hexic:tuple.n": "耦合器之策略:%s",
"hexcasting.iota.hexic:nbt": "标签",
"hexcasting.iota.hexic:tripwire": "绊线",
"hexcasting.iota.hexic:variant": "概念",
+ "hexcasting.mishap.bad_block.hexic:erase": "一个存有施法物品或用于存储iota的方块",
+ "hexcasting.mishap.bad_item.hexic:erase": "一个施法物品或iota存储器",
+ "hexcasting.mishap.invalid_value.class.hexic:erase": "一个物品实体或向量",
"hexcasting.mishap.invalid_value.class.hexic:int_or_list": "§aint§r或§5[§aint§5]§r",
"hexdoc.hexic.description": "各种好用的特性和提升体验的图案,专为咒法学设计",
"hexdoc.hexic.title": "Hexic",
From d0b5a2bfbbadcf1d878d02e39d7a7995a729881b Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Sun, 7 Dec 2025 20:36:26 +0800
Subject: [PATCH 11/14] =?UTF-8?q?Hexic=20update=EF=BC=9A=E5=AE=98=E5=BA=93?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../thehexbook/en_us/entries/addon/hexic/lists2.json | 6 ++++--
.../thehexbook/zh_cn/entries/addon/hexic/lists2.json | 6 ++++--
.../1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json | 4 ++++
.../1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json | 4 ++++
4 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
index d79e6f8275a1..99d3d82fe7c2 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
@@ -63,6 +63,7 @@
},
{
"type": "hexcasting:pattern",
+ "header": "Exterior Distillation",
"op_id": "hexcasting:mul",
"anchor": "hexcasting:mul",
"input": "[a], [b]",
@@ -71,8 +72,9 @@
},
{
"type": "hexcasting:pattern",
- "op_id": "hexcasting:mul",
- "anchor": "hexcasting:mul",
+ "header": "Interior Distillation",
+ "op_id": "hexcasting:div",
+ "anchor": "hexcasting:div",
"input": "[a], [b]",
"output": "[[a, b]]",
"text": "Calculates the inner product of two lists. If the two lists were arranged side-by-side, the resulting list has one entry for every row (unpaired elements are skipped)."
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
index c8e00645324d..f6a13dc3b488 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
@@ -63,6 +63,7 @@
},
{
"type": "hexcasting:pattern",
+ "header": "外积之馏化",
"op_id": "hexcasting:mul",
"anchor": "hexcasting:mul",
"input": "[a], [b]",
@@ -71,8 +72,9 @@
},
{
"type": "hexcasting:pattern",
- "op_id": "hexcasting:mul",
- "anchor": "hexcasting:mul",
+ "header": "内积之馏化",
+ "op_id": "hexcasting:div",
+ "anchor": "hexcasting:div",
"input": "[a], [b]",
"output": "[[a, b]]",
"text": "计算两列表的内积。即纵向排布两列表的元素,而后相邻排列两列表,将每行的元素对组为列表返回(跳过未配对的元素)。"
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
index c19dde4cf7fd..ada2bf9c4270 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -4,6 +4,7 @@
"book.hexic.page.get_other_caster": "Adds the closest sentient being, excluding me, to the stack.",
"book.hexic.page.modulo": "Similar to Modulus, but differs for negative numbers: -8 %%₁ 3 = -2, but -8 %%₂ 3 = 1.",
"book.hexic.page.murmur": "Adds the phrase on the $(o)tip of my tongue/$ to the stack, regardless of whether I intend to say it.",
+ "hexcasting.action.hexic:deleteworld": "Shatter Demiplane",
"hexcasting.action.hexic:drop": "Rejection Distillation",
"hexcasting.action.hexic:dye_offhand": "Apply Pigment",
"hexcasting.action.hexic:empty_map": "Vacant Reflection: Map",
@@ -17,6 +18,8 @@
"hexcasting.action.hexic:jvm/class_of_payload": "Classifier Purification I",
"hexcasting.action.hexic:jvm/newinstance_boxed": "Constructor Purification I",
"hexcasting.action.hexic:jvm/newinstance_unboxed": "Constructor Purification II",
+ "hexcasting.action.hexic:make_cme": "Thoth's Pseudogambit",
+ "hexcasting.action.hexic:makeworld": "Conjure Demiplane",
"hexcasting.action.hexic:malloc": "Allocator's Purification",
"hexcasting.action.hexic:metatable": "Patchwork Exaltation",
"hexcasting.action.hexic:modulo": "Modulus Distillation II",
@@ -36,6 +39,7 @@
"hexcasting.action.hexic:nbt/serialize": "Exporter's Purification",
"hexcasting.action.hexic:reveal": "Greater Reveal",
"hexcasting.action.hexic:rotate": "Ferris Distillation",
+ "hexcasting.action.hexic:snow": "Summon Snow",
"hexcasting.action.hexic:staffcast_factory": "Lani's Greater Gambit",
"hexcasting.action.hexic:staffcast_factory/lazy": "Lani's Lesser Gambit",
"hexcasting.action.hexic:take": "Retention Distillation",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
index 49f7eddfe92c..7466cf319198 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -4,6 +4,7 @@
"book.hexic.page.get_other_caster": "将离我最近的有智慧存在压入栈,我自己不计入统计范围。",
"book.hexic.page.modulo": "与余数之馏化类似,但两者在负数上的表现不同:-8 %%₁ 3 = -2,而 -8 %%₂ 3 = 1。",
"book.hexic.page.murmur": "将$(o)在我嘴边/$的话语压入栈中,后续是否要说出不影响结果。",
+ "hexcasting.action.hexic:deleteworld": "击碎半位面",
"hexcasting.action.hexic:drop": "拒斥之馏化",
"hexcasting.action.hexic:dye_offhand": "应用染色剂",
"hexcasting.action.hexic:empty_map": "空无之精思:映射",
@@ -17,6 +18,8 @@
"hexcasting.action.hexic:jvm/class_of_payload": "判类器之纯化,第一型",
"hexcasting.action.hexic:jvm/newinstance_boxed": "构造器之纯化,第一型",
"hexcasting.action.hexic:jvm/newinstance_unboxed": "构造器之纯化,第二型",
+ "hexcasting.action.hexic:make_cme": "托特之伪策略",
+ "hexcasting.action.hexic:makeworld": "构筑半位面",
"hexcasting.action.hexic:malloc": "分配器之纯化",
"hexcasting.action.hexic:metatable": "修补之提整",
"hexcasting.action.hexic:modulo": "余数之馏化,第二型",
@@ -36,6 +39,7 @@
"hexcasting.action.hexic:nbt/serialize": "导出器之纯化",
"hexcasting.action.hexic:reveal": "卓越揭示",
"hexcasting.action.hexic:rotate": "摩天轮之馏化",
+ "hexcasting.action.hexic:snow": "召雪",
"hexcasting.action.hexic:staffcast_factory": "Lani之卓越策略",
"hexcasting.action.hexic:staffcast_factory/lazy": "Lani之初等策略",
"hexcasting.action.hexic:take": "维持之馏化",
From 5d71a0971e4c57dccbaf194cda9db7fa8ce264f2 Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Thu, 18 Dec 2025 13:46:51 +0800
Subject: [PATCH 12/14] =?UTF-8?q?Hexic=20Iotaworks=20PhLib=20update?=
=?UTF-8?q?=EF=BC=9A=E5=AE=98=E5=BA=93=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../entries/addon/{hexic => iotaworks}/metatables.json | 8 ++++----
.../en_us/entries/addon/{hexic => phlib}/maps.json | 4 ++--
.../entries/addon/{hexic => iotaworks}/metatables.json | 8 ++++----
.../zh_cn/entries/addon/{hexic => phlib}/maps.json | 4 ++--
.../assets/modrinth-hexic/hexic/lang/en_us.json | 2 --
.../assets/modrinth-hexic/hexic/lang/zh_cn.json | 2 --
.../assets/modrinth-hexic/iotaworks/lang/en_us.json | 3 +++
.../assets/modrinth-hexic/iotaworks/lang/zh_cn.json | 5 +++++
.../assets/modrinth-hexic/phlib/lang/en_us.json | 5 +++++
.../assets/modrinth-hexic/phlib/lang/zh_cn.json | 3 +++
10 files changed, 28 insertions(+), 16 deletions(-)
rename projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/{hexic => iotaworks}/metatables.json (81%)
rename projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/{hexic => phlib}/maps.json (95%)
rename projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/{hexic => iotaworks}/metatables.json (93%)
rename projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/{hexic => phlib}/maps.json (94%)
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/en_us.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/zh_cn.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/en_us.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/zh_cn.json
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/metatables.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/iotaworks/metatables.json
similarity index 81%
rename from projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/metatables.json
rename to projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/iotaworks/metatables.json
index f0e626cdb76d..4f9f676da1d9 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/metatables.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/iotaworks/metatables.json
@@ -6,11 +6,11 @@
"pages": [
"I've discovered a way to create a new type of iota — an abhorrence against Nature of my own doing. This pattern weaves a 'sheath' of _media out of some iota, letting me customize several attributes of the new iota. Though this can make my spells more expressive, this ability is not to be taken lightly — I cannot imagine the mischief others would do with these 'patchwork' iotas.",
"To assemble a patchwork iota, I must provide four source iotas:$(br)$(li)The 'userdata' iota, passed to my overload _Hexes.$(li)The 'display' iota, visible to my eyes.$(li)A color for the iota, as an RGB vector in the 0-1 range.$(li)A pointer to an $(thing)overload map./$",
- "Such an 'overload map' is merely a regular $(l:addon/hexic/maps)$(thing)Map/$ iota (mapping patterns to the _Hexes they should be replaced with), but stored within a $(l:properties)$(thing)Property/$. I assume that Nature's reason for boxing like this is to save space: it's likely I'll have many patched iotas all using the same overloads. This also gives me the convenience of updating every instance with merely $(l:properties#hexcellular:set_property)$(action)Schrödinger's Gambit/$, rather than finding and updating them all by hand.",
+ "Such an 'overload map' is merely a regular $(l:addon/phlib/maps)$(thing)Map/$ iota (mapping patterns to the _Hexes they should be replaced with), but stored within a $(l:properties)$(thing)Property/$. I assume that Nature's reason for boxing like this is to save space: it's likely I'll have many patched iotas all using the same overloads. This also gives me the convenience of updating every instance with merely $(l:properties#hexcellular:set_property)$(action)Schrödinger's Gambit/$, rather than finding and updating them all by hand.",
{
"type": "hexcasting:pattern",
- "anchor": "hexic:metatable",
- "op_id": "hexic:metatable",
+ "anchor": "iotaworks:metatable",
+ "op_id": "iotaworks:metatable",
"input": "iota, iota, vec, property",
"output": "patchwork",
"text": "$(br)Constructs a Patchwork iota from the userdata (iota stored inside), display iota (visible to my eyes), color, and an overload map."
@@ -28,7 +28,7 @@
{
"type": "patchouli:text",
"flag": "mod:hexdoc",
- "text": "These $(thing)overload maps/$ resemble a technique I've seen before — the concept of redefining patterns on a fundamental level resembles the moon cultists' (little time to explain) $(l:https://www.lua.org/pil/13.html)metatables/$, which allow associating a table with another table to redefine its operations. When my 'metamethods' are invoked, the userdata iota is pushed to the top of the stack. All other information about the patchwork disintegrates: I'll need to recreate it from scratch (maybe I should use a 'constructor' macro?) if I want to return a new iota of the same type."
+ "text": "These $(thing)overload maps/$ resemble a technique I've heard of before — the concept of redefining patterns on a fundamental level resembles the moon cultists' (little time to explain) $(l:https://www.lua.org/pil/13.html)metatables/$, which allow associating a table with another table to redefine its operations. When my 'metamethods' are invoked, the userdata iota is pushed to the top of the stack. All other information about the patchwork disintegrates: I'll need to recreate it from scratch (maybe I should use a 'constructor' macro?) if I want to return a new iota of the same type."
},
{
"type": "patchouli:text",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/maps.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/phlib/maps.json
similarity index 95%
rename from projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/maps.json
rename to projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/phlib/maps.json
index 6c87ecc6f4c7..84fba50e30d4 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/maps.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/phlib/maps.json
@@ -7,8 +7,8 @@
"Maps are an efficient structure holding pairings of some iota to some other iota. While this is perfectly possible using merely list operations, dedicated map iotas use some arcane substance called a '$(thing)Hash/$'. While this doesn't reduce the $(o)operations/$ required to access a map, it desperately reduces the load on Nature, nearing O(1) for most access.",
{
"type": "hexcasting:pattern",
- "op_id": "hexic:empty_map",
- "anchor": "hexic:empty_map",
+ "op_id": "phlib:empty_map",
+ "anchor": "phlib:empty_map",
"input": "",
"output": "map<⊥, ⊥>",
"text": "Creates a new empty map for my usage."
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/metatables.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/iotaworks/metatables.json
similarity index 93%
rename from projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/metatables.json
rename to projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/iotaworks/metatables.json
index 1db5121c80f3..875b1a0e1704 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/metatables.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/iotaworks/metatables.json
@@ -6,11 +6,11 @@
"pages": [
"我找到了制造新种类 iota 的方法——由我对自然行径的憎恶催生。这个图案会在 iota 外部编织一层$(media)媒质/$“鞘”,以让我自定义新 iota 的多个属性。虽然这么做会让我的咒术更昂贵,但也不应轻视这种力量——我无法想象,其他人靠这些“修补”iota 能干出什么恶事。",
"构造修补 iota 时,必须提供 4 个来源 iota:$(br)$(li)自定义数据(userdata),真正传递给重载$(hex)咒术/$的 iota。$(li)所谓“展示”iota,我视角下 iota 的样子。$(li)Iota 的颜色,形式为 RGB 向量,分量值域为 0 到 1。$(li)指向$(thing)重载映射/$的指针。",
- "此处提到的“重载映射”只是一个普通的$(l:addon/hexic/maps)$(thing)映射/$ iota(图案至$(hex)咒术/$的映射,后者替代前者执行),但需整体存储在$(l:properties)$(thing)质性/$内。我推测自然进行封装是为了省空间,因为我可能会在多个修补 iota 中用到同一个重载映射。这同时也方便我更新所有实例——用一条$(l:properties#hexcellular:set_property)$(action)薛定谔之策略/$就可以了,不需要逐一找出更新。",
+ "此处提到的“重载映射”只是一个普通的$(l:addon/phlib/maps)$(thing)映射/$ iota(图案至$(hex)咒术/$的映射,后者替代前者执行),但需整体存储在$(l:properties)$(thing)质性/$内。我推测自然进行封装是为了省空间,因为我可能会在多个修补 iota 中用到同一个重载映射。这同时也方便我更新所有实例——用一条$(l:properties#hexcellular:set_property)$(action)薛定谔之策略/$就可以了,不需要逐一找出更新。",
{
"type": "hexcasting:pattern",
- "anchor": "hexic:metatable",
- "op_id": "hexic:metatable",
+ "anchor": "iotaworks:metatable",
+ "op_id": "iotaworks:metatable",
"input": "iota, iota, vec, property",
"output": "patchwork",
"text": "$(br)使用自定义数据(userdata,内部存储的 iota)、展示 iota(实际看见的 iota)、颜色、重载映射创建一个修补 iota。"
@@ -28,7 +28,7 @@
{
"type": "patchouli:text",
"flag": "mod:hexdoc",
- "text": "这些$(thing)重载映射/$和我之前见过的一种技巧很像:在基础层面上重新定义图案。那些月之邪教徒(没位置解释)用到的$(l:https://www.lua.org/pil/13.html)元表/$——关联两张表来重新定义运算符——也跟它很类似。每当唤起我这边的“元方法”时,即会将自定义数据压栈。修补 iota 的其他信息则都遗失了;如果要返回同种 iota,就需要从头再构建一遍。也许可以用个“构造”宏?"
+ "text": "这些$(thing)重载映射/$和我之前听过的一种技巧很像:在基础层面上重新定义图案。那些月之邪教徒(没位置解释)用到的$(l:https://www.lua.org/pil/13.html)元表/$——关联两张表来重新定义运算符——也跟它很类似。每当唤起我这边的“元方法”时,即会将自定义数据压栈。修补 iota 的其他信息则都遗失了;如果要返回同种 iota,就需要从头再构建一遍。也许可以用个“构造”宏?"
},
{
"type": "patchouli:text",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/maps.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/phlib/maps.json
similarity index 94%
rename from projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/maps.json
rename to projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/phlib/maps.json
index 024d071e3e69..8c88a1e2017f 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/maps.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/phlib/maps.json
@@ -7,8 +7,8 @@
"映射是能存储 iota 对的高效结构。虽然这种功能只靠列表操作也能做到,但专门设计的映射 iota 用到了某种奥秘物件,称作“$(thing)哈希/$”。这种区别并不会减少访问映射所需$(o)运算符/$的数量,却能大幅降低自然的负载,大多数访问下接近于 O(1)。",
{
"type": "hexcasting:pattern",
- "op_id": "hexic:empty_map",
- "anchor": "hexic:empty_map",
+ "op_id": "phlib:empty_map",
+ "anchor": "phlib:empty_map",
"input": "",
"output": "map<⊥, ⊥>",
"text": "创建一个空映射以供使用。"
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
index ada2bf9c4270..b25a24aedae3 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -7,7 +7,6 @@
"hexcasting.action.hexic:deleteworld": "Shatter Demiplane",
"hexcasting.action.hexic:drop": "Rejection Distillation",
"hexcasting.action.hexic:dye_offhand": "Apply Pigment",
- "hexcasting.action.hexic:empty_map": "Vacant Reflection: Map",
"hexcasting.action.hexic:erase": "Erase Block",
"hexcasting.action.hexic:extract": "Excisor's Gambit",
"hexcasting.action.hexic:fox": "Vulpine Gambit",
@@ -21,7 +20,6 @@
"hexcasting.action.hexic:make_cme": "Thoth's Pseudogambit",
"hexcasting.action.hexic:makeworld": "Conjure Demiplane",
"hexcasting.action.hexic:malloc": "Allocator's Purification",
- "hexcasting.action.hexic:metatable": "Patchwork Exaltation",
"hexcasting.action.hexic:modulo": "Modulus Distillation II",
"hexcasting.action.hexic:murmur": "Murmur Reflection",
"hexcasting.action.hexic:nbt/deserialize": "Importer's Purification",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
index 7466cf319198..940bf4baa6c5 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -7,7 +7,6 @@
"hexcasting.action.hexic:deleteworld": "击碎半位面",
"hexcasting.action.hexic:drop": "拒斥之馏化",
"hexcasting.action.hexic:dye_offhand": "应用染色剂",
- "hexcasting.action.hexic:empty_map": "空无之精思:映射",
"hexcasting.action.hexic:erase": "清除方块",
"hexcasting.action.hexic:extract": "切除器之策略",
"hexcasting.action.hexic:fox": "狐狸之策略",
@@ -21,7 +20,6 @@
"hexcasting.action.hexic:make_cme": "托特之伪策略",
"hexcasting.action.hexic:makeworld": "构筑半位面",
"hexcasting.action.hexic:malloc": "分配器之纯化",
- "hexcasting.action.hexic:metatable": "修补之提整",
"hexcasting.action.hexic:modulo": "余数之馏化,第二型",
"hexcasting.action.hexic:murmur": "私语之精思",
"hexcasting.action.hexic:nbt/deserialize": "导入器之纯化",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/en_us.json
new file mode 100644
index 000000000000..fad1a6610c3d
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/en_us.json
@@ -0,0 +1,3 @@
+{
+ "hexcasting.action.phlib:empty_map": "Vacant Reflection: Map"
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/zh_cn.json
new file mode 100644
index 000000000000..b3fa2cb0a6bb
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/zh_cn.json
@@ -0,0 +1,5 @@
+{
+ "modmenu.nameTranslation.iotaworks": "Iota工程",
+ "modmenu.descriptionTranslation.iotaworks": "能操纵iota本身的咒法学附属。",
+ "hexcasting.action.iotaworks:metatable": "修补之提整"
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/en_us.json
new file mode 100644
index 000000000000..44c7dcb1a787
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/en_us.json
@@ -0,0 +1,5 @@
+{
+ "modmenu.nameTranslation.iotaworks": "Iotaworks",
+ "modmenu.descriptionTranslation.iotaworks": "A Hex Casting addon for manipulating iotas.",
+ "hexcasting.action.iotaworks:metatable": "Patchwork Exaltation"
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/zh_cn.json
new file mode 100644
index 000000000000..4075961e77f1
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/zh_cn.json
@@ -0,0 +1,3 @@
+{
+ "hexcasting.action.phlib:empty_map": "空无之精思:映射"
+}
\ No newline at end of file
From d1996d5c14de46a4e5ac0b09e36a753f8cccb7a3 Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Sat, 27 Dec 2025 16:50:28 +0800
Subject: [PATCH 13/14] =?UTF-8?q?HexxyTongue=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
---
.../addon/{hexic => hexxytongue}/greater_reveal.json | 6 +++---
.../addon/{hexic => hexxytongue}/greater_reveal.json | 6 +++---
.../1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json | 2 --
.../1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json | 2 --
.../assets/modrinth-hexic/hexxytongue/lang/en_us.json | 4 ++++
.../assets/modrinth-hexic/hexxytongue/lang/zh_cn.json | 4 ++++
6 files changed, 14 insertions(+), 10 deletions(-)
rename projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/{hexic => hexxytongue}/greater_reveal.json (75%)
rename projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/{hexic => hexxytongue}/greater_reveal.json (83%)
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexxytongue/lang/en_us.json
create mode 100644 projects/1.20-fabric/assets/modrinth-hexic/hexxytongue/lang/zh_cn.json
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/greater_reveal.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexxytongue/greater_reveal.json
similarity index 75%
rename from projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/greater_reveal.json
rename to projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexxytongue/greater_reveal.json
index 1e0659eda14e..411d38f064f5 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/greater_reveal.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexxytongue/greater_reveal.json
@@ -7,11 +7,11 @@
"Thus, I've devised a new pattern of my own. It's similar to $(l:hexcasting:patterns/basics#hexcasting:print)$(action)Reveal/$, but the message is lodged well within my mind, and I forget it instantly if I replace it with something else. It can also take a list of messages, for convenience.",
{
"type": "hexcasting:pattern",
- "anchor": "hexic:reveal",
- "op_id": "hexic:reveal",
+ "anchor": "hexxytounge:reveal",
+ "op_id": "hexxytounge:reveal",
"input": "[iota] | iota",
"output": "",
- "text": "Takes a list of iotas (or a single non-iota, which is treated as a list with one element) and displays them permanently to the caster. Displayed iotas survive all methods that would clear a normal Reveal, and can only be cleared by another casting of Greater Reveal."
+ "text": "Takes a list of iotas (or a single non-iota, which is treated as a list with one element) and embeds them in my mind persistently. Displayed iotas survive all methods that would clear a normal Reveal, and can only be cleared by another casting of Greater Reveal or my untimely demise."
},
"$(o)To be a Hexcaster is to glimpse a truth that might best be hidden./$"
]
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/greater_reveal.json b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexxytongue/greater_reveal.json
similarity index 83%
rename from projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/greater_reveal.json
rename to projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexxytongue/greater_reveal.json
index 30c0c8679418..1fb3e22619f1 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/greater_reveal.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexxytongue/greater_reveal.json
@@ -7,11 +7,11 @@
"因此,我自己设计了一个图案。它的功能和$(l:hexcasting:patterns/basics#hexcasting:print)$(action)揭示/$类似,但发来的消息会牢牢嵌在我的意识里,而且一经替换就会立刻遗忘。为方便起见,它还能接受一个消息列表。",
{
"type": "hexcasting:pattern",
- "anchor": "hexic:reveal",
- "op_id": "hexic:reveal",
+ "anchor": "hexxytounge:reveal",
+ "op_id": "hexxytounge:reveal",
"input": "[iota] | iota",
"output": "",
- "text": "接受 iota 列表(或单个非 iota,此时视作单元素列表)并永久性将其展示给施法者。清除普通揭示的方法无法清除此操作展示的 iota,而是只能通过再次施放卓越揭示清除。"
+ "text": "接受 iota 列表(或单个非 iota,此时视作单元素列表)并永久性将其嵌入我的意识。清除普通揭示的方法无法清除此操作展示的 iota,而是只能通过再次施放卓越揭示或死亡清除。"
},
"$(o)成为咒术师,就是去探索本不应被知晓的真相。/$"
]
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
index b25a24aedae3..b2707d4c3344 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/en_us.json
@@ -3,7 +3,6 @@
"book.hexic.page.erase": "Erases the _Hex or iota contained within a dropped item or block. Costs one dust per item.",
"book.hexic.page.get_other_caster": "Adds the closest sentient being, excluding me, to the stack.",
"book.hexic.page.modulo": "Similar to Modulus, but differs for negative numbers: -8 %%₁ 3 = -2, but -8 %%₂ 3 = 1.",
- "book.hexic.page.murmur": "Adds the phrase on the $(o)tip of my tongue/$ to the stack, regardless of whether I intend to say it.",
"hexcasting.action.hexic:deleteworld": "Shatter Demiplane",
"hexcasting.action.hexic:drop": "Rejection Distillation",
"hexcasting.action.hexic:dye_offhand": "Apply Pigment",
@@ -21,7 +20,6 @@
"hexcasting.action.hexic:makeworld": "Conjure Demiplane",
"hexcasting.action.hexic:malloc": "Allocator's Purification",
"hexcasting.action.hexic:modulo": "Modulus Distillation II",
- "hexcasting.action.hexic:murmur": "Murmur Reflection",
"hexcasting.action.hexic:nbt/deserialize": "Importer's Purification",
"hexcasting.action.hexic:nbt/lift1": "Secretary's Purification: Byte",
"hexcasting.action.hexic:nbt/lift2": "Secretary's Purification: Short",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
index 940bf4baa6c5..32663dd3a75a 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexic/lang/zh_cn.json
@@ -3,7 +3,6 @@
"book.hexic.page.erase": "清除物品实体或方块中的$(hex)咒术/$或 iota。每个物品消耗 1 个紫水晶粉。",
"book.hexic.page.get_other_caster": "将离我最近的有智慧存在压入栈,我自己不计入统计范围。",
"book.hexic.page.modulo": "与余数之馏化类似,但两者在负数上的表现不同:-8 %%₁ 3 = -2,而 -8 %%₂ 3 = 1。",
- "book.hexic.page.murmur": "将$(o)在我嘴边/$的话语压入栈中,后续是否要说出不影响结果。",
"hexcasting.action.hexic:deleteworld": "击碎半位面",
"hexcasting.action.hexic:drop": "拒斥之馏化",
"hexcasting.action.hexic:dye_offhand": "应用染色剂",
@@ -21,7 +20,6 @@
"hexcasting.action.hexic:makeworld": "构筑半位面",
"hexcasting.action.hexic:malloc": "分配器之纯化",
"hexcasting.action.hexic:modulo": "余数之馏化,第二型",
- "hexcasting.action.hexic:murmur": "私语之精思",
"hexcasting.action.hexic:nbt/deserialize": "导入器之纯化",
"hexcasting.action.hexic:nbt/lift1": "秘书之纯化:字节",
"hexcasting.action.hexic:nbt/lift2": "秘书之纯化:短整型",
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexxytongue/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/hexxytongue/lang/en_us.json
new file mode 100644
index 000000000000..ca9146792a0d
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexxytongue/lang/en_us.json
@@ -0,0 +1,4 @@
+{
+ "hexcasting.action.hexxytounge:murmur": "Murmur Reflection",
+ "book.hexxytounge.page.murmur": "Finds the region of my mind known as the 'chat box' and adds its contents to the stack. If it cannot be found, adds Null instead."
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexxytongue/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-hexic/hexxytongue/lang/zh_cn.json
new file mode 100644
index 000000000000..8137967cf173
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-hexic/hexxytongue/lang/zh_cn.json
@@ -0,0 +1,4 @@
+{
+ "hexcasting.action.hexxytounge:murmur": "私语之精思",
+ "book.hexxytounge.page.murmur": "找到我意识中名为“聊天栏”的区域,将其内容压栈;无法找到则返回 Null。"
+}
\ No newline at end of file
From 011a8397ff3175aa75ed2bdb18255910c89ab66b Mon Sep 17 00:00:00 2001
From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com>
Date: Mon, 12 Jan 2026 23:55:20 +0800
Subject: [PATCH 14/14] =?UTF-8?q?Iotaworks=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
---
.../assets/modrinth-hexic/iotaworks/lang/en_us.json | 3 ---
.../1.20-fabric/assets/modrinth-hexic/phlib/lang/en_us.json | 4 +---
.../thehexbook/en_us/entries/addon/iotaworks/metatables.json | 0
.../thehexbook/zh_cn/entries/addon/iotaworks/metatables.json | 0
.../assets/modrinth-iotaworks/iotaworks/lang/en_us.json | 5 +++++
.../iotaworks/lang/zh_cn.json | 0
6 files changed, 6 insertions(+), 6 deletions(-)
delete mode 100644 projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/en_us.json
rename projects/1.20-fabric/assets/{modrinth-hexic => modrinth-iotaworks}/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/iotaworks/metatables.json (100%)
rename projects/1.20-fabric/assets/{modrinth-hexic => modrinth-iotaworks}/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/iotaworks/metatables.json (100%)
create mode 100644 projects/1.20-fabric/assets/modrinth-iotaworks/iotaworks/lang/en_us.json
rename projects/1.20-fabric/assets/{modrinth-hexic => modrinth-iotaworks}/iotaworks/lang/zh_cn.json (100%)
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/en_us.json
deleted file mode 100644
index fad1a6610c3d..000000000000
--- a/projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/en_us.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "hexcasting.action.phlib:empty_map": "Vacant Reflection: Map"
-}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/en_us.json
index 44c7dcb1a787..fad1a6610c3d 100644
--- a/projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/en_us.json
+++ b/projects/1.20-fabric/assets/modrinth-hexic/phlib/lang/en_us.json
@@ -1,5 +1,3 @@
{
- "modmenu.nameTranslation.iotaworks": "Iotaworks",
- "modmenu.descriptionTranslation.iotaworks": "A Hex Casting addon for manipulating iotas.",
- "hexcasting.action.iotaworks:metatable": "Patchwork Exaltation"
+ "hexcasting.action.phlib:empty_map": "Vacant Reflection: Map"
}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/iotaworks/metatables.json b/projects/1.20-fabric/assets/modrinth-iotaworks/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/iotaworks/metatables.json
similarity index 100%
rename from projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/iotaworks/metatables.json
rename to projects/1.20-fabric/assets/modrinth-iotaworks/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/iotaworks/metatables.json
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/iotaworks/metatables.json b/projects/1.20-fabric/assets/modrinth-iotaworks/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/iotaworks/metatables.json
similarity index 100%
rename from projects/1.20-fabric/assets/modrinth-hexic/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/iotaworks/metatables.json
rename to projects/1.20-fabric/assets/modrinth-iotaworks/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/iotaworks/metatables.json
diff --git a/projects/1.20-fabric/assets/modrinth-iotaworks/iotaworks/lang/en_us.json b/projects/1.20-fabric/assets/modrinth-iotaworks/iotaworks/lang/en_us.json
new file mode 100644
index 000000000000..44c7dcb1a787
--- /dev/null
+++ b/projects/1.20-fabric/assets/modrinth-iotaworks/iotaworks/lang/en_us.json
@@ -0,0 +1,5 @@
+{
+ "modmenu.nameTranslation.iotaworks": "Iotaworks",
+ "modmenu.descriptionTranslation.iotaworks": "A Hex Casting addon for manipulating iotas.",
+ "hexcasting.action.iotaworks:metatable": "Patchwork Exaltation"
+}
\ No newline at end of file
diff --git a/projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/zh_cn.json b/projects/1.20-fabric/assets/modrinth-iotaworks/iotaworks/lang/zh_cn.json
similarity index 100%
rename from projects/1.20-fabric/assets/modrinth-hexic/iotaworks/lang/zh_cn.json
rename to projects/1.20-fabric/assets/modrinth-iotaworks/iotaworks/lang/zh_cn.json