Inventar soll Items behalten.

Dieses Thema im Forum "Programmierung" wurde erstellt von Mrcookie008, 10. Juli 2013.

  1. Mrcookie008
    Offline

    Mrcookie008

    Registriert seit:
    15. Dezember 2011
    Beiträge:
    380
    Ort:
    /home
    Minecraft:
    xCookieZz oder Mrcookie008 (Beides Premium)
    Hallöchen,
    heute schon zum dritten mal hier, hihi :p

    Nunja ich habe malwieder eine Frage: Ich möchte eine Art "Spendenkiste" machen, das soll so funktionieren:

    Über Befehl oder Entityclickentityevent wird ein Virtuelles Inventar geöffnet, dieses ist anfangs leer.

    Nun können alle Spieler dort von überall Items hineinlegen, diese werden im Virtuellen Inventar gespeichert. Diese Items
    können nun von allen Spielern wieder genommen werden.



    Hier mal mein Inventarcode:

    Code (Text):
    1. public class SpendenInventar implements CommandExecutor {    
    2.     private Inventory inv = null;
    3.    
    4.     public boolean onCommand(CommandSender sender, Command cmd, String label,
    5.             String[] args) {
    6.  
    7.  
    8.         Player p = (Player) sender;
    9.        
    10.           {
    11.               if (cmd.getName().equalsIgnoreCase("spendeninventar")) {
    12.                  
    13.                     this.inv = p.getPlayer().getServer().createInventory(null, 27, "§7§lSpenden");
    14.                                    
    15.                                     // Hier muss doch jetzt irgentetwas passieren, oder?
    16.  
    17.  
    18.                     p.getPlayer().openInventory(this.inv);
    19.                   }
    20.  
    21.  
    22.                   return false;
    23.                 }
    24.                 }
    25. }


    Ich habe mich fast schon dumm gesucht, wirklich nichts gefunden^^ Die Docs wollte ich mir vorerst nicht antun, deswegen Frage ich lieber vorerst hier nach :p

    LG.
     
    #1
  2. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Du kannst das Inventar serialisieren und in einer Datei oder im RAM speichern.
    Wenn das inventar geöffnet wird de-serealisierst du das inventar wieder und fertig.
     
    #2
  3. Sn0wBlizz4rd
    Offline

    Sn0wBlizz4rd

    Registriert seit:
    26. September 2012
    Beiträge:
    424
    Minecraft:
    Sn0wBlizz4rd
    Nicht getestet, sollte aber funktionieren:

    In deiner Hauptklasse unter das
    Code (Text):
    1. extends JavaPlugin etc.
    kommt
    Code (Text):
    1. [COLOR=#FFFFFF]public static Inventory inv = [/COLOR][COLOR=#FFFFFF]getServer().createInventory(null, 27, "§7§lSpenden");[/COLOR]
    Und in die Executor-klasse:

    Code (Text):
    1.  
    2. [COLOR=#FFFFFF]public class SpendenInventar implements CommandExecutor {    [/COLOR]    
    3.     public boolean onCommand(CommandSender sender, Command cmd, String label,
    4.             String[] args) {
    5.  
    6.  
    7.         Player p = (Player) sender;
    8.        
    9.           {
    10.               if (cmd.getName().equalsIgnoreCase("spendeninventar")) {
    11.  
    12.                     p.getPlayer().openInventory(<HauptklassenName>.inv);
    13.  
    14.                   }
    15.  
    16.  
    17.                   return false;
    18.                 }
    19.                 } [COLOR=#FFFFFF]}[/COLOR]
     
    #3
  4. Mrcookie008
    Offline

    Mrcookie008

    Registriert seit:
    15. Dezember 2011
    Beiträge:
    380
    Ort:
    /home
    Minecraft:
    xCookieZz oder Mrcookie008 (Beides Premium)
    Cookie hat malwieder viel zu komplex gedacht, dabei geht es doch so einfach :p

    Das funktioniert super, danke dafür!

    Wie mache ich jetzt z.B mit /rucksack für jeden ein eigenes Inventar? Auf den nur dieser Spieler zugreifen kann?

    LG. und danke schonmal =)
     
    #4
  5. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Entweder ein Inventory-Array, wo du die Inventare der Spieler speicherst, oder eine Map mit jeweils einem String für den Spielernamen und einem Inventory-Objekt gespeichert. Und das Ganze solltest du dann noch in einer DB oder einer Datei serialisieren, damit das Inventar nach einem Restart nicht verloren geht.
     
    #5
  6. Chrisliebaer
    Online

    Chrisliebaer

    Bitte aber nicht vergessen, das Inventar beim Speichern und Laden sauber zu synchronisieren, sonst hast du bald 10000 Diamanten auf deinem Server.
     
    #6