2012-08-10 21:44:32 +02:00
|
|
|
package com.Acrobot.ChestShop.Listeners.PostTransaction;
|
2012-06-08 15:28:36 +02:00
|
|
|
|
2012-11-23 21:04:13 +01:00
|
|
|
import com.Acrobot.Breeze.Utils.InventoryUtil;
|
2012-08-10 22:25:08 +02:00
|
|
|
import com.Acrobot.Breeze.Utils.MaterialUtil;
|
2017-09-23 16:19:00 +02:00
|
|
|
import com.Acrobot.Breeze.Utils.StringUtil;
|
2014-05-20 23:13:25 +02:00
|
|
|
import com.Acrobot.ChestShop.Commands.Toggle;
|
2012-11-23 21:04:13 +01:00
|
|
|
import com.Acrobot.ChestShop.Configuration.Messages;
|
|
|
|
import com.Acrobot.ChestShop.Configuration.Properties;
|
2012-06-08 15:28:36 +02:00
|
|
|
import com.Acrobot.ChestShop.Economy.Economy;
|
|
|
|
import com.Acrobot.ChestShop.Events.TransactionEvent;
|
2014-04-12 13:57:39 +02:00
|
|
|
import com.Acrobot.ChestShop.UUIDs.NameManager;
|
2012-06-08 15:28:36 +02:00
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.event.EventHandler;
|
|
|
|
import org.bukkit.event.EventPriority;
|
|
|
|
import org.bukkit.event.Listener;
|
2012-08-10 18:56:16 +02:00
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
|
2017-09-23 16:19:00 +02:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
2014-04-12 14:22:34 +02:00
|
|
|
import java.util.UUID;
|
|
|
|
|
2012-06-08 15:28:36 +02:00
|
|
|
/**
|
|
|
|
* @author Acrobot
|
|
|
|
*/
|
|
|
|
public class TransactionMessageSender implements Listener {
|
|
|
|
@EventHandler(priority = EventPriority.MONITOR)
|
|
|
|
public static void onTransaction(TransactionEvent event) {
|
2012-08-10 18:56:16 +02:00
|
|
|
if (event.getTransactionType() == TransactionEvent.TransactionType.BUY) {
|
2012-06-08 15:28:36 +02:00
|
|
|
sendBuyMessage(event);
|
|
|
|
} else {
|
|
|
|
sendSellMessage(event);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected static void sendBuyMessage(TransactionEvent event) {
|
2012-08-10 18:56:16 +02:00
|
|
|
String itemName = parseItemInformation(event.getStock());
|
2017-10-29 23:50:24 +01:00
|
|
|
String owner = event.getOwnerAccount().getName();
|
2012-06-08 15:28:36 +02:00
|
|
|
|
|
|
|
Player player = event.getClient();
|
|
|
|
|
|
|
|
String price = Economy.formatBalance(event.getPrice());
|
|
|
|
|
2012-11-23 21:04:13 +01:00
|
|
|
if (Properties.SHOW_TRANSACTION_INFORMATION_CLIENT) {
|
|
|
|
String message = formatMessage(Messages.YOU_BOUGHT_FROM_SHOP, itemName, price);
|
2017-08-15 14:02:26 +02:00
|
|
|
message = message.replace("%owner", owner);
|
2012-06-08 15:28:36 +02:00
|
|
|
|
|
|
|
player.sendMessage(message);
|
|
|
|
}
|
|
|
|
|
2017-10-29 23:50:24 +01:00
|
|
|
if (Properties.SHOW_TRANSACTION_INFORMATION_OWNER && !Toggle.isIgnoring(event.getOwnerAccount().getName())) {
|
2012-11-23 21:04:13 +01:00
|
|
|
String message = formatMessage(Messages.SOMEBODY_BOUGHT_FROM_YOUR_SHOP, itemName, price);
|
2012-06-08 15:28:36 +02:00
|
|
|
message = message.replace("%buyer", player.getName());
|
|
|
|
|
|
|
|
sendMessageToOwner(message, event);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected static void sendSellMessage(TransactionEvent event) {
|
2012-08-10 18:56:16 +02:00
|
|
|
String itemName = parseItemInformation(event.getStock());
|
2017-10-29 23:50:24 +01:00
|
|
|
String owner = event.getOwnerAccount().getName();
|
2012-06-08 15:28:36 +02:00
|
|
|
|
|
|
|
Player player = event.getClient();
|
|
|
|
|
|
|
|
String price = Economy.formatBalance(event.getPrice());
|
|
|
|
|
2012-11-23 21:04:13 +01:00
|
|
|
if (Properties.SHOW_TRANSACTION_INFORMATION_CLIENT) {
|
|
|
|
String message = formatMessage(Messages.YOU_SOLD_TO_SHOP, itemName, price);
|
2017-08-15 14:02:26 +02:00
|
|
|
message = message.replace("%buyer", owner);
|
2012-06-08 15:28:36 +02:00
|
|
|
|
|
|
|
player.sendMessage(message);
|
|
|
|
}
|
|
|
|
|
2017-10-29 23:50:24 +01:00
|
|
|
if (Properties.SHOW_TRANSACTION_INFORMATION_OWNER && !Toggle.isIgnoring(owner)) {
|
2012-11-23 21:04:13 +01:00
|
|
|
String message = formatMessage(Messages.SOMEBODY_SOLD_TO_YOUR_SHOP, itemName, price);
|
2012-06-08 15:28:36 +02:00
|
|
|
message = message.replace("%seller", player.getName());
|
|
|
|
|
|
|
|
sendMessageToOwner(message, event);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-08-10 18:56:16 +02:00
|
|
|
private static String parseItemInformation(ItemStack[] items) {
|
2012-11-23 21:04:13 +01:00
|
|
|
ItemStack[] stock = InventoryUtil.mergeSimilarStacks(items);
|
2012-08-10 18:56:16 +02:00
|
|
|
|
2017-09-23 16:19:00 +02:00
|
|
|
List<String> itemText = new ArrayList<>();
|
2012-08-10 18:56:16 +02:00
|
|
|
|
2012-08-10 22:25:08 +02:00
|
|
|
for (ItemStack item : stock) {
|
2017-09-23 16:19:00 +02:00
|
|
|
itemText.add(item.getAmount() + " " + MaterialUtil.getName(item));
|
2012-08-10 18:56:16 +02:00
|
|
|
}
|
|
|
|
|
2017-09-23 16:19:00 +02:00
|
|
|
return StringUtil.joinArray(itemText);
|
2012-08-10 18:56:16 +02:00
|
|
|
}
|
|
|
|
|
2012-06-08 15:28:36 +02:00
|
|
|
private static void sendMessageToOwner(String message, TransactionEvent event) {
|
2017-10-29 23:50:24 +01:00
|
|
|
UUID owner = event.getOwnerAccount().getUuid();
|
2012-06-08 15:28:36 +02:00
|
|
|
|
2014-04-12 14:22:34 +02:00
|
|
|
Player player = Bukkit.getPlayer(owner);
|
2012-06-08 15:28:36 +02:00
|
|
|
|
|
|
|
if (player != null) {
|
|
|
|
player.sendMessage(message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-11-23 21:04:13 +01:00
|
|
|
private static String formatMessage(String message, String item, String price) {
|
|
|
|
return Messages.prefix(message)
|
2012-06-08 15:28:36 +02:00
|
|
|
.replace("%item", item)
|
|
|
|
.replace("%price", price);
|
|
|
|
}
|
|
|
|
}
|