mirror of
https://github.com/ChestShop-authors/ChestShop-3.git
synced 2024-12-25 01:27:32 +01:00
Merge pull request #23 from jastice/fix-deposit-pr
Make buying transactions fail if deposit on seller's account fails.
This commit is contained in:
commit
9075127967
@ -18,6 +18,9 @@ public class Messages {
|
||||
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 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 String NO_BUYING_HERE = "You can't buy here!";
|
||||
|
@ -31,7 +31,7 @@ public class Economy {
|
||||
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()) {
|
||||
name = getServerAccountName();
|
||||
}
|
||||
@ -46,19 +46,19 @@ public class Economy {
|
||||
amount -= tax;
|
||||
}
|
||||
|
||||
manager.add(uName.getName(name), amount);
|
||||
return manager.add(uName.getName(name), amount);
|
||||
}
|
||||
|
||||
public static double getTax(float tax, double 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()) {
|
||||
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) {
|
||||
|
@ -11,12 +11,14 @@ public class EconomyManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void add(String player, double amount) {
|
||||
public boolean add(String player, double amount) {
|
||||
printError();
|
||||
return false;
|
||||
}
|
||||
|
||||
public void subtract(String player, double amount) {
|
||||
public boolean subtract(String player, double amount) {
|
||||
printError();
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean hasEnough(String player, double amount) {
|
||||
|
@ -16,12 +16,12 @@ public class Register extends EconomyManager {
|
||||
return method.hasAccount(player);
|
||||
}
|
||||
|
||||
public void add(String player, double amount) {
|
||||
method.getAccount(player).add(amount);
|
||||
public boolean add(String player, double amount) {
|
||||
return method.getAccount(player).add(amount);
|
||||
}
|
||||
|
||||
public void subtract(String player, double amount) {
|
||||
method.getAccount(player).subtract(amount);
|
||||
public boolean subtract(String player, double amount) {
|
||||
return method.getAccount(player).subtract(amount);
|
||||
}
|
||||
|
||||
public boolean hasEnough(String player, double amount) {
|
||||
|
@ -13,12 +13,12 @@ public class Vault extends EconomyManager {
|
||||
return vaultPlugin.hasAccount(player);
|
||||
}
|
||||
|
||||
public void add(String player, double amount) {
|
||||
vaultPlugin.depositPlayer(player, amount);
|
||||
public boolean add(String player, double amount) {
|
||||
return vaultPlugin.depositPlayer(player, amount).transactionSuccess();
|
||||
}
|
||||
|
||||
public void subtract(String player, double amount) {
|
||||
vaultPlugin.withdrawPlayer(player, amount);
|
||||
public boolean subtract(String player, double amount) {
|
||||
return vaultPlugin.withdrawPlayer(player, amount).transactionSuccess();
|
||||
}
|
||||
|
||||
public boolean hasEnough(String player, double amount) {
|
||||
|
@ -125,6 +125,8 @@ public class PreTransactionEvent extends Event {
|
||||
|
||||
CLIENT_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_INVENTORY,
|
||||
|
@ -14,7 +14,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
import java.util.LinkedList;
|
||||
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
|
||||
@ -58,12 +58,27 @@ public class ErrorMessageSender implements Listener {
|
||||
sendMessageToOwner(event.getOwner(), messageOutOfStock);
|
||||
message = Messages.NOT_ENOUGH_STOCK;
|
||||
break;
|
||||
case SHOP_DEPOSIT_FAILED:
|
||||
String messageDepositFailed = Messages.prefix(DEPOSIT_FAILED);
|
||||
sendMessageToOwner(event.getOwner(), messageDepositFailed);
|
||||
message = DEPOSIT_FAILED;
|
||||
break;
|
||||
case SHOP_IS_RESTRICTED:
|
||||
message = Messages.ACCESS_DENIED;
|
||||
break;
|
||||
case INVALID_SHOP:
|
||||
message = Messages.INVALID_SHOP_DETECTED;
|
||||
break;
|
||||
case CREATIVE_MODE_PROTECTION:
|
||||
break;
|
||||
case OTHER:
|
||||
break;
|
||||
case SPAM_CLICKING_PROTECTION:
|
||||
break;
|
||||
case TRANSACTION_SUCCESFUL:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (message != null) {
|
||||
|
@ -48,6 +48,17 @@ public class PartialTransactionModule implements Listener {
|
||||
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();
|
||||
|
||||
if (!InventoryUtil.hasItems(stock, event.getOwnerInventory())) {
|
||||
|
Loading…
Reference in New Issue
Block a user