# [Minecraft] Eclipse



## hemran (16. Dez 2013)

Hallo,

ich versuche gerade in eclipse ein VIP chat zu erstellen...

das habe cih schon:


```
if(command.getName().equalsIgnoreCase("vc")){
			if(p.hasPermission("vc.chat")){
			if(sender instanceof Player){
				if(args.length == 0){
					p.sendMessage(ChatColor.DARK_PURPLE + "[VIP-Chat]" + ChatColor.WHITE + "Du musst /vc [Text] eingeben.");
				}else if(args.length > 0){
					String msg = "";

					for (int i = 0; i < args.length; i++) {

					  msg = msg + args[i] + " ";

					}
					String name2 = p.getName();
					Bukkit.broadcastMessage(ChatColor.DARK_PURPLE + "[VIP-Chat] " + ChatColor.DARK_GRAY + name2 + ": " + ChatColor.WHITE + msg);
				}
				
			}
			}else{
				p.sendMessage(ChatColor.RED + "Du bist nicht befugt in den VIP-Chat zu schreiben!");
			}
		}
```

so... wenn jzzein VIp /vc [text] eingibt, sieht das jeder im server... wei aknn cih machen, das nur die ,die vc.chat permissions haben, das text angezeigt wird. 

mfg hemran


----------



## Tiding (19. Dez 2013)

Mit den Informationen die du gibst, kann man dir nicht so richtig weiterhelfen !

Hm, soweit ich das verstehe handelst du zwar ab, wer als "VIP" schreiben darf, aber nicht, wer die jeweiligen Nachrichten sehen kann...
(
	
	
	
	





```
Bukkit.broadcastMessage(ChatColor.DARK_PURPLE + "[VIP-Chat] " + ChatColor.DARK_GRAY + name2 + ": " + ChatColor.WHITE + msg);
```
)
scheint mir ja eine ziehmlich allgemeine Message zu sein !


----------



## Lennart401 (20. Dez 2013)

Hallo hemran,
mit deinem Code gibst du die Nachricht auf dem ganzen Server aus (
	
	
	
	





```
Bukkit.broadcastMessage(ChatColor.DARK_PURPLE + "[VIP-Chat] " + ChatColor.DARK_GRAY + name2 + ": " + ChatColor.WHITE + msg);
```
).

Du musste die Nachricht aber nur an die Spieler versenden, die auch die Permission "vc.chat" haben. Das sollte in etwa so aussehen: 

```
if (cmd.getName().equalsIgnoreCase("vc") {
		// Zuerst kontrollieren, ob der CommandSender ein spieler ist
		if (cs instanceof Player) {
			// Den Spieler vom CommandSender ableiten
			Player player = (Player) cs;
			
			// Prüfen, ob der Spieler die Permission vc.chat hat
			if (player.hasPermission("vc.chat")) {
				// Prüfen, dass die Länge der Argumente größer ist als 0
				if (args.length > 0) {
					// Neuen StringBuilder erstellen
					StringBuilder sb = new StringBuilder();
					
					// Die Argumente durchlaufen
					for (int i = 1; i < args.length; i++) {
						// Das jeweilige Argument zum StringBuilder hinzufügen
						sb.append(args[i] + " ");
					}
					
					// Die Nachricht erstellen: [VIP-Chat] (Spielername): (Nachricht)
					String message = ChatColor.DARK_PURPLE + "[VIP-Chat] " + ChatColor.DARK_GRAY + player.getName() + ": " + ChatColor.WHITE + sb.toString(); 
					
					// Alle OnlineSpieler in ein Array packen
					Player[] onlinePlayers = Bukkit.getOnlinePlayers();
					
					// Das array durchlaufen
					for (Player target : onlinePlayers) {
						// Prüfen, ob der Spieler target (also der Spieler, an den die Nachricht gesendet werden soll) auch die Permission vc.chat hat
						if (target.hasPermission("vc.chat")) {
							// Den target Spieler die oben erstellte Nachricht senden.
							target.sendMessage(message);
						}
					}
					
					// true zurückgeben
					return true;
					
				} else {
					// Sollte die Länge der Argumente (args) nicht größer als 0 sein, folgendes dem Spieler senden
					player.sendMessage(ChatColor.DARK_PURPLE + "[VIP-Chat]" + ChatColor.WHITE + "Du musst /vc [Text] eingeben.");
				}
			} else {
				// Sollte der Spieler nicht die Permission vc.chat haben, folgendes dem Spieler senden
				player.sendMessage(ChatColor.RED + "Du bist nicht befugt in den VIP-Chat zu schreiben!");
			}
		} 
		
		// Falls der command nicht gefunden wurde, false zurückgeben
		return false;
	}
```

Ich habe den Code noch nicht getestet, aber nachdem was ich bisher programmiert, habe sollte es eigentlich funktionieren.

Noch eine Anmerkung: 
Du verwendet einen String als Nachricht und packst immer wieder das nächste Argument an den String (
	
	
	
	





```
msg = msg + args[i] + " ";
```
). Ich würde an deiner Stelle einen StringBuilder werden, das geht wesentlich schneller (hab ich auch oben im Code verwendet).

MFG Lennart.


----------



## Zettelkasten (26. Dez 2013)

Bei Programmierfragen zu Bukkit empfehle ich dir das (zwar englische) Bukkit-Forum: Bukkit Forums


----------

