Plugin Programmierung: Event ausführen, wenn Befehl eingegeben

08/02/2013 21:37 themrdomi#1
Hallo,
wie kann ich es realisieren, dass ein Event ausgeführt wird, sobald ich einen Befehl eingebe?

LG
Dominik
08/02/2013 21:50 Floppy012#2
Mit dem PlayerCommandPreprocessEvent: [Only registered and activated users can see links. Click Here To Register...]

Mit freundlichen Grüßen

Floppy
08/02/2013 21:52 Kante'#3
Weißt du denn, was Events sind? Sie werden immer und immer ausgeführt, wenn etwas passiert, was zu dem Event gehört (PlayerDeathEvent gibt dann erst was aus, wenn ein Spieler gestorben ist. Man kann den Code für das Event nur ausführen, wenn das Event passiert [Hier: PlayerDeath]). Wie willst du ein Event per Command "ausführen"?
Erklär das mal bitte genauer

Edit: Falls du das PlayerCommandPreprocessEvent meinst (was ein Event ausführt, wenn jemand einen Befehl eingibt), dann schau beim Vorposter
08/02/2013 22:16 themrdomi#4
Danke, hat funktioniert!
Hmm, ich weiß nicht, ob ich einen neuen Thread aufmachen soll oder nicht: Wie kann ich per Plugin einem Spieler OP Rechte geben?

LG
Dominik
08/02/2013 22:28 Floppy012#5
Ja mit

setOp(boolean)

Bsp.:
Code:
Player p = Bukkit.getServer().getPlayerExact(String spielername);
p.setOp(true);
Mit freundlichen Grüßen

Floppy

P.S.: Danke kannst du auch mit dem Thanks-Button sagen ;)
08/02/2013 22:54 SBotDE#6
Ich glaube mit dem Call Event Befehl so etwas ähnliches hatte ich noch in erinerung
08/02/2013 23:38 themrdomi#7
hmm, geht doch noch nicht so wirklich...
Folgenden Code habe ich bis jetzt:
Code:
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent e) {
		final Player p = e.getPlayer();
		if (p.getInventory().getItemInHand().getType() == Material.STICK) {
		World world = p.getWorld();
		world.strikeLightning(p.getTargetBlock(null, 500).getLocation());
		}
    }
Es soll also wenn der Spieler einen Stick in der Hand hält ein Blitz einschlagen wenn der Spieler rechtsklickt.
Nun will ich es so haben, das das ganze aber nur funktioniert, wenn man einen bestimmten Befehl eingibt, wie mache ich das

LG
08/02/2013 23:50 Floppy012#8
Ich würde nen Array machen in das ich den Spielernamen eingebe wenn der Spieler command XY eingibt. Dann halt in dem InteractEvent prüfen ob der Name in dem Array vorhanden ist.


Mit freundlichen Grüßen

Floppy
08/02/2013 23:57 Kante'#9
Willst du es haben, dass wenn man einmal den Befehl eingibt, für das nächste mal nur geht und man dann wieder den Befehl machen muss, oder dass wenn man einmal eingibt es immer passiert, bis zum nächsten mal?
Dann würde sich ein Toggle eher lohnen.

Quote:
Originally Posted by Floppy012 View Post
Ich würde nen Array machen in das ich den Spielernamen eingebe wenn der Spieler command XY eingibt. Dann halt in dem InteractEvent prüfen ob der Name in dem Array vorhanden ist.


Mit freundlichen Grüßen

Floppy
Ich denke das würde besser mit einer Hashmap gehen (String und Boolean) also, wenn der Boolean zB auf false ist, das Event zu canceln und wenn der Boolean auf true ist, eben den Code auszuführen
08/03/2013 00:15 ComputerBaer#10
Quote:
Originally Posted by Kante' View Post
Ich denke das würde besser mit einer Hashmap gehen (String und Boolean)
Wo wir grade so schön Datentypen/Klassen sammeln sind, hier noch ein Vorschlag von mir:
Eine Liste, wenn er drin steht ist es aktiv, wenn er nicht drin steht ist es inaktiv.

Zum Array kann ich nur sagen, das es etwas unhandlich ist, da man die Größe nicht ändern kann. Ob man jetzt Map oder Liste nimmt, sollte keine großen Unterschiede machen.
08/03/2013 00:54 themrdomi#11
Ich hätte es gerne so: Ich geb einmal den Befehl ein, dann kann ich solange ich will die Blitze "blitzen" lassen, und wenn ich den befehl nochmal eingebe, geht es nichtmehr. Am besten währe das ganze noch mit Permissions

LG
08/03/2013 01:09 luca2121998#12
joa sowas gibts :D