mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-21 12:15:50 +00:00
59 lines
1.8 KiB
Java
59 lines
1.8 KiB
Java
package me.mrCookieSlime.Slimefun.Objects.tasks;
|
|
|
|
import java.text.DecimalFormat;
|
|
import java.util.UUID;
|
|
|
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
|
|
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
|
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Effect;
|
|
import org.bukkit.Sound;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.util.Vector;
|
|
|
|
public class JetBootsTask implements Runnable {
|
|
|
|
UUID uuid;
|
|
double speed;
|
|
int id;
|
|
|
|
public JetBootsTask(Player p, double speed) {
|
|
this.uuid = p.getUniqueId();
|
|
this.speed = speed;
|
|
}
|
|
|
|
public void setID(int id) {
|
|
this.id = id;
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
if (Bukkit.getPlayer(uuid) == null) Bukkit.getScheduler().cancelTask(id);
|
|
else if (Bukkit.getPlayer(uuid).isDead()) Bukkit.getScheduler().cancelTask(id);
|
|
else if (!Bukkit.getPlayer(uuid).isSneaking()) Bukkit.getScheduler().cancelTask(id);
|
|
else {
|
|
Player p = Bukkit.getPlayer(uuid);
|
|
float cost = 0.075F;
|
|
float charge = ItemEnergy.getStoredEnergy(p.getInventory().getBoots());
|
|
double accuracy = Double.valueOf(new DecimalFormat("##.##").format(speed - 0.7).replace(",", "."));
|
|
if (charge >= cost) {
|
|
p.getInventory().setBoots(ItemEnergy.chargeItem(p.getInventory().getBoots(), -cost));
|
|
PlayerInventory.update(p);
|
|
|
|
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_TNT_PRIMED, (float) 0.25, 1);
|
|
p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1, 1);
|
|
p.setFallDistance(0.0f);
|
|
double gravity = 0.04;
|
|
double offset = SlimefunStartup.chance(100, 50) ? accuracy: -accuracy;
|
|
Vector vector = new Vector(p.getEyeLocation().getDirection().getX() * speed + offset, gravity, p.getEyeLocation().getDirection().getZ() * speed - offset);
|
|
|
|
p.setVelocity(vector);
|
|
}
|
|
else Bukkit.getScheduler().cancelTask(id);
|
|
}
|
|
}
|
|
|
|
}
|