Seite 1 von 1

BungeeCord Inventare auf jedem Server gleich

BeitragVerfasst: Mi 13. Apr 2016, 13:31
von VooxoPlay
Hallo, ich wollte fragen ob mir jemand erklären kann wie ich ein Inventar(mit Rüstung) in MySQL 1 zu 1 abspeichern kann und wieder aufrufen kann? Bräuchte es um auf allen Servern das gleiche Inventar zu haben.

Mit freundlichen Grüßen

VooxoPlay - Thomas

Re: BungeeCord Inventare auf jedem Server gleich

BeitragVerfasst: Mi 13. Apr 2016, 14:25
von Letsplaybar
In dem du dir das material als string speicherst und diesen wiederum aufrufst. Also Bsp. So:
Code: Alles auswählen
  1. public String giveInventory(Player p){
  2.      String inv ="";
  3.      for (ItemStack is : p.getInventory().getContents())
  4.         inv = inv+is.getType().toString()+"_"+is.getData()+"_"+is.getAmount()+";";
  5.      return inv;
  6.   }

und so bekommst du dann die Itemstacks wieder raus:
Code: Alles auswählen
  1. public ItemStack[] getInventory(String inv){
  2.      String[] invs = inv.split(";");
  3.      ItemStack[] is = new ItemStack[invs.length];
  4.     
  5.      for(int i = 0; i<inv.length(); i++){
  6.         String[] itemdata = invs[i].split("_");
  7.         String material = itemdata[0];
  8.         byte data = Byte.parseByte(itemdata[1]);
  9.         int amount = Integer.parseInt(itemdata[2]);
  10.         ItemStack in = new ItemStack(Material.getMaterial(material),amount,data);
  11.         is[i]=in;
  12.      }
  13.      return is;
  14.   }

Re: BungeeCord Inventare auf jedem Server gleich

BeitragVerfasst: Mi 13. Apr 2016, 18:36
von VooxoPlay
Danke erstmal, ich werds danach mal testen

Re: BungeeCord Inventare auf jedem Server gleich

BeitragVerfasst: Mi 13. Apr 2016, 21:17
von Letsplaybar
ach ja für die Amor muss dann noch p.getInventory().getAmorContents(); statt nur getContents(); un das Speicherst du einfach als 2. Strin in die MySQL tabbele Rüssi und den Ersten als bsp. Inventar.

Re: BungeeCord Inventare auf jedem Server gleich

BeitragVerfasst: So 17. Apr 2016, 07:04
von VooxoPlay
Ich hab noch eine Frage zu der Abspeichermethode von dir Letsplaybar, diese wäre: Wo speicherst du denn den Slot des Items ab? Also ich hab auf dem letzen also in der Hotbar ein item, wie bekommt man da den Slot.

Re: BungeeCord Inventare auf jedem Server gleich

BeitragVerfasst: So 17. Apr 2016, 14:45
von Letsplaybar
dann musst du in den String halt noch den Slot abspeichern.
Code: Alles auswählen
  1. public String giveInventory(Player p){
  2.      String inv ="";
  3.      for (int i=0; i<36;i++){
  4.            ItemStack is = p.getInventory().getItem(i);
  5.            if(is != null){
  6.              inv = inv+is.getType().toString()+"_"+is.getData()+"_"+is.getAmount()+"_"+i+";";
  7.            }
  8.          }
  9.   }


und zum abrufen:
Code: Alles auswählen
  1. public void setInventory(String inv, Player p){
  2.      String[] invs = inv.split(";");
  3.      for(int i = 0; i<inv.length(); i++){
  4.         String[] itemdata = invs[i].split("_");
  5.         String material = itemdata[0];
  6.         byte data = Byte.parseByte(itemdata[1]);
  7.         int amount = Integer.parseInt(itemdata[2]);
  8.         int slot = Integer.parseInt(itemdata[3]);
  9.         ItemStack in = new ItemStack(Material.getMaterial(material),amount,data);
  10.        p.getInventory().setItem(i, in);
  11.      }
  12.   }

dann ist auch der slot gleich