← ClaudeAtlas

nms-block-entitylisted

實作自定義 NMS BlockEntity(含 NBT 序列化、Tick 邏輯、客戶端同步),比 Bukkit BlockState 更靈活(Paper NMS + Mojang-mapped)/ Implement custom NMS BlockEntity with NBT serialization, tick logic, and client sync
MrPippi/MJP-Claude-Skills · ★ 1 · Data & Documents · score 70
Install: claude install-skill MrPippi/MJP-Claude-Skills
# NMS Block Entity / NMS 自定義方塊實體 ## 技能名稱 / Skill Name `nms-block-entity` ## 目的 / Purpose 繼承 NMS `BlockEntity` 實作自定義方塊實體,實現 NBT 讀寫、伺服器端 Tick 邏輯(`BlockEntityTicker`)、以及透過封包同步狀態至客戶端。 ## NMS 版本需求 / NMS Version Requirements - Paper 1.21 – 1.21.3 - Paperweight userdev 1.7.2+ - Mojang mappings(已由 Paper 1.20.5+ 原生支援) ## 觸發條件 / Triggers - 「BlockEntity」「TileEntity」「自定義方塊實體」「block entity」「tile entity」 - 「方塊 tick」「block tick」「BlockEntityTicker」「方塊 NBT」「block nbt」 - 「自定義方塊 NMS」「custom block nms」 ## 輸入參數 / Inputs | 參數 | 範例 | 說明 | |------|------|------| | `package_name` | `com.example.block` | 產出類別所在 package | | `entity_class_name` | `GeneratorBlockEntity` | BlockEntity 子類名 | | `has_ticker` | `true` | 是否需要 tick 邏輯 | | `base_block` | `CHEST` | 用哪個 NMS 方塊作為載體 | ## 輸出產物 / Outputs - `CustomBlockEntity.java` — BlockEntity 實作(含 NBT load/save) - `CustomBlockEntityTicker.java`(選)— ServerLevel tick 邏輯 - `BlockEntityHelper.java` — 在世界中取得/設定 BlockEntity 工具 ## Paperweight 建置設定 / Build Setup 參見 `Skills/paper-nms/PLATFORM.md`。關鍵依賴: ```groovy dependencies { paperweight.paperDevBundle('1.21.1-R0.1-SNAPSHOT') } ``` ## 代碼範本 / Code Template ### `CustomBlockEntity.java` ```java package com.example.block; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.network.protocol.game.ClientboundBlock