You are not logged in.

  • Login

[Bukkit-Plugin] Packets abfangen

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

MarcSenpai

User / Kunde

  • "MarcSenpai" is male
  • "MarcSenpai" started this thread

Posts: 138

Location: Clover

Occupation: Schüler

  • Send private message

1

Friday, May 25th 2018, 9:15pm

Packets abfangen

Guten Abend.... :thumbup:

Ich will das wenn ein Spieler in einer Arraylist ist keine Chatnachrichten kriegt, also sein chat leer ist aber bei allen die nicht drine ist soll es normal funktionieren.
Zu testzwegen habe ich es so gelöst:

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
	@EventHandler
	public void onChat(AsyncPlayerChatEvent e) {
		Player p = e.getPlayer();
		String msg = e.getMessage();
		if(!in.contains(p.getUniqueId())) {
			if(!msg.startsWith("/")) {
				e.setCancelled(true);
				for(Player all : Bukkit.getOnlinePlayers()) {
					if(!in.contains(all.getUniqueId())) {
					all.sendMessage("<"+p.getName()+"> "+msg);
					}else {
						return;
					}
				}
			}
			
		}else if(in.contains(p.getUniqueId())) {
			p.sendMessage("§cDu musst erst der Eula zustimmen");
			e.setCancelled(true);
		}
		
		
		
	}

Spoiler Spoiler

Triggggger @LinXX

Allerdings gibt es dort zu viele nachteile und ich müsste für alles was mit dem Chat zu tun hat immer wieder auf dieses event zugreifen..
Deswegen will ich es über Packets regeln.
Kennt jemand eine guten Methode zum abfangen(aller) packets?
So das man in der Console(oder mc chat) alle Packets sehen kann?
Und könnte noch jemand erklären wie ich das denn für diesen Spieler cancell?
Google suche hatte ich schon veruscht, wenn ihr mehr findet einfach Link senden.
Bedanke mich jetzt schon für die Hilfe :thumbup:

MfG Marc :thumbsup:
In der kürze liegt die Würze
- Shakespeares | Unitygaming-FastFelix

xtrumb

User / Kunde

  • "xtrumb" is male

Posts: 2,295

Location: hier

Occupation: Fachinformatiker für Systemintegration

Thanks: 16

  • Send private message

2

Saturday, May 26th 2018, 10:52pm

Informiere dich mal ein bisschen über Recipients

Das sollte schon genügen und du brauchst es nicht mit packets machen.
Mit freundlichen Grüßen
TrueMB

Dienstleistungs Service
Unser Csgo Team

MarcSenpai

User / Kunde

  • "MarcSenpai" is male
  • "MarcSenpai" started this thread

Posts: 138

Location: Clover

Occupation: Schüler

  • Send private message

3

Sunday, May 27th 2018, 2:28pm

Okay danke, aber was würdest du empfehlen wenn man mit Packets anfangen will?
In der kürze liegt die Würze
- Shakespeares | Unitygaming-FastFelix

xtrumb

User / Kunde

  • "xtrumb" is male

Posts: 2,295

Location: hier

Occupation: Fachinformatiker für Systemintegration

Thanks: 16

  • Send private message

4

Monday, May 28th 2018, 7:00am

In Richtung Packets solltest du jemand anderes fragen :)

Am besten @BlvckBytes
Mit freundlichen Grüßen
TrueMB

Dienstleistungs Service
Unser Csgo Team

MarcSenpai

User / Kunde

  • "MarcSenpai" is male
  • "MarcSenpai" started this thread

Posts: 138

Location: Clover

Occupation: Schüler

  • Send private message

5

Monday, May 28th 2018, 4:21pm

Ich habe es so gemacht:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	@EventHandler
	public void onChat(AsyncPlayerChatEvent e) {
		Player p = e.getPlayer();
		
		if(!in.contains(p.getUniqueId())) {
			
				e.getRecipients().add(p);

		}else if(in.contains(p.getUniqueId())) {
			p.sendMessage("§cDu musst erst der Eula zustimmen");
			e.getRecipients().remove(p);
			e.setCancelled(true);
		}
		
		
		
	}

Ich habe es so verstanden das alle die drine sind es sehen und alle nichts es nicht sehen, aber das ist so falsch :doofy:
Könntest du es mir erklären? 8o
In der kürze liegt die Würze
- Shakespeares | Unitygaming-FastFelix

Stuppsman

User / Kunde

Posts: 2,766

Thanks: 25

  • Send private message

6

Tuesday, May 29th 2018, 4:14am

Das else macht genau das, was die if-Abfrage dahinter macht, die ist unnötig :)

Source code

1
2
3
4
5
6
7
8
@EventHandler
	public void onChat(AsyncPlayerChatEvent e) {
		Player p = e.getPlayer();
		if(in.contains(p.getUniqueId())) {
			p.sendMessage("§cDu musst erst der Eula zustimmen");
			e.getRecipients().remove(p);
		}
	}


Würd das nicht reichen?
Nein, ich hab kein Skype.. bei Interesse an einer privaten Unterrichtsstunde, wende dich bitte direkt an mein Team! 8)

MarcSenpai

User / Kunde

  • "MarcSenpai" is male
  • "MarcSenpai" started this thread

Posts: 138

Location: Clover

Occupation: Schüler

  • Send private message

7

Tuesday, May 29th 2018, 7:50pm

Bei mir klappt das so nicht

Spoiler Spoiler

Ich habe es so gemacht wie du es gesagt hast, funktioniert auch net:

fffffffff.PNG
In der kürze liegt die Würze
- Shakespeares | Unitygaming-FastFelix

This post has been edited 1 times, last edit by "MarcSenpai" (May 29th 2018, 7:58pm)


xtrumb

User / Kunde

  • "xtrumb" is male

Posts: 2,295

Location: hier

Occupation: Fachinformatiker für Systemintegration

Thanks: 16

  • Send private message

8

Wednesday, May 30th 2018, 8:52am

Es soll ja auch nicht der Spieler entfernt werden, der die Nachricht sendet, sondern der, der die Eula noch nicht zugestimmt hat. Wenn ich das soweit richtig verstehe.

Wenn der schreiber also in der Arraylist ist kannst du es canceln.
Wenn nicht, gehst du die anderen OnlinePlayers durch und schaust, wer von ihnen in der Arraylist ist. Diese removest du dann von den Recipients. Brauchst es aber nicht canceln
Mit freundlichen Grüßen
TrueMB

Dienstleistungs Service
Unser Csgo Team

MarcSenpai

User / Kunde

  • "MarcSenpai" is male
  • "MarcSenpai" started this thread

Posts: 138

Location: Clover

Occupation: Schüler

  • Send private message

9

Wednesday, May 30th 2018, 3:45pm

Es ist so gedacht das wenn du in der arrayliste bist keine Chatnachrichten bekommen sollst.
In der kürze liegt die Würze
- Shakespeares | Unitygaming-FastFelix

xtrumb

User / Kunde

  • "xtrumb" is male

Posts: 2,295

Location: hier

Occupation: Fachinformatiker für Systemintegration

Thanks: 16

  • Send private message

10

Wednesday, May 30th 2018, 4:27pm

Dann mache es so, wie beschrieben :P

Und wenn der Spieler in der ArrayList ist, aber schreiben soll, dann lässt du den ersten schritt mit dem canceln einfach weg.
Mit freundlichen Grüßen
TrueMB

Dienstleistungs Service
Unser Csgo Team

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