搜尋
首頁JavaMinecraft 結構覆蓋現有塊 1.20

Minecraft 結構覆蓋現有塊 1.20

Feb 22, 2024 pm 01:00 PM
我的世界

php小編柚子帶來的java問答專題將為您詳細解答Minecraft中關於結構覆蓋現有塊的問題。在遊戲中,如何有效地操作和利用這項功能,將直接影響遊戲體驗和玩法樂趣。透過本文的解讀與指導,希望能幫助您更能掌握這項技巧,從而在遊戲中取得更好的成績和體驗。

問題內容

我一直在嘗試在線尋找一種方法來修改 Minecraft Fabric 中的現有區塊及其屬性,但我所能找到的只是如何建立新區塊。 我找到的任何版本都低於 1.20。

我實際上根本找不到覆蓋現有區塊屬性的方法。覆蓋也不起作用

解決方法

您本質上想要做的是重新註冊 minecraft 已經註冊的 block 實例。但沒有人記錄如何做到這一點是有原因的:你不應該

在 minecraft 中重新註冊區塊可能會導致奇怪的問題,尤其是當您的模組將在大型模組包中使用時。這與其他模組甚至《我的世界》本身的兼容性有關。您最好希望避免這種情況。還有十幾種其他解決方案可以改變特定區塊的行為,而不會造成太多問題。它們包括但不限於:

  • 只需將您的方塊添加到minecraft 的內建標籤之一- 您甚至不需要java 程式碼,只需要資料包中的json 檔案:https://www.php.cn/link/ff7cc29289db44861ce4b3e5e56fe234 。例如,這可以使石頭可以用鏟子開採。
  • 使用 fabric api 提供的回呼之一來偵聽您想要處理的某些事件。例如,當玩家點擊它時,它可以將草塊變成泥土。
  • 建立一個所謂的“擴充塊”,它可以充當區塊的自訂狀態屬性。 ie。如果您想給minecraft:stone 一個age 屬性(無論出於何種原因可能有用),請將minecraft:stone 視為age =0 並使用age 建立自訂區塊(例如modid:ged_stone) zqb 屬性從1 到任何最大年齡擴大年齡範圍。

另一種更通用的方法是將mixin 建置到block 類別或適當的子類別中,並執行類似以下操作來定位特定區塊(在本例中為石頭):

block self = (block) (object) this;
if (builtinregistries.block.getkey(self).equals(new resourcelocation("stone"))) {
    // do something only if this block is stone
}

但是,如果您真的真的想完全取代區塊實例,這裡有一個建議:使用 mixin 注入 registry.register,用自訂區塊實例取代特定區塊實例:

@Mixin(Registry.class)
public class RegistryMixin {
    @Inject(
        // You may need to specify the correct signature after the method
        // name because there are two `register` methods.
        method="register",
        at=@At("HEAD"),
        cancelable=true
    )
    // Note that this is a generic method, in Mixin you'll have to use
    // Object to replace type parameters
    private static void onRegister(Registry reg, ResourceLocation id, Object value, CallbackInfoReturnable<Object> cir) {
        if (reg != BuiltInRegistries.BLOCK) return;
        if (!id.toString().equals("minecraft:stone")) return;

        // Now that you've filtered out the minecraft:stone block,
        // you can re-register it
        Block myCustomBlock = new Block(.......);
        ((WritableRegistry) reg).register(id, myCustomBlock);
        cir.setReturnValue(myCustomBlock);
    }
}

但再次嘗試避免這種解決方案。這裡有龍。

請注意,我尚未測試任何程式碼片段,因為在撰寫本文時我手邊沒有修改環境。它可能需要調整才能工作。 另外,我使用了 mojang 的官方映射,如果您使用 yarn 映射,名稱可能會有所不同。例如,resourcelocation 在 yarn 中被命名為 identifier

我希望這有幫助。快樂編碼!

以上是Minecraft 結構覆蓋現有塊 1.20的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:stackoverflow。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。