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

Плагин [FUN/MECH/DEV] PlayEffect v0.5.4 - Дыма мало! Нужны ещё эффекты![BukkitDev]

Тема в разделе "Релизы плагинов", создана пользователем fromgate, 22 сен 2013.

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

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    JustBlender, всё довольно просто.
    Есть два метода в разных проявлениях - play и set.
    Для проигрывания эффекта используем play.
    Естественно, сначала нужно добавить в качестве сторонней библиотеки PlayEffect.
    PlayEffectExternalLib.png

    Ну и вот пример плагина, который реализует то, что ты хочешь:
    Код:
    package me.fromgate.playeffectplayermove;
    
    import java.util.HashMap;
    import java.util.Map;
    import me.fromgate.playeffect.PlayEffect;
    import me.fromgate.playeffect.VisualEffect;
    import org.bukkit.Location;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerMoveEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class PlayEffectPlayerMove extends JavaPlugin implements Listener{
       Map<String,Location> playerLocations;
      
       @Override
       public void onEnable(){
      if (getServer().getPluginManager().getPlugin("PlayEffect")==null){
      getLogger().info("[PlayEffectPlayerMove] PlayEffect plugin required!");
      return;
      }
         playerLocations = new HashMap<String,Location>();
         getServer().getPluginManager().registerEvents(this, this);
       }
      
       private Location getPreviousLocation (PlayerMoveEvent event){
         String playerName = event.getPlayer().getName();
         return playerLocations.containsKey(playerName) ? playerLocations.get(playerName) : event.getFrom();
       }
      
       @EventHandler
       public void onPlayerMove(PlayerMoveEvent event){
         Location currentLocation = event.getTo();
         Location previousLocation = getPreviousLocation(event);
         if (currentLocation.getWorld().equals(previousLocation.getWorld())&&
             (currentLocation.distance(previousLocation)<0.7)) return;
         PlayEffect.play(VisualEffect.MOBSPELL, currentLocation, "num:20 speed:0.5 offset:0.8");
         playerLocations.put(event.getPlayer().getName(), currentLocation);
       }
    }
    

    В этом плагине, чтобы не было безумного спама эффектами они проигрываются только если игрок прошёл расстояние больше чем 0.7 блока. Т.е. когда игрок стоит на месте -- эффектов нет.
     
    Hephest нравится это.
  2. JustBlender

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

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Как все всегда ты хорош! Спасибо за хорошую помощь! Чувствую скоро будет плагин требующий PlayEffect ;)
    fromgate, кстати, а почему нету эффекта BONE? Этот эффект воспроизводится когда пользуешься костной мукой
     
  3. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    По тому, что этот эффект называется не так, а HAPPY и в пакетах выглядит как happyVillager.
     
    fromgate нравится это.
  4. JustBlender

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

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Теперь понятно, спасибо
     
  5. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Ission, прикольно! Это что тот же самый эффект, да? А то я хотел срочно лезть в майнкрафт дробить кости и выращивать пшеницу :)
     
  6. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Доброго времени суток!
    Вчера начал использовать ваше API у себя в плагине, и возник вопрос: почему для всех параметров используются строковые переменные, когда можно использовать ENUM?
    Его вроде бы и сравнивать практичнее, и парсить не надо, да и шанс ошибиться мисскликнуть по клавиатуре значительно меньше.
    Но это так, просто предложение :)

    А так хочу сказать большое спасибо, и что все работает отлично ^_^
     
  7. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    ql_Nik_lp, там разбор строк осуществляется на лету. Т.е. для того чтобы добавить эффект, мне достаточно в enum VisualEffect добавить новый класс, описать тут же начальные условия и обработкой параметров заниматься непосредственно в классе эффекта (туда они уже приходять в виде Map<String,String> и разбирать их уже не нужно ;))
    Конечно, если бы можно было (я по крайней мере не знаю как) создавать ENUM'ы на лету, динамически, то на этом можно было бы попытаться построить более удобный вариант (хотя не факт - на этапе создания плагина ENUM'ы ещё не сгенерированы и парсинг просто ушёл бы в другое место), но... пока это, к сожалению невозможно. А создавать здоровенный enum в котором каждому эффекту будет соответствовать один-два вида параметра, на мой взгляд тоже неэффективно.
    JustBlender, ql_Nik_lp, Вы хоть расскажите, что у Вас получится :) Интересно же :)
     
  8. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Ясно-понятно :)
    Обязательно расскажу, но значительно позже, как будет хотя-бы на что смотреть)
     
  9. JustBlender

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

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Обязательно расскажу, но тоже позже (скажу одно, будет менее, более эпичная игра с элементами PvP) :)

    ЗЫ. Плагин уже вроде как готов (я уже устал тестить xD), но незнаю, выкладывать ли это паблику... Писал же вроде для своего сервера, а хочется поделится =)

    Кстати, это возможно другой эффект (так как этот эффект (Happy) проигрывается одной частицой), а с кость больше 3-4 частиц и они более хаотично появляются в радиусе блока. Может есть возможность спауна частиц в "разных" местах? Надеюсь вы меня поняли.
     
    Последнее редактирование: 11 янв 2014
  10. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    поэксперементируйте с параметрами num и offset
     
  11. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    Пишу LokiDungeons, столкнулся с проблемой, что нужно использовать enum вместо строк, но он должен быть динамический т.к. теперь атаки грузятся из выделенных файлов классов. Путём долгих поисков по форумам, был обнаружен способ динамического дополнения enum'ов, но теряется возможность операторного сравнения. К сожалению я не могу показать, как это выглядит. Я удалил все ссылки и тот код, да и вообще отказался от этого. Но могу сказать, что делается это безобразие через рефлексии и скрытые конструкторы.
     
    fromgate нравится это.
  12. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Я что-то подобное сегодня находил поиском на stackoverflow. Но даже не стал вникать в код. Вся прелесть энума в том, что можно написать xxx == Aaaa.BBBB (Или Aaaa.BBBB.ccc() — я помню был просто счастлив, когда осознал, что можно в enum'ы "внедрять" поля, методы и объекты), а если этого нельзя сделать, то лично для меня он ничем не отличается от Set, List или какого-нибудь массива.
     
  13. Shockwave

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

    Баллы:
    103
    У меня такая проблема, поставил плагины PlayEffect и Reactions, но при вводе команды допустим из playeffect пишет в чат /playeffect help, ввожу /playeffect help а он отвечает тем же, а у reactions работает только help на остальное жалуется something wrong(check command, permissions), никаких плагинов больше нет тем более PEX, лог говорит о какой то библиотеке и что не может загрузить классы из нее, ядро MCPC+, версия 1.6.4 Вот лог связаный с PlayEffect и Reactions
    Код:
    2014-01-16 18:30:44 [INFO] [PlayEffect] Enabling PlayEffect v0.2.2
    2014-01-16 18:30:44 [INFO] [PlayEffect] Failed to initialize NMSLib! Some features of plugin will be disabled!
    2014-01-16 18:30:44 [INFO] [PlayEffect] Please download compatible version from: http://dev.bukkit.org/bukkit-plugins/playeffect/
    2014-01-16 18:30:44 [SEVERE] java.lang.ClassNotFoundException: net.minecraft.server.v1_6_R3.ChunkPosition
    2014-01-16 18:30:44 [SEVERE]    at org.bukkit.plugin.java.PluginClassLoader.findClass0(PluginClassLoader.java:441)
    2014-01-16 18:30:44 [SEVERE]    at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:234)
    2014-01-16 18:30:44 [SEVERE]    at java.lang.ClassLoader.loadClass(Unknown Source)
    2014-01-16 18:30:44 [SEVERE]    at java.lang.ClassLoader.loadClass(Unknown Source)
    2014-01-16 18:30:44 [SEVERE]    at java.lang.Class.forName0(Native Method)
    2014-01-16 18:30:44 [SEVERE]    at java.lang.Class.forName(Unknown Source)
    2014-01-16 18:30:44 [SEVERE]    at me.fromgate.playeffect.NMSLib.init(NMSLib.java:59)
    2014-01-16 18:30:44 [SEVERE]    at me.fromgate.playeffect.PlayEffect.onEnable(PlayEffect.java:36)
    2014-01-16 18:30:44 [SEVERE]    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
    2014-01-16 18:30:44 [SEVERE]    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:467)
    2014-01-16 18:30:44 [SEVERE]    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:383)
    2014-01-16 18:30:44 [SEVERE]    at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugin(CraftServer.java:277)
    2014-01-16 18:30:44 [SEVERE]    at org.bukkit.craftbukkit.v1_6_R3.CraftServer.enablePlugins(CraftServer.java:259)
    2014-01-16 18:30:44 [SEVERE]    at net.minecraft.server.MinecraftServer.func_71243_i(MinecraftServer.java:525)
    2014-01-16 18:30:44 [SEVERE]    at net.minecraft.server.MinecraftServer.func_71222_d(MinecraftServer.java:489)
    2014-01-16 18:30:44 [SEVERE]    at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:432)
    2014-01-16 18:30:44 [SEVERE]    at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:224)
    2014-01-16 18:30:44 [SEVERE]    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:634)
    2014-01-16 18:30:44 [SEVERE]    at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
    2014-01-16 18:30:44 [INFO] [ReActions] Enabling ReActions v0.5.1
    2014-01-16 18:30:44 [INFO] [ReActions] PlayEffect plugin is found!
    P.S на счет "[INFO] [PlayEffect] Please download compatible version from" уже пробовал ставить другие версии плагина, не помогло
     
    Последнее редактирование: 16 янв 2014
  14. JustBlender

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

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Какое ядро плагина? Ядро ругается на библиотеку
     
  15. Shockwave

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

    Баллы:
    103
    То есть на библиотеки mcpc?
     
  16. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    NMSLib - это класс в плагине, который отвечает за работу с пакетами средствами craftbukkit. Поскольку это происходит на более низком уровне чем BukkitAPI, то MCPC+ его не понимает.
    Поэтому пока, к сожалению, под MCPC PlayEffect не заработает. Я планирую добавить поддержку ProtocolLib для отправки пакетов с эффектами, тогда по идее появится и совместимость с MCPC.
     
  17. Shockwave

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

    Баллы:
    103
    Жаль, тогда буду ждать, а с ReActions тоже самое?
     
  18. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    В ReActions несколько стандартных эффектов (дым, огоньки мобспавнера, что-то ещё ;)) которые работают без PlayEffect. Всё остальное работает используя PlayEffect API.

    Вобщем, есть попытка подружить PlayEffect с ProtocolLib.
    У меня работает, но нужно проверить на spigot'е и MCPC+. У кого есть возможность, проверьте пожалуйста
    эффекты explosion и любой из "нестандартных", к примеру, lava или flamenew

    https://dl.dropboxusercontent.com/u/64799811/PlayEffect/PlayEffect.jar
     
  19. Shockwave

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

    Баллы:
    103
    Код:
    2014-01-16 22:17:31 [INFO] [PlayEffect] Enabling PlayEffect v0.3.1/2
    2014-01-16 22:17:31 [INFO] [PlayEffect] ProtocolLib found and connected.
    2014-01-16 22:17:31 [SEVERE] Error occurred while enabling PlayEffect v0.3.1/2 (Is it up to date?)
    java.lang.NullPointerException
        at me.fromgate.playeffect.packet.NMSLib.log(NMSLib.java:103)
        at me.fromgate.playeffect.packet.NMSLib.init(NMSLib.java:94)
        at me.fromgate.playeffect.PlayEffect.onEnable(PlayEffect.java:37)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:467)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:383)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugin(CraftServer.java:277)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.enablePlugins(CraftServer.java:259)
        at net.minecraft.server.MinecraftServer.func_71243_i(MinecraftServer.java:525)
        at net.minecraft.server.MinecraftServer.func_71222_d(MinecraftServer.java:489)
        at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:432)
        at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:224)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:634)
     
  20. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    На это не обращайте внимание, запускайте пробуйте запустить эффекты. Эта библиотека при наличии ProtocolLib использоваться не будет. А он — подхватился нормально: "2014-01-16 22:17:31 [INFO] [PlayEffect] ProtocolLib found and connected."
     

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