fancyholograms v3: Fix ItemHologramData JSON serialization using Base64 to prevent corrupted item data (#114)

* Fixed broken item hologram saving

before is used to save with illegal characters:
"\u001f�\b\u0000\u0000\u0000\u0000\u0000\u0000�\u0005��\t�0\f\u0005ЯE\u0010����xv\u0006oRBS1�&���}o\u0001\u0012֓���]L��1\nco��8=q�P3�����ɛy�T��\u00000�\u0007�^��F\u0000\u0000\u0000"

now works as intended:
"H4sIAAAAAAAA/0WOMQ7CMBAEF6wgMA0FHeIjlIg30CHL2Bdiyfah86XgFzyG/wGpMvXMai1gsL149VeSlrgCu9sayxRxLKlSEN/rKZPXgcQNLI2cl8Ji0AUeqwJYWNjA5cmVqjaL/RzGF0UXOE++kccd3/SBxWE2wtiUiyscKbv4/7HBqs/stXXT9PmNiR+zY1CZpwAAAA=="

* Forgot to remove my comment

code must look clean!!
This commit is contained in:
Renokas1
2025-09-23 18:08:14 +03:00
committed by GitHub
parent 0b6dbc9cdd
commit 7179c6109e

View File

@@ -13,6 +13,8 @@ import org.bukkit.entity.Display;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.joml.Vector3f; import org.joml.Vector3f;
import java.util.Base64;
public class JsonAdapter { public class JsonAdapter {
public static JsonHologramData hologramDataToJson(com.fancyinnovations.fancyholograms.api.data.HologramData data) { public static JsonHologramData hologramDataToJson(com.fancyinnovations.fancyholograms.api.data.HologramData data) {
@@ -78,7 +80,7 @@ public class JsonAdapter {
public static JsonItemHologramData itemHologramDataToJson(com.fancyinnovations.fancyholograms.api.data.ItemHologramData data) { public static JsonItemHologramData itemHologramDataToJson(com.fancyinnovations.fancyholograms.api.data.ItemHologramData data) {
return new JsonItemHologramData( return new JsonItemHologramData(
new String(data.getItemStack().serializeAsBytes()) Base64.getEncoder().encodeToString(data.getItemStack().serializeAsBytes())
); );
} }
@@ -178,7 +180,7 @@ public class JsonAdapter {
case ITEM -> case ITEM ->
new com.fancyinnovations.fancyholograms.api.data.ItemHologramData(data.hologram_data().name(), loc) new com.fancyinnovations.fancyholograms.api.data.ItemHologramData(data.hologram_data().name(), loc)
.setItemStack(ItemStack.deserializeBytes(data.item_data().item().getBytes())) // item data .setItemStack(ItemStack.deserializeBytes(Base64.getDecoder().decode(data.item_data().item()))) // item data
.setBillboard(data.display_data().billboard()) // display data .setBillboard(data.display_data().billboard()) // display data
.setScale(scale) .setScale(scale)
.setTranslation(translation) .setTranslation(translation)