Send the transaction message in an async thread

This commit is contained in:
Acrobot 2013-08-05 02:06:01 +02:00
parent 9e1e582d4a
commit 42ca03b780

View File

@ -7,6 +7,7 @@ import com.Acrobot.ChestShop.DB.Transaction;
import com.Acrobot.ChestShop.Events.TransactionEvent; import com.Acrobot.ChestShop.Events.TransactionEvent;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -20,24 +21,28 @@ 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 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"; private static final String SELL_MESSAGE = "%1$s sold %2$s for %3$.2f to %4$s at %5$s";
@EventHandler @EventHandler(priority = EventPriority.MONITOR)
public static void onTransaction(TransactionEvent event) { public static void onTransaction(final TransactionEvent event) {
String template = (event.getTransactionType() == BUY ? BUY_MESSAGE : SELL_MESSAGE); ChestShop.getBukkitServer().getScheduler().runTaskAsynchronously(ChestShop.getPlugin(), new Runnable() {
@Override public void run() {
String template = (event.getTransactionType() == BUY ? BUY_MESSAGE : SELL_MESSAGE);
StringBuilder items = new StringBuilder(50); StringBuilder items = new StringBuilder(50);
for (ItemStack item : event.getStock()) { for (ItemStack item : event.getStock()) {
items.append(item.getAmount()).append(' ').append(getSignName(item)); items.append(item.getAmount()).append(' ').append(getSignName(item));
} }
String message = String.format(template, String message = String.format(template,
event.getClient().getName(), event.getClient().getName(),
items.toString(), items.toString(),
event.getPrice(), event.getPrice(),
event.getOwner().getName(), event.getOwner().getName(),
locationToString(event.getSign().getLocation())); locationToString(event.getSign().getLocation()));
ChestShop.getBukkitLogger().info(message); ChestShop.getBukkitLogger().info(message);
}
});
} }
@EventHandler @EventHandler