package in.twizmwaz.cardinal.util;
import in.twizmwaz.cardinal.module.modules.permissions.PermissionModule;
import in.twizmwaz.cardinal.module.modules.team.TeamModule;
import in.twizmwaz.cardinal.rank.Rank;
import in.twizmwaz.cardinal.settings.Settings;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.Sound;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.permissions.ServerOperator;
import org.bukkit.potion.PotionEffect;
import java.util.UUID;
public class Players {
public static void resetPlayer(Player player) {
resetPlayer(player, true);
}
public static void resetPlayer(Player player, boolean heal) {
if (heal) player.setHealth(player.getMaxHealth());
player.setFoodLevel(20);
player.setSaturation(20);
player.getInventory().clear();
player.getInventory().setArmorContents(new ItemStack[]{new ItemStack(Material.AIR), new ItemStack(Material.AIR), new ItemStack(Material.AIR), new ItemStack(Material.AIR)});
for (PotionEffect effect : player.getActivePotionEffects()) {
try {
player.removePotionEffect(effect.getType());
} catch (NullPointerException ignored) {
}
}
player.setTotalExperience(0);
player.setExp(0);
player.setLevel(0);
player.setPotionParticles(false);
player.setWalkSpeed(0.2F);
player.setFlySpeed(0.1F);
player.setKnockbackReduction(0);
player.setArrowsStuck(0);
player.hideTitle();
player.setFastNaturalRegeneration(false);
for (Attribute attribute : Attribute.values()) {
if (player.getAttribute(attribute) == null) continue;
for (AttributeModifier modifier : player.getAttribute(attribute).getModifiers()) {
player.getAttribute(attribute).removeModifier(modifier);
}
}
player.getAttribute(Attribute.GENERIC_ATTACK_SPEED).addModifier(new AttributeModifier(UUID.randomUUID(), "generic.attackSpeed", 4.001D, AttributeModifier.Operation.ADD_SCALAR));
player.getAttribute(Attribute.ARROW_ACCURACY).addModifier(new AttributeModifier(UUID.randomUUID(), "sportbukkit.arrowAccuracy", -1D, AttributeModifier.Operation.ADD_NUMBER));
player.getAttribute(Attribute.ARROW_VELOCITY_TRANSFER).addModifier(new AttributeModifier(UUID.randomUUID(), "sportbukkit.arrowVelocityTransfer", -1D, AttributeModifier.Operation.ADD_NUMBER));
}
public static void canInteract(Player player, boolean state) {
player.setAffectsSpawning(state);
player.setCollidesWithEntities(state);
player.setCanPickupItems(state);
}
public static void setObserver(Player player) {
player.setGameMode(GameMode.CREATIVE);
player.setAllowFlight(true);
player.setFlying(true);
canInteract(player, false);
resetPlayer(player, false);
player.closeInventory();
}
public static void playSoundEffect(Player player, Location loc, Sound sound, float volume, float pitch) {
if (Settings.getSettingByName("Sounds") != null && Settings.getSettingByName("Sounds").getValueByPlayer(player).getValue().equalsIgnoreCase("on")) {
player.playSound(loc, sound, volume, pitch);
}
}
public static void playSoundEffect(Player player, Sound sound, float volume, float pitch) {
playSoundEffect(player, player.getLocation(), sound, volume, pitch);
}
public static void broadcastSoundEffect(Location loc, Sound sound, float volume, float pitch) {
for (Player player : Bukkit.getOnlinePlayers()) {
playSoundEffect(player, loc, sound, volume, pitch);
}
}
public static void broadcastSoundEffect(Sound sound, float volume, float pitch) {
for (Player player : Bukkit.getOnlinePlayers()) {
playSoundEffect(player, sound, volume, pitch);
}
}
public static void broadcastSoundEffect(TeamModule team, Location loc, Sound sound, float volume, float pitch) {
if (team == null) return;
for (Player player : Bukkit.getOnlinePlayers()) {
if (team.contains(player)) playSoundEffect(player, loc, sound, volume, pitch);
}
}
public static void broadcastSoundEffect(TeamModule team, Sound sound, float volume, float pitch) {
if (team == null) return;
for (Player player : Bukkit.getOnlinePlayers()) {
if (team.contains(player)) playSoundEffect(player, sound, volume, pitch);
}
}
public static double getSnowflakeMultiplier(OfflinePlayer player) {
if (player.isOp()) return 2.5;
if (PermissionModule.isDeveloper(player.getUniqueId())) return 2.0;
return 1.0;
}
public static String getName(ServerOperator who, boolean flairs) {
if (who instanceof OfflinePlayer) {
OfflinePlayer player = (OfflinePlayer) who;
return player.isOnline() ? (flairs ? player.getPlayer().getDisplayName() : Teams.getTeamColorByPlayer(player) + player.getPlayer().getName()) : Rank.getPrefix(player.getUniqueId()) + ChatColor.DARK_AQUA + player.getName();
} else {
return ChatColor.GOLD + "\u2756" + ChatColor.DARK_AQUA + "Console";
}
}
public static String getName(ServerOperator who) {
return getName(who, true);
}
}