{
  "name": "變數",
  "icon": "minecraft:paper",
  "category": "pneumaticcraft:programming",
  "advancement": "pneumaticcraft:programmer",
  "pages": [
    {
      "type": "text",
      "text": "$(thing)變數/$ 允許無人機程式儲存和操作區塊位置（即座標），以提供一些高階的無人機功能。$(p)要從無人機程式內建立或操作變數，請使用 $(l:programming/coordinate_operator)座標運算子/$ 和 $(l:programming/coordinate)座標/$ 元件，若要對變數進行測試，請使用 $(l:programming/condition_coordinate)條件：座標/$ 元件。"
    },
    {
      "type": "text",
      "text": "在 $(l:programming/area)區域/$ 元件中，您可以使用 $(thing)變數/$ 名稱，而不是使用 GPS 座標。$(p)這些 $(thing)變數/$ 在世界過載之間持久存在，因此可以用於建立一個無盡的挖掘程式，例如，無人機的挖掘位置由 $(thing)變數/$ 跟蹤。$(p)要檢視一箇舊但仍然相關的教程，請參見 $(l:https://www.youtube.com/watch?v=FIjEdD_Yj9Y)MineMaarten 的這個 YouTube 影片/$。"
    },
    {
      "type": "text",
      "text": "雖然 $(thing)變數/$ 僅儲存座標（X/Y/Z 三元組），但如果您仔細想想，您會意識到您也可以使用 $(thing)整數/$ 和 $(thing)布林值/$。只需對整數使用一個軸，對於布林值，定義類似 '0' = 假，其他一切 = 真。玩得開心！"
    },
    {
      "type": "text",
      "title": "物品變數",
      "text": "在上一頁中，我們提到變數只能儲存座標。這其實是一個小謊言：還有一種 $(thing)物品變數/$，可以儲存（你猜對了）物品值。這些變數使用 $(l:programming/item_assign)物品配置/$ 和 $(l:programming/for_each_item)對每個物品/$ 元件建立，並由 $(l:programming/item_filter)物品過濾器/$ 元件使用。"
    },
    {
      "type": "text",
      "title": "變數型別",
      "text": "變數有三種類型：$(li)$(thing)區域性變數/$：這些變數按無人機儲存，並簡單地引用為 'varname'。$(li)$(thing)全域性變數/$：這些變數對所有無人機全域性可用，可用於共享資料。它們的引用為 '#varname' 或 '%varname'（見後面的頁面）。$(li)$(thing)特殊變數/$ 可用於檢索有關無人機的一些元資料，並引用為 '$varname'。"
    },
    {
      "type": "text",
      "anchor": "global",
      "title": "全域性變數",
      "text": "普通變數是每個 $(l:tools/drone)無人機/$ 獨有的；它們無法共享。$(thing)全域性變數/$，然而，$(italic)可以/$ 被共享。這允許無人機之間進行通訊。$(p)此外，$(l:tools/gps_tool)GPS 工具/$ 可以連結並修改它們，$(l:machines/universal_sensor)通用感測器/$ 可以基於它們發出 $(#f00)紅石訊號/$，而 $(l:tools/remote)遙控器/$ 可以顯示和修改它們。"
    },
    {
      "type": "text",
      "title": "全域性變數（續）",
      "text": "$(ttcolor)$(t:玩家全域性變數已在 PNC:R 3.0.0，MC 1.18.1 中新增)有兩種型別的全域性變數/$： $(thing)玩家全域性/$ 和 $(thing)伺服器全域性/$。$(li)玩家全域性變數以 '#' 開頭。這些變數在玩家的無人機之間共享，但對每個玩家是私有的。$(li)伺服器全域性變數以 '%' 開頭。這些變數在伺服器上 $(italic)所有/$ 玩家之間共享。$(p)注意：在早期版本的 mod 中只有伺服器全域性變數存在，其字首為 '#'。"
    },
    {
      "type": "text",
      "title": "變數命令",
      "text": "存在幾個命令（任何玩家可用）來操作全域性變數：$(li)/pncr global_var set <varname> <x> <y> <z>$(li)/pncr global_var set <varname> <item-registry-id>$(li)/pncr global_var get <varname>$(li)/pncr global_var list$(li)/pncr global_var delete <varname>"
    },
    {
      "type": "text",
      "anchor": "special",
      "title": "特殊變數",
      "text": "以下特殊變數被識別：$(li)$(thing)$owner_pos/$：擁有 $(l:tools/drone)無人機/$ 的玩家的（頭部）塊位置，如果擁有者離線，則為 (0,0,0)。$(li)$(thing)$drone_pos/$：無人機自身的塊位置。$(li)$(thing)$player_pos=<name>/$：玩家 '<name>' 的（頭部）塊位置（不區分大小寫），如果無效或離線的玩家名稱則為 (0,0,0)。"
    },
    {
      "type": "text",
      "anchor": "special",
      "title": "特殊變數（續）",
      "text": "$(li)$(thing)$owner_look/$：表示擁有玩家在每個軸上朝向的一個向量；每個值將為 -1、0 或 1。$(li)$(thing)$controller_pos/$：控制 $(l:programming/programmable_controller)可程式設計控制器/$ 塊的塊位置，如果無人機是實際的無人機而非可程式設計控制器，則為 (0,0,0)。"
    },
    {
      "type": "text",
      "anchor": "special",
      "title": "特殊變數（續）",
      "text": "為了相容性原因，還存在一些舊變數（但建議使用上一頁中的變數）：$(li)$(thing)$owner/$：$(thing)$owner_pos/$ 的別名。$(li)$(thing)$drone/$：出於歷史原因，獲取無人機 $(italic)上面/$ 的塊位置。$(li)$(thing)$player=<name>/$：$(thing)$player_pos/$ 的別名。"
    },
    {
      "type": "text",
      "title": "除錯",
      "text": "有時，顯示變數的值對於除錯而言非常有用。您可以通過幾種方式顯示變數的值：$(li)使用 $(l:programming/rename)重新命名/$ 元件將變數顯示為無人機的名稱牌 $(li)使用 $(l:programming/edit_sign)編輯標牌/$ 元件寫入文字 $(li)在 $(l:tools/remote#label)標籤/$ 中使用 $(l:tools/remote)遙控器/$。"
    },
    {
      "type": "text",
      "title": "除錯（續）",
      "text": "要將變數插入到透過上述方法之一顯示的文字中，請使用語法 $(thing)${varname}/$。$(p)請注意，特殊變數和全域性變數字首仍在此適用，因此要插入無人機的位置，您將使用 $(thing)${$drone_pos}/$，要插入全域性變數，您將使用 $(thing)${#globalvarname}/$ 或 $(thing)${%globalvarname}/$。"
    },
    {
      "type": "text",
      "title": "除錯（續）",
      "text": "您還可以透過在變數名稱後加上 $(thing).x/$、 $(thing).y/$ 或 $(thing).z/$ 字尾來僅顯示座標的 X、Y 或 Z 元件。例如，要顯示無人機擁有者的 Y 座標，請使用 $(thing)${$owner_pos.y}/$。$(p)如果變數是 $(thing)物品變數/$，則使用 $(thing).id/$ 字尾會獲取物品的註冊 ID，而不是其顯示名稱（這是預設值）。這在 $(l:machines/aphorism_tile#items)名言塊/$ 上顯示物品時尤其有用。"
    }
  ]
}