Add warning to /npc reload

This commit is contained in:
fullwall 2021-04-14 01:51:11 +08:00
parent 979d6f95fa
commit 8612e329b6
4 changed files with 16 additions and 0 deletions

View File

@ -140,6 +140,7 @@ public class Settings {
NPC_SKIN_VIEW_DISTANCE("npc.skins.view-distance", 100D),
PACKET_UPDATE_DELAY("npc.packets.update-delay", 30),
PLACEHOLDER_SKIN_UPDATE_FREQUENCY("npc.skins.placeholder-update-frequency-ticks", 5 * 60 * 20),
RELOAD_INSTANTLY("general.reload-warning-enabled", true),
REMOVE_PLAYERS_FROM_PLAYER_LIST("npc.player.remove-from-list", true),
SAVE_TASK_DELAY("storage.save-task.delay", 20 * 60 * 60),
SELECTION_ITEM("npc.selection.item", "stick"),

View File

@ -1,8 +1,12 @@
package net.citizensnpcs.commands;
import java.util.Map;
import java.util.WeakHashMap;
import org.bukkit.command.CommandSender;
import net.citizensnpcs.Citizens;
import net.citizensnpcs.Settings.Setting;
import net.citizensnpcs.api.command.Command;
import net.citizensnpcs.api.command.CommandContext;
import net.citizensnpcs.api.command.Requirements;
@ -16,6 +20,7 @@ import net.citizensnpcs.util.StringHelper;
@Requirements
public class AdminCommands {
private final Citizens plugin;
private final Map<CommandSender, Long> reloadTimeouts = new WeakHashMap<CommandSender, Long>();
public AdminCommands(Citizens plugin) {
this.plugin = plugin;
@ -39,6 +44,14 @@ public class AdminCommands {
max = 1,
permission = "citizens.admin")
public void reload(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
if (!Setting.RELOAD_INSTANTLY.asBoolean()) {
Long timeout = reloadTimeouts.get(sender);
if (timeout == null || System.currentTimeMillis() > timeout) {
Messaging.sendErrorTr(sender, Messages.CITIZENS_RELOAD_WARNING);
reloadTimeouts.put(sender, System.currentTimeMillis() + 5000);
return;
}
}
Messaging.sendTr(sender, Messages.CITIZENS_RELOADING);
try {

View File

@ -40,6 +40,7 @@ public class Messages {
public static final String CITIZENS_INCOMPATIBLE = "citizens.notifications.incompatible-version";
public static final String CITIZENS_INVALID_COMMAND_CLASS = "citizens.commands.invalid.class";
public static final String CITIZENS_RELOAD_ERROR = "citizens.notifications.error-reloading";
public static final String CITIZENS_RELOAD_WARNING = "citizens.notifications.reload-warning";
public static final String CITIZENS_RELOADED = "citizens.notifications.reloaded";
public static final String CITIZENS_RELOADING = "citizens.notifications.reloading";
public static final String CITIZENS_SAVED = "citizens.notifications.saved";

View File

@ -398,6 +398,7 @@ citizens.notifications.npcs-loaded=Loaded {0} NPCs.
citizens.notifications.reloaded=Citizens reloaded.
citizens.notifications.reloading=Reloading Citizens...
citizens.notifications.saved=Citizens saved.
citizens.notifications.reload-warning=WARNING: this command will load all data from disk without saving first. Please retype /npc reload to confirm. You can disable this warning in settings.
citizens.notifications.saving=Saving Citizens...
citizens.notifications.skipping-broken-trait=Skipped broken or missing trait {0} while loading ID {1}. Has the name changed?
citizens.notifications.skipping-invalid-pose=Skipping pose {0} - invalid yaw/pitch ({1}).