Cara Menggunakan NMS di Bukkit

49

Walaupun Minecraft mengalu-alukan pelbagai pemalam (yang boleh anda gunakan untuk mengubah pengalaman permainan anda), beberapa elemen permainan dilindungi daripada manipulasi pemalam. Net.Minecraft.Server (NMS) ialah salah satu daripada pakej yang dilindungi ini, kerana ia mengandungi kod pelayan penting untuk permainan. Kod ini datang terus daripada pembangun Minecraft, Mojang, dan tidak sepatutnya boleh diakses oleh pemain.

Cara Menggunakan NMS di Bukkit

Dengan Bukkit, pemain boleh mencipta lapisan abstraksi di sekeliling kod NMS. Ini membolehkan mereka membangunkan pemalam yang berinteraksi dengan kod pelayan tanpa membuat perubahan langsung pada pangkalan kod yang penting untuk bermain permainan. Anggap ia seperti tetingkap yang membolehkan anda melihat kod yang anda mahu gunakan dalam pemalam anda tetapi juga bertindak sebagai penghalang yang menghalang anda daripada menukar kod secara langsung.

Mari terokai cara menggunakan Bukkit dengan NMS Minecraft.

Sebelum Anda Mula – Perkara yang Anda Perlu Tahu Mengenai Bukkit

Bukkit ialah API yang membolehkan anda mencipta dan menggunakan pemalam yang mengubah cara anda mengalami aspek berbilang pemain Minecraft. Sekurang-kurangnya, ia adalah. Versi terakhir Bukkit keluar pada 2016, dan sejak itu ia telah dihentikan untuk memberi laluan kepada API yang berbeza, bernama Spigot. Semasa bekerja sama dengan Bukkit, ia menawarkan prestasi pelayan yang lebih baik.

Jadi, menggunakan Bukkit untuk pemalam anda memerlukan anda memainkan versi Minecraft yang sudah lapuk dan menerima hakikat bahawa Bukkit tidak sebaik API penggantinya. Dengan mengandaikan anda gembira menerima pengorbanan itu, berikut adalah satu-satunya perkara yang anda perlukan:

  • Java Development Kit (JDK) 7 atau lebih tinggi, dengan kebanyakannya mengesyorkan JDK 8.

Dengan itu, anda sudah bersedia untuk mencipta beberapa pemalam.

Cara Membuat Pemalam Bukkit untuk Minecraft

Sebelum anda boleh mula menggunakan Bukkit untuk mengakses NMS Minecraft, anda perlu menambah API sebagai kebergantungan, menetapkan kelas utama yang membolehkan Bukkit berinteraksi dengan pemalam yang anda buat dan memberikan Bukkit maklumat yang diperlukan untuk memuatkan pemalam anda ke dalam permainan. Setiap langkah memerlukan pengekodan, dengan contoh yang berikut datang dari Tutorial RIP.

Langkah 1 – Tambah Bukkit sebagai Ketergantungan

Pada masa lalu, anda boleh menambah Bukkit sebagai kebergantungan dalam Minecraft dengan memuat turun fail Bukkit.jar daripada Repositori Bukkit dan menambahkannya pada laluan kelas projek anda. Pilihan itu tidak tersedia lagi kerana Repositori tidak lagi boleh diakses.

Syukurlah, terdapat kaedah alternatif yang menggunakan fail pom.xml permainan anda. Buka fail dan tambah baris berikut:

<repositories>
    <repository>
        <id>spigot-repo</id>
        <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
    </repository>
</repositories>
<dependencies>
    <!--Bukkit API-->
    <dependency>
        <groupId>org.bukkit</groupId>
        <artifactId>bukkit</artifactId>
        <version>{VERSION}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

Langkah 2 – Cipta Kelas Utama Pemalam Anda

Pemalam anda perlu boleh mencipta satu contoh kelas utamanya, yang digunakan untuk melanjutkan “JavaPlugin” supaya ia mengenali dan membolehkan anda menggunakan pemalam apabila anda dalam permainan. Fikirkan kelas utama ini sebagai pintu yang membolehkan Bukkit masuk untuk memuatkan dan memanipulasi pemalam. Kebanyakannya memberikan kelas utama pemalam mereka nama yang sama seperti pemalam itu sendiri, menjadikannya lebih mudah untuk merujuk kepada kelas utama semasa pengekodan.

Kod contoh berikut daripada Tutorial RIP menawarkan contoh kelas utama untuk pemalam bernama “MyPlugin:”

package com.example.myplugin; //{$TopLevelDomain}.{$Domain}.{$PluginName};
import org.bukkit.plugin.java.JavaPlugin;
public final class MyPlugin extends JavaPlugin {
    @Override
    public void onEnable() {
        //Called when the plugin is enabled
        getLogger().info("onEnable has been invoked!");
    }
    @Override
    public void onDisable() {
        //Called when the plugin is disabled
        getLogger().info("onDisable has been invoked!");
    }
}

Mengakses Pemalam Anda daripada Kelas Lain

Anda mungkin ingin mengakses pemalam anda melalui kelas yang berbeza daripada kelas utama yang anda buat untuknya, yang boleh membantu untuk mengakses beberapa pemalam dalam satu permainan Minecraft.

Untuk berbuat demikian, anda perlu terlebih dahulu menyimpan contoh kelas utama yang anda buat menggunakan Bukkit supaya kelas lain boleh mengaksesnya. Sekali lagi, kod contoh berikut datang daripada Tutorial RIP dan menggunakan nama kelas “MyPlugin”:

public class MyPlugin extends JavaPlugin {
    private static MyPlugin instance; //Effectively final variable containing your plugin's instance
    public MyPlugin(){
        if(MyPlugin.instance != null) { //Unnecessary check but ensures your plugin is only initialized once.
            throw new Error("Plugin already initialized!");
        }
        MyPlugin.instance = this; //A plugin's constructor should only be called once
    }
    public static MyPlugin getInstance(){ //Get's your plugin's instance
        return instance;
    }
    //your other code...
}

Sebaik sahaja anda mempunyai contoh, anda boleh mengakses kelas utama anda (dicipta melalui Bukkit) menggunakan arahan “getInstance()”. Berikut ialah contoh yang menggunakan kelas utama “MyPlugin” Tutorial RIP:

public class MyOtherClass {
    public void doSomethingWithMainClass(){
        MyPlugin.getInstance().getLogger().info("We just used MyPlugin");
    }
}

Langkah 3 – Buat fail plugin.yml anda

Fail plugin.yml mengandungi maklumat penting tentang pemalam anda, bermakna ia berfungsi sebagai fail konfigurasi asas pemalam. Tanpa fail ini, Bukkit tidak akan mempunyai maklumat yang diperlukan untuk memuatkan pemalam anda ke dalam Minecraft, menyebabkan pemalam gagal dimuatkan dan permainan mungkin ranap.

Fail ini harus mengandungi butiran berikut:

  • Nama – Ini ialah nama yang telah anda berikan kepada pemalam anda (iaitu, “MyPlugin” Tutorial RIP) dan ia akan dipaparkan dalam mesej log dan senarai pemalam anda.

  • Versi – Gunakan medan ini untuk menandakan sejarah versi pemalam, bermula dengan 1.0.0 dan naik semasa anda mengubah atau mengedit pemalam.

  • Utama – Mengandungi nama kelas utama pemalam, yang memanjangkan “JavaPlugin”, membenarkan Bukkit memasuki pemalam. Dalam contoh Tutorial RIP, nama ini ialah “package com.example.myplugin,” yang boleh anda lihat dalam kod kelas utama di atas.

  • Penerangan – Penerangan asas tentang perkara yang dilakukan oleh pemalam anda.

  • Pengarang – Anda boleh mempunyai pengarang tunggal atau berbilang pengarang, dengan yang kedua dilambangkan dengan kurungan segi empat sama dan koma seperti berikut – [Author1, Author2, Author3].

  • Penyumbang – Anda akan menggunakan bahagian ini untuk mencatat sesiapa sahaja yang menyumbang kepada pemalam anda, dengan pemformatan adalah sama seperti bahagian “Pengarang”.

  • Tapak web – Jika anda mempunyai tapak web untuk dipasang, atau ingin memautkan orang ke halaman pemalam atau repositori GitHub, anda boleh memasukkan URL di sini.

  • Versi API – Masukkan versi API Bukkit yang anda gunakan di sini. Jika anda tidak memasukkan versi API, Minecraft akan menganggap bahawa ia memuatkan pemalam lama. Pemalam mungkin masih berfungsi, walaupun anda akan melihat amaran tentang ia adalah versi lama yang dicetak dalam konsol anda semasa dimuatkan.

Berikut ialah contoh fail plugin.yml berdasarkan konvensyen penamaan yang digunakan dalam kod Tutorial RIP yang digunakan dalam artikel ini:

name: MyPlugin
version: 1.0.0
main: package com.example.myplugin
description: A test plugin for Minecraft
author: RIP Tutorial
website: https://riptutorial.com/bukkit
api-version: 1.17

Adakah Bukkit Tepat untuk Mengakses dan Menggunakan NMS?

Dengan itu, anda telah mencipta kebergantungan Bukkit, membina kelas utama untuk berfungsi sebagai pintu Bukkit ke dalam pemalam dan mempunyai fail plugin.yml yang Bukkit boleh gunakan untuk melihat perkara yang dilakukan oleh pemalam itu. Walau bagaimanapun, anda mungkin tidak mahu berbuat demikian, kerana Bukkit sudah ketinggalan zaman sehingga anda perlu menjalankan versi Minecraft yang sangat lama untuk menggunakannya dengan berkesan. Kebanyakannya telah beralih ke Sprigot, yang mencerminkan kebanyakan perkara yang Bukkit lakukan sambil menawarkan prestasi yang lebih baik.

Jika anda masih mahu menggunakan Bukkit untuk mengakses pemalam, mengapa anda memilihnya mendahului API yang lebih moden? Apakah jenis pemalam yang anda gunakan untuk meningkatkan pengalaman Minecraft anda? Beritahu kami semua tentangnya di bahagian komen di bawah.