From a67be52be8990f5807ba42857ff278c529b99f56 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 15 May 2025 18:56:44 +0200 Subject: [PATCH] fancydialogs: Add dialog class --- plugins/fancydialogs/api/build.gradle.kts | 2 + .../fancydialogs/api/Dialog.java | 56 +++++++++++++++++++ plugins/fancydialogs/build.gradle.kts | 2 + 3 files changed, 60 insertions(+) create mode 100644 plugins/fancydialogs/api/src/main/java/com/fancyinnovations/fancydialogs/api/Dialog.java diff --git a/plugins/fancydialogs/api/build.gradle.kts b/plugins/fancydialogs/api/build.gradle.kts index 7e199753..a38ac88f 100644 --- a/plugins/fancydialogs/api/build.gradle.kts +++ b/plugins/fancydialogs/api/build.gradle.kts @@ -13,6 +13,8 @@ dependencies { compileOnly("de.oliver.FancyAnalytics:logger:0.0.6") implementation("org.lushplugins:ChatColorHandler:5.1.3") + + implementation("org.jetbrains:annotations:24.0.0") } tasks { diff --git a/plugins/fancydialogs/api/src/main/java/com/fancyinnovations/fancydialogs/api/Dialog.java b/plugins/fancydialogs/api/src/main/java/com/fancyinnovations/fancydialogs/api/Dialog.java new file mode 100644 index 00000000..8e682b7f --- /dev/null +++ b/plugins/fancydialogs/api/src/main/java/com/fancyinnovations/fancydialogs/api/Dialog.java @@ -0,0 +1,56 @@ +package com.fancyinnovations.fancydialogs.api; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public abstract class Dialog { + + private final @NotNull String id; + private @NotNull String title; + private @Nullable String externalTitle; + private boolean canCloseWithEscape; + + /** + * @param externalTitle if null, the title will be used + * @param canCloseWithEscape default is true + */ + public Dialog(@NotNull String id, @NotNull String title, @Nullable String externalTitle, @Nullable Boolean canCloseWithEscape) { + this.id = id; + this.title = title; + this.externalTitle = externalTitle == null ? title : externalTitle; + this.canCloseWithEscape = canCloseWithEscape == null || canCloseWithEscape; + } + + abstract public void show(Player player); + + abstract public void close(Player player); + + public @NotNull String getId() { + return id; + } + + public @NotNull String getTitle() { + return title; + } + + public void setTitle(@NotNull String title) { + this.title = title; + } + + public @Nullable String getExternalTitle() { + return externalTitle; + } + + public void setExternalTitle(@Nullable String externalTitle) { + this.externalTitle = externalTitle; + } + + public boolean canCloseWithEscape() { + return canCloseWithEscape; + } + + public void setCanCloseWithEscape(boolean canCloseWithEscape) { + this.canCloseWithEscape = canCloseWithEscape; + } +} diff --git a/plugins/fancydialogs/build.gradle.kts b/plugins/fancydialogs/build.gradle.kts index e408f0eb..ed7e8cd4 100644 --- a/plugins/fancydialogs/build.gradle.kts +++ b/plugins/fancydialogs/build.gradle.kts @@ -55,6 +55,8 @@ dependencies { implementation("de.oliver.FancyAnalytics:logger:0.0.6") compileOnly("org.lushplugins:ChatColorHandler:5.1.3") + + implementation("org.jetbrains:annotations:24.0.0") } paper {