Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

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

Discussion in 'Разработка плагинов для новичков' started by HamBurgeR, Dec 24, 2016.

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

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

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

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

    Trophy Points:
    46
    В обработчике ивента PlayerDropItemEvent записываешь нужную вещь и её нужные характеристики.Для записи можно использовать какие-нибудь BufferedWriter'ы, таких достаточно.[DOUBLEPOST=1482611635,1482611232][/DOUBLEPOST]Вот, как сырой пример:
    Code:
        @EventHandler
        private void onPlayerDropItem(PlayerDropItemEvent event) {
            writer.println(event.getPlayer().getName() + ": " + event.getItemDrop().getItemStack().getAmount());
        }
    Где writer это PrintWriter, который можешь инициализировать при включении и закрывать при выключении плагина.
     
  4. iD3LSY

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

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

    https://cloud.mail.ru/home/RuBukkit.java
    Code:
    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);
        }
    [DOUBLEPOST=1482612270,1482612156][/DOUBLEPOST]Заранее извини, если что-то не так. Плагин я проверил, всё работает без ошибок. Единственный минус - не записывается data в конфиг, но тоже поправимо.
     
    Last edited: Dec 25, 2016
  5. Автор темы
    HamBurgeR

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

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

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

    Trophy Points:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    сейчас бы каждый раз конфиг сохранять... ну ок.
     
  7. iD3LSY

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

    Trophy Points:
    46
    Имя в Minecraft:
    opy
    Ну знаешь, мне нормально) xd
     
  8. Sonicxd2

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

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

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

    Trophy Points:
    46
    Имя в Minecraft:
    opy
    :good:
     

Share This Page