From 91057033f0d7a5db2c9910592d54d2844b8348c0 Mon Sep 17 00:00:00 2001 From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com> Date: Wed, 4 Mar 2026 21:09:33 +0800 Subject: [PATCH 1/2] Focalworks create --- .../focalworks/lang/en_us.flatten.json5 | 73 +++++++++++++++++++ .../focalworks/lang/zh_cn.flatten.json5 | 73 +++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/en_us.flatten.json5 create mode 100644 projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/zh_cn.flatten.json5 diff --git a/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/en_us.flatten.json5 b/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/en_us.flatten.json5 new file mode 100644 index 000000000000..094301ad23db --- /dev/null +++ b/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/en_us.flatten.json5 @@ -0,0 +1,73 @@ +{ + focalworks: { + spellbook_not_empty: "a spellbook", + book: { + patterns: { + spells: { + rigging_foci: { + "": "Rigging Foci", + explainer0: "In my studies, I have discovered the art of $(#9474ed)Rigging$(). \"$(#9474ed)Rigged$()\" foci (or any iota holder, for that matter) cast a hex upon reads or writes. Reads cast after reading the iota (with it starting on the stack), and writes start before a write, starting with the iota-to-write on the stack. Curiously, writes also have the option to leave a boolean on the stack, indicating whether the write should go through.", + explainer1: "Finally, there also seems to be a way to $(#edb874)Crack$() these iota holders, which must be done before any rigging has been done. Attempting to crack a rigged item will cloud my vision for ten seconds. Cracked items display their rigged reads/writes on their tooltip.", + explainer1_title: "Cracking Foci", + rig_read: "Takes in an item entity and a hex, and rigs the item's read to that hex.", + rig_write: "Takes in an item entity and a hex, and rigs the item's write to that hex.", + crack_rig: "Takes in an item entity and cracks the focus." + }, + misc_page: { + "": "Miscellaneous Focalworking", + explainer0: "I have discovered a few patterns, but they do not seem to fit into any of my previous categories. To solve this problem whilst keeping them documented, I have placed them here for my convenience.", + flip_spellbook: "This pattern takes in a spellbook item entity and a num, and flips the spellbook to that page.", + read_spellbook_page: "This pattern takes in a spellbook item entity and returns the currently selected page." + }, + ioticblocks: { + "": "Ioticblocks Focalworking", + explainer0: "Recently, I've been dissatisfied with the way my hexes take up much of the stack space just to read one iota from a list. $(l:patterns/readwrite_blocks)Reading/Writing Blocks$(/l) fixes this, but it seems my standard rigged writes still operate on the whole list, making them obsolete. To fix this, I have come up with some specialised patterns to override them.", + rig_write_index: "Rigs the write from $(l:patterns/readwrite_blocks#ioticblocks:write/index)Tachygrapher's Gambit$(/l) with the given hex.", + rig_read_index: "Rigs the read from $(l:patterns/readwrite_blocks#ioticblocks:read/index)Tachygrapher's Distillation$(/l) with the given hex." + } + } + } + }, + riggedread: { + onitem: "Rigged Read: %s" + }, + riggedwrite: { + onitem: "Rigged Write: %s" + }, + riggedwriteindex: { + onitem: "Rigged Write Index: %s" + }, + riggedreadindex: { + onitem: "Rigged Read Index: %s" + }, + rig_read: "Rig Read", + rig_write: "Rig Write", + crack_rig: "Crack Focus", + flip_spellbook: "Flip Spellbook", + rig_write_index: "Rig Write Index", + rig_read_index: "Rig Read Index" + }, + hexcasting: { + "action.focalworks:": { + read_spellbook_page: "Read Spellbook Page", + rig_read: "Rig Read", + rig_write: "Rig Write", + crack_rig: "Crack Focus", + flip_spellbook: "Flip Spellbook", + rig_write_index: "Rig Write Index", + rig_read_index: "Rig Read Index" + }, + "mishap": { + already_rigged: { + crack: { + "": "The item you attempted to crack is rigged.", + "item": "The item %s is rigged." + }, + rigging: { + "": "The item you attempted to rig is already rigged.", + "item": "The item %s is already rigged." + } + } + } + } +} diff --git a/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/zh_cn.flatten.json5 b/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/zh_cn.flatten.json5 new file mode 100644 index 000000000000..8a0b2ad25f3f --- /dev/null +++ b/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/zh_cn.flatten.json5 @@ -0,0 +1,73 @@ +{ + focalworks: { + spellbook_not_empty: "一本法术书", + book: { + patterns: { + spells: { + rigging_foci: { + "": "核心的藏咒", + explainer0: "在研究的过程中,我发现了所谓$(#9474ed)藏咒$()的技艺。“$(#9474ed)藏过咒$()”的核心(当然其他 iota 存储物品都可以)会在被读写时施放咒术。读时会在读出 iota 后施法(栈以读出的 iota 起始),写时则会在写入前施法(栈以要写入的 iota 起始)。神奇的是,写触发还有以布尔值起始栈的选项,对应是否要把值写入目标。", + explainer1: "最后,似乎还有$(#edb874)解明$()此类 iota 存储物品的方式,但需要在藏咒之前就先解明。试图解明已藏咒的物品会导致我的视觉消失 10 秒。经过解明的物品会在提示框中显示藏入读写的咒术。", + explainer1_title: "核心的解明", + rig_read: "接受一个物品实体和一个咒术,将咒术藏入该物品的读操作。", + rig_write: "接受一个物品实体和一个咒术,将咒术藏入该物品的写操作。", + crack_rig: "接受一个物品实体,进行解明。" + }, + misc_page: { + "": "核心工程杂项", + explainer0: "我还发现了几个图案,但它们不太能归入之前的类别。为了在记录它们的同时解决分类问题,方便起见,我把它们全放到了这里。", + flip_spellbook: "此图案接受一个法术书物品实体和一个数,并将法术书翻至对应页。", + read_spellbook_page: "此图案接受一个法术书物品实体,并返回其当前页的页码。" + }, + ioticblocks: { + "": "IoticBlocks 核心工程", + explainer0: "近来,我愈发认为,哪怕只是从列表里取出一个 iota,也实在是要占用太多栈空间了。$(l:patterns/readwrite_blocks)读取/写入方块$(/l)章节给出了解决方法,但我找到的标准藏咒方法仍会对整个列表进行操作,相当于没有解决。为此,我制造了些经过优化的图案。", + rig_write_index: "将所给咒术藏入$(l:patterns/readwrite_blocks#ioticblocks:write/index)速记员之策略$(/l)的写入。", + rig_read_index: "将所给咒术藏入$(l:patterns/readwrite_blocks#ioticblocks:read/index)速记员之馏化$(/l)的读取。" + } + } + } + }, + riggedread: { + onitem: "读取藏咒:%s" + }, + riggedwrite: { + onitem: "写入藏咒:%s" + }, + riggedwriteindex: { + onitem: "索引写入藏咒:%s" + }, + riggedreadindex: { + onitem: "索引读取藏咒:%s" + }, + rig_read: "读取藏咒", + rig_write: "写入藏咒", + crack_rig: "解明核心", + flip_spellbook: "法术书翻页", + rig_write_index: "索引读取藏咒", + rig_read_index: "索引写入藏咒" + }, + hexcasting: { + "action.focalworks:": { + read_spellbook_page: "读取法术书页号", + rig_read: "读取藏咒", + rig_write: "写入藏咒", + crack_rig: "解明核心", + flip_spellbook: "法术书翻页", + rig_write_index: "索引读取藏咒", + rig_read_index: "索引写入藏咒" + }, + "mishap": { + already_rigged: { + crack: { + "": "试图解明的物品已经过藏咒。", + "item": "物品%s已经过藏咒。" + }, + rigging: { + "": "试图藏咒的物品已经过藏咒。", + "item": "物品%s已经过藏咒。" + } + } + } + } +} From 9aee555de3370469471e1cdaecf62cdb07c0fb1d Mon Sep 17 00:00:00 2001 From: ChuijkYahus <94828194+ChuijkYahus@users.noreply.github.com> Date: Sat, 7 Mar 2026 12:49:52 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Focalworks=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 --- .../focalworks/lang/en_us.flatten.json5 | 7 +++++-- .../focalworks/lang/zh_cn.flatten.json5 | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/en_us.flatten.json5 b/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/en_us.flatten.json5 index 094301ad23db..6fd4c958ce6e 100644 --- a/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/en_us.flatten.json5 +++ b/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/en_us.flatten.json5 @@ -6,7 +6,8 @@ spells: { rigging_foci: { "": "Rigging Foci", - explainer0: "In my studies, I have discovered the art of $(#9474ed)Rigging$(). \"$(#9474ed)Rigged$()\" foci (or any iota holder, for that matter) cast a hex upon reads or writes. Reads cast after reading the iota (with it starting on the stack), and writes start before a write, starting with the iota-to-write on the stack. Curiously, writes also have the option to leave a boolean on the stack, indicating whether the write should go through.", + explainer0: "In my studies, I have discovered the art of $(#9474ed)Rigging$(). \"$(#9474ed)Rigged$()\" foci (or any iota holder, for that matter) cast a hex upon reads or writes. Reads cast after reading the iota (with it starting on the stack), and writes start before a write, starting with the iota-to-write on the stack. Curiously, writes also have the option to leave a boolean on the stack, indicating whether the write should go through. Further, writes are also brittle; they cannot 'recurse,' or call themselves. Perhaps I could use this to my advantage...", + explainer0_title: "Rigging Foci", explainer1: "Finally, there also seems to be a way to $(#edb874)Crack$() these iota holders, which must be done before any rigging has been done. Attempting to crack a rigged item will cloud my vision for ten seconds. Cracked items display their rigged reads/writes on their tooltip.", explainer1_title: "Cracking Foci", rig_read: "Takes in an item entity and a hex, and rigs the item's read to that hex.", @@ -16,12 +17,14 @@ misc_page: { "": "Miscellaneous Focalworking", explainer0: "I have discovered a few patterns, but they do not seem to fit into any of my previous categories. To solve this problem whilst keeping them documented, I have placed them here for my convenience.", + explainer0_title: "Miscellaneous Focalworking", flip_spellbook: "This pattern takes in a spellbook item entity and a num, and flips the spellbook to that page.", read_spellbook_page: "This pattern takes in a spellbook item entity and returns the currently selected page." }, ioticblocks: { "": "Ioticblocks Focalworking", - explainer0: "Recently, I've been dissatisfied with the way my hexes take up much of the stack space just to read one iota from a list. $(l:patterns/readwrite_blocks)Reading/Writing Blocks$(/l) fixes this, but it seems my standard rigged writes still operate on the whole list, making them obsolete. To fix this, I have come up with some specialised patterns to override them.", + explainer0_title: "Ioticblocks Focalworking", + explainer0: "Recently, I've been dissatisfied with the way my hexes take up much of the stack space just to read one iota from a list. $(l:patterns/readwrite_blocks)Reading/Writing Blocks$(/l) fixes this, but it seems my standard rigged writes don't work on them. To fix this, I have come up with some specialised patterns to override them.", rig_write_index: "Rigs the write from $(l:patterns/readwrite_blocks#ioticblocks:write/index)Tachygrapher's Gambit$(/l) with the given hex.", rig_read_index: "Rigs the read from $(l:patterns/readwrite_blocks#ioticblocks:read/index)Tachygrapher's Distillation$(/l) with the given hex." } diff --git a/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/zh_cn.flatten.json5 b/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/zh_cn.flatten.json5 index 8a0b2ad25f3f..f636f5fcedef 100644 --- a/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/zh_cn.flatten.json5 +++ b/projects/1.20-fabric/assets/modrinth-focalworks/focalworks/lang/zh_cn.flatten.json5 @@ -6,7 +6,8 @@ spells: { rigging_foci: { "": "核心的藏咒", - explainer0: "在研究的过程中,我发现了所谓$(#9474ed)藏咒$()的技艺。“$(#9474ed)藏过咒$()”的核心(当然其他 iota 存储物品都可以)会在被读写时施放咒术。读时会在读出 iota 后施法(栈以读出的 iota 起始),写时则会在写入前施法(栈以要写入的 iota 起始)。神奇的是,写触发还有以布尔值起始栈的选项,对应是否要把值写入目标。", + explainer0: "在研究的过程中,我发现了所谓$(#9474ed)藏咒$()的技艺。“$(#9474ed)藏过咒$()”的核心(当然其他 iota 存储物品都可以)会在被读写时施放咒术。读时会在读出 iota 后施法(栈以读出的 iota 起始),写时则会在写入前施法(栈以要写入的 iota 起始)。神奇的是,写触发还有以布尔值起始栈的选项,对应是否要把值写入目标。而且,写触发还是单层的:它们无法进行“递归”,也即无法调用自身。大概也能是个有用的性质吧……", + explainer0_title: "核心的藏咒", explainer1: "最后,似乎还有$(#edb874)解明$()此类 iota 存储物品的方式,但需要在藏咒之前就先解明。试图解明已藏咒的物品会导致我的视觉消失 10 秒。经过解明的物品会在提示框中显示藏入读写的咒术。", explainer1_title: "核心的解明", rig_read: "接受一个物品实体和一个咒术,将咒术藏入该物品的读操作。", @@ -16,12 +17,14 @@ misc_page: { "": "核心工程杂项", explainer0: "我还发现了几个图案,但它们不太能归入之前的类别。为了在记录它们的同时解决分类问题,方便起见,我把它们全放到了这里。", + explainer0_title: "核心工程杂项", flip_spellbook: "此图案接受一个法术书物品实体和一个数,并将法术书翻至对应页。", read_spellbook_page: "此图案接受一个法术书物品实体,并返回其当前页的页码。" }, ioticblocks: { "": "IoticBlocks 核心工程", - explainer0: "近来,我愈发认为,哪怕只是从列表里取出一个 iota,也实在是要占用太多栈空间了。$(l:patterns/readwrite_blocks)读取/写入方块$(/l)章节给出了解决方法,但我找到的标准藏咒方法仍会对整个列表进行操作,相当于没有解决。为此,我制造了些经过优化的图案。", + explainer0_title: "IoticBlocks 核心工程", + explainer0: "近来,我愈发认为,哪怕只是从列表里取出一个 iota,也实在是要占用太多栈空间了。$(l:patterns/readwrite_blocks)读取/写入方块$(/l)章节给出了解决方法,但我找到的标准藏咒方法对其无效。为此,我制造了些专用图案。", rig_write_index: "将所给咒术藏入$(l:patterns/readwrite_blocks#ioticblocks:write/index)速记员之策略$(/l)的写入。", rig_read_index: "将所给咒术藏入$(l:patterns/readwrite_blocks#ioticblocks:read/index)速记员之馏化$(/l)的读取。" }