mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2025-02-10 19:23:52 +00:00
Updated stats, toggle, and who commands
This commit is contained in:
parent
16f90d20ab
commit
fc29b27808
6 changed files with 284 additions and 264 deletions
|
@ -1,29 +1,22 @@
|
|||
package com.projectkorra.projectkorra.command;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.info.AbilityInfo;
|
||||
import com.projectkorra.projectkorra.configuration.configs.commands.StatsCommandConfig;
|
||||
import com.projectkorra.projectkorra.element.Element;
|
||||
import com.projectkorra.projectkorra.storage.DBConnection;
|
||||
import com.projectkorra.projectkorra.util.Statistic;
|
||||
import com.projectkorra.projectkorra.util.StatisticsMethods;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.projectkorra.projectkorra.Element;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.configuration.configs.commands.StatsCommandConfig;
|
||||
import com.projectkorra.projectkorra.storage.DBConnection;
|
||||
import com.projectkorra.projectkorra.util.Statistic;
|
||||
import com.projectkorra.projectkorra.util.StatisticsMethods;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public class StatsCommand extends PKCommand<StatsCommandConfig> {
|
||||
|
@ -50,11 +43,11 @@ public class StatsCommand extends PKCommand<StatsCommandConfig> {
|
|||
if (!this.correctLength(sender, args.size(), 3, 4)) {
|
||||
return;
|
||||
}
|
||||
final CoreAbility ability = CoreAbility.getAbility(args.get(1));
|
||||
final Element element = Element.getElement(args.get(1));
|
||||
final AbilityInfo abilityInfo = this.abilityManager.getAbilityInfo(args.get(1));
|
||||
final Element element = this.elementManager.getElement(args.get(1));
|
||||
Object object = null;
|
||||
if (ability != null) {
|
||||
object = ability;
|
||||
if (abilityInfo != null) {
|
||||
object = abilityInfo;
|
||||
} else if (element != null) {
|
||||
object = element;
|
||||
}
|
||||
|
@ -125,9 +118,9 @@ public class StatsCommand extends PKCommand<StatsCommandConfig> {
|
|||
} else {
|
||||
value = StatisticsMethods.getStatistic(target.getUniqueId(), object, statistic);
|
||||
}
|
||||
if (object instanceof CoreAbility) {
|
||||
final CoreAbility ability = (CoreAbility) object;
|
||||
message = message.replace("%object%", ability.getName()).replace("%player%", target.getName()).replace("%value%", String.valueOf(value));
|
||||
if (object instanceof AbilityInfo) {
|
||||
final AbilityInfo abilityInfo = (AbilityInfo) object;
|
||||
message = message.replace("%object%", abilityInfo.getName()).replace("%player%", target.getName()).replace("%value%", String.valueOf(value));
|
||||
} else if (object instanceof Element) {
|
||||
final Element element = (Element) object;
|
||||
message = message.replace("%object%", element.getName()).replace("%player%", target.getName()).replace("%value%", String.valueOf(value));
|
||||
|
@ -144,9 +137,9 @@ public class StatsCommand extends PKCommand<StatsCommandConfig> {
|
|||
int p = page > maxPage ? maxPage : page;
|
||||
p = p < 1 ? 1 : p;
|
||||
String title = "%object% " + statistic.getDisplayName() + " Leaderboard";
|
||||
if (object instanceof CoreAbility) {
|
||||
final CoreAbility ability = (CoreAbility) object;
|
||||
title = title.replace("%object%", ability.getName());
|
||||
if (object instanceof AbilityInfo) {
|
||||
final AbilityInfo abilityInfo = (AbilityInfo) object;
|
||||
title = title.replace("%object%", abilityInfo.getName());
|
||||
} else if (object instanceof Element) {
|
||||
final Element element = (Element) object;
|
||||
title = title.replace("%object%", element.getName());
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
package com.projectkorra.projectkorra.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.configuration.configs.commands.ToggleCommandConfig;
|
||||
import com.projectkorra.projectkorra.element.Element;
|
||||
import com.projectkorra.projectkorra.element.SubElement;
|
||||
import com.projectkorra.projectkorra.player.BendingPlayer;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.Element;
|
||||
import com.projectkorra.projectkorra.Element.SubElement;
|
||||
import com.projectkorra.projectkorra.configuration.configs.commands.ToggleCommandConfig;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Executor for /bending toggle. Extends {@link PKCommand}.
|
||||
|
@ -53,19 +52,20 @@ public class ToggleCommand extends PKCommand<ToggleCommandConfig> {
|
|||
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.toggledOffForAll);
|
||||
return;
|
||||
}
|
||||
BendingPlayer bPlayer = BendingPlayer.getBendingPlayer(sender.getName());
|
||||
if (bPlayer == null) {
|
||||
GeneralMethods.createBendingPlayer(((Player) sender).getUniqueId(), sender.getName());
|
||||
bPlayer = BendingPlayer.getBendingPlayer(sender.getName());
|
||||
}
|
||||
if (bPlayer.isToggled()) {
|
||||
|
||||
Player player = (Player) sender;
|
||||
BendingPlayer bendingPlayer = this.bendingPlayerManager.getBendingPlayer(player);
|
||||
|
||||
if (bendingPlayer.isToggled()) {
|
||||
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.toggleOffSelf);
|
||||
bPlayer.toggleBending();
|
||||
bendingPlayer.toggleBending();
|
||||
} else {
|
||||
GeneralMethods.sendBrandingMessage(sender, ChatColor.GREEN + this.toggleOnSelf);
|
||||
bPlayer.toggleBending();
|
||||
bendingPlayer.toggleBending();
|
||||
}
|
||||
} else if (args.size() == 1) {
|
||||
Element element = this.elementManager.getElement(args.get(0));
|
||||
|
||||
if (args.size() == 1 && args.get(0).equalsIgnoreCase("all") && this.hasPermission(sender, "all")) { // bending toggle all.
|
||||
if (Commands.isToggledForAll) { // Bending is toggled off for all players.
|
||||
Commands.isToggledForAll = false;
|
||||
|
@ -85,26 +85,27 @@ public class ToggleCommand extends PKCommand<ToggleCommandConfig> {
|
|||
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.toggleOffAll);
|
||||
}
|
||||
}
|
||||
} else if (sender instanceof Player && args.size() == 1 && Element.fromString(args.get(0)) != null && !(Element.fromString(args.get(0)) instanceof SubElement)) {
|
||||
if (!BendingPlayer.getBendingPlayer(sender.getName()).hasElement(Element.fromString(args.get(0)))) {
|
||||
} else if (sender instanceof Player && args.size() == 1 && element != null && !(element instanceof SubElement)) {
|
||||
Player player = (Player) sender;
|
||||
BendingPlayer bendingPlayer = this.bendingPlayerManager.getBendingPlayer(player);
|
||||
|
||||
if (!bendingPlayer.hasElement(element)) {
|
||||
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.wrongElement);
|
||||
return;
|
||||
}
|
||||
final Element e = Element.fromString(args.get(0));
|
||||
final ChatColor color = e != null ? e.getColor() : null;
|
||||
final BendingPlayer bPlayer = BendingPlayer.getBendingPlayer(sender.getName());
|
||||
bPlayer.toggleElement(e);
|
||||
|
||||
if (bPlayer.isElementToggled(e)) {
|
||||
GeneralMethods.sendBrandingMessage(sender, color + this.toggledOnSingleElement.replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")));
|
||||
bendingPlayer.toggleElement(element);
|
||||
|
||||
if (bendingPlayer.isElementToggled(element)) {
|
||||
GeneralMethods.sendBrandingMessage(sender, element.getColor() + this.toggledOnSingleElement.replace("{element}", element.getName() + (element.getType() != null ? element.getType().getBending() : "")));
|
||||
} else {
|
||||
GeneralMethods.sendBrandingMessage(sender, color + this.toggledOffSingleElement.replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")));
|
||||
GeneralMethods.sendBrandingMessage(sender, element.getColor() + this.toggledOffSingleElement.replace("{element}", element.getName() + (element.getType() != null ? element.getType().getBending() : "")));
|
||||
}
|
||||
} else {
|
||||
this.help(sender, false);
|
||||
}
|
||||
|
||||
} else if (sender instanceof Player && args.size() == 2 && Element.fromString(args.get(0)) != null && !(Element.fromString(args.get(0)) instanceof SubElement)) {
|
||||
} else if (sender instanceof Player && args.size() == 2 && this.elementManager.getElement(args.get(0)) != null && !(this.elementManager.getElement(args.get(0)) instanceof SubElement)) {
|
||||
final Player target = Bukkit.getPlayer(args.get(1));
|
||||
if (!this.hasAdminPermission(sender)) {
|
||||
return;
|
||||
|
@ -113,22 +114,23 @@ public class ToggleCommand extends PKCommand<ToggleCommandConfig> {
|
|||
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.notFound);
|
||||
return;
|
||||
}
|
||||
if (!BendingPlayer.getBendingPlayer(target.getName()).hasElement(Element.fromString(args.get(0)))) {
|
||||
Element element = this.elementManager.getElement(args.get(0));
|
||||
BendingPlayer bendingPlayer = this.bendingPlayerManager.getBendingPlayer(target);
|
||||
|
||||
if (!bendingPlayer.hasElement(element)) {
|
||||
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.wrongElementOther.replace("{target}", ChatColor.DARK_AQUA + target.getName() + ChatColor.RED));
|
||||
return;
|
||||
}
|
||||
final Element e = Element.fromString(args.get(0));
|
||||
final BendingPlayer bPlayer = BendingPlayer.getBendingPlayer(target.getName());
|
||||
final ChatColor color = e != null ? e.getColor() : null;
|
||||
|
||||
if (bPlayer.isElementToggled(e)) {
|
||||
GeneralMethods.sendBrandingMessage(sender, color + this.toggledOffOtherElementConfirm.replace("{target}", target.getName()).replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")));
|
||||
GeneralMethods.sendBrandingMessage(target, color + this.toggledOffOtherElement.replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")).replace("{sender}", ChatColor.DARK_AQUA + sender.getName()));
|
||||
if (bendingPlayer.isElementToggled(element)) {
|
||||
GeneralMethods.sendBrandingMessage(sender, element.getColor() + this.toggledOffOtherElementConfirm.replace("{target}", target.getName()).replace("{element}", element.getName() + (element.getType() != null ? element.getType().getBending() : "")));
|
||||
GeneralMethods.sendBrandingMessage(target, element.getColor() + this.toggledOffOtherElement.replace("{element}", element.getName() + (element.getType() != null ? element.getType().getBending() : "")).replace("{sender}", ChatColor.DARK_AQUA + sender.getName()));
|
||||
} else {
|
||||
GeneralMethods.sendBrandingMessage(sender, color + this.toggledOnOtherElementConfirm.replace("{target}", target.getName()).replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")));
|
||||
GeneralMethods.sendBrandingMessage(target, color + this.toggledOnOtherElement.replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")).replace("{sender}", ChatColor.DARK_AQUA + sender.getName()));
|
||||
GeneralMethods.sendBrandingMessage(sender, element.getColor() + this.toggledOnOtherElementConfirm.replace("{target}", target.getName()).replace("{element}", element.getName() + (element.getType() != null ? element.getType().getBending() : "")));
|
||||
GeneralMethods.sendBrandingMessage(target, element.getColor() + this.toggledOnOtherElement.replace("{element}", element.getName() + (element.getType() != null ? element.getType().getBending() : "")).replace("{sender}", ChatColor.DARK_AQUA + sender.getName()));
|
||||
}
|
||||
bPlayer.toggleElement(e);
|
||||
|
||||
bendingPlayer.toggleElement(element);
|
||||
} else {
|
||||
this.help(sender, false);
|
||||
}
|
||||
|
@ -150,7 +152,7 @@ public class ToggleCommand extends PKCommand<ToggleCommandConfig> {
|
|||
final List<String> l = new ArrayList<String>();
|
||||
if (args.size() == 0) {
|
||||
final List<String> elements = new ArrayList<String>();
|
||||
for (final Element e : Element.getAllElements()) {
|
||||
for (Element e : this.elementManager.getElements()) {
|
||||
elements.add(e.getName());
|
||||
}
|
||||
Collections.sort(elements);
|
||||
|
|
|
@ -1,5 +1,20 @@
|
|||
package com.projectkorra.projectkorra.command;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.info.AbilityInfo;
|
||||
import com.projectkorra.projectkorra.configuration.configs.commands.WhoCommandConfig;
|
||||
import com.projectkorra.projectkorra.element.Element;
|
||||
import com.projectkorra.projectkorra.element.ElementManager;
|
||||
import com.projectkorra.projectkorra.element.SubElement;
|
||||
import com.projectkorra.projectkorra.player.BendingPlayer;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
|
@ -8,28 +23,7 @@ import java.net.SocketException;
|
|||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.Element;
|
||||
import com.projectkorra.projectkorra.Element.ElementType;
|
||||
import com.projectkorra.projectkorra.Element.SubElement;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.configuration.configs.commands.WhoCommandConfig;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Executor for /bending who. Extends {@link PKCommand}.
|
||||
|
@ -98,17 +92,13 @@ public class WhoCommand extends PKCommand<WhoCommandConfig> {
|
|||
for (final Player player : Bukkit.getOnlinePlayers()) {
|
||||
final String playerName = player.getName();
|
||||
String result = "";
|
||||
BendingPlayer bp = BendingPlayer.getBendingPlayer(playerName);
|
||||
BendingPlayer bendingPlayer = this.bendingPlayerManager.getBendingPlayer(player);
|
||||
|
||||
if (bp == null) {
|
||||
GeneralMethods.createBendingPlayer(player.getUniqueId(), player.getName());
|
||||
bp = BendingPlayer.getBendingPlayer(player.getName());
|
||||
}
|
||||
for (final Element element : bp.getElements()) {
|
||||
for (final Element element : bendingPlayer.getElements()) {
|
||||
if (result == "") {
|
||||
result = ChatColor.WHITE + playerName + " - " + (((!bp.isElementToggled(element) || !bp.isToggled()) ? element.getColor() + "" + ChatColor.STRIKETHROUGH : element.getColor()) + element.getName().substring(0, 1));
|
||||
result = ChatColor.WHITE + playerName + " - " + (((!bendingPlayer.isElementToggled(element) || !bendingPlayer.isToggled()) ? element.getColor() + "" + ChatColor.STRIKETHROUGH : element.getColor()) + element.getName().substring(0, 1));
|
||||
} else {
|
||||
result = result + ChatColor.WHITE + " | " + (((!bp.isElementToggled(element) || !bp.isToggled()) ? element.getColor() + "" + ChatColor.STRIKETHROUGH : element.getColor()) + element.getName().substring(0, 1));
|
||||
result = result + ChatColor.WHITE + " | " + (((!bendingPlayer.isElementToggled(element) || !bendingPlayer.isToggled()) ? element.getColor() + "" + ChatColor.STRIKETHROUGH : element.getColor()) + element.getName().substring(0, 1));
|
||||
}
|
||||
}
|
||||
if (this.staff.containsKey(player.getUniqueId().toString())) {
|
||||
|
@ -147,197 +137,204 @@ public class WhoCommand extends PKCommand<WhoCommandConfig> {
|
|||
* @param playerName The Player to look up
|
||||
*/
|
||||
private void whoPlayer(final CommandSender sender, final String playerName) {
|
||||
final OfflinePlayer player = Bukkit.getOfflinePlayer(playerName);
|
||||
if (player == null || !player.hasPlayedBefore() && !player.isOnline()) {
|
||||
final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerName);
|
||||
|
||||
if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore() && !offlinePlayer.isOnline()) {
|
||||
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + "Player not found!");
|
||||
return;
|
||||
}
|
||||
if (!player.isOnline() && !BendingPlayer.getPlayers().containsKey(player.getUniqueId())) {
|
||||
GeneralMethods.sendBrandingMessage(sender, ChatColor.GRAY + this.playerOffline.replace("{player}", ChatColor.WHITE + player.getName() + ChatColor.GRAY).replace("{target}", ChatColor.WHITE + player.getName() + ChatColor.GRAY));
|
||||
}
|
||||
|
||||
final Player player_ = (Player) (player.isOnline() ? player : null);
|
||||
BendingPlayer bPlayer = BendingPlayer.getBendingPlayer(player);
|
||||
BendingPlayer bendingPlayer = this.bendingPlayerManager.getBendingPlayer(offlinePlayer.getUniqueId());
|
||||
|
||||
if (bPlayer == null) {
|
||||
GeneralMethods.createBendingPlayer(player.getUniqueId(), playerName);
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
int count = 0;
|
||||
final long delay = 200L;
|
||||
while (!BendingPlayer.getPlayers().containsKey(player.getUniqueId())) {
|
||||
if (count > 5 * (1000 / delay)) { // After 5 seconds of waiting, tell the user the database is busy and to try again in a few seconds.
|
||||
GeneralMethods.sendBrandingMessage(sender, ChatColor.DARK_RED + WhoCommand.this.databaseOverload);
|
||||
break;
|
||||
}
|
||||
count++;
|
||||
try {
|
||||
Thread.sleep(delay);
|
||||
} catch (final InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
GeneralMethods.sendBrandingMessage(sender, ChatColor.DARK_RED + WhoCommand.this.databaseOverload);
|
||||
break;
|
||||
}
|
||||
}
|
||||
WhoCommand.this.whoPlayer(sender, playerName);
|
||||
}
|
||||
}.runTaskAsynchronously(ProjectKorra.plugin);
|
||||
if (bendingPlayer != null) {
|
||||
someWhoPlayerMethod(sender, offlinePlayer, bendingPlayer);
|
||||
return;
|
||||
}
|
||||
|
||||
bPlayer = BendingPlayer.getBendingPlayer(player);
|
||||
if (bPlayer != null) {
|
||||
sender.sendMessage(player.getName() + (!player.isOnline() ? ChatColor.RESET + " (Offline)" : ""));
|
||||
if (bPlayer.hasElement(Element.AIR)) {
|
||||
if (bPlayer.isElementToggled(Element.AIR)) {
|
||||
sender.sendMessage(Element.AIR.getColor() + "- Airbender");
|
||||
} else {
|
||||
sender.sendMessage(Element.AIR.getColor() + "" + ChatColor.STRIKETHROUGH + "- Airbender");
|
||||
}
|
||||
GeneralMethods.sendBrandingMessage(sender, ChatColor.GRAY + this.playerOffline.replace("{player}", ChatColor.WHITE + offlinePlayer.getName() + ChatColor.GRAY).replace("{target}", ChatColor.WHITE + offlinePlayer.getName() + ChatColor.GRAY));
|
||||
|
||||
if (player_ != null) {
|
||||
if (bPlayer.canUseFlight()) {
|
||||
sender.sendMessage(Element.FLIGHT.getColor() + " Can Fly");
|
||||
}
|
||||
if (bPlayer.canUseSpiritualProjection()) {
|
||||
sender.sendMessage(Element.SPIRITUAL.getColor() + " Can use Spiritual Projection");
|
||||
}
|
||||
for (final SubElement se : Element.getAddonSubElements(Element.AIR)) {
|
||||
if (bPlayer.canUseSubElement(se)) {
|
||||
sender.sendMessage(se.getColor() + " Can " + (!se.getType().equals(ElementType.NO_SUFFIX) ? "" : "use ") + se.getName() + se.getType().getBend());
|
||||
}
|
||||
}
|
||||
}
|
||||
this.bendingPlayerManager.loadBendingPlayer(offlinePlayer.getUniqueId(), loadedBendingPlayer -> {
|
||||
if (loadedBendingPlayer == null) {
|
||||
GeneralMethods.sendBrandingMessage(sender, ChatColor.DARK_RED + WhoCommand.this.databaseOverload);
|
||||
return;
|
||||
}
|
||||
|
||||
if (bPlayer.hasElement(Element.WATER)) {
|
||||
if (bPlayer.isElementToggled(Element.WATER)) {
|
||||
sender.sendMessage(Element.WATER.getColor() + "- Waterbender");
|
||||
} else {
|
||||
sender.sendMessage(Element.WATER.getColor() + "" + ChatColor.STRIKETHROUGH + "- Waterbender");
|
||||
}
|
||||
someWhoPlayerMethod(sender, offlinePlayer, loadedBendingPlayer);
|
||||
});
|
||||
}
|
||||
|
||||
if (player_ != null) {
|
||||
if (bPlayer.canPlantbend()) {
|
||||
sender.sendMessage(Element.PLANT.getColor() + " Can Plantbend");
|
||||
}
|
||||
if (bPlayer.canBloodbend()) {
|
||||
if (bPlayer.canBloodbendAtAnytime()) {
|
||||
sender.sendMessage(Element.BLOOD.getColor() + " Can Bloodbend anytime, on any day");
|
||||
} else {
|
||||
sender.sendMessage(Element.BLOOD.getColor() + " Can Bloodbend");
|
||||
}
|
||||
}
|
||||
if (bPlayer.canIcebend()) {
|
||||
sender.sendMessage(Element.ICE.getColor() + " Can Icebend");
|
||||
}
|
||||
if (bPlayer.canWaterHeal()) {
|
||||
sender.sendMessage(Element.HEALING.getColor() + " Can Heal");
|
||||
}
|
||||
for (final SubElement se : Element.getAddonSubElements(Element.WATER)) {
|
||||
if (bPlayer.canUseSubElement(se)) {
|
||||
sender.sendMessage(se.getColor() + " Can " + (!se.getType().equals(ElementType.NO_SUFFIX) ? "" : "use ") + se.getName() + se.getType().getBend());
|
||||
}
|
||||
}
|
||||
}
|
||||
private void someWhoPlayerMethod(CommandSender sender, OfflinePlayer player, BendingPlayer bendingPlayer) {
|
||||
sender.sendMessage(player.getName() + (!player.isOnline() ? ChatColor.RESET + " (Offline)" : ""));
|
||||
|
||||
Element element;
|
||||
Set<Element> checked = new HashSet<>();
|
||||
|
||||
checked.add(element = this.elementManager.getAir());
|
||||
if (bendingPlayer.hasElement(element)) {
|
||||
if (bendingPlayer.isElementToggled(element)) {
|
||||
sender.sendMessage(element.getColor() + "- Airbender");
|
||||
} else {
|
||||
sender.sendMessage(element.getColor() + "" + ChatColor.STRIKETHROUGH + "- Airbender");
|
||||
}
|
||||
|
||||
if (bPlayer.hasElement(Element.EARTH)) {
|
||||
if (bPlayer.isElementToggled(Element.EARTH)) {
|
||||
sender.sendMessage(Element.EARTH.getColor() + "- Earthbender");
|
||||
} else {
|
||||
sender.sendMessage(Element.EARTH.getColor() + "" + ChatColor.STRIKETHROUGH + "- Earthbender");
|
||||
if (player.isOnline()) {
|
||||
if (bendingPlayer.canUseFlight()) {
|
||||
sender.sendMessage(this.elementManager.getFlight().getColor() + " Can Fly");
|
||||
}
|
||||
|
||||
if (player_ != null) {
|
||||
if (bPlayer.canMetalbend()) {
|
||||
sender.sendMessage(Element.METAL.getColor() + " Can Metalbend");
|
||||
}
|
||||
if (bPlayer.canLavabend()) {
|
||||
sender.sendMessage(Element.LAVA.getColor() + " Can Lavabend");
|
||||
}
|
||||
if (bPlayer.canSandbend()) {
|
||||
sender.sendMessage(Element.SAND.getColor() + " Can Sandbend");
|
||||
}
|
||||
for (final SubElement se : Element.getAddonSubElements(Element.EARTH)) {
|
||||
if (bPlayer.canUseSubElement(se)) {
|
||||
sender.sendMessage(se.getColor() + " Can " + (!se.getType().equals(ElementType.NO_SUFFIX) ? "" : "use ") + se.getName() + se.getType().getBend());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (bPlayer.hasElement(Element.FIRE)) {
|
||||
if (bPlayer.isElementToggled(Element.FIRE)) {
|
||||
sender.sendMessage(Element.FIRE.getColor() + "- Firebender");
|
||||
} else {
|
||||
sender.sendMessage(Element.FIRE.getColor() + "" + ChatColor.STRIKETHROUGH + "- Firebender");
|
||||
if (bendingPlayer.canUseSpiritual()) {
|
||||
sender.sendMessage(this.elementManager.getSpiritual().getColor() + " Can use Spiritual Projection");
|
||||
}
|
||||
|
||||
if (player_ != null) {
|
||||
if (bPlayer.canCombustionbend()) {
|
||||
sender.sendMessage(Element.COMBUSTION.getColor() + " Can Combustionbend");
|
||||
}
|
||||
if (bPlayer.canLightningbend()) {
|
||||
sender.sendMessage(Element.LIGHTNING.getColor() + " Can Lightningbend");
|
||||
}
|
||||
for (final SubElement se : Element.getAddonSubElements(Element.FIRE)) {
|
||||
if (bPlayer.canUseSubElement(se)) {
|
||||
sender.sendMessage(se.getColor() + " Can " + (!se.getType().equals(ElementType.NO_SUFFIX) ? "" : "use ") + se.getName() + se.getType().getBend());
|
||||
}
|
||||
for (SubElement subElement : this.elementManager.getSubElements(element)) {
|
||||
if (bendingPlayer.hasElement(subElement)) {
|
||||
sender.sendMessage(subElement.getColor() + " Can " + (!subElement.getType().equals(ElementManager.ElementType.NO_SUFFIX) ? "" : "use ") + subElement.getName() + subElement.getType().getBend());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (bPlayer.hasElement(Element.CHI)) {
|
||||
if (bPlayer.isElementToggled(Element.CHI)) {
|
||||
sender.sendMessage(Element.CHI.getColor() + "- Chiblocker");
|
||||
} else {
|
||||
sender.sendMessage(Element.CHI.getColor() + "" + ChatColor.STRIKETHROUGH + "- Chiblocker");
|
||||
}
|
||||
}
|
||||
|
||||
for (final Element element : Element.getAddonElements()) {
|
||||
if (bPlayer.hasElement(element)) {
|
||||
sender.sendMessage(element.getColor() + "" + (bPlayer.isElementToggled(element) ? "" : ChatColor.STRIKETHROUGH) + "- " + element.getName() + (element.getType() != null ? element.getType().getBender() : ""));
|
||||
if (player_ != null) {
|
||||
for (final SubElement subelement : Element.getSubElements(element)) {
|
||||
if (bPlayer.canUseSubElement(subelement)) {
|
||||
sender.sendMessage(subelement.getColor() + " Can " + (!subelement.getType().equals(ElementType.NO_SUFFIX) ? "" : "use ") + subelement.getName() + subelement.getType().getBend());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final UUID uuid = player.getUniqueId();
|
||||
if (bPlayer != null) {
|
||||
sender.sendMessage("Abilities: ");
|
||||
for (int i = 0; i < 9; i++) {
|
||||
final String ability = bPlayer.getAbilities()[i];
|
||||
final CoreAbility coreAbil = CoreAbility.getAbility(ability);
|
||||
if (coreAbil == null) {
|
||||
continue;
|
||||
} else {
|
||||
sender.sendMessage((i + 1) + " - " + coreAbil.getElement().getColor() + ability);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this.staff.containsKey(uuid.toString())) {
|
||||
sender.sendMessage(this.staff.get(uuid.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
checked.add(element = this.elementManager.getWater());
|
||||
if (bendingPlayer.hasElement(element)) {
|
||||
if (bendingPlayer.isElementToggled(element)) {
|
||||
sender.sendMessage(element.getColor() + "- Waterbender");
|
||||
} else {
|
||||
sender.sendMessage(element.getColor() + "" + ChatColor.STRIKETHROUGH + "- Waterbender");
|
||||
}
|
||||
|
||||
if (player.isOnline()) {
|
||||
if (bendingPlayer.canPlantbend()) {
|
||||
sender.sendMessage(this.elementManager.getPlant().getColor() + " Can Plantbend");
|
||||
}
|
||||
|
||||
if (bendingPlayer.canBloodbend()) {
|
||||
if (bendingPlayer.canBloodbendAtAnytime()) {
|
||||
sender.sendMessage(this.elementManager.getBlood().getColor() + " Can Bloodbend anytime, on any day");
|
||||
} else {
|
||||
sender.sendMessage(this.elementManager.getBlood().getColor() + " Can Bloodbend");
|
||||
}
|
||||
}
|
||||
|
||||
if (bendingPlayer.canIcebend()) {
|
||||
sender.sendMessage(this.elementManager.getIce().getColor() + " Can Icebend");
|
||||
}
|
||||
|
||||
if (bendingPlayer.canUseHealing()) {
|
||||
sender.sendMessage(this.elementManager.getHealing().getColor() + " Can Heal");
|
||||
}
|
||||
|
||||
for (SubElement subElement : this.elementManager.getSubElements(element)) {
|
||||
if (bendingPlayer.hasElement(subElement)) {
|
||||
sender.sendMessage(subElement.getColor() + " Can " + (!subElement.getType().equals(ElementManager.ElementType.NO_SUFFIX) ? "" : "use ") + subElement.getName() + subElement.getType().getBend());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
checked.add(element = this.elementManager.getEarth());
|
||||
if (bendingPlayer.hasElement(element)) {
|
||||
if (bendingPlayer.isElementToggled(element)) {
|
||||
sender.sendMessage(element.getColor() + "- Earthbender");
|
||||
} else {
|
||||
sender.sendMessage(element.getColor() + "" + ChatColor.STRIKETHROUGH + "- Earthbender");
|
||||
}
|
||||
|
||||
if (player.isOnline()) {
|
||||
if (bendingPlayer.canMetalbend()) {
|
||||
sender.sendMessage(this.elementManager.getMetal().getColor() + " Can Metalbend");
|
||||
}
|
||||
|
||||
if (bendingPlayer.canLavabend()) {
|
||||
sender.sendMessage(this.elementManager.getLava().getColor() + " Can Lavabend");
|
||||
}
|
||||
|
||||
if (bendingPlayer.canSandbend()) {
|
||||
sender.sendMessage(this.elementManager.getSand().getColor() + " Can Sandbend");
|
||||
}
|
||||
|
||||
for (SubElement subElement : this.elementManager.getSubElements(element)) {
|
||||
if (bendingPlayer.hasElement(subElement)) {
|
||||
sender.sendMessage(subElement.getColor() + " Can " + (!subElement.getType().equals(ElementManager.ElementType.NO_SUFFIX) ? "" : "use ") + subElement.getName() + subElement.getType().getBend());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
checked.add(element = this.elementManager.getFire());
|
||||
if (bendingPlayer.hasElement(element)) {
|
||||
if (bendingPlayer.isElementToggled(element)) {
|
||||
sender.sendMessage(element.getColor() + "- Firebender");
|
||||
} else {
|
||||
sender.sendMessage(element.getColor() + "" + ChatColor.STRIKETHROUGH + "- Firebender");
|
||||
}
|
||||
|
||||
if (player.isOnline()) {
|
||||
if (bendingPlayer.canCombustionbend()) {
|
||||
sender.sendMessage(this.elementManager.getCombustion().getColor() + " Can Combustionbend");
|
||||
}
|
||||
|
||||
if (bendingPlayer.canUseLightning()) {
|
||||
sender.sendMessage(this.elementManager.getLightning().getColor() + " Can Lightningbend");
|
||||
}
|
||||
|
||||
for (SubElement subElement : this.elementManager.getSubElements(element)) {
|
||||
if (bendingPlayer.hasElement(subElement)) {
|
||||
sender.sendMessage(subElement.getColor() + " Can " + (!subElement.getType().equals(ElementManager.ElementType.NO_SUFFIX) ? "" : "use ") + subElement.getName() + subElement.getType().getBend());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
checked.add(element = this.elementManager.getChi());
|
||||
if (bendingPlayer.hasElement(element)) {
|
||||
if (bendingPlayer.isElementToggled(element)) {
|
||||
sender.sendMessage(element.getColor() + "- Chiblocker");
|
||||
} else {
|
||||
sender.sendMessage(element.getColor() + "" + ChatColor.STRIKETHROUGH + "- Chiblocker");
|
||||
}
|
||||
}
|
||||
|
||||
for (Element e : this.elementManager.getElements()) {
|
||||
if (checked.contains(e)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (bendingPlayer.hasElement(e)) {
|
||||
sender.sendMessage(e.getColor() + "" + (bendingPlayer.isElementToggled(e) ? "" : ChatColor.STRIKETHROUGH) + "- " + e.getName() + (e.getType() != null ? e.getType().getBender() : ""));
|
||||
if (player.isOnline()) {
|
||||
for (SubElement subElement : this.elementManager.getSubElements(e)) {
|
||||
if (bendingPlayer.hasElement(subElement)) {
|
||||
sender.sendMessage(subElement.getColor() + " Can " + (!subElement.getType().equals(ElementManager.ElementType.NO_SUFFIX) ? "" : "use ") + subElement.getName() + subElement.getType().getBend());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final UUID uuid = player.getUniqueId();
|
||||
sender.sendMessage("Abilities: ");
|
||||
for (int i = 0; i < 9; i++) {
|
||||
String abilityName = bendingPlayer.getAbility(i);
|
||||
AbilityInfo abilityInfo = this.abilityManager.getAbilityInfo(abilityName);
|
||||
|
||||
if (abilityInfo == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
sender.sendMessage((i + 1) + " - " + abilityInfo.getElement().getColor() + abilityName);
|
||||
}
|
||||
|
||||
if (this.staff.containsKey(uuid.toString())) {
|
||||
sender.sendMessage(this.staff.get(uuid.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> getTabCompletion(final CommandSender sender, final List<String> args) {
|
||||
if (args.size() >= 1 || !sender.hasPermission("bending.command.who")) {
|
||||
return new ArrayList<String>();
|
||||
return new ArrayList<>();
|
||||
}
|
||||
final List<String> l = new ArrayList<String>();
|
||||
final List<String> l = new ArrayList<>();
|
||||
for (final Player p : Bukkit.getOnlinePlayers()) {
|
||||
l.add(p.getName());
|
||||
}
|
||||
|
|
|
@ -91,6 +91,10 @@ public class BendingPlayer {
|
|||
return this.elements.contains(this.elementManager.getBlood());
|
||||
}
|
||||
|
||||
public boolean canBloodbendAtAnytime() {
|
||||
return canBloodbend() && this.player.hasPermission("bending.water.bloodbending.anytime");
|
||||
}
|
||||
|
||||
public boolean canUseHealing() {
|
||||
return this.elements.contains(this.elementManager.getHealing());
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.projectkorra.projectkorra.player;
|
|||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.event.PlayerCooldownChangeEvent;
|
||||
import com.projectkorra.projectkorra.module.DatabaseModule;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
@ -11,6 +12,7 @@ import org.bukkit.event.player.PlayerQuitEvent;
|
|||
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class BendingPlayerManager extends DatabaseModule<BendingPlayerRepository> {
|
||||
|
||||
|
@ -88,7 +90,7 @@ public class BendingPlayerManager extends DatabaseModule<BendingPlayerRepository
|
|||
|
||||
private void loadBendingPlayer(Player player) {
|
||||
try {
|
||||
BendingPlayer bendingPlayer = getRepository().selectPlayer(player);
|
||||
BendingPlayer bendingPlayer = getRepository().selectPlayer(player.getUniqueId(), player.getName());
|
||||
|
||||
runSync(() -> {
|
||||
this.players.put(player.getUniqueId(), bendingPlayer);
|
||||
|
@ -101,6 +103,24 @@ public class BendingPlayerManager extends DatabaseModule<BendingPlayerRepository
|
|||
}
|
||||
}
|
||||
|
||||
public void loadBendingPlayer(UUID uuid, Consumer<BendingPlayer> consumer) {
|
||||
runAsync(() -> {
|
||||
try {
|
||||
BendingPlayer bendingPlayer = getRepository().selectPlayer(uuid, null);
|
||||
|
||||
runSync(() -> {
|
||||
this.players.put(uuid, bendingPlayer);
|
||||
this.disconnected.add(uuid);
|
||||
|
||||
consumer.accept(bendingPlayer);
|
||||
});
|
||||
} catch (SQLException e) {
|
||||
consumer.accept(null);
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public BendingPlayer getBendingPlayer(Player player) {
|
||||
return getBendingPlayer(player.getUniqueId());
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.projectkorra.projectkorra.player;
|
|||
|
||||
import com.projectkorra.projectkorra.database.DatabaseQuery;
|
||||
import com.projectkorra.projectkorra.database.DatabaseRepository;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
@ -39,8 +40,7 @@ public class BendingPlayerRepository extends DatabaseRepository {
|
|||
}
|
||||
}
|
||||
|
||||
protected BendingPlayer selectPlayer(Player player) throws SQLException {
|
||||
UUID uuid = player.getUniqueId();
|
||||
protected BendingPlayer selectPlayer(UUID uuid, String name) throws SQLException {
|
||||
byte[] binaryUUID = ByteBuffer.allocate(16).putLong(uuid.getMostSignificantBits()).putLong(uuid.getLeastSignificantBits()).array();
|
||||
|
||||
Connection connection = getDatabase().getConnection();
|
||||
|
@ -50,7 +50,11 @@ public class BendingPlayerRepository extends DatabaseRepository {
|
|||
|
||||
try (ResultSet rs = statement.executeQuery()) {
|
||||
if (!rs.next()) {
|
||||
return insertPlayer(player.getUniqueId(), player.getName());
|
||||
if (name != null) {
|
||||
return insertPlayer(uuid, name);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
int playerId = rs.getInt("player_id");
|
||||
|
@ -58,8 +62,8 @@ public class BendingPlayerRepository extends DatabaseRepository {
|
|||
long firstLogin = rs.getLong("first_login");
|
||||
boolean bendingPermanentlyRemoved = rs.getBoolean("bending_permanently_removed");
|
||||
|
||||
if (!player.getName().equals(playerName)) {
|
||||
updatePlayerName(playerId, player.getName());
|
||||
if (name != null && !name.equals(playerName)) {
|
||||
updatePlayerName(playerId, name);
|
||||
}
|
||||
|
||||
BendingPlayer bendingPlayer = new BendingPlayer(playerId, uuid, playerName, firstLogin);
|
||||
|
|
Loading…
Reference in a new issue