Merge remote-tracking branch 'origin/master'

This commit is contained in:
Acrobot 2013-01-15 21:35:31 +01:00
commit 4d73ef02a5
8 changed files with 48 additions and 15 deletions

View File

@ -17,6 +17,9 @@ public class Messages {
public static String NOT_ENOUGH_MONEY = "You don't have enough money!"; public static String NOT_ENOUGH_MONEY = "You don't have enough money!";
public static String NOT_ENOUGH_MONEY_SHOP = "Shop owner doesn't have enough money!"; public static String NOT_ENOUGH_MONEY_SHOP = "Shop owner doesn't have enough money!";
public static String DEPOSIT_FAILED = "Money deposit to shop owner failed!";
public static String DEPOSIT_FAILED_OWNER = "Money deposit to your account failed, shop transaction aborted!";
public static byte NEWLINE_NOT_ENOUGH_MONEY_SHO; /////////////////////////////////////////////////// public static byte NEWLINE_NOT_ENOUGH_MONEY_SHO; ///////////////////////////////////////////////////

View File

@ -31,7 +31,7 @@ public class Economy {
return ChestShopSign.isAdminShop(acc); return ChestShopSign.isAdminShop(acc);
} }
public static void add(String name, double amount) { public static boolean add(String name, double amount) {
if (isServerAccount(name) && !getServerAccountName().isEmpty()) { if (isServerAccount(name) && !getServerAccountName().isEmpty()) {
name = getServerAccountName(); name = getServerAccountName();
} }
@ -46,19 +46,19 @@ public class Economy {
amount -= tax; amount -= tax;
} }
manager.add(uName.getName(name), amount); return manager.add(uName.getName(name), amount);
} }
public static double getTax(float tax, double price) { public static double getTax(float tax, double price) {
return NumberUtil.roundDown((tax / 100F) * price); return NumberUtil.roundDown((tax / 100F) * price);
} }
public static void subtract(String name, double amount) { public static boolean subtract(String name, double amount) {
if (isServerAccount(name) && !getServerAccountName().isEmpty()) { if (isServerAccount(name) && !getServerAccountName().isEmpty()) {
name = getServerAccountName(); name = getServerAccountName();
} }
manager.subtract(uName.getName(name), roundUp(amount)); return manager.subtract(uName.getName(name), roundUp(amount));
} }
public static boolean hasEnough(String name, double amount) { public static boolean hasEnough(String name, double amount) {

View File

@ -11,12 +11,14 @@ public class EconomyManager {
return false; return false;
} }
public void add(String player, double amount) { public boolean add(String player, double amount) {
printError(); printError();
return false;
} }
public void subtract(String player, double amount) { public boolean subtract(String player, double amount) {
printError(); printError();
return false;
} }
public boolean hasEnough(String player, double amount) { public boolean hasEnough(String player, double amount) {

View File

@ -16,12 +16,12 @@ public class Register extends EconomyManager {
return method.hasAccount(player); return method.hasAccount(player);
} }
public void add(String player, double amount) { public boolean add(String player, double amount) {
method.getAccount(player).add(amount); return method.getAccount(player).add(amount);
} }
public void subtract(String player, double amount) { public boolean subtract(String player, double amount) {
method.getAccount(player).subtract(amount); return method.getAccount(player).subtract(amount);
} }
public boolean hasEnough(String player, double amount) { public boolean hasEnough(String player, double amount) {

View File

@ -13,12 +13,12 @@ public class Vault extends EconomyManager {
return vaultPlugin.hasAccount(player); return vaultPlugin.hasAccount(player);
} }
public void add(String player, double amount) { public boolean add(String player, double amount) {
vaultPlugin.depositPlayer(player, amount); return vaultPlugin.depositPlayer(player, amount).transactionSuccess();
} }
public void subtract(String player, double amount) { public boolean subtract(String player, double amount) {
vaultPlugin.withdrawPlayer(player, amount); return vaultPlugin.withdrawPlayer(player, amount).transactionSuccess();
} }
public boolean hasEnough(String player, double amount) { public boolean hasEnough(String player, double amount) {

View File

@ -125,6 +125,8 @@ public class PreTransactionEvent extends Event {
CLIENT_DOES_NOT_HAVE_ENOUGH_MONEY, CLIENT_DOES_NOT_HAVE_ENOUGH_MONEY,
SHOP_DOES_NOT_HAVE_ENOUGH_MONEY, SHOP_DOES_NOT_HAVE_ENOUGH_MONEY,
/** not enough space in shop's account for money deposit on sell */
SHOP_DEPOSIT_FAILED,
NOT_ENOUGH_SPACE_IN_CHEST, NOT_ENOUGH_SPACE_IN_CHEST,
NOT_ENOUGH_SPACE_IN_INVENTORY, NOT_ENOUGH_SPACE_IN_INVENTORY,

View File

@ -14,7 +14,7 @@ import org.bukkit.inventory.ItemStack;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import static com.Acrobot.ChestShop.Configuration.Messages.NOT_ENOUGH_STOCK_IN_YOUR_SHOP; import static com.Acrobot.ChestShop.Configuration.Messages.*;
/** /**
* @author Acrobot * @author Acrobot
@ -58,12 +58,27 @@ public class ErrorMessageSender implements Listener {
sendMessageToOwner(event.getOwner(), messageOutOfStock); sendMessageToOwner(event.getOwner(), messageOutOfStock);
message = Messages.NOT_ENOUGH_STOCK; message = Messages.NOT_ENOUGH_STOCK;
break; break;
case SHOP_DEPOSIT_FAILED:
String messageDepositFailed = Messages.prefix(DEPOSIT_FAILED);
sendMessageToOwner(event.getOwner(), messageDepositFailed);
message = DEPOSIT_FAILED;
break;
case SHOP_IS_RESTRICTED: case SHOP_IS_RESTRICTED:
message = Messages.ACCESS_DENIED; message = Messages.ACCESS_DENIED;
break; break;
case INVALID_SHOP: case INVALID_SHOP:
message = Messages.INVALID_SHOP_DETECTED; message = Messages.INVALID_SHOP_DETECTED;
break; break;
case CREATIVE_MODE_PROTECTION:
break;
case OTHER:
break;
case SPAM_CLICKING_PROTECTION:
break;
case TRANSACTION_SUCCESFUL:
break;
default:
break;
} }
if (message != null) { if (message != null) {

View File

@ -47,6 +47,17 @@ public class PartialTransactionModule implements Listener {
event.setPrice(amountAffordable * pricePerItem); event.setPrice(amountAffordable * pricePerItem);
event.setStock(getCountedItemStack(stock, amountAffordable)); event.setStock(getCountedItemStack(stock, amountAffordable));
} }
String seller = event.getOwner().getName();
boolean added = Economy.add(seller, price);
if (added) {
// added amount successfully, owner has enough space for deposit
// --> undo the add, for some other event to actually do.
Economy.subtract(seller, price);
} else {
event.setCancelled(SHOP_DEPOSIT_FAILED);
return;
}
stock = event.getStock(); stock = event.getStock();