mirror of
https://github.com/ChestShop-authors/ChestShop-3.git
synced 2024-06-29 07:44:43 +02:00
WARNING: Users with names longer than 15 characters will not be able to receive money as long as they do not join the server
110 lines
3.7 KiB
Java
110 lines
3.7 KiB
Java
package com.Acrobot.ChestShop.Listeners.PostTransaction;
|
|
|
|
import com.Acrobot.Breeze.Utils.InventoryUtil;
|
|
import com.Acrobot.Breeze.Utils.MaterialUtil;
|
|
import com.Acrobot.ChestShop.Configuration.Messages;
|
|
import com.Acrobot.ChestShop.Configuration.Properties;
|
|
import com.Acrobot.ChestShop.Economy.Economy;
|
|
import com.Acrobot.ChestShop.Events.TransactionEvent;
|
|
import com.Acrobot.ChestShop.UUIDs.UUIDSaver;
|
|
import com.Acrobot.ChestShop.Utils.uName;
|
|
import com.google.common.base.Joiner;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.EventPriority;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import java.util.UUID;
|
|
|
|
/**
|
|
* @author Acrobot
|
|
*/
|
|
public class TransactionMessageSender implements Listener {
|
|
@EventHandler(priority = EventPriority.MONITOR)
|
|
public static void onTransaction(TransactionEvent event) {
|
|
if (event.getTransactionType() == TransactionEvent.TransactionType.BUY) {
|
|
sendBuyMessage(event);
|
|
} else {
|
|
sendSellMessage(event);
|
|
}
|
|
}
|
|
|
|
protected static void sendBuyMessage(TransactionEvent event) {
|
|
String itemName = parseItemInformation(event.getStock());
|
|
String owner = event.getOwner().getName();
|
|
|
|
Player player = event.getClient();
|
|
|
|
String price = Economy.formatBalance(event.getPrice());
|
|
|
|
if (Properties.SHOW_TRANSACTION_INFORMATION_CLIENT) {
|
|
String message = formatMessage(Messages.YOU_BOUGHT_FROM_SHOP, itemName, price);
|
|
message = message.replace("%owner", owner);
|
|
|
|
player.sendMessage(message);
|
|
}
|
|
|
|
if (Properties.SHOW_TRANSACTION_INFORMATION_OWNER) {
|
|
String message = formatMessage(Messages.SOMEBODY_BOUGHT_FROM_YOUR_SHOP, itemName, price);
|
|
message = message.replace("%buyer", player.getName());
|
|
|
|
sendMessageToOwner(message, event);
|
|
}
|
|
}
|
|
|
|
protected static void sendSellMessage(TransactionEvent event) {
|
|
String itemName = parseItemInformation(event.getStock());
|
|
String owner = event.getOwner().getName();
|
|
|
|
Player player = event.getClient();
|
|
|
|
String price = Economy.formatBalance(event.getPrice());
|
|
|
|
if (Properties.SHOW_TRANSACTION_INFORMATION_CLIENT) {
|
|
String message = formatMessage(Messages.YOU_SOLD_TO_SHOP, itemName, price);
|
|
message = message.replace("%buyer", owner);
|
|
|
|
player.sendMessage(message);
|
|
}
|
|
|
|
if (Properties.SHOW_TRANSACTION_INFORMATION_OWNER) {
|
|
String message = formatMessage(Messages.SOMEBODY_SOLD_TO_YOUR_SHOP, itemName, price);
|
|
message = message.replace("%seller", player.getName());
|
|
|
|
sendMessageToOwner(message, event);
|
|
}
|
|
}
|
|
|
|
private static String parseItemInformation(ItemStack[] items) {
|
|
ItemStack[] stock = InventoryUtil.mergeSimilarStacks(items);
|
|
|
|
StringBuilder message = new StringBuilder(15);
|
|
Joiner joiner = Joiner.on(' ');
|
|
|
|
for (ItemStack item : stock) {
|
|
joiner.appendTo(message, item.getAmount(), MaterialUtil.getName(item));
|
|
}
|
|
|
|
return message.toString();
|
|
}
|
|
|
|
private static void sendMessageToOwner(String message, TransactionEvent event) {
|
|
String owner = event.getOwner().getName();
|
|
owner = UUIDSaver.getFullUsername(owner);
|
|
|
|
Player player = Bukkit.getPlayerExact(owner);
|
|
|
|
if (player != null) {
|
|
player.sendMessage(message);
|
|
}
|
|
}
|
|
|
|
private static String formatMessage(String message, String item, String price) {
|
|
return Messages.prefix(message)
|
|
.replace("%item", item)
|
|
.replace("%price", price);
|
|
}
|
|
}
|