mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
fancydialogs: Implement dialog storage with JSON support
This commit is contained in:
@@ -1,19 +1,25 @@
|
||||
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 final @NotNull String id;
|
||||
private @NotNull DialogType dialog;
|
||||
private String id;
|
||||
private Type type;
|
||||
private DialogType dialog;
|
||||
|
||||
public Dialog(@NotNull String id, @NotNull DialogType dialog) {
|
||||
public Dialog(@NotNull String id, @NotNull Type type, @NotNull DialogType dialog) {
|
||||
this.id = id;
|
||||
this.type = type;
|
||||
this.dialog = dialog;
|
||||
}
|
||||
|
||||
public Dialog() {
|
||||
}
|
||||
|
||||
abstract public void open(Player player);
|
||||
|
||||
abstract public void close(Player player);
|
||||
@@ -22,6 +28,14 @@ public abstract class Dialog {
|
||||
return id;
|
||||
}
|
||||
|
||||
public @NotNull Type getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(@NotNull Type type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public @NotNull DialogType getDialog() {
|
||||
return dialog;
|
||||
}
|
||||
@@ -29,4 +43,8 @@ public abstract class Dialog {
|
||||
public void setDialog(@NotNull DialogType dialog) {
|
||||
this.dialog = dialog;
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
NOTICE,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.fancyinnovations.fancydialogs;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.registry.DialogRegistry;
|
||||
import com.fancyinnovations.fancydialogs.storage.DialogStorage;
|
||||
import com.fancyinnovations.fancydialogs.storage.JsonDialogStorage;
|
||||
import de.oliver.fancyanalytics.logger.ExtendedFancyLogger;
|
||||
import de.oliver.fancyanalytics.logger.LogLevel;
|
||||
import de.oliver.fancyanalytics.logger.appender.Appender;
|
||||
@@ -21,6 +23,7 @@ public class FancyDialogsPlugin extends JavaPlugin {
|
||||
private final ExtendedFancyLogger fancyLogger;
|
||||
|
||||
private DialogRegistry dialogRegistry;
|
||||
private DialogStorage dialogStorage;
|
||||
|
||||
public FancyDialogsPlugin() {
|
||||
INSTANCE = this;
|
||||
@@ -43,6 +46,7 @@ public class FancyDialogsPlugin extends JavaPlugin {
|
||||
@Override
|
||||
public void onLoad() {
|
||||
dialogRegistry = new DialogRegistry();
|
||||
dialogStorage = new JsonDialogStorage();
|
||||
|
||||
fancyLogger.info("Successfully loaded FancyDialogs version %s".formatted(getDescription().getVersion()));
|
||||
}
|
||||
@@ -71,4 +75,16 @@ public class FancyDialogsPlugin extends JavaPlugin {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
public ExtendedFancyLogger getFancyLogger() {
|
||||
return fancyLogger;
|
||||
}
|
||||
|
||||
public DialogRegistry getDialogRegistry() {
|
||||
return dialogRegistry;
|
||||
}
|
||||
|
||||
public DialogStorage getDialogStorage() {
|
||||
return dialogStorage;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.fancyinnovations.fancydialogs.storage;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||
import com.fancyinnovations.fancydialogs.api.data.types.DialogType;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public interface DialogStorage {
|
||||
|
||||
void save(Dialog dialog);
|
||||
|
||||
void saveBatch(Collection<Dialog> dialogs);
|
||||
|
||||
void delete(Dialog dialog);
|
||||
|
||||
Collection<Dialog> loadAll(Dialog.Type type);
|
||||
|
||||
Collection<Dialog> loadAll();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.fancyinnovations.fancydialogs.storage;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
|
||||
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||
import de.oliver.jdb.JDB;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class JsonDialogStorage implements DialogStorage{
|
||||
|
||||
private final JDB jdb;
|
||||
|
||||
public JsonDialogStorage() {
|
||||
this.jdb = new JDB("plugins/FancyDialogs/data/dialogs");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(Dialog dialog) {
|
||||
try {
|
||||
jdb.set(dialog.getType().name().toLowerCase() + "/" + dialog.getId(), dialog);
|
||||
} catch (IOException e) {
|
||||
FancyDialogsPlugin.get().getFancyLogger().error("Failed to save dialog " + dialog.getId());
|
||||
FancyDialogsPlugin.get().getFancyLogger().error(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveBatch(Collection<Dialog> dialogs) {
|
||||
for (Dialog dialog : dialogs) {
|
||||
save(dialog);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(Dialog dialog) {
|
||||
jdb.delete(dialog.getType().name().toLowerCase() + "/" + dialog.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Dialog> loadAll(Dialog.Type type) {
|
||||
List<Dialog> dialogs = new ArrayList<>();
|
||||
|
||||
try {
|
||||
dialogs = jdb.getAll(type.name().toLowerCase(), Dialog.class);
|
||||
} catch (IOException e) {
|
||||
FancyDialogsPlugin.get().getFancyLogger().error("Failed to load all dialogs for type: " + type);
|
||||
FancyDialogsPlugin.get().getFancyLogger().error(e);
|
||||
}
|
||||
|
||||
return dialogs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Dialog> loadAll() {
|
||||
List<Dialog> dialogs = new ArrayList<>();
|
||||
|
||||
for (Dialog.Type t : Dialog.Type.values()) {
|
||||
dialogs.addAll(loadAll(t));
|
||||
}
|
||||
|
||||
return dialogs;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user