[Minecraft/Spigot/Java] Wie kann ich aus einem GameProfile Skins abspeichern?

Hallo,

ich würde gerne wissen wie ich aus dem GameProfile die für den Skin nötigen Daten bekomme, um diese abzuspeichern.

Es soll zu einem Cachingsystem dienen, damit auch beispielsweise die Köpfe von Spielern angezeigt werden können, die nicht online sind, ohne zu viele Anfragen an die Mojang Server zu stellen.

Folgenden Code nutze ich um das GameProfile von einem Spieler zu erhalten und diesem seinen eigene Kopf über die Informationen des GameProfiles zu geben. Dabei wende ich ein Object aus dem Reflection Bereich an (Field).

    public static ItemStack getFriendTool(Player p){
    
    SkullMeta freundeMeta = (SkullMeta) Bukkit.getItemFactory().getItemMeta(Material.SKULL_ITEM);
    GameProfile gp = ((CraftPlayer) p).getProfile();
    
    try {
        Field field = skullMetaClass.getDeclaredField("profile");
        field.setAccessible(true);
        try {
            field.set(freundeMeta, gp);
        } catch (IllegalArgumentException | IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        field.setAccessible(!field.isAccessible());
    } catch (NoSuchFieldException | SecurityException e) {
        e.printStackTrace();
    }
    freundeMeta.setDisplayName("§eFreunde");
    ArrayList<String> freundeLore = new ArrayList<String>();
    freundeLore.add("Mit einem Rechtsklick öffnest Du die Freunde Übersicht,");
    freundeMeta.setLore(freundeLore);
    ItemStack freundeTool = new ItemStack(Material.SKULL_ITEM,1, (byte)3);
    freundeTool.setItemMeta(freundeMeta);
    return freundeTool;
}

Dieser Code funktioniert bereits nur wäre es eben gut, wenn ich die nötigen Informationen aus dem GameProfile abspeichern könnte und diese wiederverwenden könnte.

Meiner Überlegung nach, müsste ich diese aus einem Property Object bekommen, leider hat aber eine Recherche nichts gebracht.

Vielen Dank für jegliche Hilfe.

Server, Computer, Internet, Programm, programmieren, Java, Minecraft, Minecraft Server, Spiele und Gaming
Wie schreibe ich folgenden Command mit JavaScript für einen Discord Bot?

Hey,

im Moment habe ich folgenden Command:

if(message.content.startsWith(prefix + "bann")){      //Wenn Message
if(message.member.nickname){                            //Wenn Author Nickname         
    message.channel.send("\\*bannt " + message.member.nickname + " weil er ihn nicht leiden kann!" + "*")    //Sende Nickname
}
else message.channel.send("\\*bannt " + message.author.username + " weil er ihn nicht leiden kann!" + "*")    //Wenn kein Nickname, sende Username

}

Dies ist ein Fun-Command für meinen selbst programmierten Discord-Bot. Info: mein Nickname dort ist NightHawk, damit keine Verwirrung kommt.

Schreibe ich hier +bann in den Chat, schreibt er immer "Nekotamo bannt NightHawk, weil er ihn nicht leiden kann":

Es ist egal, ob ich nur "+bann" oder zum Beispiel "+bann Clashi" schreibe (Clashi ist ein anderer Nutzer). Es wird immer "bannt NightHawk", also mein Name ausgegeben. Ich möchte ja aber, das er den Namen übernimmt, sprich zB Clashi. Und das mein Bot dann schreibt "Nekotamo bannt Clashi, weil er ihn nicht leiden kann".

Mein Ziel ist nämlich, das er den Namen übernimmt, den ich hinter +bann eingebe, zB NightHawk, Clashi, Whatever. Ob per Mention (@NightHawk // @Clashi) oder nur NightHawk ist egal.

Sprich:

Ich: +bann @Clashi Bot: "Nekotamo bannt Clashi (übernimmt er aus meinen Command), weil er ihn nicht leiden kann!

Ich: +bann @NightHawk Bot: "Nekotamo bannt NightHawk(übernimmt er aus meinen Command), weil er ihn nicht leiden kann!

Ich hoffe man versteht was ich meine. Kann mir wer genau sagen, wie ich das schreiben muss? Bin blutiger Anfänger und einfach mal ins kalte Wasser gesprungen.

programmieren, JavaScript, Bot, Discord, Spiele und Gaming
Braucht man außer der Toolchain noch mehr Fremdquellen zum builden eines ARM64 Linux 4.4 Android Kernels ?

ich bin so vorgegangen:

Vorbereitung:

$ mkdir ~/git
$ cd ~/git
$ export ARCH=arm64
$ export SUBARCH=arm64
$ export CROSS_COMPILE=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-
$ git clone <https:>//github.com/MrFlyingToasterman/android_kernel_oneplus_msm8998

Beziehen von Drittrepos und einbinden in die Kernel Source:

$ git clone <https:>//android.git.linaro.org/git-ro/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9-linaro.git prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9

Kernel Cross Compile build:

$ make oneplus5_defconfig
$ make --keep-going -i

Der eigentliche Fehler besteht darin dass er keine Regel für vmlinux findet..Hier mal der Stacktrace:

 CC      lib/argv_split.o
  CC      lib/bug.o
  CC      lib/cmdline.o
  CC      lib/cpumask.o
  CC      lib/ctype.o
  CC      lib/dec_and_lock.o
  CC      lib/decompress.o
  CC      lib/decompress_bunzip2.o
  CC      lib/decompress_inflate.o
  CC      lib/decompress_unlz4.o
  CC      lib/decompress_unlzma.o
  CC      lib/decompress_unlzo.o
  CC      lib/decompress_unxz.o
  CC      lib/dump_stack.o
  CC      lib/earlycpio.o
  CC      lib/extable.o
  CC      lib/fdt.o
  CC      lib/fdt_empty_tree.o
  CC      lib/fdt_ro.o
  CC      lib/fdt_rw.o
  CC      lib/fdt_strerror.o
  CC      lib/fdt_sw.o
  CC      lib/fdt_wip.o
  CC      lib/flex_proportions.o
  CC      lib/idr.o
  CC      lib/int_sqrt.o
  CC      lib/ioremap.o
  CC      lib/irq_regs.o
  CC      lib/is_single_threaded.o
  CC      lib/klist.o
  CC      lib/kobject.o
  CC      lib/kobject_uevent.o
  CC      lib/md5.o
  CC      lib/nmi_backtrace.o
  CC      lib/plist.o
  CC      lib/proportions.o
  CC      lib/radix-tree.o
  CC      lib/ratelimit.o
  CC      lib/rbtree.o
  CC      lib/seq_buf.o
  CC      lib/sha1.o
  CC      lib/show_mem.o
  CC      lib/string.o
  CC      lib/timerqueue.o
  CC      lib/vsprintf.o
  AR      lib/lib.a
  LINK    vmlinux
  LD      vmlinux.o
prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-ld: cannot find arch/arm64/mm/built-in.o: Datei oder Verzeichnis nicht gefunden
prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-ld: cannot find ipc/built-in.o: Datei oder Verzeichnis nicht gefunden
prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-ld: cannot find drivers/built-in.o: Datei oder Verzeichnis nicht gefunden
make: [Makefile:946: vmlinux] Fehler 1 (ignoriert)
make[1]: *** Keine Regel vorhanden, um das Ziel „vmlinux“, 
  benötigt von „arch/arm64/boot/Image“, zu erstellen. 

Noch ein paar Informationen über mein Betriebssystem:

OS: Arch Linux
Kernel: x86_64 Linux 4.11.9-1-ARCH
CPU: Intel Core i5-2520M @ 4x 3.2GHz [25.0°C]
GPU: intel
RAM: 2286MiB / 7867MiB
Bild zum Beitrag
Computer, Handy, Linux, programmieren, Android, Informatik, OnePlus

Meistgelesene Beiträge zum Thema Programmieren