From 0609bc64f1268322af172c5f2e106bee703aeaa2 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 28 Dec 2024 14:59:54 +0100 Subject: [PATCH] Add json models --- .../storage/json/JsonAdapter.java | 63 +++++++++++++++++++ .../storage/{ => json}/JsonStorage.java | 5 +- .../storage/json/model/JsonDataUnion.java | 8 +++ .../json/model/JsonDisplayHologramData.java | 15 +++++ .../storage/json/model/JsonHologramData.java | 15 +++++ .../storage/json/model/JsonLocation.java | 11 ++++ .../json/model/JsonTextHologramData.java | 15 +++++ .../storage/json/model/JsonVec3f.java | 8 +++ 8 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 src/main/java/de/oliver/fancyholograms/storage/json/JsonAdapter.java rename src/main/java/de/oliver/fancyholograms/storage/{ => json}/JsonStorage.java (92%) create mode 100644 src/main/java/de/oliver/fancyholograms/storage/json/model/JsonDataUnion.java create mode 100644 src/main/java/de/oliver/fancyholograms/storage/json/model/JsonDisplayHologramData.java create mode 100644 src/main/java/de/oliver/fancyholograms/storage/json/model/JsonHologramData.java create mode 100644 src/main/java/de/oliver/fancyholograms/storage/json/model/JsonLocation.java create mode 100644 src/main/java/de/oliver/fancyholograms/storage/json/model/JsonTextHologramData.java create mode 100644 src/main/java/de/oliver/fancyholograms/storage/json/model/JsonVec3f.java diff --git a/src/main/java/de/oliver/fancyholograms/storage/json/JsonAdapter.java b/src/main/java/de/oliver/fancyholograms/storage/json/JsonAdapter.java new file mode 100644 index 00000000..75d94989 --- /dev/null +++ b/src/main/java/de/oliver/fancyholograms/storage/json/JsonAdapter.java @@ -0,0 +1,63 @@ +package de.oliver.fancyholograms.storage.json; + +import de.oliver.fancyholograms.api.data.HologramData; +import de.oliver.fancyholograms.api.data.TextHologramData; +import de.oliver.fancyholograms.storage.json.model.*; + +public class JsonAdapter { + + public static JsonDataUnion toJson(TextHologramData data) { + JsonHologramData hologramData = new JsonHologramData( + data.getName(), + data.getType(), + new JsonLocation( + data.getLocation().getWorld().getName(), + data.getLocation().getX(), + data.getLocation().getY(), + data.getLocation().getZ(), + data.getLocation().getYaw(), + data.getLocation().getPitch() + ), + data.getVisibilityDistance(), + data.getVisibility(), + data.getLinkedNpcName() + ); + + JsonDisplayHologramData displayHologramData = new JsonDisplayHologramData( + new JsonVec3f( + data.getScale().x(), + data.getScale().y(), + data.getScale().z() + ), + new JsonVec3f( + data.getTranslation().x(), + data.getTranslation().y(), + data.getTranslation().z() + ), + data.getShadowRadius(), + data.getShadowStrength(), + data.getBrightness().getBlockLight(), + data.getBrightness().getSkyLight(), + data.getBillboard() + ); + + JsonTextHologramData textHologramData = new JsonTextHologramData( + data.getText(), + data.hasTextShadow(), + data.isSeeThrough(), + data.getTextAlignment(), + data.getTextUpdateInterval(), + data.getBackground().toString() + ); + + return new JsonDataUnion( + hologramData, + displayHologramData, + textHologramData + ); + } + + public static HologramData fromJson(JsonDataUnion data) { + return null; + } +} diff --git a/src/main/java/de/oliver/fancyholograms/storage/JsonStorage.java b/src/main/java/de/oliver/fancyholograms/storage/json/JsonStorage.java similarity index 92% rename from src/main/java/de/oliver/fancyholograms/storage/JsonStorage.java rename to src/main/java/de/oliver/fancyholograms/storage/json/JsonStorage.java index d702ef4c..8ddc44f6 100644 --- a/src/main/java/de/oliver/fancyholograms/storage/JsonStorage.java +++ b/src/main/java/de/oliver/fancyholograms/storage/json/JsonStorage.java @@ -1,10 +1,11 @@ -package de.oliver.fancyholograms.storage; +package de.oliver.fancyholograms.storage.json; import de.oliver.fancyholograms.api.FancyHolograms; import de.oliver.fancyholograms.api.data.BlockHologramData; import de.oliver.fancyholograms.api.data.HologramData; import de.oliver.fancyholograms.api.data.ItemHologramData; import de.oliver.fancyholograms.api.data.TextHologramData; +import de.oliver.fancyholograms.storage.HologramStorage; import de.oliver.fancylib.jdb.JDB; import java.io.IOException; @@ -12,7 +13,7 @@ import java.util.Collection; import java.util.List; -public class JsonStorage implements HologramStorage{ +public class JsonStorage implements HologramStorage { private final JDB jdb; diff --git a/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonDataUnion.java b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonDataUnion.java new file mode 100644 index 00000000..371314d9 --- /dev/null +++ b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonDataUnion.java @@ -0,0 +1,8 @@ +package de.oliver.fancyholograms.storage.json.model; + +public record JsonDataUnion( + JsonHologramData hologram_data, + JsonDisplayHologramData display_hologram_data, + JsonTextHologramData text_hologram_data +) { +} diff --git a/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonDisplayHologramData.java b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonDisplayHologramData.java new file mode 100644 index 00000000..312a1549 --- /dev/null +++ b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonDisplayHologramData.java @@ -0,0 +1,15 @@ +package de.oliver.fancyholograms.storage.json.model; + +import org.bukkit.entity.Display; + +public record JsonDisplayHologramData( + JsonVec3f scale, + JsonVec3f translation, + float shadow_radius, + float shadow_strength, + int block_brightness, + int sky_brightness, + Display.Billboard billboard +) { +} + diff --git a/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonHologramData.java b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonHologramData.java new file mode 100644 index 00000000..70eb1084 --- /dev/null +++ b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonHologramData.java @@ -0,0 +1,15 @@ +package de.oliver.fancyholograms.storage.json.model; + +import de.oliver.fancyholograms.api.data.property.Visibility; +import de.oliver.fancyholograms.api.hologram.HologramType; + +public record JsonHologramData( + String name, + HologramType type, + JsonLocation location, + int visibilityDistance, + Visibility visibility, + String linkedNpcName +) { +} + diff --git a/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonLocation.java b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonLocation.java new file mode 100644 index 00000000..fcc74581 --- /dev/null +++ b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonLocation.java @@ -0,0 +1,11 @@ +package de.oliver.fancyholograms.storage.json.model; + +public record JsonLocation( + String world, + double x, + double y, + double z, + float yaw, + float pitch +) { +} diff --git a/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonTextHologramData.java b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonTextHologramData.java new file mode 100644 index 00000000..4bb26216 --- /dev/null +++ b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonTextHologramData.java @@ -0,0 +1,15 @@ +package de.oliver.fancyholograms.storage.json.model; + +import org.bukkit.entity.TextDisplay; + +import java.util.List; + +public record JsonTextHologramData( + List text, + boolean text_shadow, + boolean see_through, + TextDisplay.TextAlignment text_alignment, + int text_update_interval, + String background_color +) { +} diff --git a/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonVec3f.java b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonVec3f.java new file mode 100644 index 00000000..563fec90 --- /dev/null +++ b/src/main/java/de/oliver/fancyholograms/storage/json/model/JsonVec3f.java @@ -0,0 +1,8 @@ +package de.oliver.fancyholograms.storage.json.model; + +public record JsonVec3f( + float x, + float y, + float z +) { +}