From 603ddd2151ccfe8c83baa4a178e5e070709582ae Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 15 Jun 2025 19:01:29 +0200 Subject: [PATCH] fancydialogs: Refactor dialog data, storage and dialog showing --- .../fancydialogs/api/Dialog.java | 34 ++------- .../fancydialogs/api/data/DialogAction.java | 15 +--- .../fancydialogs/api/data/DialogBodyData.java | 6 ++ .../fancydialogs/api/data/DialogButton.java | 8 +++ .../fancydialogs/api/data/DialogData.java | 9 +-- .../api/data/body/DialogBody.java | 4 -- .../fancydialogs/api/data/body/ItemBody.java | 16 ----- .../fancydialogs/api/data/body/TextBody.java | 10 --- .../fancydialogs/api/data/click/Button.java | 11 --- .../api/data/click/ClickAction.java | 10 --- .../api/data/click/ClickEvent.java | 12 ---- .../api/data/input/CheckboxInput.java | 12 ---- .../api/data/input/ComboboxInput.java | 22 ------ .../api/data/input/DialogInput.java | 4 -- .../api/data/input/SliderInput.java | 22 ------ .../api/data/input/TextInput.java | 13 ---- .../api/data/submit/SubmitMethod.java | 4 -- .../api/data/types/ConfirmationDialog.java | 13 ---- .../api/data/types/DialogListDialog.java | 17 ----- .../api/data/types/DialogType.java | 4 -- .../api/data/types/InputFormDialog.java | 22 ------ .../api/data/types/MultiActionDialog.java | 18 ----- .../api/data/types/NoticeDialog.java | 11 --- .../api/data/types/ServerLinksDialog.java | 14 ---- .../fancydialogs/FancyDialogsPlugin.java | 36 +++++++++- .../config/FancyDialogsConfig.java | 2 +- .../fancydialogs/dialog/DialogImpl.java | 72 +++++++++++++++++-- .../listener/PlayerJoinListener.java | 4 ++ .../fancydialogs/storage/DialogStorage.java | 13 ++-- .../storage/JsonDialogStorage.java | 37 ++++------ .../src/main/resources/languages/default.yml | 3 +- 31 files changed, 151 insertions(+), 327 deletions(-) create mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogBodyData.java create mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogButton.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/DialogBody.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/ItemBody.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/TextBody.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/Button.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/ClickAction.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/ClickEvent.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/CheckboxInput.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/ComboboxInput.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/DialogInput.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/SliderInput.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/TextInput.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/submit/SubmitMethod.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/ConfirmationDialog.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/DialogListDialog.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/DialogType.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/InputFormDialog.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/MultiActionDialog.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/NoticeDialog.java delete mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/ServerLinksDialog.java diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/Dialog.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/Dialog.java index da172a99..0435d23c 100644 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/Dialog.java +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/Dialog.java @@ -1,20 +1,16 @@ package com.fancyinnovations.fancydialogs.api; import com.fancyinnovations.fancydialogs.api.data.DialogData; -import com.fancyinnovations.fancydialogs.api.data.types.DialogType; import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; public abstract class Dialog { - private String id; - private Type type; - private DialogType dialog; + protected String id; + protected DialogData data; - public Dialog(@NotNull String id, @NotNull Type type, @NotNull DialogType dialog) { + public Dialog(String id, DialogData data) { this.id = id; - this.type = type; - this.dialog = dialog; + this.data = data; } public Dialog() { @@ -24,27 +20,11 @@ public abstract class Dialog { abstract public void close(Player player); - public @NotNull String getId() { + public String getId() { return id; } - public @NotNull Type getType() { - return type; - } - - public void setType(@NotNull Type type) { - this.type = type; - } - - public @NotNull DialogType getDialog() { - return dialog; - } - - public void setDialog(@NotNull DialogType dialog) { - this.dialog = dialog; - } - - public enum Type { - NOTICE, + public DialogData getData() { + return data; } } diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogAction.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogAction.java index 8065f2e3..6e6062ee 100644 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogAction.java +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogAction.java @@ -1,17 +1,4 @@ package com.fancyinnovations.fancydialogs.api.data; -public enum DialogAction { - - CLOSE(0, "close"), - NONE(1, "none"), - WAIT_FOR_RESPONSE(2, "wait_for_response"); - - private final int id; - private final String name; - - DialogAction(final int id, final String name) { - this.id = id; - this.name = name; - } - +public abstract class DialogAction { } diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogBodyData.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogBodyData.java new file mode 100644 index 00000000..bcb1ba96 --- /dev/null +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogBodyData.java @@ -0,0 +1,6 @@ +package com.fancyinnovations.fancydialogs.api.data; + +public record DialogBodyData( + String text +) { +} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogButton.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogButton.java new file mode 100644 index 00000000..a43bb92b --- /dev/null +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogButton.java @@ -0,0 +1,8 @@ +package com.fancyinnovations.fancydialogs.api.data; + +public record DialogButton( + String label, + String tooltip, + String action +) { +} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogData.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogData.java index b8c403ab..3d72b04c 100644 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogData.java +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogData.java @@ -1,20 +1,17 @@ package com.fancyinnovations.fancydialogs.api.data; -import com.fancyinnovations.fancydialogs.api.data.body.DialogBody; -import com.fancyinnovations.fancydialogs.api.data.input.DialogInput; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; public record DialogData( + @NotNull String id, @NotNull String title, @Nullable String externalTitle, boolean canCloseWithEscape, - boolean pause, // only relevant in single player - @NotNull DialogAction afterAction, - @NotNull List body, - @NotNull List inputs + @NotNull List body, + @NotNull List buttons ) { } diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/DialogBody.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/DialogBody.java deleted file mode 100644 index 0b4daafb..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/DialogBody.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.body; - -public interface DialogBody { -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/ItemBody.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/ItemBody.java deleted file mode 100644 index 45a2bdf5..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/ItemBody.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.body; - -import org.bukkit.inventory.ItemStack; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public record ItemBody( - @NotNull ItemStack item, - @Nullable TextBody description, - boolean showDecorations, - boolean showTooltip, - int width, - int height -) implements DialogBody { - -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/TextBody.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/TextBody.java deleted file mode 100644 index 147b5541..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/body/TextBody.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.body; - -import org.jetbrains.annotations.NotNull; - -public record TextBody( - @NotNull String content, - int width -) implements DialogBody { - -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/Button.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/Button.java deleted file mode 100644 index e195d9ae..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/Button.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.click; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public record Button( - @NotNull String label, - @Nullable String tooltip, - int width -) { -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/ClickAction.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/ClickAction.java deleted file mode 100644 index 388df071..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/ClickAction.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.click; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public record ClickAction( - @NotNull Button button, - @Nullable ClickEvent onClick -) { -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/ClickEvent.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/ClickEvent.java deleted file mode 100644 index 4c5d55ce..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/click/ClickEvent.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.click; - -public enum ClickEvent { - OPEN_URL, - OPEN_FILE, - RUN_COMMAND, - SUGGEST_COMMAND, - SHOW_DIALOG, - CHANGE_PAGE, - COPY_TO_CLIPBOARD, - CUSTOM, -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/CheckboxInput.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/CheckboxInput.java deleted file mode 100644 index f2ce4c51..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/CheckboxInput.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.input; - -import org.jetbrains.annotations.NotNull; - -public record CheckboxInput( - @NotNull String label, - boolean initial, - @NotNull String onTrue, - @NotNull String onFalse -) implements DialogInput { - -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/ComboboxInput.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/ComboboxInput.java deleted file mode 100644 index cf533e8b..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/ComboboxInput.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.input; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public record ComboboxInput ( - int width, - @NotNull List entries, - @NotNull String label, - boolean labelVisible -) implements DialogInput { - - public record Entry( - @NotNull String id, - @Nullable String display, - boolean initial - ) { - - } -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/DialogInput.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/DialogInput.java deleted file mode 100644 index a2f6353d..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/DialogInput.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.input; - -public interface DialogInput { -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/SliderInput.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/SliderInput.java deleted file mode 100644 index 1d2937e4..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/SliderInput.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.input; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public record SliderInput( - int width, - @NotNull String label, - @NotNull String labelFormat, - @NotNull RangeInfo rangeInfo -) implements DialogInput { - - public record RangeInfo( - double start, - double end, - @Nullable Double initial, - int steps - ) { - - } - -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/TextInput.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/TextInput.java deleted file mode 100644 index e7a03548..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/input/TextInput.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.input; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public record TextInput( - int width, - @NotNull String label, - boolean labelVisible, - @Nullable String initial -) implements DialogInput { - -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/submit/SubmitMethod.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/submit/SubmitMethod.java deleted file mode 100644 index 2e703654..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/submit/SubmitMethod.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.submit; - -public interface SubmitMethod { -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/ConfirmationDialog.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/ConfirmationDialog.java deleted file mode 100644 index 2550ddc9..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/ConfirmationDialog.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.types; - -import com.fancyinnovations.fancydialogs.api.data.DialogData; -import com.fancyinnovations.fancydialogs.api.data.click.ClickAction; -import org.jetbrains.annotations.NotNull; - -public record ConfirmationDialog( - @NotNull DialogData common, - @NotNull ClickAction yesButton, - @NotNull ClickAction noButton -) implements DialogType { - -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/DialogListDialog.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/DialogListDialog.java deleted file mode 100644 index 51761066..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/DialogListDialog.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.types; - -import com.fancyinnovations.fancydialogs.api.data.DialogData; -import com.fancyinnovations.fancydialogs.api.data.click.ClickEvent; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public record DialogListDialog( - @NotNull DialogData common, - @NotNull List dialogs, - @Nullable ClickEvent exitAction, - int columns, - int buttonWidth -) implements DialogType { -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/DialogType.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/DialogType.java deleted file mode 100644 index 0e0642ae..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/DialogType.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.types; - -public interface DialogType { -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/InputFormDialog.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/InputFormDialog.java deleted file mode 100644 index 120cf173..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/InputFormDialog.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.types; - -import com.fancyinnovations.fancydialogs.api.data.click.Button; -import com.fancyinnovations.fancydialogs.api.data.input.DialogInput; -import com.fancyinnovations.fancydialogs.api.data.submit.SubmitMethod; -import org.jetbrains.annotations.NotNull; - -public interface InputFormDialog extends DialogType { - - record Input( - @NotNull String key, - @NotNull DialogInput control - ) { - } - - record SubmitAction( - @NotNull String id, - @NotNull Button buttonData, - @NotNull SubmitMethod method - ) { - } -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/MultiActionDialog.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/MultiActionDialog.java deleted file mode 100644 index 0f516e51..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/MultiActionDialog.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.types; - -import com.fancyinnovations.fancydialogs.api.data.DialogData; -import com.fancyinnovations.fancydialogs.api.data.click.ClickAction; -import com.fancyinnovations.fancydialogs.api.data.click.ClickEvent; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public record MultiActionDialog( - @NotNull DialogData common, - @NotNull List actions, - @Nullable ClickEvent exitAction, - int columns -) implements DialogType { - -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/NoticeDialog.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/NoticeDialog.java deleted file mode 100644 index 7dbb572a..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/NoticeDialog.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.types; - -import com.fancyinnovations.fancydialogs.api.data.DialogData; -import com.fancyinnovations.fancydialogs.api.data.click.ClickAction; -import org.jetbrains.annotations.NotNull; - -public record NoticeDialog( - @NotNull DialogData common, - @NotNull ClickAction button -) implements DialogType { -} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/ServerLinksDialog.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/ServerLinksDialog.java deleted file mode 100644 index 335f57dc..00000000 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/types/ServerLinksDialog.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.fancyinnovations.fancydialogs.api.data.types; - -import com.fancyinnovations.fancydialogs.api.data.DialogData; -import com.fancyinnovations.fancydialogs.api.data.click.ClickEvent; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public record ServerLinksDialog( - @NotNull DialogData common, - @Nullable ClickEvent exitAction, - int columns, - int buttonWidth -) implements DialogType { -} diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java index cae8a121..1b41eac8 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java @@ -1,9 +1,13 @@ package com.fancyinnovations.fancydialogs; import com.fancyinnovations.fancydialogs.api.Dialog; +import com.fancyinnovations.fancydialogs.api.data.DialogBodyData; +import com.fancyinnovations.fancydialogs.api.data.DialogButton; +import com.fancyinnovations.fancydialogs.api.data.DialogData; import com.fancyinnovations.fancydialogs.commands.TutorialCMD; import com.fancyinnovations.fancydialogs.config.FDFeatureFlags; import com.fancyinnovations.fancydialogs.config.FancyDialogsConfig; +import com.fancyinnovations.fancydialogs.dialog.DialogImpl; import com.fancyinnovations.fancydialogs.listener.PlayerJoinListener; import com.fancyinnovations.fancydialogs.registry.DialogRegistry; import com.fancyinnovations.fancydialogs.storage.DialogStorage; @@ -86,7 +90,33 @@ public class FancyDialogsPlugin extends JavaPlugin { translator.setSelectedLanguage(selectedLanguage); dialogStorage = new JsonDialogStorage(); - Collection dialogs = dialogStorage.loadAll(); + Collection dialogData = dialogStorage.loadAll(); + + DialogData welcomeDialog = new DialogData( + "welcome_to_fancydialogs_dialog", + "Welcome to FancyDialogs", + "Welcome to FancyDialogs", + false, + List.of( + new DialogBodyData("Welcome to FancyDialogs! This is a sample dialog to get you started.") + ), + List.of( + new DialogButton( + "Close", + "Close the dialog", + "close_dialog" + ) + ) + ); + dialogStorage.save(welcomeDialog); + dialogData.add(welcomeDialog); + + List dialogs = new ArrayList<>(); + for (DialogData data : dialogData) { + Dialog dialog = new DialogImpl(data.id(), data); + dialogs.add(dialog); + fancyLogger.debug("Loaded dialog: %s".formatted(data.id())); + } dialogRegistry = new DialogRegistry(); dialogs.forEach(dialogRegistry::register); @@ -131,6 +161,10 @@ public class FancyDialogsPlugin extends JavaPlugin { @Override public void onDisable() { + for (Dialog dialog : dialogRegistry.getAll()) { + dialogStorage.save(dialog.getData()); + } + fancyLogger.info("Successfully disabled FancyDialogs version %s".formatted(getDescription().getVersion())); } diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/config/FancyDialogsConfig.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/config/FancyDialogsConfig.java index 3920109a..3eb92ee4 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/config/FancyDialogsConfig.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/config/FancyDialogsConfig.java @@ -23,7 +23,7 @@ public class FancyDialogsConfig { logLevel = (String) ConfigHelper.getOrDefault(config, "log_level", "INFO"); config.setInlineComments("log_level", List.of("The log level of the plugin. Possible values: DEBUG, INFO, WARN, ERROR.")); - welcomeDialogID = (String) ConfigHelper.getOrDefault(config, "welcome_dialog_id", "welcome-dialog"); + welcomeDialogID = (String) ConfigHelper.getOrDefault(config, "welcome_dialog_id", "welcome_to_fancydialogs_dialog"); config.setInlineComments("welcome_dialog_id", List.of("The ID of the dialog which will be shown to the player when they join the server for the first time.")); quickActionsDialogID = (String) ConfigHelper.getOrDefault(config, "quick_actions_dialog_id", "quick-actions-dialog"); diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java index f2d5e160..7c906106 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java @@ -1,24 +1,84 @@ package com.fancyinnovations.fancydialogs.dialog; import com.fancyinnovations.fancydialogs.api.Dialog; -import com.fancyinnovations.fancydialogs.api.data.types.DialogType; +import com.fancyinnovations.fancydialogs.api.data.DialogBodyData; +import com.fancyinnovations.fancydialogs.api.data.DialogButton; +import com.fancyinnovations.fancydialogs.api.data.DialogData; +import de.oliver.fancysitula.api.dialogs.FS_CommonDialogData; +import de.oliver.fancysitula.api.dialogs.FS_DialogAction; +import de.oliver.fancysitula.api.dialogs.actions.FS_CommonButtonData; +import de.oliver.fancysitula.api.dialogs.actions.FS_DialogActionButton; +import de.oliver.fancysitula.api.dialogs.actions.FS_DialogCustomAction; +import de.oliver.fancysitula.api.dialogs.body.FS_DialogBody; +import de.oliver.fancysitula.api.dialogs.body.FS_DialogTextBody; +import de.oliver.fancysitula.api.dialogs.types.FS_MultiActionDialog; +import de.oliver.fancysitula.api.entities.FS_RealPlayer; +import de.oliver.fancysitula.factories.FancySitula; import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; public class DialogImpl extends Dialog { - public DialogImpl(@NotNull String id, @NotNull Type type, @NotNull DialogType dialog) { - super(id, type, dialog); + private FS_MultiActionDialog fsDialog; + + public DialogImpl(String id, DialogData data) { + super(id, data); + init(); + } + + private void init() { + List body = new ArrayList<>(); + for (DialogBodyData bodyData : data.body()) { + FS_DialogTextBody fsDialogTextBody = new FS_DialogTextBody( + bodyData.text(), + 200 // default text width + ); + body.add(fsDialogTextBody); + } + + List actions = new ArrayList<>(); + for (DialogButton button : data.buttons()) { + FS_DialogActionButton fsDialogActionButton = new FS_DialogActionButton( + new FS_CommonButtonData( + button.label(), + button.tooltip(), + 150 // default button width + ), + new FS_DialogCustomAction("fancydialogs_dialog_action", button.action()) + ); + actions.add(fsDialogActionButton); + } + + this.fsDialog = new FS_MultiActionDialog( + new FS_CommonDialogData( + data.title(), + data.externalTitle(), + data.canCloseWithEscape(), + false, + FS_DialogAction.CLOSE, + body, + new ArrayList<>() // inputs + ), + actions, // actions + null, + 2 + ); } @Override public void open(Player player) { - // TODO open dialog packet + FancySitula.PACKET_FACTORY + .createShowDialogPacket(fsDialog) + .send(new FS_RealPlayer(player)); } @Override public void close(Player player) { - // TODO close dialog packet + FancySitula.PACKET_FACTORY + .createClearDialogPacket() + .send(new FS_RealPlayer(player)); } } diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/PlayerJoinListener.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/PlayerJoinListener.java index 95949b03..282393b5 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/PlayerJoinListener.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/PlayerJoinListener.java @@ -11,6 +11,10 @@ public class PlayerJoinListener implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { boolean isNewPlayer = !event.getPlayer().hasPlayedBefore(); + if (FancyDialogsPlugin.get().getFancyDialogsConfig().getLogLevel().equalsIgnoreCase("debug")) { + isNewPlayer = true; + } + if (isNewPlayer) { String welcomeDialogID = FancyDialogsPlugin.get().getFancyDialogsConfig().getWelcomeDialogID(); Dialog dialog = FancyDialogsPlugin.get().getDialogRegistry().get(welcomeDialogID); diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/storage/DialogStorage.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/storage/DialogStorage.java index 2cd7cbf5..dac77a31 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/storage/DialogStorage.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/storage/DialogStorage.java @@ -1,20 +1,17 @@ package com.fancyinnovations.fancydialogs.storage; -import com.fancyinnovations.fancydialogs.api.Dialog; -import com.fancyinnovations.fancydialogs.api.data.types.DialogType; +import com.fancyinnovations.fancydialogs.api.data.DialogData; import java.util.Collection; public interface DialogStorage { - void save(Dialog dialog); + void save(DialogData dialog); - void saveBatch(Collection dialogs); + void saveBatch(Collection dialogs); - void delete(Dialog dialog); + void delete(DialogData dialog); - Collection loadAll(Dialog.Type type); - - Collection loadAll(); + Collection loadAll(); } diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/storage/JsonDialogStorage.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/storage/JsonDialogStorage.java index 8296fda5..a6bd3e86 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/storage/JsonDialogStorage.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/storage/JsonDialogStorage.java @@ -1,7 +1,7 @@ package com.fancyinnovations.fancydialogs.storage; import com.fancyinnovations.fancydialogs.FancyDialogsPlugin; -import com.fancyinnovations.fancydialogs.api.Dialog; +import com.fancyinnovations.fancydialogs.api.data.DialogData; import de.oliver.jdb.JDB; import java.io.IOException; @@ -9,7 +9,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -public class JsonDialogStorage implements DialogStorage{ +public class JsonDialogStorage implements DialogStorage { private final JDB jdb; @@ -18,49 +18,38 @@ public class JsonDialogStorage implements DialogStorage{ } @Override - public void save(Dialog dialog) { + public void save(DialogData dialog) { try { - jdb.set(dialog.getType().name().toLowerCase() + "/" + dialog.getId(), dialog); + jdb.set(dialog.id(), dialog); } catch (IOException e) { - FancyDialogsPlugin.get().getFancyLogger().error("Failed to save dialog " + dialog.getId()); + FancyDialogsPlugin.get().getFancyLogger().error("Failed to save dialog " + dialog.id()); FancyDialogsPlugin.get().getFancyLogger().error(e); } } @Override - public void saveBatch(Collection dialogs) { - for (Dialog dialog : dialogs) { + public void saveBatch(Collection dialogs) { + for (DialogData dialog : dialogs) { save(dialog); } } @Override - public void delete(Dialog dialog) { - jdb.delete(dialog.getType().name().toLowerCase() + "/" + dialog.getId()); + public void delete(DialogData dialog) { + jdb.delete(dialog.id()); } @Override - public Collection loadAll(Dialog.Type type) { - List dialogs = new ArrayList<>(); + public Collection loadAll() { + List dialogs = new ArrayList<>(); try { - dialogs = jdb.getAll(type.name().toLowerCase(), Dialog.class); + dialogs = jdb.getAll("", DialogData.class); } catch (IOException e) { - FancyDialogsPlugin.get().getFancyLogger().error("Failed to load all dialogs for type: " + type); + FancyDialogsPlugin.get().getFancyLogger().error("Failed to load all dialogs"); FancyDialogsPlugin.get().getFancyLogger().error(e); } return dialogs; } - - @Override - public Collection loadAll() { - List dialogs = new ArrayList<>(); - - for (Dialog.Type t : Dialog.Type.values()) { - dialogs.addAll(loadAll(t)); - } - - return dialogs; - } } diff --git a/plugins/fancydialogs/src/main/resources/languages/default.yml b/plugins/fancydialogs/src/main/resources/languages/default.yml index c301b621..60d1d76f 100644 --- a/plugins/fancydialogs/src/main/resources/languages/default.yml +++ b/plugins/fancydialogs/src/main/resources/languages/default.yml @@ -1,2 +1,3 @@ language_name: default -messages: \ No newline at end of file +messages: + foo: "Foo" \ No newline at end of file