Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Minecraft
You last visited: Today at 14:23

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Bukkit Plugin Programmierung: playerCommandPreprocessEvent

Discussion on Bukkit Plugin Programmierung: playerCommandPreprocessEvent within the Minecraft forum part of the Other Online Games category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jun 2013
Posts: 111
Received Thanks: 3
Bukkit Plugin Programmierung: playerCommandPreprocessEvent

Hallo,
ich habe folgendes Programmiert, und komme nun nicht weiter:
Code:
   @EventHandler
    public void onPlayerInteract(PlayerInteractEvent e) {
		final Player p = e.getPlayer();
		if (p.getInventory().getItemInHand().getType() == Material.STICK) {
		if (e.getAction() == Action.RIGHT_CLICK_AIR) {

		if (p.hasPermission("troll.lightning")) {
		World world = p.getWorld();
		world.strikeLightning(p.getTargetBlock(null, 1000).getLocation());
		}
		} else {
			if (!p.hasPermission("troll.explosion")) {
				p.sendMessage(ChatColor.RED + "Keine Rechte!");
			} else {
			if (e.getAction() == Action.LEFT_CLICK_AIR) {
			World world = p.getWorld();
			world.createExplosion(p.getTargetBlock(null, 500).getLocation(), 30F);
			}
			}
		}
		}
		
		}
Ich will, das dass Event nur ausgeführt werden darf wenn ein bestimmter Befehl ausgeführt wird. Ich habe gehört das soll mit dem playerCommandPreprocessEvent gehen, ich habe allerdings keine Ahnung wie ich das Anstellen soll.

LG
Dominik
themrdomi is offline  
Old 08/06/2013, 17:41   #2
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,544
Received Thanks: 1,424
Du machst ganznormal einen Befehl. Den ausführenden Spieler speicherst du dann in eine List oder Map. Beim Rechtklick überprüfst du dann ob er da drin steht und entfernst ihn wieder, falls du das willst.

Quote:
Originally Posted by themrdomi View Post
Ich habe gehört das soll mit dem playerCommandPreprocessEvent gehen, ich habe allerdings keine Ahnung wie ich das Anstellen soll.
Ich denke da habt ihr aneinander vorbei geredet, das was du willst geht nicht direkt mit CommandPreprocess.
ComputerBaer is offline  
Old 08/06/2013, 17:57   #3
 
elite*gold: 0
Join Date: Jun 2013
Posts: 111
Received Thanks: 3
Kannst du mir dabei vielleicht noch ein bisschen helfen, denn ich blick da noch nicht ganz durch wie du das meinst

LG
Dominik
themrdomi is offline  
Old 08/06/2013, 18:27   #4
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,544
Received Thanks: 1,424
Ich meine es ganz grob gezeigt so:
Code:
List aktiveSpieler;

onCommand()
{
    aktiveSpieler.add(playername);
}

onInteract()
{
    if(aktiveSpieler.contains(playername))
}
ComputerBaer is offline  
Old 08/06/2013, 18:47   #5
 
elite*gold: 0
Join Date: Jun 2013
Posts: 111
Received Thanks: 3
Hmm,
ich komm irgendwie überhaupt nicht zurecht damit
Kannst du mir dabei bitte nochmal weiterhelfen?
Bitte sei nicht so streng, ich bin noch ein ziemlichen Newbie in Sachen Bukkit programmierung / Java.
themrdomi is offline  
Old 08/06/2013, 19:40   #6
 
Kante''s Avatar
 
elite*gold: 135
Join Date: May 2011
Posts: 1,511
Received Thanks: 255
Ganz einfach: Erst Java lernen, dann Bukkit.

Dazu muss man sich aber nicht mit Java wirklich gut auskennen, um das zu verstehen. Es ist einfach:

Du hast eine Liste, die du so erstellst (kannst du beliebig nennen):
Code:
List aktiveSpieler;
. In dieser Liste stehen Spielernamen. Aber, dass der Spieler in die Liste reinkommt, muss man den Spieler hineinsetzen. Dies macht man mit :
Code:
aktiveSpieler.add(/*HierEinenSpielerNamen*/);
Es muss aber mit irgendwas verknüpft werde, dass diese Zeile ausgeführt wird, also z.B. ein Command:
Code:
	@Override
	public boolean onCommand(CommandSender cs, Command cmd, String commandLabel, String[] args){
		Player p = (Player) cs;
		if (cmd.getName().equalsIgnoreCase("blitz") ){
			aktiveSpieler.add(p.getName());
		}		
		return true;
	}
Dann prüfst du einfach bei dem Interact event das ab:
Code:
if (aktiveSpieler.contains(p.getName()){
//Dein Code hier
}
Hoffe ich konnte helfen und habe keine Fehler gemacht, falls ja, bitte korrigieren, habe es nur hier zusammengeschrieben.
Kante' is offline  
Thanks
1 User
Old 08/06/2013, 20:06   #7
 
elite*gold: 0
Join Date: Jun 2013
Posts: 111
Received Thanks: 3
Hmm, also schonmal vielen dank, aber bei
Quote:
Code:
if (aktiveSpieler.contains(p.getName()){
//Dein Code hier
}
Zeigt er an: Syntax error on token(s), misplaced construct(s)

LG
Dominik
themrdomi is offline  
Old 08/06/2013, 20:09   #8
 
Kante''s Avatar
 
elite*gold: 135
Join Date: May 2011
Posts: 1,511
Received Thanks: 255
Hast du das in dein PlayerInteractEvent reingeschrieben? Schreib mal den ganzen Code hier rein
Kante' is offline  
Old 08/06/2013, 20:11   #9
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,544
Received Thanks: 1,424
Da fehlt eine Klammer zu ... warum siehst du das nicht? (Edit: Die meisten IDEs sagen einem sogar, dass eine Klammer fehlt ohne kryptische Meldungen)
Code:
if (aktiveSpieler.contains(p.getName())) {
//Dein Code hier
}
Quote:
Originally Posted by themrdomi View Post
Bitte sei nicht so streng, ich bin noch ein ziemlichen Newbie in Sachen Bukkit programmierung / Java.
Bezieht sich das auf die sehr dünnen Erklärungen?
Es geht mir vorallem darum, das du deinen Kopf einschaltest und selber etwas suchst und rumprobierst. Wenn ich die Lösung schreibe lernst du nicht so viel.
ComputerBaer is offline  
Old 08/06/2013, 20:11   #10
 
elite*gold: 0
Join Date: Jun 2013
Posts: 111
Received Thanks: 3
Hmm, so siehts bis jetzt aus:
Code:
package me.themrdomi.TrollPlugin;
 
import java.awt.List;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
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;
import org.bukkit.plugin.java.JavaPlugin;
 
public class main extends JavaPlugin implements Listener {

        public void onEnable() {
                Bukkit.getServer().getPluginManager().registerEvents(this, this);
                System.out.println("TrollPlugin aktiviert!");
        }
        //Programm
        List aktiveSpieler;

        @Override
    	public boolean onCommand(CommandSender cs, Command cmd, String commandLabel, String[] args){
    		Player p = (Player) cs;
    		if (cmd.getName().equalsIgnoreCase("blitz") ){
    			aktiveSpieler.add(p.getName());
    		}		
    		return true;

        	@EventHandler
            public void onPlayerInteract(PlayerInteractEvent e) {
            		final Player p = e.getPlayer();
            		if (p.getInventory().getItemInHand().getType() == Material.STICK) {
            		if (e.getAction() == Action.RIGHT_CLICK_AIR) {

            		if (p.hasPermission("troll.lightning")) {
            		World world = p.getWorld();
            		world.strikeLightning(p.getTargetBlock(null, 1000).getLocation());
            		}
            		} else {
            			if (!p.hasPermission("troll.explosion")) {
            				p.sendMessage(ChatColor.RED + "Keine Rechte!");
            			} else {
            			if (e.getAction() == Action.LEFT_CLICK_AIR) {
            			World world = p.getWorld();
            			world.createExplosion(p.getTargetBlock(null, 500).getLocation(), 30F);
            			}
            			}
                    }
                }
        	}
}
LG
Dominik
themrdomi is offline  
Old 08/06/2013, 20:21   #11
 
Kante''s Avatar
 
elite*gold: 135
Join Date: May 2011
Posts: 1,511
Received Thanks: 255
Bin ich jetzt Blind oder hast du die If-Abfrage (Die von ComputerBaer, habe eine Klammer vergessen) überhaupt nicht eingesetzt

Code:
if (aktiveSpieler.contains(p.getName())) {
//Dein Code hier
}
Falls du es nicht weißt, wo du sie einsetzten sollst, wäre ein Grundkurs in Java + Bukkit sehr angebracht
Kante' is offline  
Old 08/11/2013, 12:31   #12
 
elite*gold: 0
Join Date: Nov 2010
Posts: 129
Received Thanks: 3
Ausserdem: Verwende nie System.out.println, lieber einen Logger (Wenn du nicht weißt was das ist --> Java Lernen)

Dann: Diese "List" gehört am besten über den onEnable Teil bei welchem eig. @Override fehlt

Und zu guter letzt: Verwende lieber List<String> aktiveSpieler = new ArrayList<String>();
Ist übersichtshalber besser und du kannst durch deine IDE später bei Fehlern besser kontrollieren mit was die List gefüllt sein müsste
BJ100 is offline  
Reply

Tags
bukkit


Similar Threads Similar Threads
Bukkit Plugin Programmierung: 2 Befehle
07/14/2013 - Minecraft - 8 Replies
Hallo, ich habe ein Plugin programmiert, welches einfach einen Text ausgeben soll. Ich habe zwei Befehle eingebaut, allerdings funktioniert nur der eine. In der plugin.yml ist alles korrekt. Hier ist der link zu Pastebin: klick Vielleicht findet ihr ja den Fehler und könnt mir helfen. LG Dominik
[B] Bukkit-Plugin-Programmierung [S] e-Gold
05/21/2013 - elite*gold Trading - 0 Replies
Hey, ich mache euch für eGold/PSC/PayPal Bukkit Plugins. Schreibt mir einfach eine PN mit genauer Pluginbeschreibung + Preisvorschlag. Oder addet mich bei Skype: Beyblader22 Gruß,
[B] Bukkit Plugin Programmierung [S] PSC
05/20/2013 - Trading - 0 Replies
Hallo liebe Community, Ich biete mich als Bukkit Plugin Programmierer an. Auch schwere Plugins sind kein Problem. Preis: Je nach Aufwand zwischen 10-200 € Referenzen biete ich auf Nachfrage via PM/Skype. Kontakt: Skype: stevenst7 via PM.
Bukkit Plugin Programmierung ab $5
12/08/2012 - Minecraft Trading - 0 Replies
z.Z. nur im deutschen Minecraftforum
Bukkit Plugin Programmierung für 10€
12/07/2012 - Minecraft Trading - 14 Replies
http://www.elitepvpers.com/forum/minecraft-trading /2281632-bukkit-plugin-programmierung-ab-5-a.html



All times are GMT +2. The time now is 14:23.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.