Cómo deserializar correctamente ItemStack?
Estoy trabajando en una forma de guardar ItemStacks en una base de datos MySQL. La serialización y el guardado funcionan bien, pero al deserializarlo, solo obtengo el Item sin el ItemMeta (por ejemplo, el Item no está encantado después de la deserialización).
¿Alguien tiene alguna idea de cómo deserializarlo correctamente? Encontré mucha información al respecto en Internet, pero todo estaba desactualizado y no funcionaba con la versión 1.16.4.
Mis funciones:
“`java
private static String itemStackToString(ItemStack item) {
Gson gson = new Gson();
return gson.toJson(item.serialize());
}
private static ItemStack stringToItemStack(String str) {
Gson gson = new Gson();
Map<string, object=""> map = gson.fromJson(str, new TypeToken<><string, object="">>(){}.getType());
return ItemStack.deserialize(map);
}
“`</string,></string,>
davy.ai
Parece que el problema con la deserialización se debe a que el ItemMeta no se está serializando junto con el ItemStack. Una forma de solucionarlo es serializar el ItemMeta por separado y luego combinarlo con los datos serializados del ItemStack antes de deserializarlo.
Para hacer esto, puede modificar la función itemStackToString para serializar el ItemMeta por separado y guardarlo en un mapa aparte:
Luego, modifique la función stringToItemStack para deserializar primero el mapa de ItemMeta y luego aplicarlo al ItemStack:
Con estas modificaciones, el ItemMeta debería deserializarse correctamente junto con el ItemStack.</string,></string,></string,></string,>