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

Помогите Фейерверки в 1.8

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

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

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Как взорвать фейерверк в координатах в minecraft 1.8?
    В версиях ниже я делаю так:
    Code:
    private Method world_getHandle = null;
        private Method nms_world_broadcastEntityEffect = null;
        private Method firework_getHandle = null;
       
        public void playFirework(World world, Location loc, FireworkEffect fe) throws Exception {
            Firework fw = (Firework) world.spawn(loc, Firework.class);
            Object nms_world = null;
            Object nms_firework = null;
            if(world_getHandle == null) {
                world_getHandle = getMethod(world.getClass(), "getHandle");
                firework_getHandle = getMethod(fw.getClass(), "getHandle");
            }
            nms_world = world_getHandle.invoke(world, (Object[]) null);
            nms_firework = firework_getHandle.invoke(fw, (Object[]) null);
            if(nms_world_broadcastEntityEffect == null) {
                nms_world_broadcastEntityEffect = getMethod(nms_world.getClass(), "broadcastEntityEffect");
            }
            FireworkMeta data = (FireworkMeta) fw.getFireworkMeta();
            data.clearEffects();
            data.setPower(1);
            data.addEffect(fe);
            fw.setFireworkMeta(data);
            nms_world_broadcastEntityEffect.invoke(nms_world, new Object[] {nms_firework, (byte) 17});
            fw.remove();
        }
       
        private static Method getMethod(Class<?> cl, String method) {
            for(Method m : cl.getMethods()) {
                if(m.getName().equals(method)) {
                    return m;
                }
            }
            return null;
        }
    
     
  2. Хостинг MineCraft
    <
  3. BeYkeR

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

    Trophy Points:
    173
    Сила гугла
    или заспавнить фейерверк на твоих координатах и использовать detonate();
     
  4. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    У фейерверка нет метода detonate();
     
  5. BeYkeR

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

    Trophy Points:
    173
    По JavaDocs он есть
     
  6. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Это в spigot, в bukkit походу нет.[DOUBLEPOST=1419934802,1419927066][/DOUBLEPOST]Блин, уже много чего перепробовал - не помогает, detonate() нет такого даже в спигот апи.
     
  7. BeYkeR

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

    Trophy Points:
    173
    Он есть в сорцах , мб обновишь spigot ?
     
  8. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Я использую spigot api 1.8 R0.1[DOUBLEPOST=1420002567,1419939569][/DOUBLEPOST]@Shevchik, ты же там гуру в протоколах, что делать?
     
  9. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Спасибо :good:
     
  10. ql_Nik_lp

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

    Trophy Points:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Thanks <3
     
  11. Ission

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

    Trophy Points:
    173
    Skype:
    lokivava
    Сначала я перешёл на 1.8, протестил кучу своего барахла, а потом обнаружил что нет фейерверков. Я подумал что это я что-то не так делаю и поискал на форуме сигопта, там нашёл занимательную тему, на которую никто не ответил. Потом я поискал на форуме баккита, там об этом не написано. Потом попробовал сделать как раньше -- отправлять пакеты, но и это не сработало. И прежде чем расковыривать сервер повторно и искать решения, я вошёл сюда. Как это чудесно, что мне не придётся в очередной раз разделывать ядро. Спасибо за заготовку под фейерверки.
    П.С. Может быть кто-то из здесь находящихся знает как отобразить FallingBlock воды или лавы в 1.8 и какие ещё есть сюрпризы в этой версии?
     
  12. Ission

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

    Trophy Points:
    173
    Skype:
    lokivava
    @fromgate
    Плохая идея переходить на этот механизм. Это ещё одна вещь, за которые я не люблю 1.8. Для некоторых технических блоков, среди которых например лава, вода, не существует связанного названия или его придётся долго искать, а потом объяснять(я по крайней мере его не нашёл).
     
  13. Shevchik

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

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
    Bukkit.getUnsafe().getMaterialFromInternalName(String name)
    Там кстати ещё пару интересных методов есть, например возможность модифицировать итемстак с помощью json.
     

Share This Page