package de.tobiyas.racesandclasses.vollotile; import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.entity.Arrow; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.util.Vector; import de.tobiyas.util.vollotile.VollotileCodeManager; public class Vollotile { private static Vollotile instance; public Vollotile() { } /** * Returns the Vollotile Code. * @return */ public static Vollotile get(){ if(instance == null) instance = new Vollotile(); return instance; } public void playCriticalHitEffect(Player toSendTo, Entity toPlayEffect) { VollotileCodeManager.getVollotileCode().playCriticalHitEffect(toSendTo, toPlayEffect); } public void playCriticalHitEffect(Entity toPlayEffect) { VollotileCodeManager.getVollotileCode().playCriticalHitEffect(toPlayEffect); } public void sendRawMessage(Player player, String rawMessage) { VollotileCodeManager.getVollotileCode().sendRawMessage(player, rawMessage); } public void removeParticleEffect(LivingEntity entity) { VollotileCodeManager.getVollotileCode().removeParticleEffect(entity); } private final int MAX_PARTICLE_RANGE = 64*64; /** * use THIS for RaC Traits. * * @param effect * @param loc * @param width * @param data * @param amount * @param player */ public void sendOwnParticleEffect(ParticleEffects effect, Location loc, Vector width, float data, int amount, Player player) { if(effect == null) return; if(player.getWorld() != loc.getWorld() || player.getLocation().distanceSquared(loc) > MAX_PARTICLE_RANGE) return; Effect bukkitEffect = effect.asBukkit(); if(bukkitEffect != null){ loc.getWorld().playEffect(loc, bukkitEffect, (int)data); }else{ VollotileCodeManager.getVollotileCode().sendParticleEffect(effect.asMirror(), loc, width, data, amount, player); } } /** * Use THIS from RaC Traits! * * @param effect * @param loc * @param data * @param amount */ public void sendOwnParticleEffectToAll(ParticleEffects effect, Location loc, float data, int amount) { if(effect == null) return; sendOwnParticleEffectToAll(effect, loc, new Vector(0.1,0.1,0.1), data, amount); } /** * Use THIS from RaC Traits! * * @param effect * @param loc * @param data * @param amount */ public void sendOwnParticleEffectToAll(ParticleContainer container, Location loc) { if(container == null) return; sendOwnParticleEffectToAll(container.getEffect(), loc, container.getVec(), container.getData(), container.getAmount()); } /** * Use THIS from RaC Traits! * * @param effect * @param loc * @param data * @param amount */ public void sendOwnParticleEffectToAll(ParticleEffects effect, Location loc, Vector width, float data, int amount) { if(effect == null) return; for(Player pl : loc.getWorld().getPlayers()){ sendOwnParticleEffect(effect, loc, width, data, amount, pl); } } /** * Froma RaC Traits, use {@link #sendParticleEffect(ParticleEffects, Location, Vector, float, int, Player) * @param effect * @param loc * @param width * @param data * @param amount * @param player */ public void sendParticleEffect(de.tobiyas.util.vollotile.ParticleEffects effect, Location loc, Vector width, float data, int amount, Player player) { VollotileCodeManager.getVollotileCode().sendParticleEffect(effect, loc, width, data, amount, player); } /** * Use {@link #sendParticleEffectToAll(ParticleEffects, Location, float, int)} for RaC Traits. * * @param effect * @param loc * @param data * @param amount */ public void sendParticleEffectToAll(de.tobiyas.util.vollotile.ParticleEffects effect, Location loc, float data, int amount) { VollotileCodeManager.getVollotileCode().sendParticleEffectToAll(effect, loc, data, amount); } /** * Makes an Arrow pickupable. * * @param arrow to modify * @param mayBePickedUp the state to give. */ public void makeArrowPickupable(Arrow arrow, boolean mayBePickedUp) { VollotileCodeManager.getVollotileCode().makeArrowPickupable(arrow, mayBePickedUp); } public boolean isCorrectVersion() { return VollotileCodeManager.getVollotileCode().isCorrectVersion(); } public String toString() { return VollotileCodeManager.getVollotileCode().toString(); } }