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

Ну и вот пример плагина, который реализует то, что ты хочешь:
В этом плагине, чтобы не было безумного спама эффектами они проигрываются только если игрок прошёл расстояние больше чем 0.7 блока. Т.е. когда игрок стоит на месте -- эффектов нет.
Есть два метода в разных проявлениях - play и set.
Для проигрывания эффекта используем play.
Естественно, сначала нужно добавить в качестве сторонней библиотеки PlayEffect.

Ну и вот пример плагина, который реализует то, что ты хочешь:
Код:
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 блока. Т.е. когда игрок стоит на месте -- эффектов нет.

