Skip to content

fix(cover): 修正末影紅石鏈接在沒有訊號來源時仍輸出 15 - #60

Open
dead53216 wants to merge 1 commit into
GregTech-Odyssey:gtofrom
dead53216:fix/ender-redstone-link-stuck-signal
Open

fix(cover): 修正末影紅石鏈接在沒有訊號來源時仍輸出 15#60
dead53216 wants to merge 1 commit into
GregTech-Odyssey:gtofrom
dead53216:fix/ender-redstone-link-stuck-signal

Conversation

@dead53216

Copy link
Copy Markdown

EnderRedstoneLinkCover 的輸出取自頻道內所有成員值的最大值,但成員值在數個路徑上 會被孤立,而 redstoneSignalOutput 又只有 transfer() 的 OUT 分支會寫, 導致它一旦被寫成 15 就再也降不下來。

  • 建構子在 NBT 還原「之前」就用隨機 UUID 註冊到預設頻道 FFFFFFFF:此時 uuid 與 colorStr 都還沒還原,於是每次區塊載入都留下一個永遠不會被移除的成員, 也讓 canRemove() 永遠為 false、頻道再也無法回收。改到 onLoad()(欄位已還原、 level 已設定)再註冊。
  • onUnload() 沒有 removeMember():區塊卸載後該成員最後讀到的值會永久留在頻道裡, 其他 OUT 覆蓋板會一直讀到一個早已沒有來源的訊號。
  • setIo() 與 setWorkingEnabled(false) 不會清掉 redstoneSignalOutput:切換成 IN 或關閉工作開關之後,機器那一面會永遠卡在最後一次的輸出值,且會存進 NBT。 新增 onTransferStopped() hook 一併歸零輸出與自己的頻道值。
  • getSignalInput() 傳入 attachedSide.getOpposite(),但 Level#getSignal 的 Direction 語意是「接收方 -> 來源」,應為 attachedSide;對照 MachineControllerCover#getInputSignal 與 ControlPartMachine 皆是如此。
  • setChannelName()/setPermission() 在把自己移出舊頻道之前就呼叫 deleteEntryIf, 舊頻道永遠通不過 canRemove()。改為先加入新頻道,再回收舊的。

EnderRedstoneLinkCover 的輸出取自頻道內所有成員值的最大值,但成員值在數個路徑上
會被孤立,而 redstoneSignalOutput 又只有 transfer() 的 OUT 分支會寫,
導致它一旦被寫成 15 就再也降不下來。

- 建構子在 NBT 還原「之前」就用隨機 UUID 註冊到預設頻道 FFFFFFFF:此時 uuid 與
  colorStr 都還沒還原,於是每次區塊載入都留下一個永遠不會被移除的成員,
  也讓 canRemove() 永遠為 false、頻道再也無法回收。改到 onLoad()(欄位已還原、
  level 已設定)再註冊。
- onUnload() 沒有 removeMember():區塊卸載後該成員最後讀到的值會永久留在頻道裡,
  其他 OUT 覆蓋板會一直讀到一個早已沒有來源的訊號。
- setIo() 與 setWorkingEnabled(false) 不會清掉 redstoneSignalOutput:切換成 IN
  或關閉工作開關之後,機器那一面會永遠卡在最後一次的輸出值,且會存進 NBT。
  新增 onTransferStopped() hook 一併歸零輸出與自己的頻道值。
- getSignalInput() 傳入 attachedSide.getOpposite(),但 Level#getSignal 的
  Direction 語意是「接收方 -> 來源」,應為 attachedSide;對照
  MachineControllerCover#getInputSignal 與 ControlPartMachine 皆是如此。
- setChannelName()/setPermission() 在把自己移出舊頻道之前就呼叫 deleteEntryIf,
  舊頻道永遠通不過 canRemove()。改為先加入新頻道,再回收舊的。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant