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

Несколько вопросов по Bukkit API

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

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

    Studenikin Старожил Пользователь

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Всем доброго времени суток. Пишу мини-игру (для меня это первый раз), и во время ее написания возникло несколько вопросов.
    1) Пытаюсь таким кодом заспавнить моба, но он не появляется (ошибок в логе нет, спавн мобов на сервере включен)
    Код:
    Location loc = new Location(null,0,0,0);
            loc.setWorld(Bukkit.getWorld(Main.instance.getConfig().getString("king.world")));
            loc.setX(Main.instance.getConfig().getDouble("king.X"));
            loc.setY(Main.instance.getConfig().getDouble("king.Y"));
            loc.setZ(Main.instance.getConfig().getDouble("king.Z"));
            loc.setYaw((float)Main.instance.getConfig().getLong("king.Yaw"));
            loc.setPitch((float)Main.instance.getConfig().getLong("king.Pitch"));
            Bukkit.broadcastMessage("заспавнили короля");
            Zombie king2 = (Zombie)loc.getWorld().spawnEntity(loc, EntityType.ZOMBIE);
            king2.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 999999999, 999999999));
            king2.setCanPickupItems(false);
            king2.setMaxHealth(100);
            king2.setHealth(100);
            king2.setCustomName("§c§lКОРОЛЬ");
            king2.getEquipment().setBoots(new ItemStack(Material.GOLD_BOOTS));
            king2.getEquipment().setHelmet(new ItemStack(Material.GOLD_HELMET));
            king2.getEquipment().setChestplate(new ItemStack(Material.GOLD_CHESTPLATE));
            king2.getEquipment().setLeggings(new ItemStack(Material.GOLD_LEGGINGS));
            king2.setCustomNameVisible(true);
    2) Игрок стреляет из лука в другого игрока/моба, при попадании стрелы вызывается EntityDamageByEntityEvent, как мне в нем получить игрока, который стрелял?
    3) Использую последнюю версию плагина LibsDisguise, в начале игры таким кодом:
    Код:
    MobDisguise d = new MobDisguise(DisguiseType.SKELETON);
    DisguiseAPI.disguiseToAll(p, d);
    превращаю игрока в скелета. После смерти игрока во время вызова PlayerRespawnEvent опять использую этот же код для превращения игрока, но он в моба не превращается
     
    Последнее редактирование: 16 апр 2016
  2. Хостинг MineCraft
    <
  3. Автор темы
    Studenikin

    Studenikin Старожил Пользователь

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
  4. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    2)if (event.getDamager() insatnceof Arrow) {
    Arrow ar = (Arrow) event.getDamager();
    Player p = (Player) ar.getShooter();
    }
    Взял это из головы.
    3) Попробуй через шедулер с задержкой в 1 секунду.
     
  5. Автор темы
    Studenikin

    Studenikin Старожил Пользователь

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    спасибо, а с первым вопросом помочь не можешь?
     
  6. AxmeD

    AxmeD Старожил Пользователь

    Баллы:
    103
    Skype:
    ahmed136323
    Не уверен, что дело в этом, но попробуй сразу задать координаты и мир, а не через setX, setWorld и т.д.
     
  7. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Никогда так не делайте. У всех сущностей в Bukkit API есть EntityType, используйте event.getDamager().getType()==EntityType.ARROW
    По поводу первого вопроса: вы уверены, что в этом мире можно спавнить мобов? А уровень сложности позволяет?
     
  8. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    А разница? Что случится плохого то может изза insatnceof?
     
  9. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    instanceof -- самая долгая и дорогая операция в Java, чтобы она отработала, ей нужно пройти и посмотреть по всем наследуемым классам и интерфейсам, чтобы её использовать нужно иметь очень вескую причину или халатное отношение ко времени исполнения кода, когда не важно отработает он за пол дня или за десять дней.
     
  10. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Хм.. Спасибо. Пойду исправлю в своих плагинах.
     
  11. fall.us

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

    Баллы:
    76
    Имя в Minecraft:
    fallus
    Вы преувеличиваете.
     
  12. Автор темы
    Studenikin

    Studenikin Старожил Пользователь

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Да, проверял командой summon
     
  13. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    [​IMG]
    Код:
           Location loc = new Location(null,0,0,0);
           loc.setWorld(Bukkit.getWorld("World"));
           loc.setX(80);
           loc.setY(80);
           loc.setZ(80);
          // loc.setYaw((float)"king.Yaw");
          // loc.setPitch((float)Main.instance.getConfig().getLong("king.Pitch"));
           Bukkit.broadcastMessage("заспавнили короля");
           Zombie king2 = (Zombie)loc.getWorld().spawnEntity(loc, EntityType.ZOMBIE);
           king2.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 999999999, 999999999));
           king2.setCanPickupItems(false);
           king2.setMaxHealth(100);
           king2.setHealth(100);
           king2.setCustomName("§c§lКОРОЛЬ");
           king2.getEquipment().setBoots(new ItemStack(Material.GOLD_BOOTS));
           king2.getEquipment().setHelmet(new ItemStack(Material.GOLD_HELMET));
           king2.getEquipment().setChestplate(new ItemStack(Material.GOLD_CHESTPLATE));
           king2.getEquipment().setLeggings(new ItemStack(Material.GOLD_LEGGINGS));
           king2.setCustomNameVisible(true);
    Хм. У меня твой код работает.
     
  14. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Со временем? Ни чуть. Вопрос только в том, где он используется: в сложных аналитических программах или для проверки флажка. В таких простых вещах, как проверить тип монстра, не стоит использовать такое сравнение, оно здесь лишнее. Опять же кто мне мешает занаследоваться от CraftArrow или чуть поглубже, чтобы сковать свою стрелу, тогда instanceof вернёт false для моих стрел, что может привести к интересным последствиям.
     
  15. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    наверняка запихнул это в какой-нибудь листенер, который не зарегистрировал) а Bukkit.broadcastMessage("заспавнили короля"); там для мебели. оно хоть выводится куда-нибудь?
     
  16. Автор темы
    Studenikin

    Studenikin Старожил Пользователь

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    да, оно выводится
     
  17. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Значит чтото с получением значений из конфига, попробуй их вывести в броадкаст.
    Bukkit.broadcastMessage("заспавнили короля, loc: " + loc);
     
  18. Автор темы
    Studenikin

    Studenikin Старожил Пользователь

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    upload_2016-4-16_23-12-41.png
    Я еще специально отключил какие-либо ограничения на спавн мобов, и все равно
     
  19. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    а если без pitch и yaw?
     
  20. Автор темы
    Studenikin

    Studenikin Старожил Пользователь

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    я уже без него делаю, то есть они сами на 0 ставятся
     
  21. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Тогда хз. Может моб под землю проваливается? Или вообще в обычном мире заспавнился?
     

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