RolePlay | Anti-BunnyHop система

RolePlay | Anti-BunnyHop система 1.3.1

Нет прав для скачивания

Ght

Пользователь
Сообщения
157
Решения
11
Fluffy добавил(а) новый ресурс:

RolePlay | Anti-BunnyHop система - Запрещает прыгать во время бега

Запрещает игрокам прыгать во время бега. Был задуман для РП серверов


Прошу строго не судить, плагин с подобной системой писал первый раз

Узнать больше об этом ресурсе...
 
Оформите описание ресурса полностью. Как минимум, приложите скриншоты/видео работы данного плагина.

Идеи для данного плагина.
1. Убрать лишние файлы из jarника (у вас все классы двоятся, там и исходные и скомпилированные лежат, оставьте только последние).
2. Добавить конфигурацию для изменения сообщений.
3. Нет смысла в сообщениях о включении/выключении плагина, поскольку у вас нет никаких проверок, которые бы выключали плагин, если бы у плагина не получалось что-либо сделать (например, подключиться к базе данных или привязаться к другому плагину).
4. Добавьте право для обхода данного ограничения.
 
Нет, не фу.
Объединено

Замечания по коду:
1. Все названия классов пишите с заглавной буквы (Я про config и utils)
2. Зачем отдельный класс utils с двумя методами, которые не используются в плагине?
3. Почему обработка команды находится в классе config? Если не хотите делать под команду отдельный класс, реализуйте её в главном (но лучше всё-таки создать отдельно).
4. Не нужно вытягивать все сообщения в начале метода, если нет 100% уверенности в том, что все эти сообщения будут использованы.
5. У вас зачем-то используется player.getPlayer(), в этом нет необходимости, просто player.
6. Проверяйте свой код перед тем, как загружать обновление. Не будет работать /abh reload, потому что в метод reloadCfg вы передаёте null (к слову, не сокращайте названия переменных/методов, пишите полностью reloadConfig, от 3 букв мир не перевернётся, а другим людям будет удобно читать код).
 
Последнее редактирование:
Нет, не фу.
Объединено

Замечания по коду:
1. Все названия классов пишите с заглавной буквы (Я про config и utils)
2. Зачем отдельный класс utils с двумя методами, которые не используются в плагине?
3. Почему обработка команды находится в классе config? Если не хотите делать под команду отдельный класс, реализуйте её в главном (но лучше всё-таки создать отдельно).
4. Не нужно вытягивать все сообщения в начале метода, если нет 100% уверенности в том, что все эти сообщения будут использованы.
5. У вас зачем-то используется player.getPlayer(), в этом нет необходимости, просто player.
6. Проверяйте свой код перед тем, как загружать обновление. Не будет работать /abh reload, потому что в метод reloadCfg вы передаёте null (к слову, не сокращайте названия переменных/методов, пишите полностью reloadConfig, от 3 букв мир не перевернётся, а другим людям будет удобно читать код).
По поводу того, почему у меня обработка команды в классе config - мне так удобнее, согласен аргумент не очень. Но не думаю что если кто-то скачает плагин, начнёт изучать код, и увидит что обработка команды в классе config. Возьмёт и удалит плагин. Нет, главное что работает, если бы это вызывало какие-то проблемы. Я бы безусловно исправил это. А на счёт остального, в 1.2.1 исправил всё
 
Ght обновил(а) ресурс RolePlay | Anti-BunnyHop система новой записью:

1.2.3

Изменения:

* Добавил /abh enable и /abh disable - Выключает систему или включает
* Добавил /abh help
* Обработка команды /abh reload - Теперь в отдельном классе
* Добавил TabCompleter. Теперь при вводе /abh и нажатии на TAB будет видно все команды

Узнать больше об этом обновлении...
 
Ght обновил(а) ресурс RolePlay | Anti-BunnyHop система новой записью:

1.3

Изменения:

* Добавил медлительность при бхопе
P.S. В следующем обновлении добавлю возможность изменить длительность эффекта или отключать
* Исправлено бхоп на снегу и полублоках

Узнать больше об этом обновлении...
 
Плагин харош. Разраб хорош. Цена хорош. Anti-BunnyHop за бесплатно? Ультра мега харош:)
 
Зачем инициализировать сообщения (тем более при каждом движении игрока) ДО всех проверок? Это лишняя нагрузка, тем более этот код вызывается тысячи раз в секунду

Кроме того, в Paper API даже в 1.12.2 есть PlayerJumpEvent, что гораздо более эффективно
 
в Paper API даже в 1.12.2 есть PlayerJumpEvent, что гораздо более эффективно
Знаю, да вот только я сколько не корячился - не понял как вызвать отмену, код который используется - так же не работает.

Зачем инициализировать сообщения (тем более при каждом движении игрока) ДО всех проверок?
Не подумал об этом, чуть позже изменю
 
По идее, весь код можно свести к
Java:
    @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
    void onPlayerJump(PlayerJumpEvent event) {
        final Player player = event.getPlayer();
        if (!player.isSprinting()) return;
        
        event.setCancelled(true);
        // send sound, messages, etc
    }
 
По идее, весь код можно свести к
Java:
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
void onPlayerJump(PlayerJumpEvent event) {
final Player player = event.getPlayer();
if (!player.isSprinting()) return;

event.setCancelled(true);
// send sound, messages, etc
}
Так тоже можно, но я сделал немного иначе.
 
По идее, весь код можно свести к
Java:
    @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
    void onPlayerJump(PlayerJumpEvent event) {
        final Player player = event.getPlayer();
        if (!player.isSprinting()) return;
       
        event.setCancelled(true);
        // send sound, messages, etc
    }
он сделал так:
Java:
  @EventHandler(priority = EventPriority.NORMAL)
  public void onPlayerMoveEvent(PlayerMoveEvent e) {
    Player p = e.getPlayer();
    String msgbar = ChatColor.translateAlternateColorCodes('&', Config.getConfig().getString("Action-bar"));
    String msgtitle = ChatColor.translateAlternateColorCodes('&', Config.getConfig().getString("Title"));
    String msgsubtitle = ChatColor.translateAlternateColorCodes('&', Config.getConfig().getString("Subtitle"));
    if (!AbhCommand.status)
      return;
    if (p.getGameMode() == GameMode.CREATIVE || p.getGameMode() == GameMode.SPECTATOR || p.hasPermission("abh.access"))
      return;
    if (e.isCancelled())
      return;
    if (e.getTo().getY() > e.getFrom().getY() &&
      e.getPlayer().isSprinting() && p.getLocation().subtract(0.0D, 0.0D, 0.0D).getBlock().getType().equals(Material.AIR) && !p.isOnGround()) {
      e.setCancelled(true);
      p.teleport(e.getFrom());
      p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 30, 5000));
      p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_BASS, 1.0F, 0.0F);
      p.sendActionBar(msgbar);
      p.sendTitle(msgtitle, msgsubtitle, 2, 20, 10);
    }
  }
 
Ght обновил(а) ресурс RolePlay | Anti-BunnyHop система новой записью:

v1.3.1

Изменения:
  • Добавлена возможность отключать/включать эффект при бхопе
  • Исправлены баги
  • Оптимизирован код (P.S. Раньше была проверка на каждое движение игрока, что могло вызывать нагрузку)
  • Изменена используемая версия java теперь нужна 11

Узнать больше об этом обновлении...
 
Назад
Сверху Снизу