Команда Undo — отмена последнего действия

Команда //undo является одной из ключевых функций плагина WorldEdit, позволяющей отменить последнее выполненное действие. Это незаменимый инструмент для безопасного редактирования мира, который даёт возможность быстро исправить ошибки, экспериментировать с постройками и не бояться случайных разрушений.

Базовый синтаксис команды //undo

//undo [количество] [игрок] 

[количество] (не обязательно) — количество отмен, которые нужно выполнить
[игрок] (не обязательно) — ник игрока, команды которого нужно отменить

Команда отменяет последнее действие WorldEdit, выполненное вами или указанным игроком. Поддерживается множественная отмена через ввод количества необходимых отмен.

Также эту команду можно вводить с одним слешем:

/undo [количество] [игрок] 

Права для команды

Требуемые права доступа:
worldedit.history.undo
или
worldedit.history.undo.self

Как работает система отмены

WorldEdit ведёт историю действий для каждого игрока в отдельном буфере. Каждое изменение региона, установка блоков, копирование или вставка записывается как отдельная операция, которую можно отменить.

По умолчанию история хранит последние 15 действий. Это значение можно изменить в конфигурации плагина через параметр max-history-size.

Отмена действий другого игрока

Администраторы могут отменять действия других игроков, указав их никнейм:

//undo Notch 

Для использования этой функции требуется право worldedit.undo.other. Будьте осторожны: отмена чужих действий может повлиять на работу других игроков на сервере.

Повторное выполнение: команда //redo

Если вы отменили действие по ошибке, его можно вернуть с помощью команды //redo:

//redo [игрок] 

Команда работает аналогично //undo, но в обратном порядке — возвращает отменённые изменения.

Ограничения и особенности

  • Размер истории: Количество сохраняемых действий ограничено настройками сервера
  • Перезагрузка: При перезагрузке сервера история отмены сбрасывается
  • Производительность: Отмена очень больших операций может занять время и создать нагрузку

Примеры использования

Отмена последнего действия

//undo 

Отменяет последнее выполненное вами действие WorldEdit.

Многократная отмена

//undo 5 

Отменяет 5 последних действий

Отмена действия другого игрока

//undo PlayerName 

Администратор отменяет последнее действие указанного игрока.

Возврат отменённого действия

//redo 

Отменяет отмену (повторяет последнее действие)

Интеграция с FastAsyncWorldEdit

В форке FastAsyncWorldEdit система отмены обладает дополнительными преимуществами:

  • Асинхронная обработка: Отмена выполняется в фоновом режиме без лагов
  • Экономия памяти: Оптимизированное хранение истории изменений
  • Сохранение между перезагрузками: При включённой опции история не сбрасывается
  • Пакетная отмена: Возможность отменять несколько операций одной командой

Для включения сохранения истории между перезагрузками добавьте в конфигурацию FAWE: history: { persistent: true }

Решение распространённых проблем

Команда //undo не работает: «No permission»

Причина: Отсутствие права worldedit.undo у игрока.

Решение: Выдайте право через менеджер привилегий (LuckPerms, PermissionsEx) или проверьте конфигурацию WorldEdit.

Отмена не возвращает мир в исходное состояние

Причина: После выполнения команды мир был изменён другими плагинами или игроками.

Решение: WorldEdit отменяет только свои действия. Убедитесь, что между командой и отменой не было сторонних изменений.

Сервер зависает при отмене большой операции

Причина: Синхронная обработка в стандартном WorldEdit при работе с большими объёмами данных.

Решение: Установите FastAsyncWorldEdit для асинхронной обработки или разбейте операцию на меньшие части.

История отмены сбрасывается после перезагрузки

Причина: По умолчанию WorldEdit не сохраняет историю между сессиями.

Решение: В FAWE включите опцию persistent: true в конфигурации истории.

Рекомендации по безопасному использованию

  • Тестируйте команды: Перед масштабными изменениями проверяйте действия на малой области
  • Используйте //undo сразу: Чем больше действий выполнено после ошибки, тем сложнее её исправить
  • Настраивайте лимиты: Ограничьте размер истории через max-history-size для экономии памяти
  • Резервное копирование: Для критически важных изменений создавайте снапшоты мира

Не полагайтесь только на //undo при работе с важными данными. Регулярное резервное копирование мира — единственный надёжный способ защиты от потери прогресса.

Связанные команды

Команда Описание Право
//redo [игрок] Возвращает отменённое действие worldedit.redo
//clearhistory Очищает историю отмены для текущего игрока worldedit.clearhistory
/snap list Отображает доступные снапшоты мира worldedit.snapshots.list
/snap restore Восстанавливает регион из снапшота worldedit.snapshots.restore

Вопросы и ответы

Как отменить команду или последнее действие в WorldEdit?

Используйте команду //undo — она отменяет последнее выполненное вами действие. Для отмены нескольких действий подряд выполните команду несколько раз.

Можно ли отменить действие другого игрока?

Да, администраторы могут использовать //undo <ник> для отмены действий указанного игрока. Требуется право worldedit.undo.other.

Что делать, если //undo не работает?

Проверьте наличие права worldedit.undo, убедитесь, что история не пуста, и что действие было выполнено через WorldEdit. В FAWE также проверьте настройки асинхронной обработки.

Сохраняется ли история отмены после перезагрузки сервера?

В стандартном WorldEdit — нет. В FastAsyncWorldEdit история может сохраняться при включении опции persistent: true в конфигурации.

Как вернуть отменённое действие?

Используйте команду //redo — она возвращает последнее отменённое действие. Работает аналогично //undo, но в обратном порядке.

Сколько действий хранится в истории отмены?

По умолчанию — 15 действий. Это значение настраивается в конфигурации WorldEdit через параметр max-history-size.

Можно ли очистить историю отмены?

Да, команда //clearhistory очищает историю отмены для текущего игрока. Требуется право worldedit.clearhistory.

Почему отмена занимает много времени?

Большие операции требуют обработки множества блоков. В стандартном WorldEdit это происходит синхронно. Для ускорения используйте FastAsyncWorldEdit с асинхронной обработкой.