Fix landlord UUID/name handling

Also changes handling of buyer/renter UUIDs and names, if the playerdata
of a player is not available anymore AreaShop will still be able to
display his name. Also unrenting/selling will still properly pay back
the player through Vault (by name instead of UUID).

Fixes #35
This commit is contained in:
Thijs Wiefferink 2015-07-30 22:55:49 +02:00
parent f76c1b8a9f
commit 9f436a7eb4
3 changed files with 31 additions and 25 deletions

View File

@ -865,7 +865,14 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
if(uuid == null) {
return "";
} else {
return this.toName(UUID.fromString(uuid));
UUID parsed = null;
try {
parsed = UUID.fromString(uuid);
} catch(IllegalArgumentException e) {}
if(parsed == null) {
return "";
}
return this.toName(parsed);
}
}
/**
@ -880,9 +887,8 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
String name = Bukkit.getOfflinePlayer(uuid).getName();
if(name != null) {
return name;
} else {
return uuid.toString();
}
return "";
}
}

View File

@ -44,7 +44,7 @@ public class BuyRegion extends GeneralRegion {
* @return The UUID of the owner of this region
*/
public UUID getBuyer() {
String buyer = getStringSetting("buy.buyer");
String buyer = config.getString("buy.buyer");
if(buyer != null) {
try {
return UUID.fromString(buyer);
@ -95,7 +95,7 @@ public class BuyRegion extends GeneralRegion {
public String getPlayerName() {
String result = plugin.toName(getBuyer());
if(result == null || result.isEmpty()) {
result = config.getString("buy.buyerName");
result = getStringSetting("buy.buyerName");
if(result == null || result.isEmpty()) {
result = "<UNKNOWN>";
}
@ -306,16 +306,16 @@ public class BuyRegion extends GeneralRegion {
plugin.message(player, "buy-payError");
return false;
}
r = null;
OfflinePlayer oldOwnerPlayer = Bukkit.getOfflinePlayer(oldOwner);
if(oldOwnerPlayer != null) {
if(oldOwnerPlayer.getName() == null) {
r = plugin.getEconomy().depositPlayer(getPlayerName(), getWorldName(), getResellPrice());
} else {
r = plugin.getEconomy().depositPlayer(oldOwnerPlayer, getWorldName(), getResellPrice());
}
if(!r.transactionSuccess()) {
plugin.getLogger().warning("Something went wrong with paying '" + oldOwnerPlayer.getName() + "' " + getFormattedPrice() + " for his resell of region " + getName() + " to " + player.getName());
}
String oldOwnerName = getPlayerName();
if(oldOwnerPlayer != null && oldOwnerPlayer.getName() != null) {
r = plugin.getEconomy().depositPlayer(oldOwnerPlayer, getWorldName(), getResellPrice());
} else if (oldOwnerName != null) {
r = plugin.getEconomy().depositPlayer(oldOwnerName, getWorldName(), getResellPrice());
}
if(r == null || !r.transactionSuccess()) {
plugin.getLogger().warning("Something went wrong with paying '" + oldOwnerPlayer.getName() + "' " + getFormattedPrice() + " for his resell of region " + getName() + " to " + player.getName());
}
// Resell is done, disable that now
disableReselling();
@ -352,7 +352,7 @@ public class BuyRegion extends GeneralRegion {
}
String landlordName = getLandlordName();
r = null;
if(landlordPlayer != null) {
if(landlordPlayer != null && landlordPlayer.getName() != null) {
r = plugin.getEconomy().depositPlayer(landlordPlayer, getWorldName(), getPrice());
} else if(landlordName != null) {
r = plugin.getEconomy().depositPlayer(landlordName, getWorldName(), getPrice());
@ -420,10 +420,10 @@ public class BuyRegion extends GeneralRegion {
EconomyResponse response = null;
boolean error = false;
try {
if(player.getName() == null) {
response = plugin.getEconomy().depositPlayer(getPlayerName(), getWorldName(), moneyBack);
} else {
if(player != null && player.getName() != null) {
response = plugin.getEconomy().depositPlayer(player, getWorldName(), moneyBack);
} else if(getPlayerName() != null) {
response = plugin.getEconomy().depositPlayer(getPlayerName(), getWorldName(), moneyBack);
}
} catch(Exception e) {
error = true;

View File

@ -59,7 +59,7 @@ public class RentRegion extends GeneralRegion {
* @return The UUID of the renter
*/
public UUID getRenter() {
String renter = getStringSetting("rent.renter");
String renter = config.getString("rent.renter");
if(renter != null) {
try {
return UUID.fromString(renter);
@ -480,12 +480,12 @@ public class RentRegion extends GeneralRegion {
}
String landlordName = getLandlordName();
r = null;
if(landlordPlayer != null) {
if(landlordPlayer != null && landlordPlayer.getName() != null) {
r = plugin.getEconomy().depositPlayer(landlordPlayer, getWorldName(), getPrice());
} else if(landlordName != null) {
r = plugin.getEconomy().depositPlayer(landlordName, getWorldName(), getPrice());
}
if(r != null && !r.transactionSuccess()) {
if(r == null || !r.transactionSuccess()) {
plugin.getLogger().warning("Something went wrong with paying '" + landlordName + "' " + getFormattedPrice() + " for his rent of region " + getName() + " to " + player.getName());
}
@ -570,15 +570,15 @@ public class RentRegion extends GeneralRegion {
EconomyResponse r = null;
boolean error = false;
try {
if(player.getName() == null) {
r = plugin.getEconomy().depositPlayer(getPlayerName(), getWorldName(), moneyBack);
} else {
if(player != null && player.getName() != null) {
r = plugin.getEconomy().depositPlayer(player, getWorldName(), moneyBack);
} else if(getPlayerName() != null) {
r = plugin.getEconomy().depositPlayer(getPlayerName(), getWorldName(), moneyBack);
}
} catch(Exception e) {
error = true;
}
if(error || r == null || !r.transactionSuccess()) {
if(error || r == null || !r.transactionSuccess() || error) {
plugin.getLogger().warning("Something went wrong with paying back to " + getPlayerName() + " money while unrenting region " + getName());
}
}