Wo ist der Fehler?

Dieses Thema im Forum "Programmierung" wurde erstellt von HappyMajor, 3. Februar 2013.

  1. HappyMajor
    Offline

    HappyMajor

    Registriert seit:
    6. Oktober 2012
    Beiträge:
    21
    Hey Leute,
    ich möchte für einen Freund ein kleines Plugin schreiben,doch irgendwie funktioniert es nicht.
    Ich möchte folgendes :
    Wenn ein Spieler Zucker in der Hand hält und dann rechtsklickt,das er dann den Speed Potion Effect für 3 Sekunden erhält und
    das Zucker dann verschwindet.

    Mein 2tes Problem ist das ich,wie ihr sehen könnt,kein Rechtsklick Event verwendet habe.
    Das liegt daran,das ich dann ja ein 2ten Eventhandler verwenden müsste,doch wie geht das?

    Code (Text):
    1. @EventHandler
    2.     public void onPlayerInteract(PlayerInteractEvent event){
    3.         Player p = event.getPlayer();
    4.         if(p.getItemInHand().getType() == Material.SUGAR && event.getClickedBlock().getType() == Material.AIR){
    5.             p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    6.             p.setItemInHand(null);          
    7.     }
    8.     }
    9. }
    Ich hoffe jemand kann mich erleuchten! :D
    Schonmal Danke im voraus.
     
    #1
  2. Selfmade
    Offline

    Selfmade

    Registriert seit:
    3. Februar 2013
    Beiträge:
    11


    Ich würde es so machen damit er bei einen Rechtklick mit Zucker einen Zucker entfernt bekommt Habe ich aus dem Kopf geschrieben Endschuldige mich wenn es falsch ist

    Code (Text):
    1. @EventHandler
    2.     public void onPlayerInteract(PlayerInteractEvent event){
    3.     if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
    4.     Player player = event.getPlayer();
    5.     if (event.getItem() == null) {
    6.     return;
    7.     } else {
    8.     if (event.getItem().getType() == Material.SUGAR) {
    9.        
    10.     if (player.getInventory().getItemInHand().getAmount() == 1) {
    11.     event.getPlayer().getInventory().removeItem(new ItemStack(event.getItem().getTypeId(), 1));
    12.     p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    13.     } else {
    14.     int amount = player.getInventory().getItemInHand().getAmount();
    15.     amount--;
    16.     player.getInventory().getItemInHand().setAmount(amount);
    17.     p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    18.     }
    19.     }
    20.     }
    21.     }
    22.     }
    23.     }
    24. }
     
    #2
  3. HappyMajor
    Offline

    HappyMajor

    Registriert seit:
    6. Oktober 2012
    Beiträge:
    21
    Hey Danke für deine Antwort!
    Nur leider kann ich es gerade nicht testen,da ich mir gerade eine neue Craftbukkit Version heruntergeladen habe und nun
    einen Fehler bekomme den ich noch nie hatte.

    Er tretet bei folgendem Code auf :
    Code (Text):
    1.  
    2. package main;
    3.  
    4. import org.bukkit.plugin.java.JavaPlugin;
    5.  
    6. public class [U]Zucker_Speed[/U] extends JavaPlugin{ //irgendetwas ist mit Zucker_Speed falsch
    7.  
    8. }
    9.  
    10.  
    Der Fehler lautet :The hierarchy of the type Zucker_Speed is inconsistent
    Mit der anderen Craftbukkit version funktionierte alles normal,wieso jetzt nicht mehr?
     
    #3
  4. Crafter6432
    Offline

    Crafter6432

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    686
    Rück mal den ganzen Code raus.
     
    #4
  5. games6471
    Online

    games6471

    Progammierst du in Java 6 oder 7
     
    #5
  6. HappyMajor
    Offline

    HappyMajor

    Registriert seit:
    6. Oktober 2012
    Beiträge:
    21
    Code (Text):
    1. package main;
    2.  
    3.  
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.Material;
    6. import org.bukkit.block.Block;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.craftbukkit.v1_4_R1.Overridden;
    10. import org.bukkit.entity.Item;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.event.EventHandler;
    13. import org.bukkit.event.block.Action;
    14. import org.bukkit.event.player.PlayerEvent;
    15. import org.bukkit.event.player.PlayerInteractEvent;
    16. import org.bukkit.inventory.ItemStack;
    17. import org.bukkit.plugin.java.JavaPlugin;
    18. import org.bukkit.potion.PotionEffect;
    19. import org.bukkit.potion.PotionEffectType;
    20.  
    21.  
    22.  
    23. public class Zucker_Speed extends JavaPlugin{
    24.  
    25.     @Overridden
    26.     public void onDisable() {
    27.         // TODO Auto-generated method stub
    28.     }
    29.  
    30.     @Overridden
    31.     public void onEnable() {
    32.         // TODO Auto-generated method stub
    33.     }
    34.     @EventHandler
    35.     public void onPlayerInteract(PlayerInteractEvent event){
    36.         Player p = event.getPlayer();
    37.         if(p.getItemInHand().getType() == Material.SUGAR && event.getClickedBlock().getType() == Material.AIR){
    38.             p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    39.             p.setItemInHand(null);          
    40.     }
    41.     }
    42. }
    43.  
    EDIT: games6471:
    In Java 7
     
    #6
  7. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Du implementierst die Listener klasse nicht, und du registrierst den Listener nicht.
    Das kann so nicht funktionieren.
     
    #7
  8. Crafter6432
    Offline

    Crafter6432

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    686
    Code (Text):
    1. [COLOR=#FFFFFF]public class Zucker_Speed extends JavaPlugin implemts Listener{[/COLOR]
    Und dann musst du den Listener noch registrieren.
     
    #8
  9. HappyMajor
    Offline

    HappyMajor

    Registriert seit:
    6. Oktober 2012
    Beiträge:
    21
    Seit wann muss man das machen?
    Musste ich vorher nie.

    Weil bei der alten Craftbukkit Version gings noch.

    EDIT : Geht immer noch nicht :
    Code (Text):
    1. public class Zucker_Speed extends JavaPlugin implements Listener{
    2. }
    Der gleiche Fehler,Zucker_Speed ist rot unterstrichen und gibt folgenden Fehler aus :The hierarchy of the type Zucker_Speed is inconsistent

    EDIT: Wie registriert man den Listener? Hab davon keine Ahnung,da ich das nie machen musste^^
     
    #9
  10. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    http://java.syntaxerrors.info/index.php?title=Inconsistent_hierarchy
    http://wiki.bukkit.org/Event_API_Reference
     
    #10
  11. HappyMajor
    Offline

    HappyMajor

    Registriert seit:
    6. Oktober 2012
    Beiträge:
    21
    Benni1000 :
    Ah danke,jetzt konnte ich den Fehler beheben!

    So jetzt kann ich den Code von oben mal testen.

    Selfmade :
    Leider funktioniert der Code nicht,ein Fehler seh ich darin eig auch nicht,sieht eig ganz plausibel aus.
    Code (Text):
    1. @EventHandler
    2.     public void onPlayerInteract(PlayerInteractEvent event){
    3.     if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
    4.     Player player = event.getPlayer();
    5.     if (event.getItem() == null) {
    6.     return;
    7.     } else {
    8.     if (event.getItem().getType() == Material.SUGAR) {
    9.        
    10.     if (player.getInventory().getItemInHand().getAmount() == 1) {
    11.     event.getPlayer().getInventory().removeItem(new ItemStack(event.getItem().getTypeId(), 1));
    12.     p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    13.     } else {
    14.     int amount = player.getInventory().getItemInHand().getAmount();
    15.     amount--;
    16.     player.getInventory().getItemInHand().setAmount(amount);
    17.     p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    18.     }
    19.     }
    20.     }
    21.     }
    22.     }
    23.     }
    24. }
     
    #11
  12. ScaryHutman
    Offline

    ScaryHutman

    Registriert seit:
    1. Januar 2013
    Beiträge:
    205
    Ort:
    NRW
    Minecraft:
    Scary_Hutman
    Ich bin mir zwar nicht ganz sicher, was du vor hast, aber ich geh' mal davon aus, dass du einem Spieler Speed geben möchtest und dann Zucker aus seinem Inventar nimmst ;)

    Code (Text):
    1.  
    2. @EventHandler
    3.     public void onPlayerRightClick(PlayerInteractEvent event) {
    4.         Player p = event.getPlayer();
    5.         if(event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
    6.             if(p.getInventory().getItemInHand().getType() == Material.SUGAR) {
    7.                 p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 60, 1));
    8.                 p.getInventory().removeItem(new ItemStack(Material.SUGAR, 1));
    9.             }
    10.         }
    11.     }
    12.  
    ScaryHutman

    P.S: Doppelpost bitte entfernen :p
     
    #12