Wie kann ich von Base64 zu einem Spieler Kopf Konvertieren?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Okay, also nur zum Verständnis: Du hast aktuell nur die Value eines Kopfes und möchtest diese in einen ItemStack umwandeln, oder?

Gut, dann nehmen wir für dieses Beispiel einfach mal folgende Value:

eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTliZjMyOTJlMTI2YTEwNWI1NGViYTcxM2FhMWIxNTJkNTQxYTFkODkzODgyOWM1NjM2NGQxNzhlZDIyYmYifX19

Diese gehört zu folgendem Kopf:

Bild zum Beitrag

public ItemStack getSkull(String value) {
        ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (short) 3);


        SkullMeta skullMeta = (SkullMeta) item.getItemMeta();
        skullMeta.setDisplayName("Custom Skull");
        GameProfile gameProfile = new GameProfile(UUID.randomUUID(), null);


        gameProfile.getProperties().put("textures", new Property("textures", value));


        try {
            Field profileField = skullMeta.getClass().getDeclaredField("profile");
            profileField.setAccessible(true);
            profileField.set(skullMeta, gameProfile);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException fieldException) {
            fieldException.printStackTrace();
        }


        item.setItemMeta(skullMeta);
        return item;
}

Diese Methode habe ich in einem Plugin von mir eingebaut, als value übergibst du den base64-encoded String, in diesem Falle der eyJ0ZX... von oben.

Woher ich das weiß:Hobby – Ich spiele Minecraft seit >5 Jahren
 - (Spiele und Gaming, Minecraft, Java)

RCUngegrieft 
Beitragsersteller
 18.08.2021, 04:40

Danke für deine Hilfe auch wen ich mich so spät gemeldet habe ;)

0
RCUngegrieft 
Beitragsersteller
 18.08.2021, 04:41

Ah ich Code in der spigot 1.17.1 API und da gibt es glaube ich kein GameProfil

0
SALEGAMERMC  18.08.2021, 11:22
@RCUngegrieft

Doch, GameProfile gibt es auch in der 1.17.1.

Nutzt du zufällig ein BuildTool wie Maven oder Gradle um deine Spigot-Dependency zu holen? Wenn ja, dann hast du als Dependency vermutlich spigot-api angegeben. Diese beinhaltet aber kein NMS. Um NMS zu bekommen musst du BuildTools auf deinem Rechner ausführen und dir die spigot.jar bauen. Dadurch wird Spigot gleichzeitig in deine lokale Maven-Repository gepackt und NMS und CraftBukkit sind dadrin enthalten.

0
RCUngegrieft 
Beitragsersteller
 18.08.2021, 19:52
@SALEGAMERMC

Ok werde ich mal machen habe aber mir nen Bas64 De und Endcoder gerade gebastelt und der funktioniert

0
RCUngegrieft 
Beitragsersteller
 18.08.2021, 20:16
@RCUngegrieft

wie kann ich aber dann das im Plugin nutzen muss ich da die pom.xml aus dem Spigot Ordner nutzen?

0
SALEGAMERMC  18.08.2021, 20:30
@RCUngegrieft

Nein, du entfernst den <repository> Teil von Spigot aus deiner pom.xml und setzt die dependency von spigot auf "spigot" statt "spigot-api"

0
SALEGAMERMC  18.08.2021, 20:31
@SALEGAMERMC

Sollte dann so aussehen:

<dependencies>
    <!--This adds the Spigot API artifact to the build -->
    <dependency>
           <groupId>org.spigotmc</groupId>
           <artifactId>spigot</artifactId>
           <version>1.17.1-R0.1-SNAPSHOT</version>
           <scope>provided</scope>
    </dependency>
</dependencies>
0