mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
fancydialogs: Add dialog command type
This commit is contained in:
@@ -2,8 +2,10 @@ package com.fancyinnovations.fancydialogs;
|
|||||||
|
|
||||||
import com.fancyinnovations.fancydialogs.api.Dialog;
|
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||||
import com.fancyinnovations.fancydialogs.api.data.DialogData;
|
import com.fancyinnovations.fancydialogs.api.data.DialogData;
|
||||||
|
import com.fancyinnovations.fancydialogs.commands.DialogCMD;
|
||||||
import com.fancyinnovations.fancydialogs.commands.FancyDialogsCMD;
|
import com.fancyinnovations.fancydialogs.commands.FancyDialogsCMD;
|
||||||
import com.fancyinnovations.fancydialogs.commands.TutorialCMD;
|
import com.fancyinnovations.fancydialogs.commands.TutorialCMD;
|
||||||
|
import com.fancyinnovations.fancydialogs.commands.types.DialogCommandType;
|
||||||
import com.fancyinnovations.fancydialogs.config.FDFeatureFlags;
|
import com.fancyinnovations.fancydialogs.config.FDFeatureFlags;
|
||||||
import com.fancyinnovations.fancydialogs.config.FancyDialogsConfig;
|
import com.fancyinnovations.fancydialogs.config.FancyDialogsConfig;
|
||||||
import com.fancyinnovations.fancydialogs.dialog.DialogImpl;
|
import com.fancyinnovations.fancydialogs.dialog.DialogImpl;
|
||||||
@@ -135,11 +137,7 @@ public class FancyDialogsPlugin extends JavaPlugin {
|
|||||||
|
|
||||||
registerListeners();
|
registerListeners();
|
||||||
|
|
||||||
Lamp<BukkitCommandActor> lamp = BukkitLamp
|
registerCommands();
|
||||||
.builder(this)
|
|
||||||
.build();
|
|
||||||
lamp.register(FancyDialogsCMD.INSTANCE);
|
|
||||||
lamp.register(TutorialCMD.INSTANCE);
|
|
||||||
|
|
||||||
// FancyNpcs actions
|
// FancyNpcs actions
|
||||||
new OpenDialogNpcAction().register();
|
new OpenDialogNpcAction().register();
|
||||||
@@ -160,6 +158,21 @@ public class FancyDialogsPlugin extends JavaPlugin {
|
|||||||
Bukkit.getPluginManager().registerEvents(new PlayerJoinListener(), this);
|
Bukkit.getPluginManager().registerEvents(new PlayerJoinListener(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void registerCommands() {
|
||||||
|
Lamp.Builder<BukkitCommandActor> lampBuilder = BukkitLamp
|
||||||
|
.builder(this);
|
||||||
|
|
||||||
|
lampBuilder.parameterTypes(builder -> {
|
||||||
|
builder.addParameterType(Dialog.class, DialogCommandType.INSTANCE);
|
||||||
|
});
|
||||||
|
|
||||||
|
Lamp<BukkitCommandActor> lamp = lampBuilder.build();
|
||||||
|
|
||||||
|
lamp.register(FancyDialogsCMD.INSTANCE);
|
||||||
|
lamp.register(DialogCMD.INSTANCE);
|
||||||
|
lamp.register(TutorialCMD.INSTANCE);
|
||||||
|
}
|
||||||
|
|
||||||
public ExtendedFancyLogger getFancyLogger() {
|
public ExtendedFancyLogger getFancyLogger() {
|
||||||
return fancyLogger;
|
return fancyLogger;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.fancyinnovations.fancydialogs.commands;
|
||||||
|
|
||||||
|
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
|
||||||
|
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||||
|
import de.oliver.fancylib.translations.Translator;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import revxrsal.commands.annotation.Command;
|
||||||
|
import revxrsal.commands.annotation.Description;
|
||||||
|
import revxrsal.commands.annotation.Optional;
|
||||||
|
import revxrsal.commands.bukkit.annotation.CommandPermission;
|
||||||
|
|
||||||
|
public final class DialogCMD {
|
||||||
|
|
||||||
|
public static final DialogCMD INSTANCE = new DialogCMD();
|
||||||
|
|
||||||
|
private final FancyDialogsPlugin plugin = FancyDialogsPlugin.get();
|
||||||
|
private final Translator translator = FancyDialogsPlugin.get().getTranslator();
|
||||||
|
|
||||||
|
private DialogCMD() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command("dialog open <dialog>")
|
||||||
|
@Description("Opens a dialog (for a player) by its ID")
|
||||||
|
@CommandPermission("fancydialogs.commands.registry.unregister")
|
||||||
|
public void open(
|
||||||
|
Player actor,
|
||||||
|
Dialog dialog,
|
||||||
|
@Optional Player target
|
||||||
|
) {
|
||||||
|
if (target == null) {
|
||||||
|
dialog.open(actor);
|
||||||
|
translator.translate("commands.dialog.open.self")
|
||||||
|
.replace("id", dialog.getId())
|
||||||
|
.send(actor);
|
||||||
|
} else {
|
||||||
|
dialog.open(target);
|
||||||
|
translator.translate("commands.dialog.open.other")
|
||||||
|
.replace("id", dialog.getId())
|
||||||
|
.replace("target", target.getName())
|
||||||
|
.send(actor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -124,24 +124,16 @@ public final class FancyDialogsCMD {
|
|||||||
translator.translate("commands.fancydialogs.registry.clear.success").send(actor.sender());
|
translator.translate("commands.fancydialogs.registry.clear.success").send(actor.sender());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command("fancydialogs registry unregister <id>")
|
@Command("fancydialogs registry unregister <dialog>")
|
||||||
@Description("Unregisters a dialog by its ID")
|
@Description("Unregisters a dialog by its ID")
|
||||||
@CommandPermission("fancydialogs.commands.registry.unregister")
|
@CommandPermission("fancydialogs.commands.registry.unregister")
|
||||||
public void registryUnregister(
|
public void registryUnregister(
|
||||||
final BukkitCommandActor actor,
|
final BukkitCommandActor actor,
|
||||||
final String id
|
final Dialog dialog
|
||||||
) {
|
) {
|
||||||
Dialog dialog = plugin.getDialogRegistry().get(id);
|
plugin.getDialogRegistry().unregister(dialog.getId());
|
||||||
if (dialog == null) {
|
|
||||||
translator.translate("commands.fancydialogs.registry.unregister.not_found")
|
|
||||||
.replace("id", id)
|
|
||||||
.send(actor.sender());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
plugin.getDialogRegistry().unregister(id);
|
|
||||||
translator.translate("commands.fancydialogs.registry.unregister.success")
|
translator.translate("commands.fancydialogs.registry.unregister.success")
|
||||||
.replace("id", id)
|
.replace("id", dialog.getId())
|
||||||
.send(actor.sender());
|
.send(actor.sender());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.fancyinnovations.fancydialogs.commands.types;
|
||||||
|
|
||||||
|
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
|
||||||
|
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||||
|
import com.fancyinnovations.fancydialogs.registry.DialogRegistry;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import revxrsal.commands.autocomplete.SuggestionProvider;
|
||||||
|
import revxrsal.commands.bukkit.actor.BukkitCommandActor;
|
||||||
|
import revxrsal.commands.node.ExecutionContext;
|
||||||
|
import revxrsal.commands.parameter.ParameterType;
|
||||||
|
import revxrsal.commands.stream.MutableStringStream;
|
||||||
|
|
||||||
|
public class DialogCommandType implements ParameterType<BukkitCommandActor, Dialog> {
|
||||||
|
|
||||||
|
public static final DialogCommandType INSTANCE = new DialogCommandType();
|
||||||
|
private static final DialogRegistry REGISTRY = FancyDialogsPlugin.get().getDialogRegistry();
|
||||||
|
|
||||||
|
private DialogCommandType() {
|
||||||
|
// Private constructor to prevent instantiation
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dialog parse(@NotNull MutableStringStream input, @NotNull ExecutionContext<@NotNull BukkitCommandActor> context) {
|
||||||
|
String id = input.readString();
|
||||||
|
|
||||||
|
Dialog dialog = REGISTRY.get(id);
|
||||||
|
if (dialog != null) {
|
||||||
|
return dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
FancyDialogsPlugin.get().getTranslator()
|
||||||
|
.translate("dialog.not_found")
|
||||||
|
.replace("id", id)
|
||||||
|
.send(context.actor().sender());
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull SuggestionProvider<@NotNull BukkitCommandActor> defaultSuggestions() {
|
||||||
|
return (ctx) -> REGISTRY.getAll().stream()
|
||||||
|
.map(Dialog::getId)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,12 @@
|
|||||||
language_name: default
|
language_name: default
|
||||||
messages:
|
messages:
|
||||||
|
dialog:
|
||||||
|
not_found: "<dark_gray>› <gray>Dialog {warningColor}{id}<gray> is not registered."
|
||||||
commands:
|
commands:
|
||||||
|
dialog:
|
||||||
|
open:
|
||||||
|
self: "<dark_gray>› <gray>Opened dialog {warningColor}{id}<gray>."
|
||||||
|
other: "<dark_gray>› <gray>Opened dialog {warningColor}{id}<gray> for player {target}."
|
||||||
fancydialogs:
|
fancydialogs:
|
||||||
version: "<dark_gray>› <gray>You are running FancyDialogs {warningColor}{version}<gray>."
|
version: "<dark_gray>› <gray>You are running FancyDialogs {warningColor}{version}<gray>."
|
||||||
storage:
|
storage:
|
||||||
@@ -18,5 +24,4 @@ messages:
|
|||||||
clear:
|
clear:
|
||||||
success: "<dark_gray>› <gray>Successfully cleared all registered dialogs."
|
success: "<dark_gray>› <gray>Successfully cleared all registered dialogs."
|
||||||
unregister:
|
unregister:
|
||||||
success: "<dark_gray>› <gray>Successfully unregistered dialog {warningColor}{id}<gray>."
|
success: "<dark_gray>› <gray>Successfully unregistered dialog {warningColor}{id}<gray>."
|
||||||
not_found: "<dark_gray>› <gray>Dialog {warningColor}{id}<gray> is not registered."
|
|
||||||
Reference in New Issue
Block a user