1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Логирование дропа вещей

Тема в разделе "Разработка плагинов для новичков", создана пользователем HamBurgeR, 24 дек 2016.

  1. Автор темы
    HamBurgeR

    HamBurgeR Участник Пользователь

    Баллы:
    31
    Всем привет. Пытаюсь писать лёгкие плагины, но параллельно с их полезностью для сервера.
    Никак не могу найти функцию выбрасывания вещей, дык и с записью в .txt Ник:Вещь:Кол-во не выходит. Не могу понять в чём ошибка. Сюда кидать не буду, так как всё очень криво и скорее всего даже рядом не похоже на нужную функцию. Решил ещё раз попробовать сначала. Спасибо больше тем, кто поможет!
     
  2. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    В обработчике ивента PlayerDropItemEvent записываешь нужную вещь и её нужные характеристики.Для записи можно использовать какие-нибудь BufferedWriter'ы, таких достаточно.
    Вот, как сырой пример:
    Код:
        @EventHandler
        private void onPlayerDropItem(PlayerDropItemEvent event) {
            writer.println(event.getPlayer().getName() + ": " + event.getItemDrop().getItemStack().getAmount());
        }
    Где writer это PrintWriter, который можешь инициализировать при включении и закрывать при выключении плагина.
     
  3. iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    76
    Крч, запили я что-то, вроде работает. Создаётся файл \players.yml, а после дропа записывает его название в конфиг, в каталог players.<ign>.drop, конечно же с количеством ;)

    https://cloud.mail.ru/home/RuBukkit.java
    Код:
    File players = new File(getDataFolder() + "/players.yml");
        FileConfiguration playersConfig = YamlConfiguration.loadConfiguration(players);
    
        public void saveCustomYml(FileConfiguration ymlConfig, File ymlFile) {
            try {
                ymlConfig.save(ymlFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public void onEnable() {
            Bukkit.getPluginManager().registerEvents(this, this);
            playersConfig.options().copyDefaults(true);
        }
        public void onDisable() {
            saveCustomYml(playersConfig, players);
        }
    
        @EventHandler
        public void drop(PlayerDropItemEvent e) {
            playersConfig.set("players." + e.getPlayer().getName() + ".drop." + e.getItemDrop().getItemStack().getType(),
                    playersConfig.getInt("players." + e.getPlayer().getName() + ".drop." + e.getItemDrop().getItemStack().getType()) + e.getItemDrop().getItemStack().getAmount());
            saveCustomYml(playersConfig, players);
        }

    Заранее извини, если что-то не так. Плагин я проверил, всё работает без ошибок. Единственный минус - не записывается data в конфиг, но тоже поправимо.
     
    Последнее редактирование: 25 дек 2016
  4. Автор темы
    HamBurgeR

    HamBurgeR Участник Пользователь

    Баллы:
    31
    Ух тыж блин. Не ожидал такого. Спасибо огромного тебе. И с наступающим, зайчик, котик, самолётик с:
     
  5. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    сейчас бы каждый раз конфиг сохранять... ну ок.
     
  6. iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    76
    Ну знаешь, мне нормально) xd
     
  7. Sonicxd2

    Sonicxd2 Активный участник Пользователь

    Баллы:
    76
    Ну ну, сохранять при каждом евенте дропа, да так и сервер можно положить)
     
  8. iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    76
    :good:
     

Поделиться этой страницей