Merge pull request #253 from StrangeOne101/master

OfflinePlayer Support Fix
This commit is contained in:
OmniCypher 2015-09-22 17:26:24 -07:00
commit 17006d1049
4 changed files with 113 additions and 139 deletions

View file

@ -798,7 +798,7 @@ public class GeneralMethods {
return BendingPlayer.getPlayers().get(uuid); return BendingPlayer.getPlayers().get(uuid);
} }
public static BendingPlayer getBendingPlayer(Player player) { public static BendingPlayer getBendingPlayer(OfflinePlayer player) {
return getBendingPlayer(player.getUniqueId()); return getBendingPlayer(player.getUniqueId());
} }

View file

@ -1002,7 +1002,7 @@ public class PKListener implements Listener {
Commands.invincible.remove(event.getPlayer().getName()); Commands.invincible.remove(event.getPlayer().getName());
} }
Preset.unloadPreset(player); Preset.unloadPreset(player);
BendingPlayer.getPlayers().remove(event.getPlayer().getUniqueId()); //BendingPlayer.getPlayers().remove(event.getPlayer().getUniqueId());
if (EarthArmor.instances.containsKey(event.getPlayer())) { if (EarthArmor.instances.containsKey(event.getPlayer())) {
EarthArmor.removeEffect(event.getPlayer()); EarthArmor.removeEffect(event.getPlayer());
event.getPlayer().removePotionEffect(PotionEffectType.DAMAGE_RESISTANCE); event.getPlayer().removePotionEffect(PotionEffectType.DAMAGE_RESISTANCE);

View file

@ -8,18 +8,16 @@ import com.projectkorra.projectkorra.airbending.AirMethods;
import com.projectkorra.projectkorra.chiblocking.ChiMethods; import com.projectkorra.projectkorra.chiblocking.ChiMethods;
import com.projectkorra.projectkorra.earthbending.EarthMethods; import com.projectkorra.projectkorra.earthbending.EarthMethods;
import com.projectkorra.projectkorra.firebending.FireMethods; import com.projectkorra.projectkorra.firebending.FireMethods;
import com.projectkorra.projectkorra.storage.DBConnection;
import com.projectkorra.projectkorra.waterbending.WaterMethods; import com.projectkorra.projectkorra.waterbending.WaterMethods;
import com.projectkorra.rpg.RPGMethods; import com.projectkorra.rpg.RPGMethods;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -123,144 +121,121 @@ public class WhoCommand extends PKCommand {
* @param playerName The Player to look up * @param playerName The Player to look up
*/ */
private void whoPlayer(final CommandSender sender, final String playerName) { private void whoPlayer(final CommandSender sender, final String playerName) {
Player player = Bukkit.getPlayer(playerName); //Player player = Bukkit.getPlayer(playerName);
if (player != null) { @SuppressWarnings("deprecation")
sender.sendMessage(playerName + " - "); final OfflinePlayer player = Bukkit.getOfflinePlayer(playerName);
if (GeneralMethods.isBender(playerName, Element.Air)) { if (player == null || !player.hasPlayedBefore()) {
sender.sendMessage(AirMethods.getAirColor() + "- Airbender"); sender.sendMessage(ChatColor.RED + "Player not found!");
if (AirMethods.canAirFlight(player)) { return;
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Air) + " Can Fly"); }
} if (!player.isOnline() && !BendingPlayer.getPlayers().containsKey(player.getUniqueId())) {
if (AirMethods.canUseSpiritualProjection(player)) { sender.sendMessage(player.getName() + ChatColor.GRAY + " is currently offline. A lookup is currently being done (this might take a few seconds).");
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Air) + " Can use Spiritual Projection"); }
} Player player_ = (Player) (player.isOnline() ? player : null);
} sender.sendMessage(player.getName() + (!player.isOnline() ? ChatColor.RESET + " (Offline)" : "") + " - ");
if (GeneralMethods.isBender(playerName, Element.Water)) { if (!BendingPlayer.getPlayers().containsKey(player.getUniqueId())) {
sender.sendMessage(WaterMethods.getWaterColor() + "- Waterbender"); GeneralMethods.createBendingPlayer(player.getUniqueId(), playerName);
if (WaterMethods.canPlantbend(player)) { BukkitRunnable runnable = new BukkitRunnable() {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Water) + " Can Plantbend");
}
if (WaterMethods.canBloodbend(player)) {
if (WaterMethods.canBloodbendAtAnytime(player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Water) + " Can Bloodbend anytime, on any day");
} else {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Water) + " Can Bloodbend");
}
}
if (WaterMethods.canIcebend(player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Water) + " Can Icebend");
}
if (WaterMethods.canWaterHeal(player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Water) + " Can Heal");
}
}
if (GeneralMethods.isBender(playerName, Element.Earth)) {
sender.sendMessage(EarthMethods.getEarthColor() + "- Earthbender");
if (EarthMethods.canMetalbend(player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Earth) + " Can Metalbend");
}
if (EarthMethods.canLavabend(player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Earth) + " Can Lavabend");
}
if (EarthMethods.canSandbend(player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Earth) + " Can Sandbend");
}
}
if (GeneralMethods.isBender(playerName, Element.Fire)) {
sender.sendMessage(FireMethods.getFireColor() + "- Firebender");
if (FireMethods.canCombustionbend(player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Fire) + " Can Combustionbend");
}
if (FireMethods.canLightningbend(player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Fire) + " Can Lightningbend");
}
}
if (GeneralMethods.isBender(playerName, Element.Chi)) {
sender.sendMessage(ChiMethods.getChiColor() + "- ChiBlocker");
}
BendingPlayer bPlayer = GeneralMethods.getBendingPlayer(playerName);
UUID uuid = player.getUniqueId();
if (bPlayer != null) {
sender.sendMessage("Abilities: ");
for (int i = 1; i <= 9; i++) {
String ability = bPlayer.getAbilities().get(i);
if (ability == null || ability.equalsIgnoreCase("null")) {
continue;
} else {
sender.sendMessage(i + " - " + GeneralMethods.getAbilityColor(ability) + ability);
}
}
}
if (GeneralMethods.hasRPG()) {
if (RPGMethods.isCurrentAvatar(player.getUniqueId())) {
sender.sendMessage(GeneralMethods.getAvatarColor() + "Current Avatar");
} else if (RPGMethods.hasBeenAvatar(player.getUniqueId())) {
sender.sendMessage(GeneralMethods.getAvatarColor() + "Former Avatar");
}
}
if (staff.containsKey(uuid.toString())) {
sender.sendMessage(staff.get(uuid.toString()));
}
} else {
sender.sendMessage(ChatColor.GREEN + "You are running a lookup of an offline player, this may take a second.");
new BukkitRunnable() {
@Override @Override
public void run() { public void run() {
ResultSet rs2 = DBConnection.sql.readQuery("SELECT * FROM pk_players WHERE player = '" + playerName + "'"); int count = 0;
try { final long delay = 200L;
final List<String> messages = new ArrayList<String>(); 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.
if (rs2.next()) { sender.sendMessage(ChatColor.DARK_RED + "The database appears to busy at the moment. Please wait a few seconds and try again.");
UUID uuid = UUID.fromString(rs2.getString("uuid")); break;
String element = rs2.getString("element"); }
count++;
messages.add(playerName + " - "); try {
if (element == null) { Thread.sleep(delay);
messages.add(" - Nonbender"); } catch (InterruptedException e) {
} else { e.printStackTrace();
if (element.contains("a")) sender.sendMessage(ChatColor.DARK_RED + "The database appears to busy at the moment. Please wait a few seconds and try again.");
messages.add(AirMethods.getAirColor() + "- Airbender"); break;
if (element.contains("w"))
messages.add(WaterMethods.getWaterColor() + "- Waterbender");
if (element.contains("e"))
messages.add(EarthMethods.getEarthColor() + "- Earthbender");
if (element.contains("f"))
messages.add(FireMethods.getFireColor() + "- Firebender");
if (element.contains("c"))
messages.add(ChiMethods.getChiColor() + "- Chiblocker");
}
if (GeneralMethods.hasRPG()) {
if (RPGMethods.isCurrentAvatar(uuid)) {
messages.add(GeneralMethods.getAvatarColor() + "Current Avatar");
} else if (RPGMethods.hasBeenAvatar(uuid)) {
messages.add(GeneralMethods.getAvatarColor() + "Former Avatar");
}
}
if (staff.containsKey(uuid)) {
messages.add(staff.get(uuid));
}
} else {
messages.add(ChatColor.RED + "We could not find any player in your database with that username. Are you sure it is typed correctly?");
} }
new BukkitRunnable() {
@Override
public void run() {
for (String message : messages) {
sender.sendMessage(message);
}
}
}.runTask(ProjectKorra.plugin);
}
catch (SQLException e) {
e.printStackTrace();
} }
whoPlayer(sender, playerName);
} }
}.runTaskAsynchronously(ProjectKorra.plugin); };
runnable.runTaskAsynchronously(ProjectKorra.plugin);
return;
}
if (GeneralMethods.isBender(playerName, Element.Air)) {
sender.sendMessage(AirMethods.getAirColor() + "- Airbender");
if (player_ != null && AirMethods.canAirFlight((Player) player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Air) + " Can Fly");
}
if (player_ != null && AirMethods.canUseSpiritualProjection((Player) player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Air) + " Can use Spiritual Projection");
}
}
if (GeneralMethods.isBender(playerName, Element.Water)) {
sender.sendMessage(WaterMethods.getWaterColor() + "- Waterbender");
if (player_ != null && WaterMethods.canPlantbend((Player) player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Water) + " Can Plantbend");
}
if (player_ != null && WaterMethods.canBloodbend((Player) player)) {
if (WaterMethods.canBloodbendAtAnytime((Player) player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Water) + " Can Bloodbend anytime, on any day");
} else {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Water) + " Can Bloodbend");
}
}
if (player_ != null && WaterMethods.canIcebend((Player) player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Water) + " Can Icebend");
}
if (player_ != null && WaterMethods.canWaterHeal((Player) player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Water) + " Can Heal");
}
}
if (GeneralMethods.isBender(playerName, Element.Earth)) {
sender.sendMessage(EarthMethods.getEarthColor() + "- Earthbender");
if (player_ != null && EarthMethods.canMetalbend((Player) player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Earth) + " Can Metalbend");
}
if (player_ != null && EarthMethods.canLavabend((Player) player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Earth) + " Can Lavabend");
}
if (player_ != null && EarthMethods.canSandbend((Player) player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Earth) + " Can Sandbend");
}
}
if (GeneralMethods.isBender(playerName, Element.Fire)) {
sender.sendMessage(FireMethods.getFireColor() + "- Firebender");
if (player_ != null && FireMethods.canCombustionbend((Player) player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Fire) + " Can Combustionbend");
}
if (player_ != null && FireMethods.canLightningbend((Player) player)) {
sender.sendMessage(GeneralMethods.getSubBendingColor(Element.Fire) + " Can Lightningbend");
}
}
if (GeneralMethods.isBender(playerName, Element.Chi)) {
sender.sendMessage(ChiMethods.getChiColor() + "- ChiBlocker");
}
BendingPlayer bPlayer = GeneralMethods.getBendingPlayer(playerName);
UUID uuid = player.getUniqueId();
if (bPlayer != null) {
sender.sendMessage("Abilities: ");
for (int i = 1; i <= 9; i++) {
String ability = bPlayer.getAbilities().get(i);
if (ability == null || ability.equalsIgnoreCase("null")) {
continue;
} else {
sender.sendMessage(i + " - " + GeneralMethods.getAbilityColor(ability) + ability);
}
}
}
if (GeneralMethods.hasRPG()) {
if (RPGMethods.isCurrentAvatar(player.getUniqueId())) {
sender.sendMessage(GeneralMethods.getAvatarColor() + "Current Avatar");
} else if (RPGMethods.hasBeenAvatar(player.getUniqueId())) {
sender.sendMessage(GeneralMethods.getAvatarColor() + "Former Avatar");
}
}
if (staff.containsKey(uuid.toString())) {
sender.sendMessage(staff.get(uuid.toString()));
} }
} }
} }

View file

@ -60,7 +60,6 @@ public class FireMethods {
} }
Information info = new Information(); Information info = new Information();
long time = config.getLong("Properties.Fire.RevertTicks") + (long)(GeneralMethods.rand.nextDouble() * config.getLong("Properties.Fire.RevertTicks")); //Generate a long between the config time and config time x 2. Just so it appears random long time = config.getLong("Properties.Fire.RevertTicks") + (long)(GeneralMethods.rand.nextDouble() * config.getLong("Properties.Fire.RevertTicks")); //Generate a long between the config time and config time x 2. Just so it appears random
System.out.println(time);
if (tempFire.containsKey(loc)) { if (tempFire.containsKey(loc)) {
info = tempFire.get(loc); info = tempFire.get(loc);
} }