mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
fancydialogs: Add console_command, player_command and send_to_server actions
This commit is contained in:
@@ -150,6 +150,8 @@ public class FancyDialogsPlugin extends JavaPlugin implements FancyDialogs {
|
||||
new OpenDialogNpcAction().register();
|
||||
}
|
||||
|
||||
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||
|
||||
fancyLogger.info("Successfully enabled FancyDialogs version %s".formatted(getDescription().getVersion()));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.fancyinnovations.fancydialogs.actions;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.actions.defaultActions.MessageDialogAction;
|
||||
import com.fancyinnovations.fancydialogs.actions.defaultActions.OpenDialogDialogAction;
|
||||
import com.fancyinnovations.fancydialogs.actions.defaultActions.*;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -19,6 +18,9 @@ public class ActionRegistry {
|
||||
private void registerDefaultActions() {
|
||||
registerAction("open_dialog", OpenDialogDialogAction.INSTANCE);
|
||||
registerAction("message", MessageDialogAction.INSTANCE);
|
||||
registerAction("console_command", ConsoleCommandDialogAction.INSTANCE);
|
||||
registerAction("player_command", PlayerCommandDialogAction.INSTANCE);
|
||||
registerAction("send_to_server", SendToServerDialogAction.INSTANCE);
|
||||
}
|
||||
|
||||
public void registerAction(String actionId, DialogAction action) {
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.fancyinnovations.fancydialogs.actions.defaultActions;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
|
||||
import com.fancyinnovations.fancydialogs.actions.DialogAction;
|
||||
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class ConsoleCommandDialogAction implements DialogAction {
|
||||
|
||||
public static final ConsoleCommandDialogAction INSTANCE = new ConsoleCommandDialogAction();
|
||||
|
||||
private ConsoleCommandDialogAction() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, Dialog dialog, String data) {
|
||||
if (data == null || data.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
String command = data;
|
||||
if (player != null) {
|
||||
command = data.replace("{player}", player.getName());
|
||||
}
|
||||
|
||||
String finalCommand = command;
|
||||
|
||||
// Execute the command on the server console
|
||||
Bukkit.getScheduler().runTask(FancyDialogsPlugin.get(), () -> {
|
||||
try {
|
||||
player.getServer().dispatchCommand(player.getServer().getConsoleSender(), finalCommand);
|
||||
} catch (Exception e) {
|
||||
player.sendMessage("§cFailed to execute command: " + finalCommand);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,12 @@ public class MessageDialogAction implements DialogAction {
|
||||
return;
|
||||
}
|
||||
|
||||
Component msg = ModernChatColorHandler.translate(data);
|
||||
String raw = data;
|
||||
if (player != null) {
|
||||
raw = data.replace("{player}", player.getName());
|
||||
}
|
||||
|
||||
Component msg = ModernChatColorHandler.translate(raw);
|
||||
player.sendMessage(msg);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.fancyinnovations.fancydialogs.actions.defaultActions;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
|
||||
import com.fancyinnovations.fancydialogs.actions.DialogAction;
|
||||
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.lushplugins.chatcolorhandler.ChatColorHandler;
|
||||
import org.lushplugins.chatcolorhandler.parsers.ParserTypes;
|
||||
|
||||
public class PlayerCommandDialogAction implements DialogAction {
|
||||
|
||||
public static final PlayerCommandDialogAction INSTANCE = new PlayerCommandDialogAction();
|
||||
|
||||
private PlayerCommandDialogAction() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, Dialog dialog, String data) {
|
||||
if (data == null || data.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
String command = ChatColorHandler.translate(data, player, ParserTypes.placeholder());
|
||||
|
||||
Bukkit.getScheduler().runTask(FancyDialogsPlugin.get(), () -> {
|
||||
player.chat("/" + command);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.fancyinnovations.fancydialogs.actions.defaultActions;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
|
||||
import com.fancyinnovations.fancydialogs.actions.DialogAction;
|
||||
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class SendToServerDialogAction implements DialogAction {
|
||||
|
||||
public static final SendToServerDialogAction INSTANCE = new SendToServerDialogAction();
|
||||
|
||||
private SendToServerDialogAction() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, Dialog dialog, String data) {
|
||||
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
||||
out.writeUTF("Connect");
|
||||
out.writeUTF(data);
|
||||
player.sendPluginMessage(FancyDialogsPlugin.get(), "BungeeCord", out.toByteArray());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user