diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/docs/thord/en_us/thord_words.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/docs/thord/en_us/thord_words.md index cb3558c86ded..58a8df9ebf11 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/docs/thord/en_us/thord_words.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/docs/thord/en_us/thord_words.md @@ -244,7 +244,7 @@ Tests if n1 is greater than or equal to n2. Equivalent to NEEPASM `GTEQ`. \cat{conversions} # Type Conversions -## \>STR ( x1 -- s1 ) +## >STR ( x1 -- s1 ) Converts the top stack item to a string. @@ -252,7 +252,7 @@ Converts the top stack item to a string. 123 >STR ``` -## \>INT (x1 -- n1 ) +## >INT (x1 -- n1 ) Converts the top stack item to an integer. Will cause an error if the conversion will not work. diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/docs/thord/zh_cn/thord_words.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/docs/thord/zh_cn/thord_words.md index 52e68b5c1966..b7b678b6969e 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/docs/thord/zh_cn/thord_words.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/docs/thord/zh_cn/thord_words.md @@ -245,7 +245,7 @@ begin \cat{conversions} # 类型转换 -## \>STR ( x1 -- s1 ) +## >STR ( x1 -- s1 ) 将栈顶元素转换为字符串。 @@ -253,7 +253,7 @@ begin 123 >STR ``` -## \>INT ( x1 -- n1 ) +## >INT ( x1 -- n1 ) 将栈顶元素转换为整型值。无法转换会产生错误。 @@ -303,19 +303,19 @@ a 2 + ? [2] 将第三个元素设为123 [3] 打印第三个元素 -## ! ( n1 addr -- ) +## ! ( n1 地址 -- ) 将n1存入所给地址。 -## @ ( addr -- n1 ) +## @ ( 地址 -- n1 ) 读取所给地址处的数据。 -## ? ( addr -- ) +## ? ( 地址 -- ) 打印给定地址处的数据。与`@ .`等价。 -## ' ( "词" -- addr ) +## ' ( "词" -- 地址 ) 查找所给词(以字符串形式给出),将其地址压栈。 @@ -329,7 +329,7 @@ a 2 + ? ``` [1] 打印词的地址 -## EXECUTE ( addr -- ) +## EXECUTE ( 地址 -- ) 跳转到给定地址处的指令。与NEEPASM的`CALL`等价。 diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/item_transfer/item_router.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/item_transfer/item_router.md new file mode 100644 index 000000000000..057a7f3436b9 --- /dev/null +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/item_transfer/item_router.md @@ -0,0 +1,12 @@ +--- +id: router +lookup: neepmeat:item_router, neepmeat:advanced_item_router +--- + +# Item Sorter + +The Item Sorter distributes incoming items to neighbouring pipes. In the GUI, each coloured filter slot corresponds to an output direction. + +Items can be inserted with pipes or hoppers. + +The advanced version supports more detailed filters. diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/machines/breaker.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/machines/breaker.md index c7d18725d375..4656dd7ce48d 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/machines/breaker.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/machines/breaker.md @@ -13,4 +13,6 @@ This is a simple block breaker powered by a motor. # Usage -Blocks are broken by the rapid and violent extension of the armature. When powered with a motor, the armature is gradually retracted. If a valid block is in front of the breaker, the armature will extend. \ No newline at end of file +Blocks are broken by the rapid and violent extension of the armature. When powered with a motor, the armature is gradually retracted. If a valid block is in front of the breaker, the armature will extend. + +Through unknown means the machine collects dropped items and ejects them from the back face. \ No newline at end of file diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/machines/feeding_trough.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/machines/feeding_trough.md index 97e76688b58b..71332be4853d 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/machines/feeding_trough.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/machines/feeding_trough.md @@ -6,6 +6,14 @@ id: feeding_trough The Feeding Trough allows nearby livestock to eat, encouraging them to reproduce. It has a radius of five blocks and must be filled with Animal Feed to operate. +## Usage + +A trough can be filled with Animal Feed via fluid pipes. Items such as wheat and potatoes can be inserted by right-clicking or with pipes. + +Each breed takes 13500d of fluid. This is equivalent to two inserted feed items, or 1/2 a feed item processed into animal feed with a Mixer. + +## Motors + If a Motor is facing it and running, animals will breed at regular intervals. The time between feedings varies from 5s to 60s depending on the output power of the motor. \graph{neepmeat:feeding_trough} diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/plc/actuators.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/plc/actuators.md index cdbf08e5633d..826afc5b5924 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/plc/actuators.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/plc/actuators.md @@ -7,6 +7,7 @@ id: actuators - Implanter: The only actuator capable of performing surgery on entities. - Robotic Arm: Can perform most manufacture instructions quickly but with a limited range. Requires a motor. - Pipe Driver: Allows a PLC to make requests in an item pipe network +- Builder: Allows a PLC to place and break blocks. \image[width=854,height=480,scale=0.6]{neepmeat:guide/images/plc_actuators.png} \centering{Left to right: Implanter, Robotic Arm and a Pipe Driver.} \ No newline at end of file diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/plc/builder.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/plc/builder.md new file mode 100644 index 000000000000..d8a2d7f1b771 --- /dev/null +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/plc/builder.md @@ -0,0 +1,84 @@ +--- +id: builder +lookup: neepmeat:builder +--- + +# Builder + +The Builder is a robot that can place and break blocks, controllable by a PLC. It has a base station, which gives access to its inventory and shows its currently selected slot. + +## Usage + +There are a number of operations that can control a Builder: + +- BPLACE +- BBREAK +- SELSLOT +- SELITEM + +## Inventory + +Any items dropped from blocks that a Builder breaks will go directly into its inventory. + +Before it can place a block, a Builder needs to know what item it should place. + +With the `SELSLOT` and `SELITEM` operations, an inventory slot or a specific item can be selected. + +`SELSLOT` takes an integer from the stack and tells the Builder to use items in that inventory slot. + +`SELITEM` takes a string and tells the Builder to only use items whose IDs match the string. + +## Example 1 + +This example shows the use of `BPLACE`, `BBREAK`, `SELSLOT` and `SELITEM`. + +``` +# Select the Builder at coordinates (1, 2, 3) +robot @(1 2 3) + +# Select the first slot +0 selslot + +# Place a block +@(2, 2, 3) .bplace + +# Break a block +@(2, 2, 3) .bbreak + +# Select an item +selitem "minecraft:dirt" + +# The pattern string can also be read from the stack: +"minecraft:dirt" .selitem - + +# Place a dirt block +@(2, 2, 3) .bplace +``` + +## Example 2 + +This example shows how to fill a cuboid area with dirt. It uses the `AREA3` instruction to iterate through a cuboid area. + +The `AREA3` operation calls an execution address for each block within an area defined by two corner positions. The first argument it takes is the execution address. The second and third arguments are corner positions. + +``` +selitem "minecraft:dirt" + +# Create a callback word +# It consumes a world target, and returns nothing. +: callback ( pos -- ) + bplace + # Discard the result of BPLACE + drop +; + +# Grab the execution address of callback +"callback" ' + +# First corner +@(0 0 0) + +# Second corner +@(10 10 10) +area3 +``` \ No newline at end of file diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/plc/plc_workbenches.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/plc/plc_workbenches.md index dc21ed767a11..a3443ace047e 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/plc/plc_workbenches.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/plc/plc_workbenches.md @@ -11,7 +11,7 @@ Workbenches allow items and entities to be modified by a PLC via an actuator. - Display Plate (item) - Pedestal (item) - Surgery Platform (entity) -- + Not all instructions require workbenches. Some operate on normal item or fluid inventories. \image[width=854,height=480,scale=0.6]{neepmeat:guide/images/plc_workbenches.png} diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/thord/thord_data_types.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/thord/thord_data_types.md new file mode 100644 index 000000000000..3e458b4b2898 --- /dev/null +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/thord/thord_data_types.md @@ -0,0 +1,73 @@ +--- +id: thord_data_types +--- + +# Data Types in THORD + +The PLC's stack can hold various different data types. Some data types can be converted into other ones with special words. + +## INT + +Represents an integer, such as 0, 1, or -1. Also used for booleans, where -1 represents TRUE and 0 represents FALSE. + +Conversion words: + +- `>STR` (converts to string) + +Common operators: + +``` +# Add and subtract +1 1 + # Gives 2 +1 1 - # Gives 0 + +# Multiply and divide +2 10 * # Gives 20 +10 5 / # Gives 2 +``` + +## STRING + +Represents a sequence of characters, such as "hello", or "how are you". + +Conversion words: + +- `>INT` (converts to int, will error if the string does not look like an int) + +Mathematical operators: + +``` +# Add (concatenate) +"Hello " "there." + # Gives "Hello there." +``` + +## WORLD_TARGET + +Represents a world target consisting of coordinates and a direction. + +A few instructions (such as `BPLACE` and `BBREAK` can take world targets from the stack. Most instructions that interact with the world do not. + +Conversion words: + +- `>STR` (converts to string) + +Mathematical operators: + +``` +# Multiply and divide by integer +@(1 2 3) 10 * # Gives @(10 20 30) + +# Add and subtract +@(1 2 3) @(10 10 10) + # Gives @(11 12 13) +``` + +## ADDRESS + +Conversion words: + +- `>STR` (converts to string) + + +Mathematical operators: + +- Same as INT. \ No newline at end of file diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/thord/thord_variables.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/thord/thord_variables.md index 99e8a6bd8cef..a23c9254227d 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/thord/thord_variables.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/thord/thord_variables.md @@ -4,7 +4,14 @@ id: thord_variables # Variables -Variables can be created with the `VARIABLE` word. +In THORD, a variable is data that is stored inside the PLC's *heap memory*. Variables are different to values stored on the stack. They can be used for longer-term data storage, and to reduce the amount of stack manipulation necessary. + +A variable can be created with the `VARIABLE` word. + +``` +# Create a variable called 'count' +variable count +``` Stating a variable's name puts its address on the stack. This can be taken as an argument by any word. diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/thord/word_definition.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/thord/word_definition.md index 72aa85541574..75efaacb3d37 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/thord/word_definition.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles/thord/word_definition.md @@ -4,7 +4,7 @@ id: word_definition # Defining THORD Words -Words are the equivalent of functions. Most character sequences form a valid word name. +Words in THORD are the equivalent of functions in other languages. Most character sequences form a valid word name. A word definition starts with ':' followed by the word's name. The definition is terminated with a ';'. diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles_en_us.json b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles_en_us.json index d12e2d545af2..54a14a4afe19 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles_en_us.json +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/articles_en_us.json @@ -269,7 +269,7 @@ {"id": "assault_drill", "contents": [ {"type": "text", "text": "Assault Drill\n", "bold": true}, {"type": "text", "text": "The Assault Drill is a drill rated for offensive use. It continuously damages entities with a range of one block. \n"}, - {"type": "text", "text": "The drill runs on Transient Ichor. To refuel, right-click on a container of Transient Ichor or use a bottler. This item can also be enchanted to increase its damage output."} + {"type": "text", "text": "The drill runs on metabolic substrate. To refuel, right-click on a container of Reconstituted Food, Animal Feed or Liquid Meat. Food can also be inserted with a Bottler. This item can also be enchanted to increase its damage output."} ]}, {"id": "halberd", "contents": [ diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/index_en_us.json b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/index_en_us.json index 4cd30494d134..94702ec145c1 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/index_en_us.json +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/en_us/index_en_us.json @@ -96,6 +96,7 @@ {"type": "page", "id": "thord", "icon": "neepmeat:plc", "text": "THORD"}, {"type": "page", "id": "thord_stack", "icon": "neepmeat:plc", "text": "The Stack"}, {"type": "page", "id": "word_definition", "icon": "neepmeat:plc", "text": "Defining Words"}, + {"type": "page", "id": "thord_data_types", "icon": "neepmeat:plc", "text": "Data Types"}, {"type": "page", "id": "thord_constructs", "icon": "neepmeat:plc", "text": "Flow-Control Constructs"}, {"type": "page", "id": "thord_variables", "icon": "neepmeat:plc", "text": "Variables"}, {"type": "page", "id": "thord_booleans", "icon": "neepmeat:plc", "text": "Booleans"}, @@ -119,7 +120,8 @@ {"type": "page", "id": "actuators", "icon": "neepmeat:robotic_arm", "text": "Actuators"}, {"type": "page", "id": "program_cabinet", "icon": "neepmeat:program_card", "text": "Program Disks"}, {"type": "page", "id": "implants", "icon": "neepmeat:pineal_eye", "text": "Implants", "lookup": ["neepmeat:upgrade_manager", "neepmeat:pineal_eye", "neepmeat:extra_mouth", "neepmeat:extra_knees", "neepmeat:lung_extensions"]}, - {"type": "page", "id": "tool_organism", "icon": "neepmeat:living_tool_implant", "text": "Tool Organism"} + {"type": "page", "id": "tool_organism", "icon": "neepmeat:living_tool_implant", "text": "Tool Organism"}, + {"type": "page", "id": "builder", "icon": "neepmeat:builder", "text": "Builder" } ]}, {"type": "menu", "id": "neepbus", "icon": "neepmeat:data_cable", "text": "NEEPBus", "entries": [ {"type": "page", "id": "neepbus", "icon": "neepmeat:data_cable", "text": "NEEPBus", "lookup": ["neepmeat:data_cable"] }, diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/item_transfer/item_router.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/item_transfer/item_router.md new file mode 100644 index 000000000000..08e28b4b6a1a --- /dev/null +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/item_transfer/item_router.md @@ -0,0 +1,12 @@ +--- +id: router +lookup: neepmeat:item_router, neepmeat:advanced_item_router +--- + +# 物品分拣器 + +物品分拣器能将收到的物品分散到相邻的管道中去。分拣器GUI内的每个有色过滤槽都各自对应一个输出方向。 + +物品可通过管道和漏斗送入。 + +高级版本的分拣器支持更细致的过滤器。 diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/machines/breaker.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/machines/breaker.md index 84768ea6ae5c..024356af193e 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/machines/breaker.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/machines/breaker.md @@ -13,4 +13,6 @@ lookup: neepmeat:breaker # 使用方法 -破坏器依靠衔铁快速而猛烈的弹出来破坏方块。使用发动机驱动可缓慢缩回衔铁。破坏器前存在有效方块时衔铁即会弹出。 \ No newline at end of file +破坏器依靠衔铁快速而猛烈的弹出来破坏方块。使用发动机驱动可缓慢缩回衔铁。破坏器前存在有效方块时衔铁即会弹出。 + +由于某些未知设计,破坏器会收集掉落的物品,并向后方主动弹出。 \ No newline at end of file diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/machines/feeding_trough.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/machines/feeding_trough.md index b8b38e8bbaee..792c82f098b1 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/machines/feeding_trough.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/machines/feeding_trough.md @@ -6,6 +6,14 @@ id: feeding_trough 饲料槽会向周围的家畜分配食物,催动它们繁殖。其工作半径为5格,运作时必须装入动物饲料。 +## 使用方法 + +饲料槽接受流体管道供应的动物饲料。小麦、马铃薯等物品可用管道送入,也可手动右击放入。 + +每次繁殖都需消耗13500d的流体,等价于放入2份饲料物品,或在混合机内处理1/2份饲料物品的产物。 + +## 发动机 + 接上发动机后,动物两次繁殖行为的间隔时长即会固定。此间隔可为5s到60s,具体由发动机的输出功率决定。 \graph{neepmeat:feeding_trough} diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/plc/actuators.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/plc/actuators.md index ad9c7d3bd9c7..438ef7a5d924 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/plc/actuators.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/plc/actuators.md @@ -7,6 +7,7 @@ id: actuators - 植入器:唯一能对实体执行手术的操作机构。 - 机械臂:可高速执行大多数加工指令,但其范围有限。需外接发动机。 - 管道驱动器:允许PLC向物品管道网络发送请求。 +- 建造机器人:允许PLC放置和破坏方块。 \image[width=854,height=480,scale=0.6]{neepmeat:guide/images/plc_actuators.png} \centering{左至右:植入器、机械臂、管道驱动器。} \ No newline at end of file diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/plc/builder.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/plc/builder.md new file mode 100644 index 000000000000..40f32f095ce3 --- /dev/null +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/plc/builder.md @@ -0,0 +1,97 @@ +--- +id: builder +lookup: neepmeat:builder +--- + +# 建造机器人 + +建造机器人是能放置和破坏方块的机器人,可受PLC控制。建造机器人需搭载在基站处,基站能访问机器人的物品栏,且会显示其当前选择的槽位。 + +## 使用方法 + +可用多种指令控制建造机器人: + +- BPLACE +- BBREAK +- SELSLOT +- SELITEM + +## 物品栏 + +建造机器人所破坏方块掉落的物品会直接进入机器人的物品栏。 + +而在放置方块前,机器人需要知道它应当放置什么方块。 + +可以用`SELSLOT`和`SELITEM`指令为机器人指定物品栏槽位或特定的物品。 + +`SELSLOT`接受一个整型值,并让机器人将所选槽位设为该值对应的槽位。 + +`SELITEM`接受一个字符串,并让机器人仅使用ID匹配该字符串的物品。 + +## 示例一 + +此示例中用到了`BPLACE`、`BBREAK`、`SELSLOT`、`SELITEM`。 + +``` +# Select the Builder at coordinates (1, 2, 3) [1] +robot @(1 2 3) + +# Select the first slot [2] +0 selslot + +# Place a block [3] +@(2, 2, 3) .bplace + +# Break a block [4] +@(2, 2, 3) .bbreak + +# Select an item [5] +selitem "minecraft:dirt" + +# The pattern string can also be read from the stack: [6] +"minecraft:dirt" .selitem - + +# Place a dirt block [7] +@(2, 2, 3) .bplace +``` + [1] 选择坐标(1, 2, 3)处的建造机器人 + [2] 选择第一个槽位 + [3] 放置一个方块 + [4] 破坏一个方块 + [5] 选择一个物品 + [6] 也可从栈中读取匹配模式字符串: + [7] 放置一个泥土方块 + +## 示例二 + +此示例程序会为长方体区域填充泥土。其中,遍历长方体区域用到了`AREA3`指令。 + +`AREA3`指令会对两角落位置之间的每个方块调用执行地址处的程序。第一个参数为执行地址。第二、第三个参数为角落位置。 + +``` +selitem "minecraft:dirt" + +# Create a callback word [1] +# It consumes a world target, and returns nothing. [2] +: callback ( pos -- ) + bplace + # Discard the result of BPLACE [3] + drop +; + +# Grab the execution address of callback [4] +"callback" ' + +# First corner [5] +@(0 0 0) + +# Second corner [6] +@(10 10 10) +area3 +``` + [1] 创建一个回调词(`callback`) + [2] 它会弹出一个世界目标,且不返回任何东西。 + [3] 丢弃`BPLACE`的返回值 + [4] 获取回调词(即`callback`)的执行地址 + [5] 第一个角落 + [6] 第二个角落 \ No newline at end of file diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/thord/thord_data_types.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/thord/thord_data_types.md new file mode 100644 index 000000000000..113c63fbbe09 --- /dev/null +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/thord/thord_data_types.md @@ -0,0 +1,85 @@ +--- +id: thord_data_types +--- + +# THORD中的数据类型 + +PLC的栈能存储多种类型的数据。部分类型的数据可在特殊词的作用下转换为其他类型。 + +## INT + +代表一个整数,如0、1、-1。该类型也用于表示布尔值,其中-1为TRUE,0为FALSE。 + +转换词: + +- `>STR`(转换为字符串) + +常用操作符: + +``` +# Add and subtract [1] +1 1 + # Gives 2 [2] +1 1 - # Gives 0 [3] + +# Multiply and divide [4] +2 10 * # Gives 20 [5] +10 5 / # Gives 2 [6] +``` + [1] 加法和减法 + [2] 返回2 + [3] 返回0 + [4] 乘法和除法 + [5] 返回20 + [6] 返回2 + +## STRING + +表示一个字符序列,如“hello”或“how are you”。 + +转换词: + +- `>INT`(转换为整型,字符串若和整数不够相似则会产生错误) + +数学操作符: + +``` +# Add (concatenate) [1] +"Hello " "there." + # Gives "Hello there." [2] +``` + [1] 加法(拼接) + [2] 返回"Hello there." + +## WORLD_TARGET + +表示一个世界目标,由位置坐标和方向组成。 + +部分指令(如`BPLACE`和`BBREAK`)可从栈中取出世界目标,其他大多数与世界交互的指令则不会。 + +转换词: + +- `>STR`(转换为字符串) + +数学操作符: + +``` +# Multiply and divide by integer [1] +@(1 2 3) 10 * # Gives @(10 20 30) [2] + +# Add and subtract [3] +@(1 2 3) @(10 10 10) + # Gives @(11 12 13) [4] +``` + [1] 乘以或除以整数 + [2] 返回@(10 20 30) + [3] 加法和减法 + [4] 返回@(11 12 13) + +## ADDRESS + +转换词: + +- `>STR`(转换为字符串) + + +数学操作符: + +- 与INT一致。 \ No newline at end of file diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/thord/thord_variables.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/thord/thord_variables.md index f47220294721..0496e44426ac 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/thord/thord_variables.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/thord/thord_variables.md @@ -4,8 +4,16 @@ id: thord_variables # 变量 +THORD中的变量是存储在PLC内部*堆内存*中的数据。它们和存储于栈中的值不一样:变量可以用于长期存储数据,也能节省栈操作的步数。 + 变量可使用`VARIABLE`词创建。 +``` +# Create a variable called 'count' [1] +variable count +``` + [1] 创建一个叫“count”的变量 + 引用变量的名称会将其地址压栈。任意词均可将此地址用作参数。 - `!`可将栈顶往下第二元素的值存入栈顶变量。 diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/thord/word_definition.md b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/thord/word_definition.md index adb3d4d855e4..4372877faad1 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/thord/word_definition.md +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles/thord/word_definition.md @@ -4,7 +4,7 @@ id: word_definition # THORD词的定义 -THORD中的词相当于其他语言的函数。大多数字符序列均是有效的词名。 +THORD中的词在功能上相当于其他语言的函数。大多数字符序列均是有效的词名。 词的定义以`:`起始,后方跟随词名。词的定义以`;`结束。 diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles_zh_cn.json b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles_zh_cn.json index d0fc8b7c99ae..bb88df1aaf19 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles_zh_cn.json +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/articles_zh_cn.json @@ -276,7 +276,7 @@ {"id": "assault_drill", "contents": [ {"type": "text", "text": "突击钻\n", "bold": true}, {"type": "text", "text": "突击钻是公认的高攻击性钻头,能对1格范围内的实体持续造成伤害。\n"}, - {"type": "text", "text": "突击钻需要消耗瞬变浆液。手持突击钻右击装有瞬变浆液的储罐即可重新装填,也可将其放入灌装机装填。此物品还可附魔,以增加其伤害输出。"} + {"type": "text", "text": "突击钻需要消耗代谢底物。手持突击钻右击装有重组食物、动物饲料或肉浆的储罐即可重新装填。也可将其放入灌装机装填食物。此物品还可附魔,以增加其伤害输出。"} ]}, {"id": "halberd", "contents": [ diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/index_zh_cn.json b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/index_zh_cn.json index de069960f50b..49262452c459 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/index_zh_cn.json +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/guide/zh_cn/index_zh_cn.json @@ -96,6 +96,7 @@ {"type": "page", "id": "thord", "icon": "neepmeat:plc", "text": "THORD"}, {"type": "page", "id": "thord_stack", "icon": "neepmeat:plc", "text": "栈操作"}, {"type": "page", "id": "word_definition", "icon": "neepmeat:plc", "text": "词的定义"}, + {"type": "page", "id": "thord_data_types", "icon": "neepmeat:plc", "text": "数据类型"}, {"type": "page", "id": "thord_constructs", "icon": "neepmeat:plc", "text": "流程控制结构"}, {"type": "page", "id": "thord_variables", "icon": "neepmeat:plc", "text": "变量"}, {"type": "page", "id": "thord_booleans", "icon": "neepmeat:plc", "text": "布尔值"}, @@ -119,7 +120,8 @@ {"type": "page", "id": "actuators", "icon": "neepmeat:robotic_arm", "text": "操作机构"}, {"type": "page", "id": "program_cabinet", "icon": "neepmeat:program_card", "text": "程序磁盘"}, {"type": "page", "id": "implants", "icon": "neepmeat:pineal_eye", "text": "植入物", "lookup": ["neepmeat:upgrade_manager", "neepmeat:pineal_eye", "neepmeat:extra_mouth", "neepmeat:extra_knees", "neepmeat:lung_extensions"]}, - {"type": "page", "id": "tool_organism", "icon": "neepmeat:living_tool_implant", "text": "工具生物体"} + {"type": "page", "id": "tool_organism", "icon": "neepmeat:living_tool_implant", "text": "工具生物体"}, + {"type": "page", "id": "builder", "icon": "neepmeat:builder", "text": "建造机器人" } ]}, {"type": "menu", "id": "neepbus", "icon": "neepmeat:data_cable", "text": "NEEP总线", "entries": [ {"type": "page", "id": "neepbus", "icon": "neepmeat:data_cable", "text": "NEEP总线", "lookup": ["neepmeat:data_cable"] }, diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/lang/en_us.json b/projects/assets/neepmeat/1.20-fabric/neepmeat/lang/en_us.json index ed8b99cbb842..42f21b44e68d 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/lang/en_us.json +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/lang/en_us.json @@ -326,7 +326,9 @@ "screen.neepmeat.item_requester.from": "From %s, %s, %s", "block.neepmeat.storage_bus": "Storage Driver", "screen.neepmeat.pipe_priority.input_priority": "Input Priority", + "screen.neepmeat.pipe_priority.input_priority.desc": "Priority of this pipe when storing items.\nWhen items are sent to storage by a Manual Requester, they will be sent to storage pipes with a higher input priority.\nIf a network has two Storage Drivers, one with an input priority of 1, the other with 0, items will be sent to the first Storage Driver until its connected inventories are full.", "screen.neepmeat.pipe_priority.output_priority": "Output Priority", + "screen.neepmeat.pipe_priority.output_priority.desc": "Priority of this pipe when requesting items.\nWhen items are requested by a Manual Requester or with the REQUEST instruction, requests will be fulfilled by storage pipes with a higher output priority first.", "block.neepmeat.storage_bus.lore_0": "Allows adjacent inventories to fulfil item requests.\n§eSneak-use to configure priority.§f", "block.neepmeat.dumper": "Smart Dumper", "block.neepmeat.dumper.lore_0": "Drops items straight down.", @@ -428,7 +430,7 @@ "block.neepmeat.item_interface.lore_0": "Acts as a proxy for the block it faces.", "block.neepmeat.buffer": "Buffer", "block.neepmeat.chute": "Chute", - "block.neepmeat.chute.lore_0": "Deposits items thrown at it into the storage it faces when open.", + "block.neepmeat.chute.lore_0": "Deposits items thrown at it into the storage it faces when open.\nSneak-click when open to extract a stack of items.", "block.neepmeat.buffer.lore_0": "Holds nine stacks. Extraction can be disabled with redstone.", "block.neepmeat.metal_barrel": "Metal Barrel", "block.neepmeat.content_detector": "Item Detector", @@ -514,10 +516,11 @@ "block.neepmeat.ceiling_light.lore_0": "Sneak-use to toggle.", "block.neepmeat.big_lever": "Big Lever", + "block.neepmeat.big_lever.lore_0": "Sneak-click to switch between toggle and momentary modes.", - "block.neepmeat.router": "Item Router", + "block.neepmeat.router": "Item Sorter", "block.neepmeat.router.lore_0": "Distributes items based on simple item filters.", - "block.neepmeat.advanced_router": "Advanced Item Router", + "block.neepmeat.advanced_router": "Advanced Item Sorter", "block.neepmeat.advanced_router.lore_0": "Distributes items based on multiple advanced filters.", "block.neepmeat.grinder": "Crusher", "block.neepmeat.grinder.lore_0": "§eUse with an empty hand while sneaking to eject XP.", @@ -598,6 +601,9 @@ "block.neepmeat.redstone_interface": "PLC Redstone Interface", "block.neepmeat.robotic_arm": "PLC Robotic Arm", "block.neepmeat.robotic_arm.lore_0": "A PLC actuator that can operate at high speed when given enough power.", + "block.neepmeat.builder": "Builder", + "block.neepmeat.builder.lore_0": "A robot that can place and break blocks, controllable by a PLC.\nResources and harvested items are stored in the base station.", + "screen.neepmeat.builder.pattern.tooltip": "Pattern used to match blocks. If outlined in orange, the pattern is selected instead of a slot.\nUse the SELITEM instruction to set a pattern. Use the SELSLOT instruction to select a slot.", "block.neepmeat.implanter": "Implanter", "block.neepmeat.implanter.lore_0": "Installs implants into entities. Can be controlled manually or via a PLC with the ROBOT instruction.\n§eSome implants cannot be installed manually and require PLC control.", "block.neepmeat.implanter.no_implant": "NO IMPLANT", @@ -683,7 +689,6 @@ "item.neepmeat.whisper_wheat_seeds": "Whisper Wheat Seeds", "item.neepmeat.whisper_wheat": "Whisper Wheat", "item.neepmeat.whisper_flour": "Whisper Flour", - "item.neepmeat.whisper_flour.lore_0": "Its grains hold terrible secrets of the cosmos.", "block.neepmeat.flesh_potato": "Gland Potato", "item.neepmeat.flesh_potato": "Gland Potato", @@ -979,6 +984,7 @@ "item.neepmeat.drill_complexity_upgrade": "Drill Complexity Upgrade", "implant.neepmeat.complexity_upgrade_1": "Drill Complexity Upgrade", "implant.neepmeat.complexity_upgrade_1.desc_0": "Applicable to the Drill Chassis. Increases maximum module complexity to 20.", + "implant.neepmeat.drill_complexity_upgrade.desc_0": "Applicable to the Drill Chassis. Increases maximum module complexity to 20.", "item.neepmeat.chrysalis": "Divine Chrysalis", "item.neepmeat.chrysalis.lore_0": "Something tells you that surgically implanting this into a cow with a PLC would be a really good idea.", @@ -1056,11 +1062,18 @@ "instruction.neepmeat.neepbus_read.desc": "Reads the value of a device with the specified address in a connected NEEPBus network.\n §6ARG1§f: target address (string)", "instruction.neepmeat.route.desc": "Uses a Pipe Driver (currently selected actuator) to request the item with the given name. \nThe item is routed from a given §6pipe§f and §6input direction§f to the specified §6pipe§f and §6output direction§f. The desired count is read from the stack and the success of the operation is pushed to the stack.\n §6ARG1§f: input pipe (world target)\n §6ARG2§f: output pipe (world target)\n §6ARG2§f item ID (string, * for wildcard)", "instruction.neepmeat.request.desc": "Uses a Pipe Driver (currently selected as the actuator) to request the item with the given name. \nThe item is routed through a pipe network to the specified §6pipe§f and §6output direction§f. The desired count is read from the stack and the success of the request is pushed to the stack.\n §6ARG1§f: output pipe (world target)\n §6ARG2§f item ID (string, * for wildcard)", - "instruction.neepmeat.count.desc": "Counts the items or fluid at the given world target and pushes the result to the stack.\nThe type of resource to count is optionally specified in the second argument.\nIf an ID is provided, only items/fluids that match it will be counted. IDs can use * to represent any combination of characters (*:water or minecraft:*).\n §6ARG1§f: inventory (world target)§6\n §6ARG2§f: type to count (ITEM or FLUID, optional)\n §6ARG3§f: item or fluid ID (string, optional)", + "instruction.neepmeat.count.desc": "§6( -- count )§f\n§6( pattern -- count )§fCounts the items or fluid at the given world target and pushes the result to the stack.\nThe type of resource to count is optionally specified in the second argument.\nIf an ID is provided, only items/fluids that match it will be counted. IDs can use * to represent any combination of characters (*:water or minecraft:*).\n §6ARG1§f: inventory (world target)§6\n §6ARG2§f: type to count (ITEM or FLUID, optional)\n §6ARG3§f: item or fluid ID (string, optional)", "instruction.neepmeat.stock.desc": "Uses a Pipe Driver (currently selected actuator) to count counts all matching items in accessible inventories (connected to Storage Drivers). The result is pushed to the stack.\nIf an ID is provided, only items that match it will be counted. IDs can use * to represent any combination of characters (minecraft:* or :stone).\n §6ARG1§f: item ID (string, optional)", - "instruction.neepmeat.nbwrite.desc": "§6( s1 addr -- n2 )§f\nSends second to last stack element over a data cable network to all ports matching the given NEEPBus address.\nThe NEEPBus address and data will be read from the stack\n §6\"the data\" \"the address\" .NBWRITE", + "instruction.neepmeat.nbwrite.desc": "§6( string addr -- n2 )§f\nSends second to last stack element over a data cable network to all ports matching the given NEEPBus address.\nThe NEEPBus address and data will be read from the stack\n §6\"the data\" \"the address\" .NBWRITE", "instruction.neepmeat.nbread.desc": "§6( addr -- n1 )§f\nReads the value of a port matching the given address over a data cable network. The address is read from the stack. The result is put on the stack.\n §6\"address_to_read\" .NBREAD §f", + "instruction.neepmeat.bbreak.desc": "§6( pos -- success )§f\nRequires a Builder as the active actuator\nTries to break the block at the world target read from the stack. Returns whether the block was successfully broken. \nDropped items will go into the Builder's inventory.", + "instruction.neepmeat.bplace.desc": "§6( pos -- success )§f\nRequires a Builder as the active actuator\nTries to place the item in the Builder's selected slot at the world target read from the stack. Returns whether the block was successfully placed.", + "instruction.neepmeat.selslot.desc": "§6( slot -- )§f\nRequires a Builder as the active actuator.\nReads an integer from the stack and sets the builder's selected slot (the one that it will build with) to that value.", + "instruction.neepmeat.selitem.desc": "§6( -- )§f\n§6( pattern -- )§f\nRequires a Builder as the active actuator.\nTells the builder to select all items whose IDs match the given pattern, instead of a specific slot.\nIf _ is given instead of a string, the pattern will be read from the stack.\n §6ARG1§f: pattern (string, _ allowed)", + "instruction.neepmeat.findslot.desc": "§6( -- slot )§f\n§6( pattern -- slot )§f (if no pattern given)\nSearches for an item matching the given string in the inventory at the top world position on the stack.\nIf - is used instead of a string, a string will be read from the stack.\n §6ARG1§f: pattern (string, _ allowed)", + "instruction.neepmeat.area3.desc": "§6( addr pos1 pos2 -- )§f\nCalls the code at the given execution address (§6addr§f) for each block in a 3D cuboid defined by two corner positions (§6pos1§f and §6pos2§f).\nThe first parameter is the address of a word, which is assumed to consume a world target. The second and third arguments are the corner positions of the area.\nIf the Y coordinate of §6pos1§f is lower than that of §6pos2§f, the generated positions will progress downwards. If it is higher, the generated positions will progress upwards. \nThe code at the supplied address must §6consume a world target§f and §6leave nothing else on the stack§f. \nExample:\n§6:noname .bbreak ; drop ; @(0 2 0) @(10 2 10) area3§f\nFirst, a §6noname word§f is defined that breaks a block at the position on the top of the stack. AREA3 then §6calls§f the noname word for each position between the coordinates (0, 2, 0) and (10, 2, 10).", + "category.neepmeat.instruction.arithmetic": "Arithmetic", "category.neepmeat.instruction.comparison": "Comparison", "category.neepmeat.instruction.manufacture": "Manufacture", @@ -1069,6 +1082,7 @@ "category.neepmeat.instruction.redstone": "Redstone", "category.neepmeat.instruction.neepbus": "NEEPBus", "category.neepmeat.instruction.routing": "Routing", + "category.neepmeat.instruction.block": "Blocks", "category.neepmeat.instruction.misc": "Misc", "container.neepmeat.workstation": "Persistent Crafting Table", diff --git a/projects/assets/neepmeat/1.20-fabric/neepmeat/lang/zh_cn.json b/projects/assets/neepmeat/1.20-fabric/neepmeat/lang/zh_cn.json index 1452c6fbea36..763bb3bedb65 100644 --- a/projects/assets/neepmeat/1.20-fabric/neepmeat/lang/zh_cn.json +++ b/projects/assets/neepmeat/1.20-fabric/neepmeat/lang/zh_cn.json @@ -326,7 +326,9 @@ "screen.neepmeat.item_requester.from": "发送自%s, %s, %s", "block.neepmeat.storage_bus": "存储驱动器", "screen.neepmeat.pipe_priority.input_priority": "输入优先级", + "screen.neepmeat.pipe_priority.input_priority.desc": "此管道存储物品时的优先级。\n手动请求器向仓库发送物品时,会先送至高输入优先级的存储管道。\n若网络中有两个存储驱动器,其一的输入优先级为1,其二为0,则物品会首先送至前一台驱动器,直至与它相连的所有容器均填满为止。", "screen.neepmeat.pipe_priority.output_priority": "输出优先级", + "screen.neepmeat.pipe_priority.output_priority.desc": "此管道请求物品时的优先级。\n手动请求器或REQUEST指令请求物品时,会先让高输出优先级的存储管道供应。", "block.neepmeat.storage_bus.lore_0": "可让相连的容器响应物品请求。\n§e潜行交互以配置优先级。§f", "block.neepmeat.dumper": "智能卸料器", "block.neepmeat.dumper.lore_0": "向正下方投出物品。", @@ -428,7 +430,7 @@ "block.neepmeat.item_interface.lore_0": "用于转接它面对的方块。", "block.neepmeat.buffer": "缓冲器", "block.neepmeat.chute": "溜槽", - "block.neepmeat.chute.lore_0": "打开时,能将投向它的物品存入所附着的容器。", + "block.neepmeat.chute.lore_0": "打开时,它能将投来的物品存入其附着的容器。\n打开时潜行点击可从中取出一组物品。", "block.neepmeat.buffer.lore_0": "能容纳9组物品。给予红石信号可阻止其中物品被取出。", "block.neepmeat.metal_barrel": "金属桶", "block.neepmeat.content_detector": "物品探测器", @@ -514,10 +516,11 @@ "block.neepmeat.ceiling_light.lore_0": "潜行交互以打开和关闭。", "block.neepmeat.big_lever": "大型拉杆", + "block.neepmeat.big_lever.lore_0": "潜行点击可在保持和回弹模式间切换。", - "block.neepmeat.router": "物品路由器", + "block.neepmeat.router": "物品分拣器", "block.neepmeat.router.lore_0": "以简单物品过滤器分配物品。", - "block.neepmeat.advanced_router": "高级物品路由器", + "block.neepmeat.advanced_router": "高级物品分拣器", "block.neepmeat.advanced_router.lore_0": "以多个高级过滤器分配物品。", "block.neepmeat.grinder": "粉碎机", "block.neepmeat.grinder.lore_0": "§e潜行空手交互以提取经验。§f", @@ -598,6 +601,9 @@ "block.neepmeat.redstone_interface": "PLC红石接口", "block.neepmeat.robotic_arm": "PLC机械臂", "block.neepmeat.robotic_arm.lore_0": "PLC操作机构,功率足够时能高速运作。", + "block.neepmeat.builder": "建造机器人", + "block.neepmeat.builder.lore_0": "能够放置和破坏方块的机器人,可受PLC控制。\n所用资源和采集得到的物品均存储于基站。", + "screen.neepmeat.builder.pattern.tooltip": "用于匹配方块的模式。选择匹配模式而非选择槽位时,其会带有橙色外框。\n可用SELITEM指令设置匹配模式,用SELSLOT指令选择槽位。", "block.neepmeat.implanter": "植入器", "block.neepmeat.implanter.lore_0": "向实体植入植入物。可以手动操控,也可由PLC通过ROBOT指令操控。\n§e部分植入物不可手动植入,必须借助PLC。", "block.neepmeat.implanter.no_implant": "无植入物", @@ -683,7 +689,6 @@ "item.neepmeat.whisper_wheat_seeds": "呢喃小麦种子", "item.neepmeat.whisper_wheat": "呢喃小麦", "item.neepmeat.whisper_flour": "呢喃面粉", - "item.neepmeat.whisper_flour.lore_0": "每一粒面粉都隐藏着宇宙的可怖奥秘。", "block.neepmeat.flesh_potato": "腺体马铃薯", "item.neepmeat.flesh_potato": "腺体马铃薯", @@ -979,6 +984,7 @@ "item.neepmeat.drill_complexity_upgrade": "钻具复杂度升级", "implant.neepmeat.complexity_upgrade_1": "钻具复杂度升级", "implant.neepmeat.complexity_upgrade_1.desc_0": "适用于钻具底盘。将模块最大复杂度提升至20。", + "implant.neepmeat.drill_complexity_upgrade.desc_0": "适用于钻具底盘。将模块最大复杂度提升至20。", "item.neepmeat.chrysalis": "神圣之蛹", "item.neepmeat.chrysalis.lore_0": "你有种感觉,用PLC给牛嵌装这个植入物会是个很好的主意。", @@ -1056,10 +1062,17 @@ "instruction.neepmeat.neepbus_read.desc": "读取相连NEEP总线网络中所给地址处设备的值。\n §6ARG1§f:目标地址(字符串)", "instruction.neepmeat.route.desc": "使用管道驱动器(需为当前操作机构)请求所给名称的物品。\n该物品会从给定§6管道§f和§6输入方向§f运输至给定§6管道§f和§6输出方向§f。运输数量读取自栈,并将操作成功与否压入栈。\n §6ARG1§f:输入管道(世界目标)\n §6ARG2§f:输出管道(世界目标)\n §6ARG3§f:物品ID(字符串,通配符为“*”)", "instruction.neepmeat.request.desc": "使用管道驱动器(需为当前操作机构)请求所给名称的物品。\n该物品会通过管道网络运输至给定§6管道§f和§6输出方向§f。运输数量读取自栈,并将请求成功与否压入栈。\n §6ARG1§f:输出管道(世界目标)\n §6ARG2§f:物品ID(字符串,通配符为“*”)", - "instruction.neepmeat.count.desc": "统计所给世界目标处物品或流体的数量,并压入栈。\n具体统计何种类型的资源由可选的第二参数指定。\n若指定ID,则只会统计匹配该ID的物品或流体。“*”代表任意字符组合(如“*:water”和“minecraft:*”)。\n §6ARG1§f:存储空间(世界目标)§6\n §6ARG2§f:需统计的类型(ITEM或FLUID,可选)\n §6ARG3§f:物品ID或流体ID(字符串,可选)", + "instruction.neepmeat.count.desc": "§6( -- 数量 )§f\n§6( 匹配模式 -- 数量 )§f统计所给世界目标处物品或流体的数量,并压入栈。\n具体统计何种类型的资源由可选的第二参数指定。\n若指定ID,则只会统计匹配该ID的物品或流体。“*”代表任意字符组合(如“*:water”和“minecraft:*”)。\n §6ARG1§f:存储空间(世界目标)§6\n §6ARG2§f:需统计的类型(ITEM或FLUID,可选)\n §6ARG3§f:物品ID或流体ID(字符串,可选)", "instruction.neepmeat.stock.desc": "使用管道驱动器(需为当前操作机构)统计可访问容器(即与存储驱动器相连)中所有匹配物品的数量。将结果压栈。\n若指定ID,则只会统计匹配该ID的物品。“*”代表任意字符组合(如“minecraft:*”和“:stone”)。\n §6ARG1§f:物品ID(字符串,可选)", - "instruction.neepmeat.nbwrite.desc": "§6( s1 addr -- n2 )§f\n取出栈顶往下第二元素,沿数据线缆网络将其发送至所有匹配给定NEEP总线地址的端口。\nNEEP总线地址及数据均从栈中读取\n §6\"数据\" \"地址\" .NBWRITE", - "instruction.neepmeat.nbread.desc": "§6( addr -- n1 )§f\n沿数据线缆网络从匹配所给地址的端口处读取值,并压入栈。地址从栈中读取。\n §6\"要读取的地址\" .NBREAD §f", + "instruction.neepmeat.nbwrite.desc": "§6( 字符串 地址 -- n2 )§f\n取出栈顶往下第二元素,沿数据线缆网络将其发送至所有匹配给定NEEP总线地址的端口。\nNEEP总线地址及数据均从栈中读取\n §6\"数据\" \"地址\" .NBWRITE", + "instruction.neepmeat.nbread.desc": "§6( 地址 -- n1 )§f\n沿数据线缆网络从匹配所给地址的端口处读取值,并压入栈。地址从栈中读取。\n §6\"要读取的地址\" .NBREAD §f", + + "instruction.neepmeat.bbreak.desc": "§6( 位置 -- 成功与否 )§f\n当前操作机构需为建造机器人。\n从栈中读取世界目标,并尝试破坏该目标处的方块。返回该方块是否成功被破坏。\n掉落的物品会进入建造机器人的物品栏。", + "instruction.neepmeat.bplace.desc": "§6( 位置 -- 成功与否 )§f\n当前操作机构需为建造机器人。\n从栈中读取世界目标,并尝试将机器人所选槽位中的物品放置在该处。返回是否成功放置方块。", + "instruction.neepmeat.selslot.desc": "§6( 槽位 -- )§f\n当前操作机构需为建造机器人。\n从栈中读取整型值,并将机器人所选槽位(即建造所用槽位)设为该值对应的槽位。", + "instruction.neepmeat.selitem.desc": "§6( -- )§f\n§6( 匹配模式 -- )§f\n当前操作机构需为建造机器人。\n让建造机器人选择ID匹配所给模式的所有物品,而不是选择单独的槽位。\n若在字符串处给定_,则会从栈中读取模式。\n §6ARG1§f:匹配模式(字符串,接受_)", + "instruction.neepmeat.findslot.desc": "§6( -- 槽位 )§f\n§6( 匹配模式 -- 槽位 )§f(若未指定匹配模式)\n从栈顶读取世界目标,在该目标处的容器内搜索匹配所给字符串的物品。\n若在字符串处给定-,则会从栈中读取字符串。\n §6ARG1§f:匹配模式(字符串,接受_)", + "instruction.neepmeat.area3.desc": "§6( 地址 位置1 位置2 -- )§f\n使用两个角落位置(§6位置1§f和§6位置2§f)定义一个3D长方体,并对长方体中的所有方块调用给定执行地址(§6地址§f)的代码。\n第一个参数需为词地址,且该词应弹出一个世界目标。第二、第三个参数为执行区域的角落位置。\n若§6位置1§f的Y坐标小于§6位置2§f的,生成位置时会向下步进。若大于,则生成时向上步进。\n所给地址处的词必须§6弹出一个世界目标§f,且最终§6不向栈压入任何数据§f。\n示例:\n§6:noname .bbreak ; drop ; @(0 2 0) @(10 2 10) area3§f\n这段程序首先定义了一个§6匿名词§f,该词会破坏栈顶位置处的方块。AREA3指令随后会对坐标(0, 2, 0)、(10, 2, 10)之间的所有位置坐标§6调用§f该匿名词。", "category.neepmeat.instruction.arithmetic": "算术", "category.neepmeat.instruction.comparison": "比较", @@ -1069,15 +1082,16 @@ "category.neepmeat.instruction.redstone": "红石", "category.neepmeat.instruction.neepbus": "NEEP总线", "category.neepmeat.instruction.routing": "路由", + "category.neepmeat.instruction.block": "方块", "category.neepmeat.instruction.misc": "杂项", "container.neepmeat.workstation": "留存工作台", "container.neepmeat.assembler.display": "装配器", "container.neepmeat.stirling_engine": "斯特林引擎", - "container.neepmeat.router": "物品路由器", + "container.neepmeat.router": "物品分拣器", "container.neepmeat.alloy_kiln": "合金窑", - "screen.neepmeat.advanced_router": "高级物品路由器", + "screen.neepmeat.advanced_router": "高级物品分拣器", "screen.neepmeat.advanced_router.choose_side": "配置侧面", "screen.neepmeat.filter.item_filter": "物品过滤器",