diff --git a/projects/1.20-fabric/assets/hexthings/hexthings/README.md b/projects/1.20-fabric/assets/hexthings/hexthings/README.md new file mode 100644 index 000000000000..e38ed20c15ce --- /dev/null +++ b/projects/1.20-fabric/assets/hexthings/hexthings/README.md @@ -0,0 +1 @@ +[见主文档](/projects/1.20/assets/hexthings/hexthings) \ No newline at end of file diff --git a/projects/1.20-fabric/assets/hexthings/hexthings/lang/en_us.flatten.json5 b/projects/1.20-fabric/assets/hexthings/hexthings/lang/en_us.flatten.json5 new file mode 100644 index 000000000000..6b8e96ad54eb --- /dev/null +++ b/projects/1.20-fabric/assets/hexthings/hexthings/lang/en_us.flatten.json5 @@ -0,0 +1,159 @@ +{ + hexthings: { + book: { + patterns: { + utils: { + "": "Utilities", + noop: "Does nothing, but the tail can be any shape. Useful as \ + a placeholder to be replaced later", + insert: "Similar to $(l:patterns/lists#hexcasting:replace)$(action)Surgeon's Exaltation/$, but replaces the \ + element of the first list instead with the $(o)contents/$ of the second list, rather than with the list itself.", + unquote: "This pattern can be used to place raw iota directly into an \ + Introspection-Restrospection pair. After drawing this pattern, all \ + subsequent patterns are \"unescaped\", allowing them to be executed as \ + normal until a $(l:patterns/hexutils#hexthings:requote)$(action)Retrojection/$ is \ + encountered.", + requote: "When used after an \ + $(l:patterns/hexutils#hexthings:unquote)$(action)Introjection/$, \ + This pattern puts all iota on the stack into the escaped list, with the \ + previous state of the stack being restored.", + isgreatersent: "Pushes if my current sentinel is a \ + $(l:patterns/great_spells/greater_sentinel)$(action)Greater Sentinel/$, \ + or $(l:patterns/consts#hexcasting:const/null)$(thing)Null/$ if I \ + have no sentinel at all." + }, + dict: { + "": "Dictionary Manipulation", + empty_dict: "Creates an empty Dictionary iota.", + abs: "Pushes the number of entries in the Dictionary", + replace: "Places the iota in the Dictionary at the specified key. Not every \ + iota type is allowed to be used as a key, with notable the exceptions being \ + $(l:casting/influences)$(thing)Garbage/$ and $(l:patterns/meta#hexcasting:\ + eval/cc)$(thing)Jump/$ iota. Attempting to set the value of a key to \ + $(l:patterns/consts#hexcasting:const/null)$(thing)Null/$ will remove the \ + key the same way using $(l:patterns/dict#hexcasting:remove_from)$(action)\ + Excisor's Distillation/$ would.", + remove_from: "Removes the key-value pair from the Dictionary, pushing the \ + previous value, or $(l:patterns/consts#hexcasting:const/null)$(thing)Null/$ \ + if no value was present.", + index_of: "Pushes the value present at the provided key, or $(l:patterns/consts\ + #hexcasting:const/null)$(thing)Null/$ if no value was present.", + dict_keys: "Pushes a list of the keys present in the Dictionary.", + dict_vals: "Pushes a list of the values present in the Dictionary.", + dict_ents: "Pushes a list of the key-value pairs in this Dictionary, each being \ + a 2 element list." + }, + uiua: { + "": "Advanced List Operators", + uiua_take: "Keeps elements of the list based on the second argument. If it's a \ + number and positive, it keeps the first $(o)n/$ elements of the list, if \ + negative; the last $(o)n/$. If given a list, then its elements are treated as \ + indices to keep.", + uiua_drop: "The exact inverse of $(l:patterns/uiua#hexthings:uiua_take)$(action)\ + Retention Distillation/$, dropping the specified elements instead of dropping the \ + rest.", + uiua_rotate: "Shifts the contents of the list by the specified amount, wrapping elements \ + that go \"outside\" the list.", + uiua_where: "Pushes a list containing the indices of values that are \ + $(l:patterns/logic#hexcasting:bool_coerce)considered true by Nature/$.", + div: "Pushes a list containing pairs of values corresponding to the values at that \ + index in each list.", + mul: "Pushes a list containing every combination of elements between the two lists." + } + }, + info: { + iota_embedding: { + "title": "Iota Embedding", + "text": { + "1": "In my studies, I've discovered a way to... \"embed\" iota within \ + a hex itself, allowing me to avoid the need to reconstruct them with \ + every cast. This becomes especially useful when combined with \ + $(l:items/hexcasting)$(item)casting items/$, allowing for much faster \ + casts, or simply making the process of using the hex within them easier.", + "2": "Typically, this process involves starting an Introspection-\ + Retrospection pair, using a placeholder pattern, modifying the list \ + after the fact using $(l:patterns/lists#hexcasting:index_of)$(action)\ + Locator's Distillation/$ and $(l:patterns/lists#hexcasting:replace)\ + $(action)Surgeon's Exaltation/$, and placing a $(l:patterns/lists\ + #hexcasting:splat)$(action)Flock's Disintegration/$ afterwards to \ + access the iota — a very annoying and time-consuming process, certainly. \ + It does seem my forays into this art are viewed favorably by Nature, \ + as I've recently found two patterns for simplifying the process." + } + } + }, + noop_examples: { + "header": "Patience Patterns", + "text": "Some examples of Patience patterns that can be used." + } + } + }, + + hexcasting: { + action: { + "hexthings:": { + noop: "Patience", + insert: "Flattening Exaltation", + unquote: "Introjection", + requote: "Retrojection", + isgreatersent: "Shard Reflection", + empty_dict: "Impasse Reflection", + dict_keys: "Accessor's Purification", + dict_vals: "Accessed's Purification", + dict_ents: "Entry Purification", + uiua_take: "Retention Distillation", + uiua_drop: "Rejection Distillation", + uiua_rotate: "Ferris Distillation", + uiua_where: "Deduction Purification" + }, + + // use this to add shortened versions of pattern names if the full name won't fit in the ingame book + // you don't need to add an entry for every pattern - the above value will be used as a default + book: { + "hexthings:": { + }, + }, + }, + special: { + "hexthings:": { + noop: "Patience" + } + }, + mishap: { + "invalid_unquote": "Did not first cast Introjection.", + "invalid_key_type": "An iota of type %s is not allowed as a key.", + invalid_value: { + class: { + int_list: "a list of numbers" + } + } + } + }, + + text: { + "autoconfig.hexthings": { + title: "HexThings Config", + + category: { + client: "Client", + server: "Server", + }, + + option: { + client: { + dummyClientConfigOption: { + "": "Dummy Client Config Option", + "@Tooltip": "This is an example of a client-side config option that accepts a boolean.", + }, + }, + + server: { + dummyServerConfigOption: { + "": "Dummy Server Config Option", + "@Tooltip": "This is an example of a server-side config option that accepts an integer.", + }, + }, + }, + }, + }, +} diff --git a/projects/1.20-fabric/assets/hexthings/hexthings/packer-policy.json b/projects/1.20-fabric/assets/hexthings/hexthings/packer-policy.json new file mode 100644 index 000000000000..5e55e5957695 --- /dev/null +++ b/projects/1.20-fabric/assets/hexthings/hexthings/packer-policy.json @@ -0,0 +1,6 @@ +[ + { + "type": "indirect", + "source": "projects/1.20/assets/hexthings/hexthings" + } +] \ No newline at end of file diff --git a/projects/1.20-fabric/assets/modrinth-hexxyplanes/hexxyplanes/README.md b/projects/1.20-fabric/assets/modrinth-hexxyplanes/hexxyplanes/README.md new file mode 100644 index 000000000000..b63e783c1867 --- /dev/null +++ b/projects/1.20-fabric/assets/modrinth-hexxyplanes/hexxyplanes/README.md @@ -0,0 +1 @@ +[见主文档](/projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes) \ No newline at end of file diff --git a/projects/1.20-fabric/assets/modrinth-hexxyplanes/hexxyplanes/lang/en_us.flatten.json5 b/projects/1.20-fabric/assets/modrinth-hexxyplanes/hexxyplanes/lang/en_us.flatten.json5 new file mode 100644 index 000000000000..dc579d3a6ac9 --- /dev/null +++ b/projects/1.20-fabric/assets/modrinth-hexxyplanes/hexxyplanes/lang/en_us.flatten.json5 @@ -0,0 +1,138 @@ +{ + hexxyplanes: { + book: { + interop: { + oneironaut: { + "": "Oneironaut", + patterns: { + spells: { + exit_deconstruct: "Puts the dimension and the coordinates of my hexplane exit onto the stack." + } + } + } + }, + patterns: { + spells: { + hexplane: { + "": "Hexplanes", + get_plane: "Retrieves an iota representing my hexplane.", + exit_reveal: "Displays my hexplane exit to me.", + enter_plane: { + "1": "Sends the target to the provided hexplane. Costs 2 \ + charged amethyst if the target is not already in a hexplane, \ + and 5 dust otherwise.", + "2": "Upon entering a plane, the two blocks on the spawn point are \ + broken, as if by a player, and any fragile blocks $(l)are not \ + dropped./$ The spawn point is signified by a purple tinted version \ + of the blocks that make up the walls." + }, + plane_pos: "Gets the spawn position within this plane as a vector.", + plane_banish: { + "1": "Forces the target out of the hexplane, costing 5 shards \ + if used on something other than myself, and being free otherwise. \ + Mishaps if not currently in a hexplane.", + "2": "If the target is a player, they are sent to their hexplane exit. \ + If the target is any other entity, they are sent to my hexplane exit. \ + The exit can be set using $(l:patterns/spells/hexplane#hexxyplanes:plane_exit)\ + $(action)Planar Marking/$." + }, + plane_exit: { + "1": "Marks the target location as my exit for the hexplane, \ + or resets it to be my spawn location if passed null, \ + causing me to be sent there upon using $(l:patterns/spells/hexplane\ + #hexxyplanes:plane_banish)$(action)Planar Expulsion/$ on myself.", + "2": "Non-player entities will be sent here when using \ + $(l:patterns/spells/hexplane#hexxyplanes:plane_banish)$(action)Planar \ + Expulsion/$. Mishaps if the exit is within a hexplane." + } + } + } + }, + info: { + "hexplane": { + "": "Hexplanes", + "text": { + "1": "Since pushing past the barrier and seeing a realm of thought, \ + I wondered what else may be accessible by simply... applying some \ + more pressure. After doing so I saw a reality of cubes upon cubes \ + upon cubes, containers of pure white waiting for someone to inhabit \ + them. I managed to devise some patterns to force my way into this \ + plane, and upon following through I found myself inside one of these \ + cubes.", + "2": "I felt my media expand to fill the space, but it curiously \ + refused to go any further than the walls that surround me. I feel as \ + though I can safely assume that this area is entirely my own, although \ + it doesn't seem to take kindly to remodeling, as punching the walls \ + resulted in me being shunted back to reality (maybe being more careful \ + would prevent this next time?). The block at the position I enter this \ + plane at is oddly discoloured, convenient for keeping my heading I suppose." + } + } + } + }, + tooltip: { + "hexplane": "Hexplane" + }, + error: { + bad_respawn: "Your respawn point is within the hexplane. Sending to world spawn..." + } + }, + + hexcasting: { + action: { + "hexxyplanes:": { + get_plane: "Planar Reflection", + enter_plane: "Planar Intrusion", + plane_pos: "Planar Purification", + plane_banish: "Planar Expulsion", + plane_exit: "Planar Marking", + exit_reveal: "Reveal Mark", + exit_deconstruct: "Marker's Gambit" + }, + + // use this to add shortened versions of pattern names if the full name won't fit in the ingame book + // you don't need to add an entry for every pattern - the above value will be used as a default + book: { + }, + }, + mishap: { + not_in_hexplane: "Must be in a hexplane to cast this pattern.", + invalid_value: { + class: { + plane: "a Hexplane" + }, + vecnull: "a vector or null" + } + } + }, + + text: { + hexxyplanes: { + }, + + "autoconfig.hexxyplanes": { + title: "Hexxyplanes Config", + + category: { + client: "Client", + server: "Server", + }, + + option: { + client: { + dummyClientConfigOption: { + "": "Dummy Client Config Option", + "@Tooltip": "This is an example of a client-side config option that accepts a boolean.", + }, + }, + + server: { + dummyServerConfigOption: { + "": "Dummy Server Config Option", + "@Tooltip": "This is an example of a server-side config option that accepts an integer.", + }, + }, + }, + }, + }, +} diff --git a/projects/1.20-fabric/assets/modrinth-hexxyplanes/hexxyplanes/packer-policy.json b/projects/1.20-fabric/assets/modrinth-hexxyplanes/hexxyplanes/packer-policy.json new file mode 100644 index 000000000000..42644e0fed4c --- /dev/null +++ b/projects/1.20-fabric/assets/modrinth-hexxyplanes/hexxyplanes/packer-policy.json @@ -0,0 +1,6 @@ +[ + { + "type": "indirect", + "source": "projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes" + } +] \ No newline at end of file diff --git a/projects/1.20/assets/hexthings/hexthings/README.md b/projects/1.20/assets/hexthings/hexthings/README.md new file mode 100644 index 000000000000..3c489af9ba29 --- /dev/null +++ b/projects/1.20/assets/hexthings/hexthings/README.md @@ -0,0 +1,16 @@ +### 总概 + +```mermaid +flowchart LR + 1.20.1 -->|indirect| 1.20.1-fabric +``` + +``` +1.20.1 + └── 1.20.1-fabric +``` + +### 链接区域 + +- [1.20.1](/projects/1.20/assets/hexthings/hexthings) +- [1.20.1-fabric](/projects/1.20-fabric/assets/hexthings/hexthings) \ No newline at end of file diff --git a/projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes/README.md b/projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes/README.md new file mode 100644 index 000000000000..efae18c2f292 --- /dev/null +++ b/projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes/README.md @@ -0,0 +1,16 @@ +### 总概 + +```mermaid +flowchart LR + 1.20.1 -->|indirect| 1.20.1-fabric +``` + +``` +1.20.1 + └── 1.20.1-fabric +``` + +### 链接区域 + +- [1.20.1](/projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes) +- [1.20.1-fabric](/projects/1.20-fabric/assets/modrinth-hexxyplanes/hexxyplanes) \ No newline at end of file diff --git a/projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes/lang/en_us.flatten.json5 b/projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes/lang/en_us.flatten.json5 new file mode 100644 index 000000000000..dc579d3a6ac9 --- /dev/null +++ b/projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes/lang/en_us.flatten.json5 @@ -0,0 +1,138 @@ +{ + hexxyplanes: { + book: { + interop: { + oneironaut: { + "": "Oneironaut", + patterns: { + spells: { + exit_deconstruct: "Puts the dimension and the coordinates of my hexplane exit onto the stack." + } + } + } + }, + patterns: { + spells: { + hexplane: { + "": "Hexplanes", + get_plane: "Retrieves an iota representing my hexplane.", + exit_reveal: "Displays my hexplane exit to me.", + enter_plane: { + "1": "Sends the target to the provided hexplane. Costs 2 \ + charged amethyst if the target is not already in a hexplane, \ + and 5 dust otherwise.", + "2": "Upon entering a plane, the two blocks on the spawn point are \ + broken, as if by a player, and any fragile blocks $(l)are not \ + dropped./$ The spawn point is signified by a purple tinted version \ + of the blocks that make up the walls." + }, + plane_pos: "Gets the spawn position within this plane as a vector.", + plane_banish: { + "1": "Forces the target out of the hexplane, costing 5 shards \ + if used on something other than myself, and being free otherwise. \ + Mishaps if not currently in a hexplane.", + "2": "If the target is a player, they are sent to their hexplane exit. \ + If the target is any other entity, they are sent to my hexplane exit. \ + The exit can be set using $(l:patterns/spells/hexplane#hexxyplanes:plane_exit)\ + $(action)Planar Marking/$." + }, + plane_exit: { + "1": "Marks the target location as my exit for the hexplane, \ + or resets it to be my spawn location if passed null, \ + causing me to be sent there upon using $(l:patterns/spells/hexplane\ + #hexxyplanes:plane_banish)$(action)Planar Expulsion/$ on myself.", + "2": "Non-player entities will be sent here when using \ + $(l:patterns/spells/hexplane#hexxyplanes:plane_banish)$(action)Planar \ + Expulsion/$. Mishaps if the exit is within a hexplane." + } + } + } + }, + info: { + "hexplane": { + "": "Hexplanes", + "text": { + "1": "Since pushing past the barrier and seeing a realm of thought, \ + I wondered what else may be accessible by simply... applying some \ + more pressure. After doing so I saw a reality of cubes upon cubes \ + upon cubes, containers of pure white waiting for someone to inhabit \ + them. I managed to devise some patterns to force my way into this \ + plane, and upon following through I found myself inside one of these \ + cubes.", + "2": "I felt my media expand to fill the space, but it curiously \ + refused to go any further than the walls that surround me. I feel as \ + though I can safely assume that this area is entirely my own, although \ + it doesn't seem to take kindly to remodeling, as punching the walls \ + resulted in me being shunted back to reality (maybe being more careful \ + would prevent this next time?). The block at the position I enter this \ + plane at is oddly discoloured, convenient for keeping my heading I suppose." + } + } + } + }, + tooltip: { + "hexplane": "Hexplane" + }, + error: { + bad_respawn: "Your respawn point is within the hexplane. Sending to world spawn..." + } + }, + + hexcasting: { + action: { + "hexxyplanes:": { + get_plane: "Planar Reflection", + enter_plane: "Planar Intrusion", + plane_pos: "Planar Purification", + plane_banish: "Planar Expulsion", + plane_exit: "Planar Marking", + exit_reveal: "Reveal Mark", + exit_deconstruct: "Marker's Gambit" + }, + + // use this to add shortened versions of pattern names if the full name won't fit in the ingame book + // you don't need to add an entry for every pattern - the above value will be used as a default + book: { + }, + }, + mishap: { + not_in_hexplane: "Must be in a hexplane to cast this pattern.", + invalid_value: { + class: { + plane: "a Hexplane" + }, + vecnull: "a vector or null" + } + } + }, + + text: { + hexxyplanes: { + }, + + "autoconfig.hexxyplanes": { + title: "Hexxyplanes Config", + + category: { + client: "Client", + server: "Server", + }, + + option: { + client: { + dummyClientConfigOption: { + "": "Dummy Client Config Option", + "@Tooltip": "This is an example of a client-side config option that accepts a boolean.", + }, + }, + + server: { + dummyServerConfigOption: { + "": "Dummy Server Config Option", + "@Tooltip": "This is an example of a server-side config option that accepts an integer.", + }, + }, + }, + }, + }, +} diff --git a/projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes/lang/zh_cn.flatten.json5 b/projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes/lang/zh_cn.flatten.json5 new file mode 100644 index 000000000000..be35458d5ffc --- /dev/null +++ b/projects/1.20/assets/modrinth-hexxyplanes/hexxyplanes/lang/zh_cn.flatten.json5 @@ -0,0 +1,138 @@ +{ + hexxyplanes: { + book: { + interop: { + oneironaut: { + "": "航梦", + patterns: { + spells: { + exit_deconstruct: "返回我咒法位面的出口维度和坐标。" + } + } + } + }, + patterns: { + spells: { + hexplane: { + "": "咒法位面", + get_plane: "返回代表我咒法位面的 iota。", + exit_reveal: "向我展示我咒法位面的出口。", + enter_plane: { + "1": "将目标送入所给咒法位面。若目标未在咒法位面内部,消耗 2 个\ + 充能紫水晶;否则消耗 5 个紫水晶粉。", + + "2": "进入位面时,出生点处的两个方块会被破坏,效果与玩家破坏类似,\ + 且脆弱的方块$(l)不会掉落/$。出生点的方块与墙壁的构成方块一致,\ + 但会略带紫色。" + + }, + plane_pos: "获取位面出生点的位置向量。", + plane_banish: { + "1": "强令目标退出咒法位面。若对除我之外的事物使用,消耗 5 个紫水晶\ + 碎片;否则无需消耗媒质。不在位面内施放会招致事故。", + + "2": "若目标为玩家,将其送至其咒法位面退出点。若是任意其他实体,\ + 则送至我咒法位面的退出点。可用$(l:patterns/spells/hexplane#hexxyplanes:plane_exit)\ + $(action)位面之标记/$设置退出点。" + + }, + plane_exit: { + "1": "将目标位置设为我咒法位面的退出点,传入 Null 则将出口设为我的出生点。\ + 此后,对自己使用$(l:patterns/spells/hexplane#hexxyplanes:plane_banish)$(action)位面之驱逐/$\ + 时即会被传送至该处。", + + "2": "对非玩家实体使用$(l:patterns/spells/hexplane#hexxyplanes:plane_banish)\ + $(action)位面之驱逐/$时也会将它们送至该处。不在位面内施放会招致事故。" + + } + } + } + }, + info: { + "hexplane": { + "": "咒法位面", + "text": { + "1": "自从我跨越屏障,瞥见思维的领域以来,我一直在想……要是我再施加些\ + 力量,还能到达哪些地方。我真的施加了力量,由此看到了一片新现实,那里有着\ + 层层叠叠的立方体;立方体内部是纯粹的白色,仿佛在等着人入住。我设计出了\ + 几个图案,以便强行进入这些位面。而在穿过屏障之后,我到达的就是先前所提\ + 立方体的内部。", + + + "2": "我感觉到我的媒质逐渐扩散,填满了整个空间。但奇怪的是,它们拒绝穿过\ + 四周的墙壁。尽管我可以认为这整片空间都是属于我的,它却似乎不怎么接受塑形;\ + 我试图敲击这些墙壁,结果总是我被传回现实。(也许再小心些就能避免了?)\ + 我进入位面时所处的方块较为特别——它的颜色与周围不同。大概可以拿来定位吧。" + + + + } + } + } + }, + tooltip: { + "hexplane": "咒法位面" + }, + error: { + bad_respawn: "你的重生点位于咒法位面内部。正在传送至世界出生点……" + } + }, + + hexcasting: { + action: { + "hexxyplanes:": { + get_plane: "位面之精思", + enter_plane: "位面之侵入", + plane_pos: "位面之纯化", + plane_banish: "位面之驱逐", + plane_exit: "位面之标记", + exit_reveal: "揭示标记", + exit_deconstruct: "标记者之策略" + }, + + // use this to add shortened versions of pattern names if the full name won't fit in the ingame book + // you don't need to add an entry for every pattern - the above value will be used as a default + book: { + }, + }, + mishap: { + not_in_hexplane: "此图案必须在咒法位面之内绘制。", + invalid_value: { + class: { + plane: "一个咒法位面" + }, + vecnull: "一个向量或Null" + } + } + }, + + text: { + hexxyplanes: { + }, + + "autoconfig.hexxyplanes": { + title: "咒法位面配置", + + category: { + client: "客户端", + server: "服务端", + }, + + option: { + client: { + dummyClientConfigOption: { + "": "Dummy Client Config Option", + "@Tooltip": "This is an example of a client-side config option that accepts a boolean.", + }, + }, + + server: { + dummyServerConfigOption: { + "": "Dummy Server Config Option", + "@Tooltip": "This is an example of a server-side config option that accepts an integer.", + }, + }, + }, + }, + }, +}