Ir para conteúdo
  • 0

[Resolvido] [Duvida] Salvar inventario em um arquivo


Thelike

Pergunta

12 respostass a esta questão

Posts Recomendados

"Serializar"? Exemplo:  transformar o ItemStack em String.

public String serializeItem(ItemStack is) {
    return is.getTypeId() + ":" + is.getDurability() + "," + is.getAmount();
}

public ItemStack parseItem(String data) {
    String[] args = data.split(",");
    if (args.length < 2) return null;
    String[] type = args[0].split(":");
    if (type.length < 2) return null;
    try {
        int id = Integer.valueOf(type[0]);
        short data = Short.valueOf(type[1]);
        int amount = Integer.valueOf(args[1]);
        ItemStack item = new ItemStack(id, amount);
        item.setDurability(data);
        return item;
    } catch (NumberFormatException e) {
        return null;
    }
}

Nesse caso, só está pegando id, data e quantidade, mas tu pode implementar encantamentos, lore, etc...

 

Exemplo de uso:

String string = serializeItem(item);
// Essa String representa um item, entao salva ela e tals

ItemStack item = parseItem(string);
if (item == null) return; // Nao foi possivel obter o item da String

Pode ter uns erros pois fiz sem IDE, boa sorte.

 

@EDIT:

 

Um exemplo de como seria representado 17 maças do capiroto:

 

322:1,17

Editado por zDubsCrazy
Link para o comentário
Compartilhar em outros sites

esse só salvar até o plugin recarregar então eu preciso que salva em um arquivo mesmo

 

ñ intendi direito esse tutorial

 

"Serializar"? Exemplo:  transformar o ItemStack em String.

public String serializeItem(ItemStack is) {
    return is.getTypeId() + ":" + is.getDurability() + "," + is.getAmount();
}

public ItemStack parseItem(String data) {
    String[] args = data.split(",");
    if (args.length < 2) return null;
    String[] type = args[0].split(":");
    if (type.length < 2) return null;
    try {
        int id = Integer.valueOf(type[0]);
        short data = Short.valueOf(type[1]);
        int amount = Integer.valueOf(args[1]);
        ItemStack item = new ItemStack(id, amount);
        item.setDurability(data);
        return item;
    } catch (NumberFormatException e) {
        return null;
    }
}

Nesse caso, só está pegando id, data e quantidade, mas tu pode implementar encantamentos, lore, etc...

 

Exemplo de uso:

String string = serializeItem(item);
// Essa String representa um item, entao salva ela e tals

ItemStack item = parseItem(string);
if (item == null) return; // Nao foi possivel obter o item da String

Pode ter uns erros pois fiz sem IDE, boa sorte.

 

@EDIT:

 

Um exemplo de como seria representado 17 maças do capiroto:

 

322:1,17

deu erro no short data = Short.valueOf(type[1]);

Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi
HashMap(String, ItemStack[]) itens = new HashMap<>();

Player p = (Player)sender;
itens.put(p.getName(), p.getInventory().getContents());
//se quiser salvar em config(mas da para pegar direto do map); 
getConfig().set("Itens." + p.getName(), itens.get(p.getName()));
saveConfig();
reloadConfig();

Uma base mais fácil.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem está navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...