ServerPlugin Hilfe

Dieses Thema im Forum "Programmierung" wurde erstellt von miccc345, 6. Oktober 2015.

  1. miccc345
    Offline

    miccc345

    Guten Abend ich wollte ein kleines plugin schreiben aber natürlich will es nie so wie man will

    Code (Text):
    1.  
    2. @EventHandler
    3.    public void onPlayerInteract(PlayerInteractEvent ie) {
    4.      if (ie.getAction() == Action.RIGHT_CLICK_BLOCK) {
    5.        if (ie.getClickedBlock().getType() == Material.ANVIL) {
    6. ie.getPlayer().sendMessage("test");
    7.      }}}}}
    8.  
    Also wenn ich einen Anvil anklicke kommt die Nachricht test das funktioniert auch aber
    wenn ich jetzt will das unter dem Anvil ein z.b. Diamantblock sein soll damit nur dann die Nachricht kommt hab ich gedacht ich mach das dazu

    Code (Text):
    1. if (ie.getPlayer().getLocation().subtract(0.0D, 1.0D, 0.0D).getBlock().getType() == Material.DIAMOND_BLOCK){
    Jetz ist es aber so das ich (Spieler) auf einen Diamantblock stehen muss damit diese nachricht kommt und nichtso wie ich das will
    ich muss ja iwie den Anvil als location angeben und nicht den Player aber wie mache ich das am besten?
     
    #1
  2. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    654
    #2
  3. miccc345
    Offline

    miccc345

    Vielen dank hat super geklappt !
    hier der Code vllt hilfts ja auch jemanden

    Code (Text):
    1.  
    2. @EventHandler
    3.    public void onPlayerInteract(PlayerInteractEvent ie) {
    4.      if (ie.getAction() == Action.RIGHT_CLICK_BLOCK) {
    5.        if (ie.getClickedBlock().getType() == Material.ANVIL) {
    6.          if (ie.getClickedBlock().getRelative(BlockFace.DOWN).getType() == Material.DIAMOND_BLOCK) {
    7.      
    8.        ie.getPlayer().sendMessage("test");
    9.      }}}}}
    10.  
     
    #3
  4. miccc345
    Offline

    miccc345

    ich hab jetzt das Plugin weiter ausgebaut und wieder einen fehler ....:(

    Code (Text):
    1.  
    2. @EventHandler
    3.     public void onPlayerInteract(PlayerInteractEvent ie) {
    4.      Player p = ie.getPlayer();
    5.     if (ie.getAction() == Action.RIGHT_CLICK_BLOCK) {
    6.     if (ie.getClickedBlock().getType() == Material.ANVIL) {
    7.     if (ie.getClickedBlock().getRelative(BlockFace.DOWN).getType() == Material.STONE)
    8.         if (p.getInventory().getItemInHand().getType() == Material.COBBLESTONE) {
    9.        
    10.           p.getInventory().removeItem(new ItemStack[] { new ItemStack(Material.COBBLESTONE, 1) });
    11.         ItemStack item = new ItemStack(1, 1);
    12.        
    13.         ItemMeta meta = item.getItemMeta();
    14.         meta.setDisplayName("§6 Gebrannter Stein");
    15.        
    16.         item.setItemMeta(meta);
    17.         p.getInventory().addItem(item);
    18.        
    19.        
    20.         ie.setCancelled(true);
    21.        
    22.         }}}}}
    23.  
    erklärung:
    Also Spieler klickt einen Anvil an wenn unter dem Anvil ein Stein ist und ich einen Cobblestone in der Hand habe entfernt er ihn.
    Und ich bekomme einen gebrannten stein mit dem namen "Gebrannter Stein" dann wird die aktion gecancelt das das AnvilMenü nicht aufgeht ...

    So ansich funktioniert auch alles aber wenn nun der Cobblestone einen anderen Namen hat geht es nicht mehr und das ist mein Problem jemand eine Idee?

    Und ich bekomme einen "gebrannten stein" ohne das es mir Cobblestone abzieht
     
    #4
  5. Vanityra
    Offline

    Vanityra

    Registriert seit:
    9. Juni 2015
    Beiträge:
    219
    Ort:
    Heidelberg
    Minecraft:
    Vanityra
    Änder den Namen vom Cobblestone beim Rechtsklicken zum Standard-Namen (bzw. entferne den Namen), lass ihm nen Tick Zeit und dann mach das restliche. :)
     
    #5
    miccc345 gefällt das.
  6. miccc345
    Offline

    miccc345

    Danke
     
    #6