You are not logged in.

  • Login

[Bukkit-Plugin] NBT tags editieren

Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Dear visitor, welcome to Nitrado.net Prepaid Gameserver Community-Support - Archiv. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

hardcorepvp

User / Kunde

  • "hardcorepvp" is male
  • "hardcorepvp" started this thread

Posts: 48

Location: München

  • Send private message

1

Wednesday, July 1st 2015, 10:45pm

NBT tags editieren

Hallo,

ich möchte in meinem Plugin NBT-Tags im Inventar des Spielers editieren. Bis jetzt habe ich es immer einfach mit powernbt und "getServer().dispatchCommand..." gemacht aber das Problem in meinem jetzigen Projekt ist, dass im Namen des zu editierenden NBT-Compound ein Leerzeichen ist also "Inventory[0].tag.Beispiel 1." und das Plugin hat keine Funktion um Leerzeichen einzugeben, da soetwas ja normalerweise nicht vorkommt...

Somit bräuchte ich entweder einen Trick, um das Plugin funktionsfähig zu machen oder ich bau in mein Plugin eine eigene NBT-Funktion ein. Ich habe schon ein paar Artikel über Libs gefunden aber keine vernünftige Erklärung dazu...

Habt ihr eine Idee?

MfG,
bloodi
Kontakt:
Skype: blooditor
E-Mail: info@hardcoreflans.de

Website: hardcoreflans.de
Minecraft: s.hardcoreflans.de
Nitrado & Minecraft-Server.eu: hardcorepvp

LostBattle

User / Kunde

Posts: 388

  • Send private message

2

Thursday, July 2nd 2015, 7:10am

Source code

1
2
3
4
5
6
7
8
9
10
11
void setTag(Entity bukkitEntity, String tag2) {
    net.minecraft.server.v1_8_R1.Entity nmsEntity = ((CraftEntity) bukkitEntity).getHandle();
    NBTTagCompound tag = nmsEntity.getNBTTag();
    if (tag == null) {
        tag = new NBTTagCompound();
    }
    nmsEntity.c(tag);
    tag.setInt(tag2, 1);
    nmsEntity.f(tag);
}
 

KleinerGrinch

User / Kunde

  • "KleinerGrinch" is male

Posts: 157

Occupation: Azubi

  • Send private message

3

Thursday, July 2nd 2015, 12:45pm

Das schlimme an der erklärung von LostBattle ist, dass es nicht wirklich besser geht xD

nmsEntity.c(tag);

damit wird der leere NBTTagCompound mit den daten der entity gefüllt.

nmsEntity.f(tag);

überschreibt die nbt daten der entity.

leider werden mit jedem versions update 1.8 -> 1.8.3 -> 1.8.7 die methoden namen geändert.. da muss man als leihe ein bisschen suchen ;)

Kleiner
In meiner Freizeit biete ich kostenlosen Support und Programmierungen an.
Homepage - Forum - Minecraft: server.letsmine.eu - Teamspeak: ts.letsmine.eu

hardcorepvp

User / Kunde

  • "hardcorepvp" is male
  • "hardcorepvp" started this thread

Posts: 48

Location: München

  • Send private message

4

Thursday, July 2nd 2015, 5:44pm

Ist der entity also dann der Spieler, also die player.dat?

Wie setze ich dann einen Pfad, also z.B "Inventory[0].tag.Beispiel 1."?
Kontakt:
Skype: blooditor
E-Mail: info@hardcoreflans.de

Website: hardcoreflans.de
Minecraft: s.hardcoreflans.de
Nitrado & Minecraft-Server.eu: hardcorepvp

LostBattle

User / Kunde

Posts: 388

  • Send private message

5

Thursday, July 2nd 2015, 8:45pm

Ist der entity also dann der Spieler, also die player.dat?

Wie setze ich dann einen Pfad, also z.B "Inventory[0].tag.Beispiel 1."?

Bitte was?

hardcorepvp

User / Kunde

  • "hardcorepvp" is male
  • "hardcorepvp" started this thread

Posts: 48

Location: München

  • Send private message

6

Thursday, July 2nd 2015, 9:29pm


Bitte was?


Ja genau... vllt. mal oben lesen?
Kontakt:
Skype: blooditor
E-Mail: info@hardcoreflans.de

Website: hardcoreflans.de
Minecraft: s.hardcoreflans.de
Nitrado & Minecraft-Server.eu: hardcorepvp

LostBattle

User / Kunde

Posts: 388

  • Send private message

7

Thursday, July 2nd 2015, 9:39pm

Schon klar. Wie wäre es wenn du dich verständlicher und genauer und mit den richtigen Artikeln ausdrücken würdest?

KleinerGrinch

User / Kunde

  • "KleinerGrinch" is male

Posts: 157

Occupation: Azubi

  • Send private message

8

Friday, July 3rd 2015, 9:09am

Da es ja die Minecraft "API" ist, musst du auch das speicherformat verstehen, dazu gibt es im minecraft wiki schöne abbildungen:
http://minecraft-de.gamepedia.com/NBT-Format
Wenn man verstanden hat, wie man es nutzt, sind auch der summon befehl zum spawnen der bremer stadt musikanten aus dem ärmel geschüttelt.

Ich hoffe es hilft dir

Kleiner
In meiner Freizeit biete ich kostenlosen Support und Programmierungen an.
Homepage - Forum - Minecraft: server.letsmine.eu - Teamspeak: ts.letsmine.eu

hardcorepvp

User / Kunde

  • "hardcorepvp" is male
  • "hardcorepvp" started this thread

Posts: 48

Location: München

  • Send private message

9

Friday, July 3rd 2015, 1:45pm

Ich habe schon vestanden wie NBT funktioniert. Nur würde ich gern wissen wie die Befehle funktionieren, ganz einfach einen Eintrag hinzuzufügen oder zu ändern.
Kontakt:
Skype: blooditor
E-Mail: info@hardcoreflans.de

Website: hardcoreflans.de
Minecraft: s.hardcoreflans.de
Nitrado & Minecraft-Server.eu: hardcorepvp

LostBattle

User / Kunde

Posts: 388

  • Send private message

10

Friday, July 3rd 2015, 10:35pm

Das ist eine Methode in der du das entity und einen nbttag als String angeben musst. Methoden werden aufgeführt.

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net