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

Помогите Прочность блоков. Zombie Destruct Blocks

Тема в разделе "Разработка плагинов для новичков", создана пользователем baksovic111, 9 июн 2015.

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

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

    Баллы:
    88
    Товарищи.
    Решил сделать плагин с помощью которого зомби смогут ломать блоки.
    Получаю Entity в определенном радиусе от игрока и с помощью цикла проверяю блоки вокруг Entity если блок не воздух то уничтожаем блок.(Левенький код но сейчас не об этом)
    Так вот.
    Хочу каким то образом реализовать прочность блоков которые будут уничтожаться.
    Кто подскажет каким образом это сделать?
    На данный момент блок я уничтожаю таким образом
    .getBlock().breakNaturally();
    Собственно он ломается моментально.
     
  2. BeYkeR

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

    Баллы:
    173
    А зомби ломает только один блок или их несколько ?
     
  3. Автор темы
    baksovic111

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

    Баллы:
    88
    Сначало первый. Если там воздух то переходит к другому блоку
     
  4. _EnderWorld_

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

    Баллы:
    78
    Хмм, сейчас посмотрю в списке Event'ов, Не найду буду у Mojang из HardCore режима искать.
     
  5. Автор темы
    baksovic111

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

    Баллы:
    88
    Ты и близко такое в эвентах не найдешь)
     
  6. _EnderWorld_

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

    Баллы:
    78
    Если и найти, это только взять из режима HardCore, и Hard, помоему только в них зомби ломают двери и что-то ещё.
     
  7. MrTrojan

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

    Баллы:
    98
    Имя в Minecraft:
    BlackTrojan
    Там обычный джава код, он никак не связан с Bukkit'ом и плагинописанием.
     
  8. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    В BloodMoon вроде такое делали, можно подсмотреть.
     
  9. Автор темы
    baksovic111

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

    Баллы:
    88
    Знаю этот плагин кстати так и сделал)
    Нашел код но он достаточно сложный и запутанный но кое что я все же взял и буду тестировать)
     
  10. _EnderWorld_

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

    Баллы:
    78
    Сейчас буду декомпилировать)
     
  11. BeYkeR

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

    Баллы:
    173
  12. MrTrojan

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

    Баллы:
    98
    Имя в Minecraft:
    BlackTrojan
    Нашёл, что-то, может это?


    Код:
    public BloodMoonEntityZombie(BloodMoon plugin, EntityMonster nmsEntity, CraftLivingEntity bukkitEntity, BloodMoonEntityType type){
            super(plugin, nmsEntity, bukkitEntity, type);
        }
       
        @Override
        public void onTick(){
            String worldName = nmsEntity.world.worldData.getName();
            String entityName = bukkitEntity.getType().name().toUpperCase();
            PluginConfig worldConfig = plugin.getConfig(worldName);
    
            if (nmsEntity.getGoalTarget() instanceof EntityHuman && plugin.isActive(worldName) && plugin.isFeatureEnabled(worldName, Feature.BREAK_BLOCKS) && worldConfig.getStringList(Config.FEATURE_BREAK_BLOCKS_MOBS).contains(entityName) && nmsEntity.world.getTime() % 20 == 0 && nmsEntity.world.worldData.getName().equals(nmsEntity.getGoalTarget().world.worldData.getName())) {
                Block[] blocks = new Block[2];
               
                blocks[0] = this.getBreakableTargetBlock();
                blocks[1] = blocks[0].getRelative(BlockFace.UP);
               
                for (Block block : blocks){
                    this.attemptBreakBlock(worldConfig, block);
                }
            }
        }
       
    }
     
  13. Автор темы
    baksovic111

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

    Баллы:
    88
    Да - это. Но это не все)
    там еще код был.
    Я все в том плагине перерыл))
    Код не брал но взял для себя идею и переделал свой плагин.
    Изначально я брал блоки вокруг Entity добавляя к лоцации во все стороны +1
    Теперь я сильно переделал плагин)
    Кому интересно, вот код - Поделюсь))

    http://pastebin.com/wKCkzcfA
     
    Последнее редактирование: 10 июн 2015
  14. _EnderWorld_

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

    Баллы:
    78
    А без If, не как, чтобы сократить.
    А так если, код довольно логичный.
     
  15. Автор темы
    baksovic111

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

    Баллы:
    88
    Я код сократил в максимум.
    Может у кого по больше опыта тот знает что и где исправить)
    Тему закрывать не буду может кто еще выразит какие мысли, идеи)
     
  16. _EnderWorld_

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

    Баллы:
    78
    Скиньте пожалуйста те API, которые вы используете.
     
  17. Автор темы
    baksovic111

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

    Баллы:
    88
    Я использовал в качестве api spigot 1.8.3 и только)
     
  18. _EnderWorld_

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

    Баллы:
    78
    Странно, когда я загрузил Spigot, то у меня сразу вылезло куча ошибок, так и должно быть?
     
  19. Автор темы
    baksovic111

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

    Баллы:
    88
    Нет)
    Все должно быть чистеньно и без ошибок
     
  20. _EnderWorld_

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

    Баллы:
    78
    Просите, а какую версии eclipse вы используете, если можно то ссылку
     

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