package me.thevipershow.simpleparticles.Particles;
import me.thevipershow.simpleparticles.Simpleparticles;
import org.bukkit.*;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector;
import java.io.IOException;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicReference;
import static me.thevipershow.simpleparticles.Simpleparticles.*;
public class NewPlayer implements Listener, CommandExecutor {
private void saveConfig() {
try {
customConfig.save(chestConfig);
} catch (IOException e) {
e.printStackTrace();
}
}
public static String chat(String input) {
return ChatColor.translateAlternateColorCodes('&', input);
}
private void drawparticle(UUID playerUUID, AtomicReference<Double> k, String particella) {
if (Bukkit.getServer().getPlayer(playerUUID) != null) {
Player player = Bukkit.getPlayer(playerUUID);
Location playerLoc = player.getLocation();
double x = (player.getLocation().getX()) + (Simpleparticles.plugin.getConfig().getDouble("main.value.radius") * Math.cos(k.get() * Simpleparticles.plugin.getConfig().getDouble("main.value.factor-spirals"))),
z = (player.getLocation().getZ()) + (Simpleparticles.plugin.getConfig().getDouble("main.value.radius") * Math.sin(Simpleparticles.plugin.getConfig().getDouble("main.value.factor-spirals") * k.get())),
y = player.getLocation().getY() + (k.get() / Simpleparticles.plugin.getConfig().getDouble("main.value.height-factor2")) + Simpleparticles.plugin.getConfig().getDouble("main.value.height-factor");
Bukkit.broadcastMessage(String.valueOf(player.getVelocity()));
Bukkit.getWorld(player.getWorld().getUID()).spawnParticle(Particle.valueOf(particella.toUpperCase()), x, y, z, 0, 0, 0, 0);
}
}
private void updateConfig(JavaPlugin plugin, Player player) {
plugin.reloadConfig();
player.sendMessage(chat("&7» &aPlugin has been reloaded."));
}
private void particlesRunnableGen(UUID playerUUID, String args) {
AtomicReference<Double> k = new AtomicReference<>(0.00);
BukkitRunnable runnable_player = new BukkitRunnable() {
public void run() {
if (Bukkit.getServer().getPlayer(playerUUID) != null) {
Player player = Bukkit.getPlayer(playerUUID);
drawparticle(player.getUniqueId(), k, Simpleparticles.particles2.get(args).toUpperCase());
k.updateAndGet(v -> v + plugin.getConfig().getDouble("main.value.runnable2"));
if (k.get() > plugin.getConfig().getDouble("main.value.runnable3max")) {
k.set((double) 0);
}
}
}
};
runnable_player.runTaskTimer(plugin, 0, Simpleparticles.plugin.getConfig().getLong("main.value.runnable") * 20);
player_runnables.put(playerUUID, runnable_player);
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) {
log.info(ANSI_RED + "» You cannot run this command from system console!");
} else if (sender.hasPermission("simpleparticles.enable")) {
Player player = (Player) sender;
switch (args.length) {
case 0:
player.sendMessage(chat("&7» &b&lSimpleParticles &7help page:"));
player.sendMessage(chat("&7» &3/particles enable &a<particle>"));
player.sendMessage(chat("&7» &3/particles chestcreate &a<name>"));
player.sendMessage(chat("&7» &3/particles chestdelete &a<name>"));
player.sendMessage(chat("&7» &3/particles-gui"));
player.sendMessage(chat("&7» &3/particles disable"));
player.sendMessage(chat("&7» &3/particles reload"));
break;
case 1:
switch (args[0].toLowerCase()) {
case "reload":
if (player.hasPermission("simpleparticles.reload")) {
updateConfig(plugin, player);
} else {
player.sendMessage(chat(plugin.getConfig().getString("main.messages.no-permission")));
}
break;
case "rl":
updateConfig(plugin, player);
break;
case "disable":
if (player.hasPermission("simpleparticles.remove") && player_runnables.containsKey(player.getUniqueId())) {
player_runnables.get(player.getUniqueId()).cancel();
player_runnables.remove(player.getUniqueId());
player.sendMessage(chat(plugin.getConfig().getString("main.messages.disable-particles")));
}
break;
case "list":
player.sendMessage(chat(plugin.getConfig().getString("main.messages.particles-list")));
for (Map.Entry entry : particles2.entrySet()) {
player.sendMessage(chat("&8» &a" + entry.getKey()));
}
break;
default:
player.sendMessage(chat(plugin.getConfig().getString("main.messages.invalid-argument")));
break;
}
case 2:
switch (args[0].toLowerCase()) {
case "enable":
if ((player.hasPermission("simpleparticles." + args[1].toLowerCase())) && (!player_runnables.containsKey(player.getUniqueId()))) {
if (particles2.containsKey(args[1].toLowerCase())) {
player.sendMessage(chat(plugin.getConfig().getString("main.messages.enabled-particles").replace("%pname%", args[1].toUpperCase())));
particlesRunnableGen(player.getUniqueId(), args[1]);
}
} else {
player.sendMessage(chat(plugin.getConfig().getString("main.messages.already-enabled")));
}
break;
case "chestcreate":
if (player.hasPermission("simpleparticles.chestcreate")) {
player.getLocation().getBlock().setType(Material.ENDER_CHEST);
player.teleport(player.getLocation().add(0.0, 1.05, 0.0));
String locationConfig = player.getLocation().getBlockX() + "#" + player.getLocation().getBlockY() + "#" + player.getLocation().getBlockZ();
plugin.getCustomConfig().set(args[1].toLowerCase(), locationConfig);
player.sendMessage(chat("&7> &aChest created in database!"));
saveConfig();
}
break;
case "chestdelete":
if (player.hasPermission("simpleparticles.chestremove")) {
if (plugin.getCustomConfig().contains(args[1].toLowerCase())) {
plugin.getCustomConfig().set(args[1].toLowerCase(), null);
player.sendMessage(chat("&7> &aChest succesfully removed from database."));
saveConfig();
}
}
break;
}
}
}
return false;
}
}