Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Minecraft
You last visited: Today at 21:04

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

Advertisement



Bukkit Programmierung : Was ist falsch?

Discussion on Bukkit Programmierung : Was ist falsch? within the Minecraft forum part of the Other Online Games category.

Reply
 
Old   #1

 
HappyMajor's Avatar
 
elite*gold: 0
Join Date: Jul 2012
Posts: 1,554
Received Thanks: 484
Bukkit Programmierung : Was ist falsch?

Hey Leute,
ich möchte für ein Freund ein Plugin erstellen und weiß gerade nicht mehr weiter.
Vorerst was ich möchte :
Ich möchte das wenn ein Spieler Zucker in der Hand hält und dann Rechtsklickt,das der Zucker verschwindet und der Spieler schneller wird,also ein Speed PotionEffect bekommt.

Hier ist der Code :
Code:
@EventHandler
    public void onPlayerInteract(PlayerInteractEvent event){
    if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
    Player player = event.getPlayer();
    if (event.getItem() == null) {
    return;
    } else {
    if (event.getItem().getType() == Material.SUGAR) {
		
    if (player.getInventory().getItemInHand().getAmount() == 1) {
    event.getPlayer().getInventory().removeItem(new ItemStack(event.getItem().getTypeId(), 1));
    p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    } else {
    int amount = player.getInventory().getItemInHand().getAmount();
    amount--;
    player.getInventory().getItemInHand().setAmount(amount);
    p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    }
    }
    }
    }
    }
    }
}
HappyMajor is offline  
Old 02/03/2013, 21:17   #2
 
Elevenn's Avatar
 
elite*gold: 3
Join Date: Mar 2012
Posts: 1,432
Received Thanks: 266
Nicht if event.getItem = sugar sonder if player.getItemInHand = sugar
Bei deinem Code klappt das auch nur wenn du ein Zucker in der Hand hast.
Elevenn is offline  
Thanks
1 User
Old 02/03/2013, 21:28   #3
 
elite*gold: 0
Join Date: Feb 2010
Posts: 26
Received Thanks: 6
Das muss
Code:
if(player.getItemInHand().getType() == Material.SUGAR) {
// do sth.
}

(Check, ob es das Item ist.)
bzw.
Code:
if (!(player.getItemInHand().getType() == Material.SUGAR)) {
// do sth.
}

(Check, ob es das Item NICHT ist.)
heißen. Außerdem musst du p.*** durch player.*** ersetzen.
eagle3000 is offline  
Thanks
1 User
Old 02/03/2013, 21:52   #4

 
HappyMajor's Avatar
 
elite*gold: 0
Join Date: Jul 2012
Posts: 1,554
Received Thanks: 484
Danke für eure Hinweise,doch irgendwie passiert immer noch gar nichts.
Code :
Code:
package main;


import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_4_R1.Overridden;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

public class Zucker extends JavaPlugin {

	@Overridden
    public void onDisable() {
        // TODO Auto-generated method stub
    }

    @Overridden
    public void onEnable() {
        // TODO Auto-generated method stub
    }
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event){
    if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
    Player player = event.getPlayer();
    if (player.getItemInHand() == null) {
    return;
    } else {
    if (player.getItemInHand().getType() == Material.SUGAR) {
		
    if (player.getInventory().getItemInHand().getAmount() == 1) {
    event.getPlayer().getInventory().removeItem(new ItemStack(event.getItem().getTypeId(), 1));
    player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    } else {
    int amount = player.getInventory().getItemInHand().getAmount();
    amount -=1;
    player.getInventory().getItemInHand().setAmount(amount);
    player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    }
    }
    }
    }
    }
}
eagle3000:
Wie füg ich in dem Code denn eig noch ein Rechtsklick Event ein?
Einfach mit UND(&&)?
Code:
if(player.getItemInHand().getType() == Material.SUGAR && event.getAction() == Action.RIGH_CLICK_BLOCK)) {
// do sth.
}
HappyMajor is offline  
Old 02/03/2013, 22:02   #5
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
PlayerInteract wird eigentlich nur aufgerufen wenn ein Spieler einen Rechtsklick macht. (Beim Linksklick kommen die DamageEvents zum tragen)

Edit:
Was machst du denn mit dem "Overridden" da? Das sehe ich jetzt zum ersten mal und ich vermute das es mit dem Aushebeln neuen Schutzfunktion von Bukkit zu tun hat.

Quote:
Originally Posted by Elevenn View Post
Nicht if event.getItem = sugar sonder if player.getItemInHand = sugar
Mit getItem() sollte man auch an das Item in der Hand kommen.
ComputerBaer is offline  
Thanks
1 User
Old 02/03/2013, 22:23   #6
 
elite*gold: 0
Join Date: Feb 2010
Posts: 26
Received Thanks: 6
Code:
	@EventHandler
    public void onPlayerInteract(PlayerInteractEvent event){
    if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
    Player player = event.getPlayer();
    if (!(player.getItemInHand().getType() == Material.SUGAR)) {
    return;
    } else {
    if (player.getItemInHand().getType() == Material.SUGAR) {
    if (player.getInventory().getItemInHand().getAmount() == 1) {
    player.getInventory().removeItem(new ItemStack(event.getItem().getTypeId(), 1));
    player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    } else
    {
    int amount = player.getInventory().getItemInHand().getAmount();
    amount--;
    player.getInventory().getItemInHand().setAmount(amount);
    player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
     }
    }
    }
    }
    }
Sollte so funktionieren, gucks dir aber bitte an und versteh' es.
eagle3000 is offline  
Thanks
1 User
Old 02/04/2013, 00:35   #7
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
Ohh, da habe ich (und alle anderen auch) wohl nicht besonders gut aufgepasst. Es ist klar das nichts passiert, weil du das Event garnicht registrierst.

@eagle3000
In diesem Fall wo die Abfrage liefern soll, dass es kein Zucker ist würde ich Ungleich (!=) bevorzugen, das ganze könnte auch sehr geringen Geschwindigkeitsvorteil bringen. Aber letztendlich ist das wohl Geschmackssache.

@HappyMajor
Ich würde den Code für bessere Lesbarkeit einrücken. Das sieht dann ungefähr so aus:
Ob du den Klammern eine eigene Zeile spendierst oder sie in die selbe Zeile schreibst musst du dir aussuchen.

Hier noch ein wenig Optimiert: (Sachen die vorher nicht gingen, werden auch hier nicht gehen, der Code ist weiterhin ungetestet)
Nachtrag: Allerdings ist mir beim Optimieren ein Fehler aufgefallen, mehr dazu weiter unten.
ComputerBaer is offline  
Thanks
1 User
Old 02/04/2013, 16:05   #8

 
HappyMajor's Avatar
 
elite*gold: 0
Join Date: Jul 2012
Posts: 1,554
Received Thanks: 484
ComputerBaer :
Danke du bist mein Retter!!
Ich habe völlig vergessen den Listener zu registrieren,jetzt funktioniert es.
Und danke für deine Verbesserung
HappyMajor is offline  
Reply


Similar Threads Similar Threads
Bukkit - Erste Schritte zur Plugin-programmierung
11/22/2019 - Minecraft Guides & Strategies - 58 Replies
In diesem Texttutorial bringe ich euch die ersten Schritte zur Bukkit Plugin-Programmierung näher. Nun, zu erst ein mal muss ich euch sagen, dass ich manchmal ein paar Schwierigkeiten habe mich aus zudrücken. Ich bitte euch, dies zu verkraften. Was brauchen wir, um ein Plugin zu schreiben? *Eclipse: Klicke hier Dies ist die Programmierumgebung. Hier werden euch sofort Syntax-Fehler angezeigt und die dazu gehörenden Problembehandlungsmöglichkeiten. *CraftBukkit devBuild: Klicke hier...
[B]Bukkit Plugin Programmierung / Server Einrichtung
08/06/2013 - Minecraft Trading - 24 Replies
http://i.epvpimg.com/LCCMg.png Wenn Sie maßgeschneiderte Bukkit Plugins suche, sind sie hier genau richtig! Zögern Sie nicht lange, schicken Sie mir eine Private Nachricht hier im Forum. Bitte beachten Sie dass Ihre Nachricht folgenden Punkte beinhaltet: Plugin Name Funktionen Kurze Beschreibung
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
[B]Bukkit Plugin Programmierung für 10€ / Server Einrichtung
08/27/2012 - Minecraft Trading - 0 Replies
Hallo, wie der Titel schon sagt programmiere ich Bukkit Plugins und erstelle Server ein. Bukkit Plugins: Preis: 10€ Was Programmiere ich? normale Bukkit Plugins keine Spout Plugins.



All times are GMT +1. The time now is 21:07.


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.