mirror of
https://github.com/Flowsqy/ShopChest.git
synced 2024-12-04 02:23:22 +01:00
Extract current transaction logic from ShopInteractListener
This commit is contained in:
parent
397ebf48d0
commit
b6c5eb2f9f
@ -1,10 +1,17 @@
|
|||||||
package de.epiceric.shopchest.transaction;
|
package de.epiceric.shopchest.transaction;
|
||||||
|
|
||||||
|
import de.epiceric.shopchest.config.Config;
|
||||||
|
import de.epiceric.shopchest.config.Placeholder;
|
||||||
import de.epiceric.shopchest.event.ShopBuySellEvent;
|
import de.epiceric.shopchest.event.ShopBuySellEvent;
|
||||||
import de.epiceric.shopchest.language.LanguageUtils;
|
import de.epiceric.shopchest.language.LanguageUtils;
|
||||||
import de.epiceric.shopchest.language.Message;
|
import de.epiceric.shopchest.language.Message;
|
||||||
|
import de.epiceric.shopchest.language.Replacement;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
// TODO Moved outclass :
|
||||||
|
// - Update hologram
|
||||||
|
// - Log economy in database
|
||||||
|
|
||||||
public class Transaction {
|
public class Transaction {
|
||||||
|
|
||||||
private final Actor buyer, seller;
|
private final Actor buyer, seller;
|
||||||
@ -13,23 +20,35 @@ public class Transaction {
|
|||||||
private int amount;
|
private int amount;
|
||||||
private final double moneyAmountRequired, moneyAmountGiven;
|
private final double moneyAmountRequired, moneyAmountGiven;
|
||||||
|
|
||||||
public void apply() {
|
/**
|
||||||
|
* Process to the transaction
|
||||||
|
*
|
||||||
|
* @return {@code true} if the transaction occurs. {@code false} otherwise
|
||||||
|
*/
|
||||||
|
public boolean process() {
|
||||||
|
//plugin.getDebugLogger().debug(executor.getName() + " is buying (#" + shop.getID() + ")");
|
||||||
|
//plugin.getDebugLogger().debug(executor.getName() + " is selling (#" + shop.getID() + ")");
|
||||||
|
|
||||||
if (!check()) {
|
if (!check()) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call buy or sell event
|
// Call buy or sell event
|
||||||
if (processEvent()) {
|
if (processEvent()) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
transferItems();
|
//database.logEconomy(executor, shop, newProduct, newPrice, ShopBuySellEvent.Type.BUY, null);
|
||||||
|
|
||||||
transferMoney();
|
transferMoney();
|
||||||
|
|
||||||
|
transferItems();
|
||||||
|
|
||||||
inform();
|
inform();
|
||||||
|
|
||||||
// log
|
// log
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -44,6 +63,8 @@ public class Transaction {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//plugin.getDebugLogger().debug(executor.getName() + " has enough money for " + amountForMoney + " item(s) (#" + shop.getID() + ")");
|
||||||
|
|
||||||
// Check seller item quantity
|
// Check seller item quantity
|
||||||
if (!seller.hasProductAmount(itemStack, amount)) {
|
if (!seller.hasProductAmount(itemStack, amount)) {
|
||||||
informer.sendNotEnoughItem();
|
informer.sendNotEnoughItem();
|
||||||
@ -55,6 +76,17 @@ public class Transaction {
|
|||||||
informer.sendNotEnoughSpace();
|
informer.sendNotEnoughSpace();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//plugin.getDebugLogger().debug(executor.getName() + " has enough inventory space for " + freeSpace + " items (#" + shop.getID() + ")");
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
plugin.getDebugLogger().debug(executor.getName() + " successfully bought (#" + shop.getID() + ")");
|
||||||
|
plugin.getLogger().info(String.format("%s bought %d of %s from %s", executor.getName(), finalNewAmount1, newProduct.getItemStack().toString(), "ADMIN"));
|
||||||
|
|
||||||
|
plugin.getDebugLogger().debug(executor.getName() + " successfully sold (#" + shop.getID() + ")");
|
||||||
|
plugin.getLogger().info(String.format("%s sold %d of %s from %s", executor.getName(), finalNewAmount, newProduct.getItemStack().toString(), vendorName));
|
||||||
|
*/
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,27 +99,111 @@ public class Transaction {
|
|||||||
/*
|
/*
|
||||||
final ShopBuySellEvent transactionEvent = new ShopBuySellEvent();
|
final ShopBuySellEvent transactionEvent = new ShopBuySellEvent();
|
||||||
Bukkit.getPluginManager().callEvent(transactionEvent);
|
Bukkit.getPluginManager().callEvent(transactionEvent);
|
||||||
|
if (plugin.getDebugLogger().debug("Buy event cancelled (#" + shop.getID() + ")");
|
||||||
return transactionEvent.isCancelled();
|
return transactionEvent.isCancelled();
|
||||||
*/
|
*/
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void transferMoney() {
|
||||||
|
// TODO Check for error during transaction
|
||||||
|
|
||||||
|
/*
|
||||||
|
plugin.getDebugLogger().debug("Economy transaction failed (r): " + r.errorMessage + " (#" + shop.getID() + ")");
|
||||||
|
executor.sendMessage(LanguageUtils.getMessage(Message.ERROR_OCCURRED, new Replacement(Placeholder.ERROR, r.errorMessage)));
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Remove buyer money
|
||||||
|
|
||||||
|
// Add seller money
|
||||||
|
}
|
||||||
|
|
||||||
private void transferItems() {
|
private void transferItems() {
|
||||||
// Remove items from seller inventory
|
// Remove items from seller inventory
|
||||||
|
|
||||||
// Add items in buyer inventory
|
// Add items in buyer inventory
|
||||||
}
|
}
|
||||||
|
|
||||||
private void transferMoney() {
|
|
||||||
// Remove buyer money
|
|
||||||
|
|
||||||
// Add seller money
|
|
||||||
}
|
|
||||||
|
|
||||||
private void inform() {
|
private void inform() {
|
||||||
// Inform buyer
|
|
||||||
|
|
||||||
// Inform seller
|
// DIRECT
|
||||||
|
|
||||||
|
// TO BUYER
|
||||||
|
String vendorName = (shop.getVendor().getName() == null ? shop.getVendor().getUniqueId().toString() : shop.getVendor().getName());
|
||||||
|
executor.sendMessage(LanguageUtils.getMessage(Message.BUY_SUCCESS,
|
||||||
|
new Replacement(Placeholder.AMOUNT, String.valueOf(finalNewAmount)),
|
||||||
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()),
|
||||||
|
new Replacement(Placeholder.BUY_PRICE, String.valueOf(newPrice)),
|
||||||
|
new Replacement(Placeholder.VENDOR, vendorName)
|
||||||
|
));
|
||||||
|
|
||||||
|
// IF ADMIN SHOP
|
||||||
|
executor.sendMessage(LanguageUtils.getMessage(Message.BUY_SUCCESS_ADMIN,
|
||||||
|
new Replacement(Placeholder.AMOUNT, String.valueOf(finalNewAmount1)),
|
||||||
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()),
|
||||||
|
new Replacement(Placeholder.BUY_PRICE, String.valueOf(newPrice))
|
||||||
|
));
|
||||||
|
|
||||||
|
// TO SELLER
|
||||||
|
if(sellerPlayer.isOnline()) {
|
||||||
|
if(Config.enableVendorMessages) {
|
||||||
|
shop.getVendor().getPlayer().sendMessage(LanguageUtils.getMessage(Message.SOMEONE_BOUGHT,
|
||||||
|
new Replacement(Placeholder.AMOUNT, String.valueOf(finalNewAmount)),
|
||||||
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()),
|
||||||
|
new Replacement(Placeholder.BUY_PRICE, String.valueOf(newPrice)),
|
||||||
|
new Replacement(Placeholder.PLAYER, executor.getName())
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(Config.enableVendorBungeeMessages) {
|
||||||
|
String message = LanguageUtils.getMessage(Message.SOMEONE_BOUGHT,
|
||||||
|
new Replacement(Placeholder.AMOUNT, String.valueOf(finalNewAmount)),
|
||||||
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()),
|
||||||
|
new Replacement(Placeholder.BUY_PRICE, String.valueOf(newPrice)),
|
||||||
|
new Replacement(Placeholder.PLAYER, executor.getName())
|
||||||
|
);
|
||||||
|
sendBungeeMessage(shop.getVendor().getName(), message);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// INDIRECT
|
||||||
|
|
||||||
|
// TO BUYER
|
||||||
|
if(buyerPlayer.isOnline()) {
|
||||||
|
if(Config.enableVendorMessages) {
|
||||||
|
shop.getVendor().getPlayer().sendMessage(LanguageUtils.getMessage(Message.SOMEONE_SOLD,
|
||||||
|
new Replacement(Placeholder.AMOUNT, String.valueOf(finalNewAmount)),
|
||||||
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()),
|
||||||
|
new Replacement(Placeholder.SELL_PRICE, String.valueOf(newPrice)),
|
||||||
|
new Replacement(Placeholder.PLAYER, executor.getName())
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(Config.enableVendorBungeeMessages) {
|
||||||
|
String message = LanguageUtils.getMessage(Message.SOMEONE_SOLD,
|
||||||
|
new Replacement(Placeholder.AMOUNT, String.valueOf(finalNewAmount)),
|
||||||
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()),
|
||||||
|
new Replacement(Placeholder.SELL_PRICE, String.valueOf(newPrice)),
|
||||||
|
new Replacement(Placeholder.PLAYER, executor.getName())
|
||||||
|
);
|
||||||
|
sendBungeeMessage(shop.getVendor().getName(), message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TO SELLER
|
||||||
|
String vendorName = (shop.getVendor().getName() == null ? shop.getVendor().getUniqueId().toString() : shop.getVendor().getName());
|
||||||
|
executor.sendMessage(LanguageUtils.getMessage(Message.SELL_SUCCESS,
|
||||||
|
new Replacement(Placeholder.AMOUNT, String.valueOf(finalNewAmount)),
|
||||||
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()),
|
||||||
|
new Replacement(Placeholder.SELL_PRICE, String.valueOf(newPrice)),
|
||||||
|
new Replacement(Placeholder.VENDOR, vendorName)
|
||||||
|
));
|
||||||
|
|
||||||
|
// IF ADMIN SHOP
|
||||||
|
executor.sendMessage(LanguageUtils.getMessage(Message.SELL_SUCCESS_ADMIN,
|
||||||
|
new Replacement(Placeholder.AMOUNT, String.valueOf(finalNewAmount)),
|
||||||
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()),
|
||||||
|
new Replacement(Placeholder.SELL_PRICE, String.valueOf(newPrice))
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user