• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Hilfe bei Programmierung von Plugin

F

Fackel2907

Guest
Hallo, ich bin gerade dabei, für meinen neuen Server ein Lobby Plugin zu coden. Soweit funktioniert auch alles. Nur hätte ich zwei Fragen:

1. Broadcast bzw. Rundruf Befehl

Soweit habe ich es hinbekommen, das beim Kommando /rundruf [Nachricht], die Nachricht + das erste Argument kommt:

Also, wie hier http://pastebin.com/fchFj9d7

Was muss ich also schreiben, um mehr als ein Argument nach /rundruf schreiben zu können und was muss ich machen um den Rundruf auch noch Farbig zu machen? Also zum Beispiel /rundruf &4Hallo &eihr &6Geilen >> [MeXxCraft] Hallo ihr Geilen

2. Effekte Befehl

Ich möchte gerne, sobald man /Effekte eingibt, das man anschließend SPEED mit unendlichkeit und "Stufe 3", sowie INVISIBILITY mit undendlichkeit und "Stufe 1" bekommt. Ich habe das auch soweit wie hier (http://pastebin.com/tJJd5bf0) gemacht, jedoch kommt sobald ich /effekte eingebe, nichts im Chat und ich bekomme auch keine Effekte, so wie Fehlermeldungen im Chat oder in der Konsole.

3. Ich hätte da noch eine Frage, und zwar möchte ich gerne, das man mit einem Kommand alle anderen Spieler unsichtbar und mit dem gleichen Kommand, alle Spieler wieder sichtbar machen kann, ich denke das ist keine große Aufgabe, aber ich komme einfach nicht dahinter.


Bitte helft mir schnell, und erklärt es gut, ich programmiere erst seit einer Woche :confused:
 
Zuletzt bearbeitet von einem Moderator:
C

Chrisliebaer

Guest
Zu 1:

Du musst die einzelnen Elemente in dem Array wieder zusammensetzten. Ein StringBuilder und eine Schleife sollten da ausreichen. Ansonsten geht das natürlich auch mit Libraries, wäre aber hier overkill: http://stackoverflow.com/questions/...-elements-with-a-separator-the-oposite-of-spl

Zu 2:
Pack Log-Ausgaben in deinen Code, das macht es auch später leichter, dass ganze zu verfolgen, wenn man ein komplexerer Fehler auftritt:
http://wiki.bukkit.org/Plugin_Tutorial#Logging_a_message

Zu 3:
Im Endeffekt frägst du hier, wie du programmierst. Das ist bereits eine Sache, die doch schwerer ist. Du kannst natürlich problemlos einfach alle Spieler anfragen und unsichtbar machen, aber wenn ein neuer Spieler joint, muss dieser auch unsichtbar gemacht werden.
 

Galliar12

Kuhfänger
Registriert
16 Juli 2011
Beiträge
85
Diamanten
0
Minecraft
Galliar12
Zu deiner Frage mit den Argumenten: Man könnte das auch umständlicher mit einem int i, String textderausdenargsbesteht und einer for schleife welche mithilfe des int i alle args die du benötigst rausbekommt :)
 

MrFlieder

Braumeister
Registriert
30 Dezember 2011
Beiträge
332
Diamanten
0
Minecraft
MrFlieder
Zu 1: (lässt sich mit grundlegensten Java-Kenntnissen lösen...)
Code:
String broadcast = "";
for(String s : args)
{
    broadcast = broadcast + s + " ";
}
Bukkit.broadcastMessage(broadcast);
Zu 3:

Befehl
Code:
//Spieler verstecken
for(Player p : Bukkit.getOnlinePlayers())
{
    for(Player p2 : Bukkit.getOnlinePlayers())
    {
        if(!p.getName().equals(p2.getName()))
        {
            p.hidePlayer(p2);
        }
    }
}

//Spieler zeigen:
for(Player p : Bukkit.getOnlinePlayers())
{
        for(Player p2 : Bukkit.getOnlinePlayers())
    {
        if(!p.getName().equals(p2.getName()))
        {
            p.showPlayer(p2);
        }
    }
}

JoinListener
Code:
event.getPlayer().hidePlayer(event.getPlayer());
 
Zuletzt bearbeitet:
F

Fackel2907

Guest
1. Weitere Argumente aufrufen



2. Farben

ChatColor.translateAlternateColorCode('&', "DEIN TEXT")

3. Hast du den Command auch in die plugin.yml eingetragen?

4. Lies dir mal ein paar Artikel hier von durch.


Danke erstmal soweit, ja ich habe den Command in die plugin.yml eingetragen!

- - - Aktualisiert - - -

Zu 1: (lässt sich mit grundlegensten Java-Kenntnissen lösen...)
Code:
String broadcast = "";
for(String s : args)
{
    broadcast = broadcast + s + " ";
}
Bukkit.broadcastMessage(broadcast);
Zu 3:

Befehl
Code:
//Spieler verstecken
for(Player p : Bukkit.getOnlinePlayers())
{
    for(Player p2 : Bukkit.getOnlinePlayers())
    {
        p.hidePlayer(p2);
    }
}

//Spieler zeigen:
for(Player p : Bukkit.getOnlinePlayers())
{
    p.showPlayer(p);
}

JoinListener
Code:
event.getPlayer().hidePlayer(event.getPlayer());


Danke auch an dich, nur soll ich das Spieler zeigen und Spieler verstecken einfach in einen Command einbauen oder kann ich das auch mit dem "Interact_AIR" und dem "interact_block" event oder wie das heißt einfach auf ein Item Legen?
 
F

Fackel2907

Guest
Ich bin einfach zu dumm! ;)

Also, ich weiß nicht ob das so richtig ist, aber ich hab das jetzt mal so gemacht:
Code:
package me.Fackel2907.Lobby;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

public class Lobby extends JavaPlugin {

	
	@Override
	public void onDisable() {
	System.out.println("[Lobby] Das Lobby Plugin wurde gestoppt.");
	}

	@Override
	public void onEnable() {

		
		
	PluginDescriptionFile descFile = this.getDescription();
	System.out.println("[Lobby] Version " + descFile.getVersion());
    System.out.println("[Lobby] Plugin von  " + descFile.getAuthors());
    System.out.println("[Lobby] Das Lobby Plugin wurde geladen.");
}
	

	
	public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String [] args) {
		
		
		Player p = (Player)sender;
		//Kommando Troll
		if(cmd.getName().equalsIgnoreCase("Troll")){
			if(args.length == 0){
				p.sendMessage(ChatColor.BLUE + "[" + ChatColor.YELLOW + "MeXxCraft" + ChatColor.BLUE + ChatColor.BOLD + "]" + ChatColor.DARK_GREEN +  " Miau. " + ChatColor.DARK_BLUE + "Du hast " + args[0] + ChatColor.DARK_BLUE +  " getrollt.");
				
				
			    return false;
			}
			
		}
		//Rundruf Test
		if(cmd.getName().equalsIgnoreCase("Rundruf")){
			if(args.length == 0){
				p.sendMessage(ChatColor.BLUE + "[" + ChatColor.YELLOW + "MeXxCraft" + ChatColor.BLUE + ChatColor.BOLD + "]" + ChatColor.DARK_RED + " Fehler beim Senden!" + ChatColor.RED + " Du musst eine Nachricht angeben.");
				
				return false;
			}
			
			if(args.length > 1){
				this.getServer().broadcastMessage(ChatColor.BLUE + "[" + ChatColor.YELLOW + "MeXxCraft" + ChatColor.BLUE + "] " + ChatColor.DARK_RED + args[0]);
				p.sendMessage(ChatColor.BLUE + "[" + ChatColor.YELLOW + "MeXxCraft" + ChatColor.BLUE + "]" + ChatColor.AQUA + " Rundruf erfolgreich abgesendet.");
				
				return true;
			}
			
			
			if(args.length ==  1){
				this.getServer().broadcastMessage(ChatColor.BLUE + "[" + ChatColor.YELLOW + "MeXxCraft" + ChatColor.BLUE + "] " + ChatColor.DARK_RED + args[0] + "");
				p.sendMessage(ChatColor.BLUE + "[" + ChatColor.YELLOW + "MeXxCraft" + ChatColor.BLUE + "]" + ChatColor.AQUA + " Rundruf erfolgreich abgesendet.");
				
				return true;
			}
		//Effekte	
	        if(cmd.getName().equalsIgnoreCase("Effekte")){
	        	if(args.length == 0){
				p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 50000000, 3));
				p.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 50000000, 3));
				p.sendMessage(ChatColor.BLUE + "[" + ChatColor.YELLOW + "MeXxCraft" + ChatColor.BLUE + "]" + ChatColor.DARK_RED + "Du hast dir selbst Effekte gegeben.");
				
				return true;
				
			}
				
	        }
	        
	        
	        //Unsichtbar mit Umschalten
                //Spieler verstecken
	        if(cmd.getName().equalsIgnoreCase("Unsichtbar")){
	        	p.sendMessage(ChatColor.GOLD + "Du hast alle Spieler Unsichtbar gemacht");
	        	for(Player p : Bukkit.getOnlinePlayers())
	        	{
	        	    for(Player p2 : Bukkit.getOnlinePlayers())
	        	    {
	        	        p.hidePlayer(p2);
	        	    }
	        	  //Spieler zeigen:
	        	    for(Player p : Bukkit.getOnlinePlayers())
	        	    {
	        	        p.showPlayer(p);
	        	    }    
	        	}
	        	
	        	
	        }
	        
	        
	        
	        
	        
	        
		}
				
		return true;
	}
	
	
}

Sagt mir doch was ich falsch mache, ich checke selbst nicht mehr durch... :/ :(
 

MrFlieder

Braumeister
Registriert
30 Dezember 2011
Beiträge
332
Diamanten
0
Minecraft
MrFlieder
Code:
if(cmd.getName().equalsIgnoreCase("verstecken"))
{
    for(Player p2 : Bukkit.getOnlinePlayers())
    {
        if(!p.getName().equals(p2.getName()))
        {
            p.hidePlayer(p2);
        }
    }
}

if(cmd.getName().equalsIgnoreCase("zeigen"))
{
    for(Player p2 : Bukkit.getOnlinePlayers())
    {
        if(!p.getName().equals(p2.getName()))
        {
            p.showPlayer(p2);
        }
    }
}
 
F

Fackel2907

Guest
Code:
if(cmd.getName().equalsIgnoreCase("verstecken"))
{
    for(Player p2 : Bukkit.getOnlinePlayers())
    {
        if(!p.getName().equals(p2.getName()))
        {
            p.hidePlayer(p2);
        }
    }
}

if(cmd.getName().equalsIgnoreCase("zeigen"))
{
    for(Player p2 : Bukkit.getOnlinePlayers())
    {
        if(!p.getName().equals(p2.getName()))
        {
            p.showPlayer(p2);
        }
    }
}



Dann kommt aber im Log das es die variable p schon gibt und dadurch kann ich gar keinen Befehl mehr ausführen?

- - - Aktualisiert - - -

Zwischenstand: Rundruf Befehl funktioniert jetzt auch mit mehreren Argumenten, jedoch funktioniert das verstecken noch nicht. Es kommt nun KEINE FEHLERMELDUNG mehr bei den jeweiligen "Versteck"-Kommandos, sondern einfach keine Message im Chat und in der Konsole steht "Fackel2907 issued command: /verstecken" aber es passiert einfach nichts?
 

Mrcookie008

Braumeister
Registriert
15 Dezember 2011
Beiträge
380
Diamanten
0
Minecraft
xCookieZz oder Mrcookie008 (Beides Premium)
Dann kommt aber im Log das es die variable p schon gibt und dadurch kann ich gar keinen Befehl mehr ausführen?

- - - Aktualisiert - - -

Zwischenstand: Rundruf Befehl funktioniert jetzt auch mit mehreren Argumenten, jedoch funktioniert das verstecken noch nicht. Es kommt nun KEINE FEHLERMELDUNG mehr bei den jeweiligen "Versteck"-Kommandos, sondern einfach keine Message im Chat und in der Konsole steht "Fackel2907 issued command: /verstecken" aber es passiert einfach nichts?


Er gibt dir sogar schon den Gesammten Code und du bekommst es immer noch nicht auf die Reihe?

Lern bitte erstmal Java..

LG.
 

MrDr4g0n

Minecrafter
Registriert
16 Februar 2013
Beiträge
15
Diamanten
0
Dann kommt aber im Log das es die variable p schon gibt und dadurch kann ich gar keinen Befehl mehr ausführen?

- - - Aktualisiert - - -

Zwischenstand: Rundruf Befehl funktioniert jetzt auch mit mehreren Argumenten, jedoch funktioniert das verstecken noch nicht. Es kommt nun KEINE FEHLERMELDUNG mehr bei den jeweiligen "Versteck"-Kommandos, sondern einfach keine Message im Chat und in der Konsole steht "Fackel2907 issued command: /verstecken" aber es passiert einfach nichts?

Wenn es die Variable p schon gibt, wie wäre es dann mal sie umzubennen? Und ich kann Mrcookie008 nur zustimmen.
 

ThunderFlo

Kuhfänger
Registriert
22 September 2013
Beiträge
53
Diamanten
0
Mach eine neue Klasse auf wo immer du möchtest und dann kannste diesen Code hier einfügen und dann kannst du sogar mit einem Blaze Rod wie bei Gomme Hd's Server Leute verstecken und wieder sichtbar machen. Du musst halt nur das package namen ändern und denn Klassen namen von meinem Code:

Code:
package DeinPackageName;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;

public class DeinKlassenName implements Listener {
	
	@EventHandler
	public void onHide(PlayerInteractEvent e) {
		Player p = e.getPlayer();
		
		if (e.getMaterial() == Material.BLAZE_ROD) {
			if (e.getAction() == Action.RIGHT_CLICK_AIR) {
				for (Player hide : Bukkit.getOnlinePlayers()) {
					p.hidePlayer(hide);
					p.playSound(p.getLocation(), Sound.LEVEL_UP, 1F, 1F);
				}
			}
		}
		
		if (e.getMaterial() == Material.BLAZE_ROD) {
			if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
				for (Player hide : Bukkit.getOnlinePlayers()) {
					p.hidePlayer(hide);
					p.playSound(p.getLocation(), Sound.LEVEL_UP, 1F, 1F);
				}
			}
		}
		
		if (e.getMaterial() == Material.BLAZE_ROD) {
			if (e.getAction() == Action.LEFT_CLICK_AIR) {
				for (Player hide : Bukkit.getOnlinePlayers()) {
					p.showPlayer(hide);
					p.playSound(p.getLocation(), Sound.LEVEL_UP, 1F, 1F);
				}
			}
		}
		
		if (e.getMaterial() == Material.BLAZE_ROD) {
			if (e.getAction() == Action.LEFT_CLICK_BLOCK) {
				for (Player hide : Bukkit.getOnlinePlayers()) {
					p.showPlayer(hide);
					p.playSound(p.getLocation(), Sound.LEVEL_UP, 1F, 1F);
				}
			}
		}
	}
}

Wenn du das jetzt nicht verstanden hast was du machen musst sehe ich keine Hoffnung für dich ;-D

//EDIT

Code auch hier überarbeitet.
 
Zuletzt bearbeitet:
G

games6471

Guest
Mach eine neue Klasse auf wo immer du möchtest und dann kannste diesen Code hier einfügen und dann kannst du sogar mit einem Blaze Rod wie bei Gomme Hd's Server Leute verstecken und wieder sichtbar machen. Du musst halt nur das package namen ändern und denn Klassen namen von meinem Code:

Code:
package DeinPackageName;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;

public class DeinKlassenName implements Listener {
	
	@EventHandler
	public void onHide(PlayerInteractEvent e) {
		Player p = e.getPlayer();
		
		if (e.getMaterial() == Material.BLAZE_ROD) {
			if (e.getAction() == Action.RIGHT_CLICK_AIR) {
				for (Player hide : Bukkit.getOnlinePlayers()) {
					p.hidePlayer(hide);
					[COLOR="#FF0000"]p.playSound(p.getLocation(), Sound.LEVEL_UP, 1, 1);
					if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
						p.hidePlayer(hide);
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1, 1);
						if (e.getAction() == Action.LEFT_CLICK_AIR) {
							p.showPlayer(hide);
							p.playSound(p.getLocation(), Sound.LEVEL_UP, 1, 1);
							if (e.getAction() == Action.LEFT_CLICK_BLOCK) {
								p.showPlayer(hide);
								p.playSound(p.getLocation(), Sound.LEVEL_UP, 1, 1);
							}
						}
					}[/COLOR]
				}
			}
		}
		
	}

}

Wenn du das jetzt nicht verstanden hast was du machen musst sehe ich keine Hoffnung für dich ;-D


Dein Ernst?
 

ThunderFlo

Kuhfänger
Registriert
22 September 2013
Beiträge
53
Diamanten
0
Ja das war mein ernst wenn man Müde ist :-D Ich überarbeite es jetzt :-D

//EDIT

Code:
package DeinPackageName;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;

public class DeinKlassenName implements Listener {
	
	@EventHandler
	public void onHide(PlayerInteractEvent e) {
		Player p = e.getPlayer();
		
		if (e.getMaterial() == Material.BLAZE_ROD) {
			if (e.getAction() == Action.RIGHT_CLICK_AIR) {
				for (Player hide : Bukkit.getOnlinePlayers()) {
					p.hidePlayer(hide);
					p.playSound(p.getLocation(), Sound.LEVEL_UP, 1F, 1F);
				}
			}
		}
		
		if (e.getMaterial() == Material.BLAZE_ROD) {
			if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
				for (Player hide : Bukkit.getOnlinePlayers()) {
					p.hidePlayer(hide);
					p.playSound(p.getLocation(), Sound.LEVEL_UP, 1F, 1F);
				}
			}
		}
		
		if (e.getMaterial() == Material.BLAZE_ROD) {
			if (e.getAction() == Action.LEFT_CLICK_AIR) {
				for (Player hide : Bukkit.getOnlinePlayers()) {
					p.showPlayer(hide);
					p.playSound(p.getLocation(), Sound.LEVEL_UP, 1F, 1F);
				}
			}
		}
		
		if (e.getMaterial() == Material.BLAZE_ROD) {
			if (e.getAction() == Action.LEFT_CLICK_BLOCK) {
				for (Player hide : Bukkit.getOnlinePlayers()) {
					p.showPlayer(hide);
					p.playSound(p.getLocation(), Sound.LEVEL_UP, 1F, 1F);
				}
			}
		}
	}
}
 
Zuletzt bearbeitet:

ThunderFlo

Kuhfänger
Registriert
22 September 2013
Beiträge
53
Diamanten
0
Wenn du das ohne if (e.getMaterial == Material.BLAZE_ROD) { machst dann verschwinden die Spieler wenn du nichts in der Hand hast und zeigen sich wieder. Ich hab das halt sogemacht das wenn man einen Lohnenrute in der Hand hat das die verschwinden und wieder angezeigt werden können. Kannst du dir aussuchen wie du das machst :)
 
Oben