Skip to content

Commit 50844fa

Browse files
fancydialogs: Add console_command, player_command and send_to_server actions
1 parent 819e6a4 commit 50844fa

6 files changed

Lines changed: 105 additions & 3 deletions

File tree

plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ public void onEnable() {
150150
new OpenDialogNpcAction().register();
151151
}
152152

153+
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
154+
153155
fancyLogger.info("Successfully enabled FancyDialogs version %s".formatted(getDescription().getVersion()));
154156
}
155157

plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/ActionRegistry.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.fancyinnovations.fancydialogs.actions;
22

3-
import com.fancyinnovations.fancydialogs.actions.defaultActions.MessageDialogAction;
4-
import com.fancyinnovations.fancydialogs.actions.defaultActions.OpenDialogDialogAction;
3+
import com.fancyinnovations.fancydialogs.actions.defaultActions.*;
54

65
import java.util.Map;
76
import java.util.concurrent.ConcurrentHashMap;
@@ -19,6 +18,9 @@ public ActionRegistry() {
1918
private void registerDefaultActions() {
2019
registerAction("open_dialog", OpenDialogDialogAction.INSTANCE);
2120
registerAction("message", MessageDialogAction.INSTANCE);
21+
registerAction("console_command", ConsoleCommandDialogAction.INSTANCE);
22+
registerAction("player_command", PlayerCommandDialogAction.INSTANCE);
23+
registerAction("send_to_server", SendToServerDialogAction.INSTANCE);
2224
}
2325

2426
public void registerAction(String actionId, DialogAction action) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.fancyinnovations.fancydialogs.actions.defaultActions;
2+
3+
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
4+
import com.fancyinnovations.fancydialogs.actions.DialogAction;
5+
import com.fancyinnovations.fancydialogs.api.Dialog;
6+
import org.bukkit.Bukkit;
7+
import org.bukkit.entity.Player;
8+
9+
public class ConsoleCommandDialogAction implements DialogAction {
10+
11+
public static final ConsoleCommandDialogAction INSTANCE = new ConsoleCommandDialogAction();
12+
13+
private ConsoleCommandDialogAction() {
14+
}
15+
16+
@Override
17+
public void execute(Player player, Dialog dialog, String data) {
18+
if (data == null || data.isEmpty()) {
19+
return;
20+
}
21+
22+
String command = data;
23+
if (player != null) {
24+
command = data.replace("{player}", player.getName());
25+
}
26+
27+
String finalCommand = command;
28+
29+
// Execute the command on the server console
30+
Bukkit.getScheduler().runTask(FancyDialogsPlugin.get(), () -> {
31+
try {
32+
player.getServer().dispatchCommand(player.getServer().getConsoleSender(), finalCommand);
33+
} catch (Exception e) {
34+
player.sendMessage("§cFailed to execute command: " + finalCommand);
35+
}
36+
});
37+
}
38+
}

plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/MessageDialogAction.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@ public void execute(Player player, Dialog dialog, String data) {
1919
return;
2020
}
2121

22-
Component msg = ModernChatColorHandler.translate(data);
22+
String raw = data;
23+
if (player != null) {
24+
raw = data.replace("{player}", player.getName());
25+
}
26+
27+
Component msg = ModernChatColorHandler.translate(raw);
2328
player.sendMessage(msg);
2429
}
2530

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.fancyinnovations.fancydialogs.actions.defaultActions;
2+
3+
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
4+
import com.fancyinnovations.fancydialogs.actions.DialogAction;
5+
import com.fancyinnovations.fancydialogs.api.Dialog;
6+
import org.bukkit.Bukkit;
7+
import org.bukkit.entity.Player;
8+
import org.lushplugins.chatcolorhandler.ChatColorHandler;
9+
import org.lushplugins.chatcolorhandler.parsers.ParserTypes;
10+
11+
public class PlayerCommandDialogAction implements DialogAction {
12+
13+
public static final PlayerCommandDialogAction INSTANCE = new PlayerCommandDialogAction();
14+
15+
private PlayerCommandDialogAction() {
16+
}
17+
18+
@Override
19+
public void execute(Player player, Dialog dialog, String data) {
20+
if (data == null || data.isEmpty()) {
21+
return;
22+
}
23+
24+
String command = ChatColorHandler.translate(data, player, ParserTypes.placeholder());
25+
26+
Bukkit.getScheduler().runTask(FancyDialogsPlugin.get(), () -> {
27+
player.chat("/" + command);
28+
});
29+
}
30+
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.fancyinnovations.fancydialogs.actions.defaultActions;
2+
3+
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
4+
import com.fancyinnovations.fancydialogs.actions.DialogAction;
5+
import com.fancyinnovations.fancydialogs.api.Dialog;
6+
import com.google.common.io.ByteArrayDataOutput;
7+
import com.google.common.io.ByteStreams;
8+
import org.bukkit.entity.Player;
9+
10+
public class SendToServerDialogAction implements DialogAction {
11+
12+
public static final SendToServerDialogAction INSTANCE = new SendToServerDialogAction();
13+
14+
private SendToServerDialogAction() {
15+
}
16+
17+
@Override
18+
public void execute(Player player, Dialog dialog, String data) {
19+
ByteArrayDataOutput out = ByteStreams.newDataOutput();
20+
out.writeUTF("Connect");
21+
out.writeUTF(data);
22+
player.sendPluginMessage(FancyDialogsPlugin.get(), "BungeeCord", out.toByteArray());
23+
}
24+
}

0 commit comments

Comments
 (0)