<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ocr.michiyo.me/w/index.php?action=history&amp;feed=atom&amp;title=Component%2Finventory_controller%2Fzh</id>
	<title>Component/inventory controller/zh - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://ocr.michiyo.me/w/index.php?action=history&amp;feed=atom&amp;title=Component%2Finventory_controller%2Fzh"/>
	<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/inventory_controller/zh&amp;action=history"/>
	<updated>2026-08-24T15:15:00Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/inventory_controller/zh&amp;diff=1173&amp;oldid=prev</id>
		<title>imported&gt;OCDoc Import: Imported from legacy OpenComputers documentation at ocdoc.cil.li</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/inventory_controller/zh&amp;diff=1173&amp;oldid=prev"/>
		<updated>2026-08-24T08:08:27Z</updated>

		<summary type="html">&lt;p&gt;Imported from legacy OpenComputers documentation at ocdoc.cil.li&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= 组件：物品栏控制器 =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;组件名：&amp;#039;&amp;#039;&amp;#039;`inventory_controller`&lt;br /&gt;
&lt;br /&gt;
此组件由[[Item/inventory controller upgrade/zh|物品栏控制器升级]]提供。&lt;br /&gt;
&lt;br /&gt;
有了此API，机器人可以接收有关物品或物品栏的额外信息，并且可以向指定槽位放入物品或从中取出物品。&lt;br /&gt;
&lt;br /&gt;
大多数操作所需的方向（side）遵循[[API/sides/zh|Sides(方向面) API]]中的方向。若不指定方向或指定错误的方向，函数通常会报错。要与机器人自身的物品栏互动需要使用`back`方向，这也使得机器人无法与在其身后的物品容器互动。机器人也不能访问它们的左右两边。综上，你只能与机器人前方、上方或下方的物品容器互动。&lt;br /&gt;
&lt;br /&gt;
回调函数：&lt;br /&gt;
&lt;br /&gt;
* `getInventorySize(side: number): number or nil[, string]` 返回指定方向所对物品容器的大小。 &amp;#039;&amp;#039;&amp;#039;side&amp;#039;&amp;#039;&amp;#039; - 须为某个有效的方向。 &amp;#039;&amp;#039;&amp;#039;返回值：&amp;#039;&amp;#039;&amp;#039;物品容器的大小，或者`nil`与函数执行失败原因的描述（通常为`no inventory`，代表对应方向不存在物品容器）。&lt;br /&gt;
* `getStackInSlot(side:number, slot:number):table` 返回一个描述指定槽位中物品信息的表，或`nil`。用此函数获取机器人自身物品栏中物品信息的做法已经过时，请使用`getStackInInternalSlot`代替。 &amp;#039;&amp;#039;&amp;#039;side&amp;#039;&amp;#039;&amp;#039; - 须为某个有效的方向。 &amp;#039;&amp;#039;&amp;#039;slot&amp;#039;&amp;#039;&amp;#039; - 要分析的槽位。此参数不会检查物品容器大小，而是会将超出物品栏范围的槽位当作空槽位。 &amp;#039;&amp;#039;&amp;#039;返回值：&amp;#039;&amp;#039;&amp;#039;若槽位为空（或超出物品栏范围）则返回`nil`，否则返回一个表，其中包含槽位中物品的以下信息：&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;damage&amp;#039;&amp;#039;&amp;#039;:number - 物品的当前损害值。&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;maxDamage&amp;#039;&amp;#039;&amp;#039;:number - 此物品在损坏前能承受的最大损害值。&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;size&amp;#039;&amp;#039;&amp;#039;:number - 此物品的当前堆叠数量。&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;maxSize&amp;#039;&amp;#039;&amp;#039;:number - 此物品的最大堆叠数量。&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;id&amp;#039;&amp;#039;&amp;#039;:number - 此物品的Minecraft id。请注意只有在配置文件中设置`insertIdsInConverters=true`才会出现此字段，可能因服务端设定而不同！&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039;:string - &amp;#039;&amp;#039;&amp;#039;“未翻译的”&amp;#039;&amp;#039;&amp;#039;物品名，也就是Minecraft的内部值，例如`oc:item.FloppyDisk`。&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;label&amp;#039;&amp;#039;&amp;#039;:string - &amp;#039;&amp;#039;&amp;#039;“翻译后的”&amp;#039;&amp;#039;&amp;#039;物品名。&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;hasTag&amp;#039;&amp;#039;&amp;#039;:boolean - 此物品是否包含NBT标签。&lt;br /&gt;
&lt;br /&gt;
* `getStackInInternalSlot(slot:number):table` &lt;br /&gt;
&lt;br /&gt;
获取机器人物品栏中指定（若不指定为当前选中）槽位中物品的物品堆信息。&lt;br /&gt;
* `dropIntoSlot(side:number, slot:number[, count:number]):boolean[, string]` 从机器人物品栏的当前选中槽位向外转移物品，目标为指定方向处物品容器的指定槽位，至多指定数量个。 &amp;#039;&amp;#039;&amp;#039;side&amp;#039;&amp;#039;&amp;#039; - 某个有效方向。 &amp;#039;&amp;#039;&amp;#039;slot&amp;#039;&amp;#039;&amp;#039; - 要放置物品的目标槽位。 &amp;#039;&amp;#039;&amp;#039;count&amp;#039;&amp;#039;&amp;#039; - 要转移多少物品。 &amp;#039;&amp;#039;&amp;#039;返回值：&amp;#039;&amp;#039;&amp;#039;若至少移动了一个物品则返回`true`，否则返回`false`与报错信息。 请注意此函数中机器人不能将物品放入自身物品栏，试图这样做会抛出错误。你需要使用[[API/robot/zh|Robot(机器人) API]]中的`robot.transferTo`函数来进行此操作。&lt;br /&gt;
* `suckFromSlot(side:number, slot:number[, count:number]):boolean` 从指定方向处物品容器的指定槽位获取物品，转移到机器人物品栏的当前选中槽位，至多指定数量个。 &amp;#039;&amp;#039;&amp;#039;side&amp;#039;&amp;#039;&amp;#039; - 某个有效方向。 &amp;#039;&amp;#039;&amp;#039;slot&amp;#039;&amp;#039;&amp;#039; - 用于获取物品的槽位。 &amp;#039;&amp;#039;&amp;#039;count&amp;#039;&amp;#039;&amp;#039; - 要转移多少物品。 &amp;#039;&amp;#039;&amp;#039;返回值：&amp;#039;&amp;#039;&amp;#039;若至少移动了一个物品则返回`true`，否则返回`false`。 若机器人物品栏的当前选中槽位被占用，则传入的物品会被合并到物品栏中的相同物品堆中，或移动到下一个空闲槽位（有的话）。若没有可用槽位则操作会失败。 请注意此函数中给机器人不能从自身物品栏提取物品，试图这样做会抛出错误。你需要使用[[API/robot/zh|Robot(机器人) API]]中的`robot.transferTo`函数来进行此操作。&lt;br /&gt;
* `equip():boolean` 将机器人工具槽位中内容与其物品栏的选中槽位中内容互换。 &amp;#039;&amp;#039;&amp;#039;返回值：&amp;#039;&amp;#039;&amp;#039;若物品成功交换则返回`true`，否则返回`false`。此操作通常都会成功。 请注意，你可以将任何类型的物品放进机器人的工具槽位，不只是工具，就算是机器人根本不能使用的物品也行。&lt;br /&gt;
* `store(side:number, slot:number, dbAddress:string, dbSlot:number):boolean` 获取指定方向处物品容器指定槽位的物品堆信息，将其存入指定地址对应数据库的指定槽位。&lt;br /&gt;
* `storeInternal(slot:number, dbAddress:string, dBslot:number):boolean` 获取机器人物品栏指定槽位的物品堆信息，将其存入指定地址对应数据库的指定槽位。&lt;br /&gt;
* `compareToDatabase(slot:number, dBaddress:string, dBslot:number):boolean` 获取机器人物品栏指定槽位的物品堆信息，与指定地址对应数据库的指定槽位内容对比。若物品信息相符则返回`true`。&lt;br /&gt;
* `compareStacks(side:number, slotA:number, slotB:number):boolean` 检查指定方向处物品容器中，槽位A（slotA）和槽位B（slotB）的物品信息是否相同。若相同则返回`true`。&lt;br /&gt;
* `getSlotMaxStackSize(side:number, slot:number):number` 获取指定方向处物品容器的指定槽位中物品的堆叠上限。&lt;br /&gt;
* `getSlotStackSize(side:number, slot:number):number` 获取指定方向处物品容器的指定槽位中物品的数量。&lt;br /&gt;
&lt;br /&gt;
样例：&lt;br /&gt;
&lt;br /&gt;
输出[http://ocdoc.cil.li/api:robot:zh slot]所指示位置的物品元数据。&lt;br /&gt;
&lt;br /&gt;
```lua local component = require(&amp;quot;component&amp;quot;) local sides = require(&amp;quot;sides&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local slot = 1 local item = component.inventory_controller.getStackInInternalSlot(slot)&lt;br /&gt;
&lt;br /&gt;
if item then&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  print(&amp;quot;Item name: &amp;quot;, item.name)&lt;br /&gt;
  print(&amp;quot;Item count: &amp;quot;, item.size)&lt;br /&gt;
  print(&amp;quot;Item damage: &amp;quot;, item.damage)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  print(&amp;quot;Slot &amp;quot; .. slot .. &amp;quot; is empty&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== end ``` ` 目录 ==&lt;br /&gt;
&lt;br /&gt;
{{:Component/contents/zh}}&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;OCDoc Import</name></author>
	</entry>
</feed>