package me.gtacraft.plugins.jetpack.task; import me.gtacraft.plugins.jetpack.util.JetPackUtil; import me.gtacraft.plugins.jetpack.util.ParticleEffects; import net.minecraft.util.com.google.common.collect.Lists; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; import org.bukkit.util.Vector; import java.util.HashMap; import java.util.List; /** * Created by Connor on 7/11/14. Designed for the GTA-Jetpacks project. */ public class JetTask implements Runnable { public static volatile HashMap<String, Player> async_player_map = new HashMap<>(); public static volatile HashMap<String, Double> speed_map = new HashMap<>(); public void run() { for (Player player : async_player_map.values()) { int pack = JetPackUtil.hasPack(player); if (player.isSneaking()) { //check pack if (pack != -1) { double multiplier = pack; double prev = 0.01; if (speed_map.containsKey(player.getName())) prev = speed_map.remove(player.getName()); if (!(player.getAllowFlight())) { player.setAllowFlight(true); } Vector pVec = player.getEyeLocation().getDirection(); pVec.setX(pVec.getX() / 5); pVec.setZ(pVec.getZ() / 5); pVec.setY(prev); player.setVelocity(pVec); prev+=((double)pack/20.0); if (prev > 1.5) prev = 1.5; speed_map.put(player.getName(), prev); ParticleEffects.CLOUD.sendToPlayer(player, player.getLocation(), .2f, .2f, .2f, .1f, 3); player.playSound(player.getLocation(), Sound.FIZZ, 1, 1); } continue; } if (player.getAllowFlight() && pack != -1 && !(player.hasPermission("jetpack.bypass"))) player.setAllowFlight(false); if ((speed_map.containsKey(player.getName()) ? speed_map.get(player.getName()) : 0) > 0) { speed_map.put(player.getName(), (speed_map.containsKey(player.getName()) ? speed_map.remove(player.getName())-((double)(-pack+6)/20.0) : 0)); } } } }