ChestShop-3/src/main/java/com/Acrobot/ChestShop/Listeners/PostTransaction/TransactionLogger.java

42 lines
1.6 KiB
Java

package com.Acrobot.ChestShop.Listeners.PostTransaction;
import com.Acrobot.Breeze.Utils.LocationUtil;
import com.Acrobot.ChestShop.ChestShop;
import com.Acrobot.ChestShop.Events.TransactionEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import static com.Acrobot.Breeze.Utils.InventoryUtil.mergeSimilarStacks;
import static com.Acrobot.ChestShop.Utils.ItemUtil.getName;
import static com.Acrobot.ChestShop.Events.TransactionEvent.TransactionType.BUY;
/**
* @author Acrobot
*/
public class TransactionLogger implements Listener {
private static final String BUY_MESSAGE = "%1$s bought %2$s for %3$.2f from %4$s at %5$s";
private static final String SELL_MESSAGE = "%1$s sold %2$s for %3$.2f to %4$s at %5$s";
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public static void onTransaction(final TransactionEvent event) {
String template = (event.getTransactionType() == BUY ? BUY_MESSAGE : SELL_MESSAGE);
StringBuilder items = new StringBuilder(50);
for (ItemStack item : mergeSimilarStacks(event.getStock())) {
items.append(item.getAmount()).append(' ').append(getName(item));
}
String message = String.format(template,
event.getClient().getName(),
items.toString(),
event.getExactPrice(),
event.getOwnerAccount().getName(),
LocationUtil.locationToString(event.getSign().getLocation()));
ChestShop.getBukkitLogger().info(message);
}
}