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 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 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")); player.sendMessage(chat("&7» &3/particles chestcreate &a")); player.sendMessage(chat("&7» &3/particles chestdelete &a")); 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; } }