mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
Compare commits
4 Commits
232f041df0
...
455165b0f6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
455165b0f6 | ||
|
|
f29bd13387 | ||
|
|
7cd24f18f3 | ||
|
|
9774f57ea6 |
@@ -57,6 +57,13 @@ public class Translator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (File langFile : langFiles) {
|
for (File langFile : langFiles) {
|
||||||
|
if (!langFile.isFile()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!langFile.getName().endsWith(".yml")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
languages.add(loadLanguageFile(langFile));
|
languages.add(loadLanguageFile(langFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
0.0.28
|
0.0.30
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
package com.fancyinnovations.fancydialogs.api;
|
package com.fancyinnovations.fancydialogs.api.dialogs;
|
||||||
|
|
||||||
|
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||||
|
import com.fancyinnovations.fancydialogs.api.FancyDialogs;
|
||||||
import com.fancyinnovations.fancydialogs.api.data.DialogBodyData;
|
import com.fancyinnovations.fancydialogs.api.data.DialogBodyData;
|
||||||
import com.fancyinnovations.fancydialogs.api.data.DialogButton;
|
import com.fancyinnovations.fancydialogs.api.data.DialogButton;
|
||||||
import com.fancyinnovations.fancydialogs.api.data.DialogData;
|
import com.fancyinnovations.fancydialogs.api.data.DialogData;
|
||||||
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs;
|
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs;
|
||||||
|
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -19,6 +22,7 @@ public class ConfirmationDialog {
|
|||||||
private String title = "Confirmation";
|
private String title = "Confirmation";
|
||||||
private String confirmText = "Yes";
|
private String confirmText = "Yes";
|
||||||
private String cancelText = "No";
|
private String cancelText = "No";
|
||||||
|
private String expectedUserInput = "";
|
||||||
|
|
||||||
private Dialog dialog;
|
private Dialog dialog;
|
||||||
private String confirmButtonId;
|
private String confirmButtonId;
|
||||||
@@ -28,7 +32,7 @@ public class ConfirmationDialog {
|
|||||||
private Runnable onCancel = () -> {
|
private Runnable onCancel = () -> {
|
||||||
};
|
};
|
||||||
|
|
||||||
public ConfirmationDialog(String title, String question, String confirmText, String cancelText, Runnable onConfirm, Runnable onCancel) {
|
public ConfirmationDialog(String title, String question, String confirmText, String cancelText, String expectedUserInput, Runnable onConfirm, Runnable onCancel) {
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.question = question;
|
this.question = question;
|
||||||
this.confirmText = confirmText;
|
this.confirmText = confirmText;
|
||||||
@@ -56,6 +60,11 @@ public class ConfirmationDialog {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConfirmationDialog withExpectedUserInput(String expectedUserInput) {
|
||||||
|
this.expectedUserInput = expectedUserInput;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public ConfirmationDialog withOnConfirm(Runnable onConfirm) {
|
public ConfirmationDialog withOnConfirm(Runnable onConfirm) {
|
||||||
this.onConfirm = onConfirm;
|
this.onConfirm = onConfirm;
|
||||||
return this;
|
return this;
|
||||||
@@ -103,18 +112,31 @@ public class ConfirmationDialog {
|
|||||||
);
|
);
|
||||||
this.cancelButtonId = cancelBtn.id();
|
this.cancelButtonId = cancelBtn.id();
|
||||||
|
|
||||||
|
List<DialogTextField> textFields = null;
|
||||||
|
if (expectedUserInput != null && !expectedUserInput.isEmpty()) {
|
||||||
|
textFields = List.of(
|
||||||
|
new DialogTextField("confirmation_user_input", "Type '" + expectedUserInput + "' to confirm", 0, "", expectedUserInput.length(), 1)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
DialogInputs inputs = new DialogInputs(textFields, null, null);
|
||||||
|
|
||||||
DialogData dialogData = new DialogData(
|
DialogData dialogData = new DialogData(
|
||||||
"confirmation_dialog_" + UUID.randomUUID(),
|
"confirmation_dialog_" + UUID.randomUUID(),
|
||||||
title,
|
title,
|
||||||
false,
|
false,
|
||||||
List.of(new DialogBodyData(question)),
|
List.of(new DialogBodyData(question)),
|
||||||
DialogInputs.EMPTY, // TODO add support for confirmation phrases
|
inputs,
|
||||||
List.of(confirmBtn, cancelBtn)
|
List.of(confirmBtn, cancelBtn)
|
||||||
);
|
);
|
||||||
|
|
||||||
this.dialog = FancyDialogs.get().createDialog(dialogData);
|
this.dialog = FancyDialogs.get().createDialog(dialogData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getExpectedUserInput() {
|
||||||
|
return expectedUserInput;
|
||||||
|
}
|
||||||
|
|
||||||
public String getConfirmButtonId() {
|
public String getConfirmButtonId() {
|
||||||
return confirmButtonId;
|
return confirmButtonId;
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.fancyinnovations.fancydialogs.api;
|
package com.fancyinnovations.fancydialogs.api.dialogs;
|
||||||
|
|
||||||
|
import com.fancyinnovations.fancydialogs.api.FancyDialogs;
|
||||||
import com.fancyinnovations.fancydialogs.api.data.DialogBodyData;
|
import com.fancyinnovations.fancydialogs.api.data.DialogBodyData;
|
||||||
import com.fancyinnovations.fancydialogs.api.data.DialogData;
|
import com.fancyinnovations.fancydialogs.api.data.DialogData;
|
||||||
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs;
|
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs;
|
||||||
@@ -6,6 +6,8 @@ import org.bukkit.event.Event;
|
|||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class DialogButtonClickedEvent extends Event {
|
public class DialogButtonClickedEvent extends Event {
|
||||||
|
|
||||||
private static final HandlerList handlerList = new HandlerList();
|
private static final HandlerList handlerList = new HandlerList();
|
||||||
@@ -13,12 +15,14 @@ public class DialogButtonClickedEvent extends Event {
|
|||||||
private final Player player;
|
private final Player player;
|
||||||
private final String dialogId;
|
private final String dialogId;
|
||||||
private final String buttonId;
|
private final String buttonId;
|
||||||
|
private final Map<String, String> payload;
|
||||||
|
|
||||||
public DialogButtonClickedEvent(@NotNull Player player, @NotNull String dialogId, @NotNull String buttonId) {
|
public DialogButtonClickedEvent(@NotNull Player player, @NotNull String dialogId, @NotNull String buttonId, @NotNull Map<String, String> payload) {
|
||||||
super(!Bukkit.isPrimaryThread());
|
super(!Bukkit.isPrimaryThread());
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.dialogId = dialogId;
|
this.dialogId = dialogId;
|
||||||
this.buttonId = buttonId;
|
this.buttonId = buttonId;
|
||||||
|
this.payload = payload;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HandlerList getHandlerList() {
|
public static HandlerList getHandlerList() {
|
||||||
@@ -37,6 +41,10 @@ public class DialogButtonClickedEvent extends Event {
|
|||||||
return buttonId;
|
return buttonId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getPayload() {
|
||||||
|
return payload;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull HandlerList getHandlers() {
|
public @NotNull HandlerList getHandlers() {
|
||||||
return handlerList;
|
return handlerList;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.fancyinnovations.fancydialogs.commands;
|
package com.fancyinnovations.fancydialogs.commands;
|
||||||
|
|
||||||
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
|
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
|
||||||
import com.fancyinnovations.fancydialogs.api.ConfirmationDialog;
|
|
||||||
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.api.dialogs.ConfirmationDialog;
|
||||||
import com.fancyinnovations.fancydialogs.config.FancyDialogsConfig;
|
import com.fancyinnovations.fancydialogs.config.FancyDialogsConfig;
|
||||||
import com.fancyinnovations.fancydialogs.dialog.DialogImpl;
|
import com.fancyinnovations.fancydialogs.dialog.DialogImpl;
|
||||||
import de.oliver.fancyanalytics.logger.LogLevel;
|
import de.oliver.fancyanalytics.logger.LogLevel;
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class CustomClickActionPacketListener {
|
|||||||
String dialogId = packet.getPayload().get("dialog_id");
|
String dialogId = packet.getPayload().get("dialog_id");
|
||||||
String buttonId = packet.getPayload().get("button_id");
|
String buttonId = packet.getPayload().get("button_id");
|
||||||
|
|
||||||
new DialogButtonClickedEvent(event.player(), dialogId, buttonId).callEvent();
|
new DialogButtonClickedEvent(event.player(), dialogId, buttonId, packet.getPayload()).callEvent();
|
||||||
|
|
||||||
if (dialogId.startsWith("confirmation_dialog_")) {
|
if (dialogId.startsWith("confirmation_dialog_")) {
|
||||||
return; // Ignore confirmation dialog actions, handled separately
|
return; // Ignore confirmation dialog actions, handled separately
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.fancyinnovations.fancydialogs.listener;
|
package com.fancyinnovations.fancydialogs.listener;
|
||||||
|
|
||||||
import com.fancyinnovations.fancydialogs.api.ConfirmationDialog;
|
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
|
||||||
|
import com.fancyinnovations.fancydialogs.api.dialogs.ConfirmationDialog;
|
||||||
import com.fancyinnovations.fancydialogs.api.events.DialogButtonClickedEvent;
|
import com.fancyinnovations.fancydialogs.api.events.DialogButtonClickedEvent;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@@ -16,6 +17,21 @@ public class DialogButtonClickedListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (event.getButtonId().equals(dialog.getConfirmButtonId())) {
|
if (event.getButtonId().equals(dialog.getConfirmButtonId())) {
|
||||||
|
if (dialog.getExpectedUserInput() != null && !dialog.getExpectedUserInput().isEmpty()) {
|
||||||
|
if (!event.getPayload().containsKey("confirmation_user_input")) {
|
||||||
|
FancyDialogsPlugin.get().getFancyLogger().warn("Confirmation dialog expected user input but none was provided.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String userInput = event.getPayload().get("confirmation_user_input");
|
||||||
|
if (!userInput.equals(dialog.getExpectedUserInput())) {
|
||||||
|
FancyDialogsPlugin.get().getTranslator()
|
||||||
|
.translate("confirmation_dialog.input_mismatch")
|
||||||
|
.send(event.getPlayer());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dialog.getOnConfirm().run();
|
dialog.getOnConfirm().run();
|
||||||
ConfirmationDialog.CACHE.remove(event.getDialogId());
|
ConfirmationDialog.CACHE.remove(event.getDialogId());
|
||||||
} else if (event.getButtonId().equals(dialog.getCancelButtonId())) {
|
} else if (event.getButtonId().equals(dialog.getCancelButtonId())) {
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ language_name: default
|
|||||||
messages:
|
messages:
|
||||||
dialog:
|
dialog:
|
||||||
not_found: "<dark_gray>› <gray>Dialog {warningColor}{id}<gray> is not registered."
|
not_found: "<dark_gray>› <gray>Dialog {warningColor}{id}<gray> is not registered."
|
||||||
|
confirmation_dialog:
|
||||||
|
input_mismatch: "<dark_gray>› <gray>Your input does not match the expected phrase."
|
||||||
commands:
|
commands:
|
||||||
dialog:
|
dialog:
|
||||||
open:
|
open:
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
2.8.0.156
|
2.8.0.157
|
||||||
@@ -1 +1 @@
|
|||||||
3.0.0-SNAPSHOT.8
|
3.0.0-SNAPSHOT.9
|
||||||
@@ -1 +1 @@
|
|||||||
2.8.0.303
|
2.8.0.306
|
||||||
@@ -81,6 +81,7 @@ public class FancyNpcs extends JavaPlugin implements FancyNpcsPlugin {
|
|||||||
public static final FeatureFlag PLAYER_NPCS_FEATURE_FLAG = new FeatureFlag("player-npcs", "Every player can only manage the npcs they have created", false);
|
public static final FeatureFlag PLAYER_NPCS_FEATURE_FLAG = new FeatureFlag("player-npcs", "Every player can only manage the npcs they have created", false);
|
||||||
public static final FeatureFlag USE_NATIVE_THREADS_FEATURE_FLAG = new FeatureFlag("use-native-threads", "Use native threads instead of virtual threads.", false);
|
public static final FeatureFlag USE_NATIVE_THREADS_FEATURE_FLAG = new FeatureFlag("use-native-threads", "Use native threads instead of virtual threads.", false);
|
||||||
public static final FeatureFlag ENABLE_DEBUG_MODE_FEATURE_FLAG = new FeatureFlag("enable-debug-mode", "Enable debug mode", false);
|
public static final FeatureFlag ENABLE_DEBUG_MODE_FEATURE_FLAG = new FeatureFlag("enable-debug-mode", "Enable debug mode", false);
|
||||||
|
public static final FeatureFlag USE_MINECRAFT_USERCACHE_FEATURE_FLAG = new FeatureFlag("use-minecraft-usercache", "Include the content of usercache.json to the username->uuid cache", false);
|
||||||
|
|
||||||
private static FancyNpcs instance;
|
private static FancyNpcs instance;
|
||||||
private final ExtendedFancyLogger fancyLogger;
|
private final ExtendedFancyLogger fancyLogger;
|
||||||
|
|||||||
@@ -55,6 +55,10 @@ public class UUIDFileCache implements UUIDCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void loadMinecraftUsercache() {
|
private void loadMinecraftUsercache() {
|
||||||
|
if (!FancyNpcs.USE_MINECRAFT_USERCACHE_FEATURE_FLAG.isEnabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!usercacheFile.exists()) {
|
if (!usercacheFile.exists()) {
|
||||||
FancyNpcs.getInstance().getFancyLogger().debug("Minecraft usercache file does not exist, skipping load.");
|
FancyNpcs.getInstance().getFancyLogger().debug("Minecraft usercache file does not exist, skipping load.");
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user