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

В разработке ItemStack выдать предмет с зачарованиями

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

Статус темы:
Закрыта.
  1. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    а как мне тогда эту строку записпть

    ItemStack item = p.getPlayer().getInventory();
     
  2. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    В данном случае лучше использовать 2 ивента 1 когда игрок бросает снежок другой когда снежок прилетает, это нужно дабы избежать того что в момент полета игрок сменит предмет в руке. При бросании снежка записывай игрока в коллекцию а лучше в мапу пусть ключем будет ентити снежка а значение это будет игрок который бросил и при попадании просто доставай из мапы игрока по ключу и все. А проводить проверки над снежком можно в ивенте бросания его.
     
  3. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Обыкновенно, ты забыл добавить getItemInMainHand.
     
  4. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Бред
     
  5. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    В каком же месте и что тебя не устраивает? Если игрок после того как кинул снежок сменит предмет в руке то как ты достанешь именно тот снежок который был кинут? А если у игрока весь инвентарь в сежках? А если игрок выкинет все снежки из инвентаря?
     
  6. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Я уже дал рабочее решение этой проблемы, а то, что ты предлагаешь хранение в мапе - бред и самый обычный костыль.
     
  7. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Ну Дак как получить именно тот снежок который был кинут, из инвентаря игрока?)
     
  8. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Metadata/PersistentDataContainer тебе в помощь.
     
  9. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Каким образом ты хочешь это реализовать? Тоже через 2 ивента?)
     
  10. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Да, через два ивента
     
  11. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Тоже самое только без мапы) я предложил то что будет понятнее TC, а ты предлагаешь ту же логику только более сложную вот и все.
     
  12. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Использования двух ивентов я не называл бредом, начнем с этого.

    Работа с мапой как раз будет запарнее, чем с Metadata/PersistentDataContainer, так еще и работать будет криво.
     
  13. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Ну для кого как, по моему мнению использовать мапу куда легче чем записывать данные на предмет а после проверять все предметы в инвенторе на наличие этих данных.
     
  14. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Нафига? Ты вообще видел мой вариант решения?
     
  15. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Ты куда-то его вообще кидал? Даже если без проверки всего инвентаря все равно по моему мнению легче понять как работает мапа чем MetaData.
     
  16. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    http://rubukkit.org/threads/projectilehitevent-snezhok-v-igroka.179464/page-2#post-1680813
    Чем же его тяжелее понять?)
     
  17. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    у меня сейчас такой код

    Код:
      @EventHandler
        public void onHitSnowBall(ProjectileHitEvent e) {
            if(e.getEntity().getShooter() instanceof Player) {
                Player p = (Player) e.getEntity().getShooter();
                Player t = (Player) e.getHitEntity();
                ItemStack item = p.getPlayer().getInventory();
                if(item == null) return;
                item.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 10);
                item.setType(Material.SNOWBALL);
                if(item != null && item.getType() == Material.SNOWBALL && item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) >= 10) {
                    if(e.getHitEntity() instanceof Player) {
                        if (p.getGameMode() == GameMode.SURVIVAL) {
                            p.getInventory().addItem(item);
                            p.updateInventory();
    
                        }
                        if (p.getGameMode() == GameMode.CREATIVE) {
                            
                        }
    
                        p.sendMessage(ChatColor.GOLD + "Ты кикнул " + ChatColor.AQUA + t.getName());
                        Bukkit.getScheduler().runTask(main.getInstance(), () -> t.kickPlayer(ChatColor.RED + "Кикнуты администратором"));
                    }
                }
            }
        }
     
  18. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Это вообще другой топик, по этому и не видел. Но факт остается фактом.
     
  19. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Видимо тебе проще написать велосипед :D
     
  20. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Тебе надо сделать выдачу снежка с энчантом что-ли? Сделай это через команду свою и все.
     
Статус темы:
Закрыта.

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