Ir para conteúdo
  • 0

[Resolvido] [Duvida] Salvar inventario em um arquivo


Thelike

Pergunta

12 respostass a esta questão

Posts Recomendados

Se você procurar no bukkit resources tem varios lá, chama inventory serialization

vi algo parecido porém não funfou, irei dar uma outra olhada

 

 

Meu sonho aprender isso :p

membro alertado por free post

Link para o comentário
Compartilhar em outros sites

"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.
×
×
  • Criar Novo...