fix(settings): use static dialog command actions
Release / release (push) Successful in 2m55s
CI / build (push) Successful in 1m16s

This commit is contained in:
dmg
2026-08-25 19:06:05 -04:00
parent 8b3eaad253
commit bc2f9d8e25
4 changed files with 32 additions and 3 deletions
@@ -12,6 +12,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
final class BaseSettingsDialogFactory {
private static final int DIALOG_WIDTH = 420;
@@ -366,13 +367,17 @@ final class BaseSettingsDialogFactory {
private static ActionButton render(ButtonSpec button) {
ActionButton.Builder builder = ActionButton.builder(Component.text(button.label()))
.width(button.width())
.action(DialogAction.commandTemplate(button.command()));
.action(DialogAction.staticAction(commandClick(button.command())));
if (!button.tooltip().isEmpty()) {
builder.tooltip(Component.text(button.tooltip()));
}
return builder.build();
}
static ClickEvent<ClickEvent.Payload.Text> commandClick(String command) {
return ClickEvent.runCommand(command);
}
sealed interface DialogSpec permits ListSpec, MultiSpec, ConfirmationSpec, NoticeSpec {
DialogContent content();
}
@@ -10,9 +10,24 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import net.kyori.adventure.text.event.ClickEvent;
import org.junit.jupiter.api.Test;
final class BaseSettingsDialogFactoryTest {
@Test
void createsStaticRunCommandActionWithoutMacroVariables() {
ClickEvent<ClickEvent.Payload.Text> action = BaseSettingsDialogFactory.commandClick(
"/basesettings status"
);
assertEquals(ClickEvent.Action.RUN_COMMAND, action.action());
ClickEvent.Payload.Text payload = assertInstanceOf(
ClickEvent.Payload.Text.class,
action.payload()
);
assertEquals("/basesettings status", payload.value());
}
@Test
void createsControlsForEveryBaseSettingAndConfirmedPurchase() {
UUID playerId = UUID.randomUUID();