{
  "name": "計算機整合",
  "icon": "pneumaticcraft:textures/patchouli/computer.png",
  "category": "pneumaticcraft:base_concepts",
  "flag": "|mod:computercraft,mod:opencomputers",
  "pages": [
    {
      "type": "text",
      "text": "當安裝了$(thing)電腦工藝/$ 或 $(thing)開放式電腦/$ 時，您將能夠與幾乎所有 $(pncr) 機器和 $(l:machines/drone_interface)無人機/$ 進行互動。$(p)此處列出的任何機器都可以作為 CC/OC 外設進行互動。"
    },
    {
      "type": "text",
      "title": "ComputerCraft",
      "text": "在 Lua 中，您可以執行 $(thing)m = peripheral.wrap(<side>)/$，其中 $(thing)<side>/$ 是外設連線到計算機的側面（上、下、左、右、後、前）。然後，您可以使用以下任何函式與 $(thing)m.<functionName>/$ 進行互動。$(p)在以下函式中，任何出現 '<side>' 的位置，'up'、'down'、'north'、'south'、'east'、'west' 都是有效的。",
      "flag": "mod:computercraft"
    },
    {
      "type": "text",
      "title": "Open Computers",
      "text": "您需要使用 $(item)介面卡/$ 將計算機連線到 $(pnc) 機器；它們將作為 OC 元件出現，如果您在 OC Lua 環境中執行 $(thing)=components.list()/$，將顯示出來。然後可以使用以下任何函式，例如 $(thing)p = components.air_compressor.getPressure()/$ 將獲取附加的 $(item)空氣壓縮機/$ 的當前壓力。",
      "flag": "mod:opencomputers"
    },
    {
      "type": "text",
      "title": "常用方法",
      "text": "以下方法是 $(italic)所有/$ $(pncr) 機器的共同方法：$(li)$(#800)getPressure(), getPressure(<side>)/$: 獲取機器的壓力。<side> 是可選的，僅對 $(l:machines/vacuum_pump)真空泵/$ 有用，該泵具有特定側面的壓力。$(li)$(#800)getDangerPressure()/$: 獲取機器面臨爆炸風險時的壓力。$(li)$(#800)getCriticalPressure()/$: 獲取機器一定會爆炸的最大壓力。"
    },
    {
      "type": "text",
      "title": "與熱相關的方法",
      "text": "以下方法是 $(italic)所有/$ $(pncr) 機器的共同方法，這些機器支援 $(l:base_concepts/heat)熱/$ 的概念：$(li)$(#800)getTemperature(), getTemperature(<side>)/$: 獲取機器的溫度。<side> 是可選的，僅對 $(l:machines/vortex_tube)渦旋管/$ 有用，該管的溫度因側面而異。"
    },
    {
      "type": "spotlight",
      "anchor": "air_cannon",
      "item": "pneumaticcraft:air_cannon",
      "text": "$(li)$(#800)setExternalControl(<true/false>)/$: 當為 true 時，這將防止使用正常方法（GPS 工具插入、範圍升級變化等）旋轉大炮。$(li)$(#800)setTargetLocation(<x>,<y>,<z>)/$: 將大炮指向給定的目標位置，而不是儲存在 GPS 工具中的位置。"
    },
    {
      "type": "text",
      "title": "空氣炮（續）",
      "text": "$(li)$(#800)setRotationAngle(<angle>)/$: 將炮的偏航旋轉到指定的角度。$(li)$(#800)setHeightAngle(<angle>)/$: 將炮的俯仰旋轉到指定的角度。$(li)$(#800)isDoneRotating()/$: 當炮旋轉完成時返回 true。$(li)$(#800)getMinWorkingPressure()/$: 返回發射大炮所需的最低壓力（GUI 中的黃色到綠色閾值）。"
    },
    {
      "type": "text",
      "title": "空氣炮（續）",
      "text": "$(li)$(#800)fire()/$: 發射大炮，前提是有足夠的壓力，並且有物品插入。如果成功，則返回 true。"
    },
    {
      "type": "spotlight",
      "anchor": "elevator",
      "item": "pneumaticcraft:elevator_base",
      "title": "電梯",
      "text": "$(li)$(#800)setExternalControl(<true/false>)/$: 當為 true 時，將電梯的 $(#f00)紅石模式/$ 設定為“電梯呼叫者”模式，這也適用於計算機控制。在呼叫 $(#800)setTargetHeight()/$ 之前不必設定；該方法將自動將電梯更改為外部控制。"
    },
    {
      "type": "text",
      "title": "電梯（續）",
      "text": "$(li)$(#800)getMinWorkingPressure()/$: 獲取延伸電梯所需的最低壓力。使電梯下降是免費的。$(li)$(#800)setTargetHeight(<height>)/$: 將電梯的目標高度設定為解析的高度（以米/塊為單位，浮點數）。$(li)$(#800)getTargetHeight()/$: 獲取電梯的目標高度（以米/塊為單位，浮點數）。$(li)$(#800)getCurrentHeight()/$: 獲取電梯的當前高度（以米/塊為單位，浮點數）。"
    },
    {
      "type": "text",
      "title": "電梯（續）",
      "text": "$(li)$(#800)getVelocity()/$: 獲取電梯的當前速度，以每個 tick 的塊數（每秒 20 個 tick）。負值表示電梯正在下降。"
    },
    {
      "type": "spotlight",
      "anchor": "universal_sensor",
      "item": "pneumaticcraft:universal_sensor",
      "text": "$(li)$(#800)getSensorNames()/$: 返回所有已知感測器名稱的表。$(li)$(#800)getSensor()/$: 返回當前選擇的感測器名稱。"
    },
    {
      "type": "text",
      "title": "通用感測器（續）",
      "text": "$(li)$(#800)setSensor(<sensorName>), setSensor(<index>), setSensor()/$: 設定當前選擇的感測器。<sensorName> 是由 $(#800)getSensorNames()/$ 返回的名稱之一。<index> 是從 $(#800)getSensorNames()/$ 返回的表中的索引。當使用無引數的 $(#800)setSensor()/$ 時，將不選擇任何感測器（機器進入空閒狀態，不使用空氣）。如果感測器在當前插入的升級中是可能的，則返回 true。"
    },
    {
      "type": "text",
      "title": "通用感測器（續）",
      "text": "$(li)$(#800)setTextField(<text>)/$: 一些感測器使用文字欄位來指定附加選項（例如，“範圍內的實體”感測器接受 $(l:base_concepts/entity_filter)實體過濾器字串/$）。您可以在此處指定所需的文字。$(li)$(#800)getTextField()/$: 返回當前儲存在 $(thing)通用感測器/$ 中的文字。"
    },
    {
      "type": "text",
      "title": "通用感測器（續）",
      "text": "$(li)$(#800)isSensorEventBased()/$: 感測器分為兩類：基於事件的和輪詢感測器。基於事件的感測器等待某些事情發生（玩家攻擊、物品拾取）。輪詢感測器定期檢查感測器的狀態（範圍內的實體、世界時間、雨感測器）。如果當前選擇的感測器是基於事件的，則此函式返回 true。"
    },
    {
      "type": "text",
      "title": "通用感測器（續）",
      "text": "$(li)$(#800)getSensorValue()/$: 如果當前感測器是輪詢感測器，則返回它將輸出的（非反轉）紅石訊號。請注意，設定感測器並立即獲取輸出是不可靠的，因為許多輪詢感測器出於效能原因輪詢不頻繁。因此，此方法會觸發拉取事件；獲取該事件的響應。如果沒有選擇輪詢感測器，將丟擲異常。"
    },
    {
      "type": "text",
      "title": "通用感測器（續）",
      "text": "$(li)$(#800)getMinWorkingPressure()/$: 返回使通用感測器工作所需的最低壓力（GUI 中的黃色到綠色閾值）。$(li)$(#800)setGPSToolCoordinate(<slotIndex>,<x>,<y>,<z>)/$: 將給定槽（從 1 開始）中 GPS 工具儲存的位置設定為提供的位置。這對於使用位置的感測器很有用。"
    },
    {
      "type": "text",
      "title": "通用感測器（續）",
      "text": "對於基於事件的感測器（例如，玩家右鍵點選感測器），獲取感測器值是基於事件的。您可以透過執行 $(#800)<arguments> = os.pullEvent(\"universalSensor\")/$ 來獲取事件。通常，引數由 <eventName, redstoneStrength> 組成。玩家右鍵點選感測器是一個例外，因為返回 <eventName, redstoneStrength, interactedX, interactedY, interactedZ>。這允許一些有趣的用途……"
    }
  ]
}