Войти или зарегистрироваться

Помогите Прошу помочь с кодом для эффектов.

_Danger_

Активный участник
Баллы
68
Имя в Minecraft
_Danger_
Прошу помочь мне с кодом Java в общем мне нужно воспроизводить эффекты как сердца,ангри,ноты ...
Примеры вот:
Smoke_Trail
PlayerTrails
ParticlePack
Если кто то знает как это сделать прошу написать полную информацию.
 
Прошу помочь мне с кодом Java в общем мне нужно воспроизводить эффекты как сердца,ангри,ноты ...
Примеры вот:
Smoke_Trail
PlayerTrails
ParticlePack
Если кто то знает как это сделать прошу написать полную информацию.
Различные пакеты в помощь! Я если честно, для своего сервера всегда использую API PlayEffect, и не разу не заморачивался.
 
Качай PlayEffect от @fromgate, а в своём плагине пиши:
Код:
PlayEffect.play(VisualEffect.ТВОЙ_ЕФФЕКТ, new Location(МИР, X,Y,Z), "Парамеры, типа:draw:circle и так далее.");
и вуаля.
 
У меня не получается с PlayEffect !
Как делаешь?
Вот простой пример:
https://github.com/fromgate/PlayEffectRailgun

Вот ещё простейший пример:
Код:
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);
    }
}
 
Давно забросил тему со злости потому что у меня не получалось.
А кто сможет конкретно помочь прошу добавить в скайп
ceburatorkoderov854564
 
Сколько тебе писал об этом... Все равно не понял
 
Сколько тебе писал об этом... Все равно не понял
Я новичёк. я перешел с Delphi на Java и по ка что не знаю что к чему.
Писал писал и всё бес толку потому что мне нужны настоящие эффекты а не
PlayEffect - визуальные и звуковые эффекты на Вашем сервере!
 
Визуальные, их вижу лишь я !
Визуальные - имеется в виду не то что только ты их видишь! их видят все!
PicardFacepalm.png
 
_Danger_, мммм.... а вы плагин-то пробовали? Все видеть должны. У большей части эффектов есть правда ограничение по расстоянию видимости - 16 блоков, но это расстояние без мода не увеличить (я уже кучу народа просил написать соответствующий мод, но пока без результата).
 
Юзаю это (не мой класс)
Код:
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
public enum ParticleEffect {
    HUGE_EXPLOSION("hugeexplosion", 0), LARGE_EXPLODE("largeexplode", 1), FIREWORKS_SPARK("fireworksSpark", 2), BUBBLE("bubble", 3), SUSPEND("suspend", 4), DEPTH_SUSPEND("depthSuspend", 5), TOWN_AURA("townaura", 6), CRIT("crit", 7), MAGIC_CRIT("magicCrit", 8), MOB_SPELL("mobSpell", 9), MOB_SPELL_AMBIENT("mobSpellAmbient", 10), SPELL("spell", 11), INSTANT_SPELL("instantSpell", 12), WITCH_MAGIC("witchMagic", 13), NOTE("note", 14), PORTAL("portal", 15), ENCHANTMENT_TABLE("enchantmenttable", 16), EXPLODE("explode", 17), FLAME("flame", 18), LAVA("lava", 19), FOOTSTEP("footstep", 20), SPLASH("splash", 21), LARGE_SMOKE("largesmoke", 22), CLOUD("cloud", 23), RED_DUST("reddust", 24), SNOWBALL_POOF("snowballpoof", 25), DRIP_WATER("dripWater", 26), DRIP_LAVA("dripLava", 27), SNOW_SHOVEL("snowshovel", 28), SLIME("slime", 29), HEART("heart", 30), ANGRY_VILLAGER("angryVillager", 31), HAPPY_VILLAGER("happyVillager", 32), ICONCRACK("iconcrack", 33), TILECRACK("tilecrack", 34);
    private String name;
    private int id;
    ParticleEffect(String name, int id) {
        this.name = name;
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public int getId() {
        return id;
    }
    private static final Map<String, ParticleEffect> NAME_MAP = new HashMap<String, ParticleEffect>();
    private static final Map<Integer, ParticleEffect> ID_MAP = new HashMap<Integer, ParticleEffect>();
    static {
        for (ParticleEffect effect : values()) {
            NAME_MAP.put(effect.name, effect);
            ID_MAP.put(effect.id, effect);
        }
    }
    public static ParticleEffect fromName(String name) {
        if (name == null) {
            return null;
        }
        for (Entry<String, ParticleEffect> e : NAME_MAP.entrySet()) {
            if (e.getKey().equalsIgnoreCase(name)) {
                return e.getValue();
            }
        }
        return null;
    }
    public static ParticleEffect fromId(int id) {
        return ID_MAP.get(id);
    }
    public static void sendToPlayer(ParticleEffect effect, Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count) throws Exception {
        Object packet = createPacket(effect, location, offsetX, offsetY, offsetZ, speed, count);
        sendPacket(player, packet);
    }
    public static void sendToLocation(ParticleEffect effect, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count) throws Exception {
        Object packet = createPacket(effect, location, offsetX, offsetY, offsetZ, speed, count);
        for (Player player : Bukkit.getOnlinePlayers()) {
            sendPacket(player, packet);
        }
    }
    public static void sendCrackToPlayer(boolean icon, int id, byte data, Player player, Location location, float offsetX, float offsetY, float offsetZ, int count) throws Exception {
        Object packet = createCrackPacket(icon, id, data, location, offsetX, offsetY, offsetZ, count);
        sendPacket(player, packet);
    }
    public static void sendCrackToLocation(boolean icon, int id, byte data, Location location, float offsetX, float offsetY, float offsetZ, int count) throws Exception {
        Object packet = createCrackPacket(icon, id, data, location, offsetX, offsetY, offsetZ, count);
        for (Player player : Bukkit.getOnlinePlayers()) {
            sendPacket(player, packet);
        }
    }
    public static Object createPacket(ParticleEffect effect, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count) throws Exception {
        if (count <= 0)
            count = 1;
        Object packet = getPacket63WorldParticles();
        setValue(packet, "a", effect.name);
        setValue(packet, "b", (float) location.getX());
        setValue(packet, "c", (float) location.getY());
        setValue(packet, "d", (float) location.getZ());
        setValue(packet, "e", offsetX);
        setValue(packet, "f", offsetY);
        setValue(packet, "g", offsetZ);
        setValue(packet, "h", speed);
        setValue(packet, "i", count);
        return packet;
    }
    public static Object createCrackPacket(boolean icon, int id, byte data, Location location, float offsetX, float offsetY, float offsetZ, int count) throws Exception {
        if (count <= 0)
            count = 1;
        Object packet = getPacket63WorldParticles();
        String modifier = "iconcrack_" + id;
        if (!icon) {
            modifier = "tilecrack_" + id + "_" + data;
        }
        setValue(packet, "a", modifier);
        setValue(packet, "b", (float) location.getX());
        setValue(packet, "c", (float) location.getY());
        setValue(packet, "d", (float) location.getZ());
        setValue(packet, "e", offsetX);
        setValue(packet, "f", offsetY);
        setValue(packet, "g", offsetZ);
        setValue(packet, "h", 0.1F);
        setValue(packet, "i", count);
        return packet;
    }
    private static void setValue(Object instance, String fieldName, Object value) throws Exception {
        Field field = instance.getClass().getDeclaredField(fieldName);
        field.setAccessible(true);
        field.set(instance, value);
    }
    private static Object getEntityPlayer(Player p) throws Exception {
        Method getHandle = p.getClass().getMethod("getHandle");
        return getHandle.invoke(p);
    }
    private static String getPackageName() {
        return "net.minecraft.server." + Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
    }
    private static Object getPacket63WorldParticles() throws Exception {
        Class<?> packet = Class.forName(getPackageName() + ".Packet63WorldParticles");
        return packet.getConstructors()[0].newInstance();
    }
    private static void sendPacket(Player p, Object packet) throws Exception {
        Object eplayer = getEntityPlayer(p);
        Field playerConnectionField = eplayer.getClass().getField("playerConnection");
        Object playerConnection = playerConnectionField.get(eplayer);
        for (Method m : playerConnection.getClass().getMethods()) {
            if (m.getName().equalsIgnoreCase("sendPacket")) {
                m.invoke(playerConnection, packet);
                return;
            }
        }
    }
}

а в своих классах пишу это (пример):
Код:
ParticleEffect.sendToPlayer(ParticleEffect.ENCHANTMENT_TABLE, player, player.getLocation(), 0, -1, 0, 1f, 50);
 
Визуальные - имеется в виду не то что только ты их видишь! их видят все!
PicardFacepalm.png
Уфффф как же тяжело работать с этими эффектами а какой бы SRC не качал с гитхаба везде ошибки а рубакит не охота засерать !
 
Уфффф как же тяжело работать с этими эффектами а какой бы SRC не качал с гитхаба везде ошибки а рубакит не охота засерать !
А зачем вам качать SRC?
Качаете библиотеку от fromgate(PlayEffect, меня никогда не достанет эту библиотеку кому-то предлагать :D), ставите его на сервер(как плагин!), в своём плагине пишите:
  1. PlayEffect.play(VisualEffect.FLAMENEW, Location, "Твои_Параметры");
И всё! Никаких проблем!
 
player.getWorld().playEffect(player.getLocation(), Effect.CLICK2, this);
Это пример проигрывания звуков кликанья кнопки.
Подобным способом можно проигрывать и визуальные эффекты, но их количество ограниченно: дым, сигнал эндера, мобспавнеровские огоньки, разбивающиеся бутылки и что-то там ещё. Но поскольку эффектов мало и затевается чехарда с пакетами и дополнительными библиотеками.
 
Назад
Верх