Utilizzo di Maven per lo sviluppo del plu g-in spigot con mappature di Mojang e sviluppo del plu g-in NMS

Sei uno sviluppatore che vuole creare plugin per Spigot, ma non è sicuro di come lavorare con le diverse versioni e le modifiche che si presentano ad ogni aggiornamento? Trovi difficile mantenere la compatibilità su più versioni di Minecraft? Se queste domande suonano una campana, allora sei nel posto giusto!

In questo articolo, discuteremo di come puoi usare le mappature di Mojang per garantire che i plu g-in di spigot funzionino senza intoppi con diverse versioni di Minecraft, a partire da 1. 16+. I mapping di Mojang contengono tutte le informazioni necessarie sui metodi e le classi utilizzati da Minecraft e sulle sue varie implementazioni del server, come Spigot e CraftBukkit. Utilizzando queste mappature, è possibile accedere e iscriverti ai metodi e alle azioni più aggiornati in Minecraft, indipendentemente dalla versione che stai prendendo di mira.

Ma prima, rispondiamo alla domanda più elementare: cosa sono le mappature di Mojang e perché ne hai bisogno? Quando decompilo Minecraft con strumenti come BuildTools o lo carichi nel tuo IDE, noterai che il codice è offuscato. Ciò significa che il metodo e i nomi delle classi, così come altri identificatori cruciali, sono sostituiti da nomi diversi, apparentemente casuali come "A", "B" o "C". Mentre questa offuscamento è vantaggiosa per il team di Mojang, rende lo sviluppo di plugin e mod impegnativi per gli sviluppatori come te.

Le mappature di Mojang forniscono una semplice risposta a questo problema di incompatibilità. Agiscono come un ponte tra il codice del plu g-in e l'implementazione del server, consentendo di utilizzare il metodo corretto e i nomi delle classi indipendentemente dall'offuscamento applicato da Mojang. Rimappando il codice utilizzando mapping di Mojang, assicurati che il plu g-in funzioni come previsto tra le diverse versioni di Minecraft.

Ora che sai quali sono le mappature di Mojang e perché ne hai bisogno, tuffiamoci su come puoi configurarle nel tuo progetto di spigot. Un'opzione è di decompilare manualmente il barattolo del server Minecraft ed estrarre da solo le mappature, ma questo approccio può richiedere tempo e soggetto a errori. Invece, ti consigliamo di utilizzare uno strumento come MCPConfig o Spigot BuildTools, che scaricano e applicano automaticamente le mappature per te. Ciò semplifica il processo di configurazione e assicura di avere le mappature corrette per la versione di Minecraft che stai prendendo di mira.

Usa mapping di Mojang per i plu g-in di spigot con Maven

Usa le mappature Mojang per i tuoi plugin Spigot con Maven |Sviluppo plugin NMS

Usa le mappature Mojang per i tuoi plugin Spigot con Maven

Se sei uno sviluppatore di plu g-in del server Minecraft, probabilmente hai imbattuto nel termine "mapping di Mojang". Ma cosa sono le mappature di Mojang e come puoi usarle nei plugin di Spigot?

In termini semplici, i mapping di Mojang sono un insieme di strumenti forniti da Mojang che consentono di collegare il codice client e server Minecraft. Queste mappature forniscono nomi e versioni per diverse classi, metodi e variabili nella base di codice Minecraft, rendendo più facile per gli sviluppatori interagire con gli interni del gioco.

Quindi, perché dovresti usare mapping di Mojang nei plugin di Spigot? Il motivo principale è la compatibilità. Spigot e CraftBukkit sono costruiti sopra il codice del server Minecraft, ma spesso devono interagire con il gioco in modo diverso. È qui che le mappature di Mojang sono utili. Utilizzando le mappature, è possibile garantire che il plu g-in funzioni correttamente con diverse versioni di Minecraft, senza dover fare affidamento su implementazioni specifiche del server.

Esistono diversi modi per utilizzare le mappature di Mojang nei plugin di spigot, ma uno degli approcci più comuni è tramite la riflessione. La riflessione consente di accedere e modificare il codice Minecraft interno in fase di esecuzione, senza dover modificare direttamente il server. Ad esempio, se si desidera inviare un messaggio di barra d'azione a un giocatore in Minecraft 1. 8, useresti la classe `PackEtPlayoutChat" dalla pacchetto `net. Minecraft. server`. Con i mapping di Mojang, puoi facilmente trovare i nomi di classe e metodi specifici per ottenere lo stesso risultato in versioni più recenti del gioco.

Ma come si ottiene e usi queste mappature? Mojang non fornisce un'API ufficiale o un download per le mappature, quindi è necessario utilizzare uno strumento di terze parti chiamato BuildTools per ottenerli. BuildTools è uno strumento mantenuto dal team di Spigot che ti consente di creare i tuoi file JAR server con mapping di Mojang inclusi. Puoi trovare istruzioni su come impostare e utilizzare BuildTools sul sito Web di Spigot.

Una volta che hai le mappature, puoi iniziare a usarle nel tuo codice. Ad esempio, invece di importare `net. minecraft. server. v1_8_r1. packetplayoutchat` direttamente, importerai la classe` packetplayoutchat indipendente dalla versione e rimappala nella versione corretta in fase di esecuzione.

È importante notare che le mappature di Mojang non sono sempre perfette. Potrebbero esserci casi in cui le mappature sono incomplete o inaccurate, specialmente per le versioni più recenti di Minecraft. In questi casi, potrebbe essere necessario fare affidamento su altri metodi, come decomposizione del codice del server Minecraft o utilizzare mappature mantenute dalla comunità.

In conclusione, i mapping di Mojang sono uno strumento potente per gli sviluppatori di plu g-in Spigot. Ti consentono di scrivere un codice compatibile con diverse versioni di Minecraft, senza doversi preoccupare delle specifiche implementazioni del server. Utilizzando mapping di Mojang e riflesso, è possibile accedere e modificare il codice Minecraft interno per creare plugin unici ed eccitanti per il tuo server.

Sviluppo del plu g-in NMS: VERSIONI NMS e Minecraft - 1. 16+

Se hai mai lavorato sullo sviluppo del plu g-in NMS per Spigot, potresti aver incontrato la domanda: "Quali mappature dovrei usare per il mio plu g-in?"

Prima di approfondire la risposta, capiamo prima cosa sono NMS (net. Minecraft. server) e Spigot. NMS è il codice interno di Minecraft, che è offuscato, il che significa che i nomi di classe e metodi sono diversi da quello che vedi nel codice decompilato. Spigot, d'altra parte, è una versione modificata di Minecraft che consente lo sviluppo del plu g-in.

Quando viene rilasciata una nuova versione di Minecraft, Mojang rilascia le mappature, che sono i nomi ufficiali delle classi e dei metodi utilizzati nel codice. Queste mappature vengono quindi utilizzate da Spigot per creare compatibilità tra la versione Minecraft e il plu g-in.

Quindi, perché è importante usare le mappature corrette?

Le mappature sono essenziali affinché il plu g-in funzioni correttamente perché specificano i nomi corretti per le classi e i metodi che è necessario utilizzare. Senza le mappature corrette, il plu g-in potrebbe non essere compatibile con la versione di Minecraft che stai prendendo di mira.

Ora, parliamo delle diverse versioni di Spigot e Minecraft.

Le versioni di spigot di solito seguono un formato come "1. 16. 5-r0. 1-snapshot". La parte "1. 16. 5" rappresenta la versione di Minecraft da cui è costruito Spigot, mentre il resto sono informazioni sulla versione di Build Strumenti. La versione di Minecraft che dovresti utilizzare nel codice è determinata dalla versione di Spigot che stai prendendo di mira, che puoi scoprire controllando la pagina delle modifiche al gusto o la pagina delle modifiche Bukkit.

Se vuoi conoscere le mappature per una versione specifica di Minecraft, puoi visitare la pagina delle mappature Mojang e trovare la versione corrispondente. Lì puoi scaricare le mappature e utilizzarle nel tuo progetto.

Ma come puoi utilizzare le mappature nel tuo codice?

Un modo semplice è usare la riflessione. Utilizzando la riflessione, puoi accedere alle classi e ai metodi rinominati senza farvi riferimento direttamente nel codice. Ad esempio, invece di utilizzare la classe "CraftPlayer", puoi utilizzare la riflessione per ottenere il nome di classe corretto per l'oggetto giocatore.

Un altro approccio consiste nel caricare il jar del server Minecraft e utilizzarlo per ottenere la connessione del giocatore e inviare pacchetti. Questo metodo è più avanzato e richiede una profonda conoscenza del codice NMS.

Sebbene l'utilizzo delle mappature sia generalmente una buona pratica, potrebbero esserci casi in cui è necessario accedere a determinate classi o metodi NMS che non sono presenti nelle mappature. In questi casi, puoi cercare il nome della classe o del metodo utilizzando una versione decompilata del server jar di Minecraft o chiedere a qualcuno che potrebbe conoscerlo.

Per evitare problemi di incompatibilità, è importante tenere d'occhio le pagine delle modifiche di Spigot e CraftBukkit, poiché forniscono informazioni sulle modifiche apportate in ciascuna versione. Iscrivendoti ai loro feed RSS o seguendo i loro account di social media come Twitter e Facebook, puoi rimanere aggiornato con le ultime modifiche e garantire la compatibilità con il tuo plugin.

In conclusione, l'utilizzo delle mappature corrette è fondamentale per lo sviluppo del plugin NMS. Garantiscono la compatibilità tra il tuo plugin e la versione di Minecraft a cui ti rivolgi. Seguendo le pagine delle modifiche di Spigot e CraftBukkit, rimanendo aggiornato con le ultime versioni di Minecraft e utilizzando le mappature corrispondenti, puoi garantire un processo di sviluppo fluido per i tuoi plug-in Spigot.

NMS su diverse versioni senza riflessione

NMS su diverse versioni senza riflessione

Se hai sviluppato plugin per Spigot, potresti esserti imbattuto nella domanda su come utilizzare NMS (net. minecraft. server) senza fare affidamento sulla riflessione. Ciò è particolarmente rilevante quando desideri che il tuo plug-in sia compatibile con diverse versioni di Minecraft, poiché le classi e i metodi NMS possono variare tra le versioni.

La riflessione è un approccio comunemente utilizzato per accedere alle classi NMS, poiché consente di accedere e utilizzare classi e metodi che normalmente non sono accessibili tramite codice Java standard. Tuttavia, la riflessione può essere complicata e soggetta a errori, poiché richiede l'utilizzo di nomi stringa di classi e metodi e non è previsto alcun controllo in fase di compilazione. Inoltre, alcune implementazioni del server (come Paper) potrebbero modificare le parti interne del server, causando l'interruzione del codice di riflessione.

Invece di fare affidamento sulla riflessione, puoi utilizzare le mappature Mojang per accedere direttamente alle classi e ai metodi NMS in modo indipendente dai tipi. Le mappature Mojang sono mappature dai metodi e dai nomi dei campi offuscati alle loro controparti deoffuscate, semplificando il lavoro con il codice NMS. Queste mappature sono fornite da Mojang per ogni versione di Minecraft e possono essere trovate nel repository MCPBot su GitHub.

Ecco un semplice esempio di come utilizzare le mappature Mojang per accedere alla classe NMS PlayerConnection:

Versione di Minecraft Mappatura Mojang Codice
1. 8. 8 PacchettoPlayOutChat importa net. minecraft. server. v1_8_R1. PacketPlayOutChat;
PlayerConnection importa net. minecraft. server. v1_8_R1. PlayerConnection;
CraftPlayer importa org. bukkit. craftbukkit. v1_8_R1. entity. CraftPlayer;
Giocatore CraftPlayer = giocatore (CraftPlayer); // Oggetto del giocatore
Connessione PlayerConnection = player. getHandle(). playerConnection; // Oggetto PlayerConnection
1. 16+ PacchettoPlayOutChat importa net. minecraft. network. protocol. game. PacketPlayOutChat;
PlayerConnection importa net. minecraft. server. network. PlayerConnection;
CraftPlayer importa org. bukkit. craftbukkit. v1_16_R1. entity. CraftPlayer;
Giocatore CraftPlayer = giocatore (CraftPlayer); // Oggetto del giocatore
Connessione PlayerConnection = player. getHandle(). b; // Oggetto PlayerConnection

Come puoi vedere, il codice per accedere all'oggetto PlayerConnection è leggermente diverso a seconda della versione di Minecraft. Importando le classi NMS corrette e utilizzando i metodi appropriati, è possibile accedere all'oggetto PlayerConnection senza utilizzare la riflessione.

È importante notare che le mappature Mojang potrebbero non essere sempre aggiornate o completamente accurate, poiché vengono generate automaticamente e possono contenere errori o mappature mancanti. Dovresti sempre fare riferimento alle mappature ufficiali di Mojang per la versione di Minecraft che stai prendendo di mira.

In generale, l'uso di mapping di Mojang fornisce un modo più affidabile e a prova di futuro per accedere alle classi e ai metodi NMS, in quanto evita l'uso della riflessione e consente di scrivere codice di tipo-sicuro. Tuttavia, dovresti comunque essere consapevole di eventuali cambiamenti nell'API NMS tra le versioni, poiché alcuni metodi o classi potrebbero essere stati rimossi o modificati.

Se stai usando Maven per le dipendenze del plu g-in, puoi includere le mappature di Mojang come dipendenza separata. Ciò consente di aggiornare facilmente le mappature senza doverle scaricare manualmente e importarli nel tuo progetto.

In conclusione, l'uso di mapping di Mojang per accedere alle classi e ai metodi NMS senza riflessione fornisce un modo più affidabile e di tipo-sicuro per sviluppare plugin di spigot compatibili con diverse versioni di Minecraft. Utilizzando le mappature corrette e importando le classi NMS appropriate, è possibile accedere direttamente all'API NMS ed evitare le insidie della riflessione.

Iscriviti a RSS

Iscriviti all'RSS

Se si desidera rimanere aggiornati con le ultime modifiche e gli aggiornamenti nella community di sviluppo del plugin di Spigot, iscriversi al feed RSS è un'ottima opzione. Iscrivendosi al feed RSS, riceverai notifiche ogni volta che ci sono nuovi post o aggiornamenti nella comunità.

Per iscriverti al feed RSS, è possibile utilizzare varie applicazioni o servizi di lettore RSS. Ecco come:

  1. Trova un'applicazione o un servizio di lettore RSS adatto alle tue esigenze. Ci sono molte opzioni disponibili, sia online che offline.
  2. Dopo aver scelto un lettore RSS, aprilo e trova l'opzione per aggiungere un nuovo feed o abbonamento.
  3. Copia il link al feed RSS a cui desideri iscriverti. In questo caso, il collegamento Feed RSS si trova in genere nella pagina della comunità, nel thread del forum o in qualsiasi altra pagina che fornisce aggiornamenti regolari.
  4. Incollare il collegamento Feed RSS nel modulo di abbonamento o nella finestra di dialogo del lettore RSS.
  5. Seguire le istruzioni fornite dal lettore RSS per completare il processo di abbonamento.
  6. Una volta iscritto al feed RSS, inizierai a ricevere notifiche ogni volta che ci sono nuovi post o aggiornamenti nella comunità.
  7. Tieni presente che i feed RSS possono contenere vari tipi di contenuti, tra cui testo, immagini, collegamenti e altro ancora. Il lettore RSS visualizzerà il contenuto in un formato adatto per la lettura e la navigazione.

Iscriversi al feed RSS è un modo conveniente per rimanere informati sugli ultimi avvenimenti nella comunità di sviluppo dei plugin Spigot. Che tu sia uno sviluppatore o desideri semplicemente tenere il passo con gli ultimi plugin e aggiornamenti, i feed RSS forniscono un modo semplice ed efficiente per rimanere aggiornato.

Perché non riesco a importare NMS in Spigot?

Quando lavori con lo sviluppo del plugin Spigot, potresti incontrare situazioni in cui è necessario utilizzare le classi NMS (net. minecraft. server). NMS ti consente di accedere e manipolare direttamente il codice interno di Minecraft, come pacchetti ed entità. Tuttavia, l'importazione di NMS può essere complessa a causa della compatibilità delle versioni e delle modifiche apportate da Mojang.

Ogni versione di Minecraft ha il proprio set di classi NMS e possono variare in modo significativo tra le versioni. Ad esempio, le classi per la versione 1. 8 potrebbero avere nomi diversi e contenere metodi diversi rispetto a quelle della versione 1. 16+. Ciò significa che se importi semplicementenet. minecraft. servernel tuo codice, non funzionerà per tutte le versioni di Minecraft.

Il codice di Minecraft non è disponibile pubblicamente, quindi non puoi semplicemente decompilarlo e utilizzare direttamente le classi NMS. Tuttavia, Mojang fornisce mappature che consentono di rimappare queste classi NMS nelle versioni corrispondenti. Queste mappature possono essere trovate sul sito web Mojang o nel repository BuildTools su GitHub. Utilizzando queste mappature, puoi importare le classi NMS corrette per la versione di Minecraft di destinazione.

Ma perché non puoi semplicemente importare queste mappature nel tuo progetto Spigot? La risposta sta nel modo in cui è costruito Spigot e nella sua compatibilità con le modifiche di Mojang. Spigot è una versione modificata di Bukkit, che è un'API plug-in per i server Minecraft. Spigot fornisce anche le proprie modifiche e ottimizzazioni su Bukkit. A causa di questi cambiamenti, importare le mappature Mojang direttamente nel tuo progetto Spigot può causare conflitti e problemi di incompatibilità.

È invece necessario utilizzare la riflessione per accedere indirettamente alle classi NMS. Reflection consente di caricare e utilizzare dinamicamente le classi in fase di runtime, senza importazione diretta. Usando la riflessione, puoi ottenere le classi necessarie e invocare i loro metodi senza preoccuparti dell'incompatibilità tra le modifiche al codice di Spigot e Mojang.

Ecco un esempio semplificato dell'utilizzo della riflessione per accedere alle classi NMS:

ClassecraftPlayerClass = Class. forName("org. bukkit. craftbukkit." + getVersion() + ". entity. CraftPlayer");
Oggetto craftPlayer = craftPlayerClass. cast(giocatore);
ClassepacketPlayOutChatClass = Class. forName("net. minecraft. server." + getVersion() + ". PacketPlayOutChat");
CostruttorepacketConstructor = packetPlayOutChatClass. getConstructor(IChatBaseComponent. class, byte. class);
Pacchetto oggetto = packetConstructor. newInstance(chatBaseComponent, (byte) 2);
Metodo playerConnectionSendMethod = craftPlayerClass. getDeclaredMethod("getHandle"). getReturnType(). getDeclaredField("playerConnection"). getType(). getDeclaredMethod("sendPacket", packetPlayOutChatClass);
playerConnectionSendMethod. invoke(craftPlayerClass. cast(player). getClass(). getDeclaredMethod("playerConnection"). invoke(craftPlayer), packet);

Questo esempio dimostra come inviare un messaggio di chat personalizzato utilizzando la classe NMSPacchettoPlayOutChat. Utilizzando la riflessione, è possibile caricare le classi NMS appropriate senza importarle direttamente.

In sintesi, importare classi NMS in Spigot può essere impegnativo a causa della compatibilità delle versioni e delle modifiche apportate da Mojang. Anche se non puoi importare direttamente le mappature Mojang nel tuo progetto Spigot, puoi utilizzare la riflessione per accedere indirettamente alle classi NMS. Ciò ti consente di lavorare senza problemi con il codice interno di Minecraft e garantisce la compatibilità tra le modifiche di Spigot e Mojang.