ServerPlugin [Bukkit]Location eines Inventorys

Dieses Thema im Forum "Programmierung" wurde erstellt von leonard_m_g, 30. Dezember 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. leonard_m_g
    Offline

    leonard_m_g

    Registriert seit:
    4. Januar 2012
    Beiträge:
    10
    Hallo,
    ich bin gerade dabei ein Bukkit Plugin zu programmieren, dabei habe ich folgendes Problem: wenn das InventoryClickEvent aufgerufen wird möchte ich gerne an die Koordinaten des dabei involvierten Containers kommen, leider habe ich keine Ahnung wie ich das anstellen soll und ich habe auch keine Möglichkeit dazu in den JavaDocs von Bukkit gefunden:youno:, vielleicht kennt hier jemand eine Lösung für mein Problem...
     
    #1
  2. Der Slot und der Raw slot unterscheiden sich, so kannst du einen bestimmten Slot herrausfinden.
     
    #2
  3. Sn0wBlizz4rd
    Offline

    Sn0wBlizz4rd

    Registriert seit:
    26. September 2012
    Beiträge:
    424
    Minecraft:
    Sn0wBlizz4rd
    Ich glaube, er will wissen wenn man z.B. eine Craftingtable öffnet, die Position den Craftingtables herrauszufinden.
     
    #3
  4. leonard_m_g
    Offline

    leonard_m_g

    Registriert seit:
    4. Januar 2012
    Beiträge:
    10
    genau das meine ich Cubos, Entschuldigung wenn ich mich etwas unverständlich ausgedrückt habe, hatte vorhin nicht so viel Zeit...
     
    #4
  5. TimBone
    Offline

    TimBone

    Hier einmal ein Ansatz von mir:

    Code (Text):
    1.     @EventHandler
    2.     public void onPlayerBlock(PlayerInteractEvent event){
    3.         Block block = event.getClickedBlock();
    4.         int block2 = event.getClickedBlock().getTypeId();
    5.        
    6.         if(event.getHandlers() instanceof Player){
    7.             if(block2 == 58){
    8.                 Location location = block.getLocation();
    9.                 System.out.println("[Prefix] Es wurde ein Crafting Table gefunden: " + location);
    10.  
    11.             }
    12.             if((block instanceof Chest) || (block instanceof DoubleChest) ){
    13.             Location location = block.getLocation();
    14.             System.out.println("[Prefix] Es wurde eine Chest gefunden: " + location);
    15.             }
    16.         }
     
    #5
  6. leonard_m_g
    Offline

    leonard_m_g

    Registriert seit:
    4. Januar 2012
    Beiträge:
    10
    ich möchte aber dass man eine Kiste öffnen kann und wenn man dann ein Item aus der Kiste nimmt überprüft wird ob man dazu berechtigt ist...
     
    #6
  7. Sag doch direkt was du suchst ;)

    Code (Text):
    1. @EventHandler(priority = EventPriority.NORMAL)    public void thisCouldBeAMehtodFourtyTwo(InventoryClickEvent ev) {
    2.         // Nur Amboss benutzen
    3.         if (ev.getInventory().getName().equalsIgnoreCase("Repair")) {
    4.             ItemStack curr = ev.getCurrentItem();
    5.             ItemStack cursor = ev.getCursor();
    6.  
    7.             if (curr != null && cursor != null) {
    8.                 //Anzeige des Slots bzw. des Raw Slots => Initialisierung weiter oben!
    9.                 logger.info(ev.getRawSlot() + "|" + ev.getSlot());
    10.                 if (ev.getRawSlot() == 1 && ev.getSlot() == 1) {
    11.                     //QuickNDirty Permissionsüberprüfung
    12.                     if(((Player)ev.getWhoClicked()).hasPermission("manf.is.awesome")){
    13.                         return;
    14.                     }
    15.                     //Blockt in diesem Fall des 2. Slot des Amboss
    16.                     event.setCancled()
    17.                 }
    18.             }
    19.         }
    20.     }

    Sollte so funktionieren.
     
    #7
  8. leonard_m_g
    Offline

    leonard_m_g

    Registriert seit:
    4. Januar 2012
    Beiträge:
    10
    mit "dazu berechtigt" meinte ich ob man auf dieser Zone die nötigen rechte... und nicht ob man die nötigen permissions hat, ganz doof bin ich auch nicht:p
     
    #8
  9. Achso...
    Du willst also ermöglichen, dass man die Kiste öffnen kann, aber nix ändern...

    Wie wäre es mit

    Code (Text):
    1.  
    2. if(ev.getInventory().getHolder() instanceof Chest){   Chest c = (Chest) ev.getInventory().getHolder();
    3.    Block b = c.getBlock()
    4.    // ....
    5. }
    6.  
     
    #9
  10. leonard_m_g
    Offline

    leonard_m_g

    Registriert seit:
    4. Januar 2012
    Beiträge:
    10
    Das war die Lösung, danke für eure Hilfe :D
     
    #10
Status des Themas:
Es sind keine weiteren Antworten möglich.