• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Tablist Header and Footer Plugin programmieren 1.16 mit der JDK 15

XynLP

Minecrafter
Registriert
23 April 2017
Beiträge
8
Alter
24
Diamanten
300
Hallo liebe Community,

ich bin gerade dabei ein Plugin für meinen Server zu Programmieren und zwar möchte ich einen Tablist Header und Footer zu programmieren.

Der Code für 1.8 funktioniert nicht mehr und der Code für die 1.11-1.12 funktioniert auch nicht mehr da es die isAccessible(); nicht mehr gibt seit der Java 9 laut Eclipse.

Ich verwende den Code:

1.12 header und footer:
public static void sendTablist(Player p, String header, String footer) {

        IChatBaseComponent tabheader = ChatSerializer.a("{\"text\": \"" + header + "\"}");

        IChatBaseComponent tabfooter = ChatSerializer.a("{\"text\": \"" + footer + "\"}");

        PacketPlayOutPlayerListHeaderFooter tablist = new PacketPlayOutPlayerListHeaderFooter();


        try {

            Field headerField = tablist.getClass().getDeclaredField("a");

            headerField.setAccessible(true);

            headerField.set(tablist, tabheader);

            headerField.setAccessible(!headerField.isAccessible());

            Field footerField = tablist.getClass().getDeclaredField("b");

            footerField.setAccessible(true);

            footerField.set(tablist, tabfooter);

            footerField.setAccessible(!footerField.isAccessible());

        } catch (Exception var11) {

            var11.printStackTrace();

        } finally {

            ((CraftPlayer)p).getHandle().playerConnection.sendPacket(tablist);

        }


    }

Danke schon mal im vorraus ^^

Hätte da noch eine frage und zwar Zeigt meine Console den Fehler an:

Fatal error trying to convert XynServerManagementsystem v1.16.4:at/BukkitXyn/XynServerManagementsystem/Commands/warps_cmd.class
org.bukkit.plugin.AuthorNagException: No legacy enum constant for ENDER_EYE. Did you forget to define a modern (1.13+) api-version in your plugin.yml?

Meine Plugin.yml sieht so aus:

Plugin.yml:
main: at.BukkitXyn.XynServerManagementsystem.main.Main

name: XynServerManagementsystem

author: BukkitXyn

version: 1.16.4

api: v1.16+

commands:

    spawn:

      description: spawn

    setspawn:

      description: setspawn

    warp:

      description: warps

    setlocs:

      description: setlocs
 

Malfrador

Threadripper
Registriert
16 Juni 2013
Beiträge
1.473
Diamanten
396
Minecraft
Malfrador
Die Frage ist: Warum machst du das unnötig so kompliziert mit Packets? Es gibt nicht umsonst setPlayerListHeader bzw. setPlayerListFooter. Wenn du Paper nutzt (was eh sinnvoll ist) gibts das auch alternativ mit BaseComponent und und nicht nur einem String.

Ansonsten gehört in das Feld api-version: der plugin.yml nur die Hauptversion, also 1.16. Dann nutzt Bukkit auch nicht mehr die Legacy-Enums & die AuthorNagException verschwindet, die dich darauf hinweist das du das vergessen hast.
 

XynLP

Minecrafter
Registriert
23 April 2017
Beiträge
8
Alter
24
Diamanten
300
Ansonsten gehört in das Feld api-version: der plugin.yml nur die Hauptversion, also 1.16. Dann nutzt Bukkit auch nicht mehr die Legacy-Enums & die AuthorNagException verschwindet, die dich darauf hinweist das du das vergessen hast.
Danke für deine schnelle antwort. Von der setPlayerListHeader wusste ich noch nichts ^^ Und ich hab in der Plugin.yml jetzt die API auf 1.16 gesetzt der fehler kommt trotzdem noch.

Danke im vorraus ^^
 
Oben