You are not logged in.

  • Login

[Bukkit-Plugin] protocollib|Player skulls

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.

MinecraftKatze

User / Kunde

  • "MinecraftKatze" is male
  • "MinecraftKatze" started this thread

Posts: 150

Location: Schweiz(Basel)

Occupation: Elektroinstallateur

  • Send private message

1

Monday, February 24th 2014, 4:59pm

protocollib|Player skulls

Hallo,
Ich wollte mal fragen wie ich mit protocollib einen player skull ändern kann also SkullOwner.

PS: habe leider sehr wenig erfahrung mit protocollib und co.

NichtTobias

User / Kunde

  • "NichtTobias" is male

Posts: 228

Location: Nordrhein Westfalen

Occupation: Schüler

  • Send private message

2

Tuesday, February 25th 2014, 6:16am

Wieso machst du es nicht mit der ItemMeta/SkullMeta?
Mit freundlichen Grüßen, NichtTobias

This post has been edited 1 times, last edit by "NichtTobias" (Feb 25th 2014, 3:22pm)


JeterLP

User / Kunde

  • "JeterLP" is male

Posts: 258

Occupation: Mechatroniker für Kältetechnik

Thanks: 1

  • Send private message

3

Tuesday, February 25th 2014, 6:57am

SkullMeta meta = (SkullMeta) head.getItemMeta();
meta.setSkullOwner(String s);

strubel

User / Kunde

Posts: 863

  • Send private message

4

Tuesday, February 25th 2014, 1:38pm

Das geht aber nicht, wenn er zum Beispiel mach will das jeder seinen eigenen Kopf sieht.
Alle Angaben ohne Gewähr!

MinecraftKatze

User / Kunde

  • "MinecraftKatze" is male
  • "MinecraftKatze" started this thread

Posts: 150

Location: Schweiz(Basel)

Occupation: Elektroinstallateur

  • Send private message

5

Tuesday, February 25th 2014, 6:12pm

jop genau das ist auch mein problemm :D

MinecraftKatze

User / Kunde

  • "MinecraftKatze" is male
  • "MinecraftKatze" started this thread

Posts: 150

Location: Schweiz(Basel)

Occupation: Elektroinstallateur

  • Send private message

6

Thursday, February 27th 2014, 12:22pm

#push

MinecraftKatze

User / Kunde

  • "MinecraftKatze" is male
  • "MinecraftKatze" started this thread

Posts: 150

Location: Schweiz(Basel)

Occupation: Elektroinstallateur

  • Send private message

7

Friday, February 28th 2014, 10:14am

#push

Franzi564

User / Kunde

Posts: 763

Thanks: 15

  • Send private message

8

Friday, February 28th 2014, 3:44pm

Schau dir die TileEntities an.

MinecraftKatze

User / Kunde

  • "MinecraftKatze" is male
  • "MinecraftKatze" started this thread

Posts: 150

Location: Schweiz(Basel)

Occupation: Elektroinstallateur

  • Send private message

9

Tuesday, March 4th 2014, 1:05am

Habe ich schon aber ich habe keine ahnung wie das mit Protokollib geht.
Also wie ich das abfangen kann, die position bekomme und dann modifiziere.

DarkBlade12

User / Kunde

  • "DarkBlade12" is male

Posts: 531

Occupation: ❤❤❤❤❤❤❤❤❤❤

Thanks: 7

  • Send private message

10

Tuesday, March 4th 2014, 1:55am

@MinecraftKatze lies dir einfach mal ein Tutorial zu ProtocolLib durch, damit du weißt wie du Packets abfangen kannst. Wenn du das weißt musst du das PacketPlayOutTileEntityData abfangen und bei diesem im NBTTagCompound den Spielernamen unter dem Key SkullOwner einspeichern, denn dann sollte der Skull für jeden anders sein.
--> #Läuft <--

MinecraftKatze

User / Kunde

  • "MinecraftKatze" is male
  • "MinecraftKatze" started this thread

Posts: 150

Location: Schweiz(Basel)

Occupation: Elektroinstallateur

  • Send private message

11

Wednesday, March 5th 2014, 7:10pm

Ok habe das mal soweit verstanden:

Spoiler Spoiler

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
protocolManager.getAsynchronousManager().registerAsyncHandler(new PacketAdapter(this,ConnectionSide.SERVER_SIDE, ListenerPriority.NORMAL, GamePhase.PLAYING, Packets.Server.TILE_ENTITY_DATA) {
			@Override
			public void onPacketSending(PacketEvent event) {
				
				PacketContainer packet = event.getPacket();
				
				int x = packet.getIntegers().read(0);
				
				int y = packet.getIntegers().read(1).shortValue();
				
				int z = packet.getIntegers().read(2);
				
				NbtBase<?> Test = packet.getNbtModifier().read(0);
				

				NBTTagCompound Te = new NBTTagCompound();
				
				Te.setString("SkullOwner", "Katze9");

				
				
				System.out.println(x + " | " + y + " | " + z);
				
				System.out.println(Test);
				
				packet.getNbtModifier().write(0, Test);
				
			}
		}).start();

Nur wie bekomme ich das nun auf den Skull?

DarkBlade12

User / Kunde

  • "DarkBlade12" is male

Posts: 531

Occupation: ❤❤❤❤❤❤❤❤❤❤

Thanks: 7

  • Send private message

12

Wednesday, March 5th 2014, 7:30pm

@MinecraftKatze ein neues Objekt des PacketPlayOutTileEntityData erzeugenund es dem Spieler senden ;)
--> #Läuft <--

MinecraftKatze

User / Kunde

  • "MinecraftKatze" is male
  • "MinecraftKatze" started this thread

Posts: 150

Location: Schweiz(Basel)

Occupation: Elektroinstallateur

  • Send private message

13

Wednesday, March 5th 2014, 8:47pm

ne ich kann ja das Packet auch modifizieren aber meine frage ist wie ich die variabel Te(NBTTagCompound) auf die variabele Test(NbtBase<?>) Bekomme.

DarkBlade12

User / Kunde

  • "DarkBlade12" is male

Posts: 531

Occupation: ❤❤❤❤❤❤❤❤❤❤

Thanks: 7

  • Send private message

14

Wednesday, March 5th 2014, 8:51pm

@MinecraftKatze habs selber schnell ausprobiert und rumgebastelt. Mit dem Code funktionierts:

Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
		ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(this, PacketType.Play.Server.TILE_ENTITY_DATA) {
			@Override
			public void onPacketSending(PacketEvent event) {
				PacketContainer packet = event.getPacket();
				Player p = event.getPlayer();
				StructureModifier<Integer> coords = packet.getIntegers();
				int x = coords.read(0), y = coords.read(1), z = coords.read(2);
				Block b = p.getWorld().getBlockAt(x, y, z);
				try {
					if (b.getType() == Material.SKULL && ((Skull) b.getState()).getSkullType() == SkullType.PLAYER /* hier noch beliebigen check einbauen */)
						((NbtCompound) packet.getNbtModifier().read(0)).put("ExtraType", p.getName());
				} catch (Exception e) {}
			}
		});
--> #Läuft <--

This post has been edited 3 times, last edit by "DarkBlade12" (Mar 5th 2014, 9:09pm)


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