Rumah > Java > teks badan

Struktur Minecraft menimpa blok sedia ada 1.20

PHPz
Lepaskan: 2024-02-22 13:00:09
ke hadapan
736 orang telah melayarinya

Topik soal jawab java yang dibawakan oleh editor php Yuzi akan menjawab soalan anda secara terperinci tentang struktur yang meliputi blok sedia ada di Minecraft. Dalam permainan, cara mengendalikan dan menggunakan fungsi ini secara berkesan akan menjejaskan pengalaman permainan dan keseronokan bermain. Melalui tafsiran dan panduan artikel ini, saya harap ia dapat membantu anda menguasai teknik ini dengan lebih baik dan mencapai hasil dan pengalaman yang lebih baik dalam permainan.

Kandungan soalan

Saya telah cuba mencari dalam talian cara untuk mengubah suai blok sedia ada dan sifatnya dalam Fabrik Minecraft, tetapi yang saya dapati ialah cara mencipta blok baharu. Mana-mana versi yang saya temui adalah lebih rendah daripada 1.20.

Saya sebenarnya tidak dapat mencari cara untuk mengatasi sifat blok sedia ada sama sekali. Tulis ganti juga tidak berfungsi

Penyelesaian

Apa yang anda mahu lakukan ialah mendaftar semula block contoh minecraft yang telah didaftarkan. Tetapi ada sebab tiada siapa yang telah mendokumenkan cara melakukan ini: Anda tidak sepatutnya.

Mendaftar semula bahagian dalam minecraft boleh menyebabkan isu pelik, terutamanya jika mod anda akan digunakan dalam modpack yang besar. Ini ada kaitan dengan keserasian dengan mod lain dan juga Minecraft itu sendiri. Anda lebih baik berharap untuk mengelakkan ini. Terdapat sedozen penyelesaian lain yang boleh mengubah tingkah laku blok tertentu tanpa menyebabkan terlalu banyak masalah. Ia termasuk tetapi tidak terhad kepada:

  • Hanya tambahkan blok anda pada salah satu teg terbina dalam minecraft - anda tidak memerlukan kod java pun, hanya fail json daripada pakej: https://www.php.cn/link/ff7cc29289db44861ce4b3e5e56fe234. Ini boleh menjadikan batu itu boleh dilombong dengan penyodok, sebagai contoh.
  • Gunakan salah satu panggilan balik yang disediakan oleh api kain untuk mendengar acara tertentu yang ingin anda kendalikan. Sebagai contoh, ia boleh mengubah blok rumput menjadi kotoran apabila pemain mengklik padanya.
  • Buat apa yang dipanggil "Blok Sambungan" yang boleh bertindak sebagai atribut keadaan tersuai untuk blok tersebut. iaitu. Kembangkan lingkungan umur jika anda ingin memberikan minecraft:stone 一个 age 属性(无论出于何种原因可能有用),请将 minecraft:stone 视为 age=0 并使用 age 创建自定义块(例如 modid:ged_stone) zqb 属性从 1 kepada mana-mana umur maksimum.

Satu lagi, pendekatan yang lebih umum ialah membina mixin menjadi block kelas atau subkelas yang sesuai dan melakukan sesuatu seperti berikut untuk menyasarkan blok tertentu (dalam kes ini, batu):

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

Tetapi jika anda benar-benar mahu menggantikan contoh blok sepenuhnya, berikut adalah cadangan: gunakan suntikan mixin registry.register untuk menggantikan contoh blok tertentu dengan contoh blok tersuai:

@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);
    }
}
Salin selepas log masuk

Tetapi sekali lagi cuba elakkan penyelesaian ini. Terdapat naga di sini.

Sila ambil perhatian bahawa saya belum menguji sebarang coretan kod kerana saya tidak mempunyai persekitaran yang diubah suai semasa menulis artikel ini. Ia mungkin memerlukan pelarasan untuk berfungsi. Juga, saya menggunakan pemetaan rasmi mojang, jika anda menggunakan pemetaan benang, nama mungkin berbeza. Contohnya, resourcelocation 在 yarn 中被命名为 identifier.

Saya harap ini membantu. Selamat mengekod!

Atas ialah kandungan terperinci Struktur Minecraft menimpa blok sedia ada 1.20. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!