forked from LogBlock/LogBlock
@@ -394,8 +394,8 @@ public class Consumer extends TimerTask {
|
|||||||
queue.add(new PlayerJoinRow(player));
|
queue.add(new PlayerJoinRow(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void queueLeave(Player player) {
|
public void queueLeave(Player player, long onlineTime) {
|
||||||
queue.add(new PlayerLeaveRow(player));
|
queue.add(new PlayerLeaveRow(player, onlineTime));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void queueAddMaterialMapping(int key, String material) {
|
public void queueAddMaterialMapping(int key, String material) {
|
||||||
@@ -1019,20 +1019,20 @@ public class Consumer extends TimerTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class PlayerLeaveRow implements Row {
|
private class PlayerLeaveRow implements Row {
|
||||||
private final long leaveTime;
|
private final long onlineTime;
|
||||||
private final Actor actor;
|
private final Actor actor;
|
||||||
|
|
||||||
PlayerLeaveRow(Player player) {
|
PlayerLeaveRow(Player player, long onlineTime) {
|
||||||
leaveTime = System.currentTimeMillis() / 1000;
|
this.onlineTime = onlineTime;
|
||||||
actor = Actor.actorFromEntity(player);
|
actor = Actor.actorFromEntity(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getInserts() {
|
public String[] getInserts() {
|
||||||
if (logPlayerInfo) {
|
if (logPlayerInfo) {
|
||||||
return new String[] { "UPDATE `lb-players` SET onlinetime = onlinetime + TIMESTAMPDIFF(SECOND, lastlogin, FROM_UNIXTIME('" + leaveTime + "')), playername = '" + mysqlTextEscape(actor.getName()) + "' WHERE lastlogin > 0 && UUID = '" + actor.getUUID() + "';" };
|
return new String[] { "UPDATE `lb-players` SET onlinetime = onlinetime + " + onlineTime + " WHERE lastlogin > 0 && UUID = '" + actor.getUUID() + "';" };
|
||||||
}
|
}
|
||||||
return new String[] { "UPDATE `lb-players` SET playername = '" + mysqlTextEscape(actor.getName()) + "' WHERE UUID = '" + actor.getUUID() + "';" };
|
return new String[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -37,6 +37,7 @@ public class LogBlock extends JavaPlugin {
|
|||||||
private Updater updater = null;
|
private Updater updater = null;
|
||||||
private Timer timer = null;
|
private Timer timer = null;
|
||||||
private boolean errorAtLoading = false, noDb = false, connected = true;
|
private boolean errorAtLoading = false, noDb = false, connected = true;
|
||||||
|
private PlayerInfoLogging playerInfoLogging;
|
||||||
|
|
||||||
public static LogBlock getInstance() {
|
public static LogBlock getInstance() {
|
||||||
return logblock;
|
return logblock;
|
||||||
@@ -147,7 +148,7 @@ public class LogBlock extends JavaPlugin {
|
|||||||
private void registerEvents() {
|
private void registerEvents() {
|
||||||
final PluginManager pm = getPluginManager();
|
final PluginManager pm = getPluginManager();
|
||||||
pm.registerEvents(new ToolListener(this), this);
|
pm.registerEvents(new ToolListener(this), this);
|
||||||
pm.registerEvents(new PlayerInfoLogging(this), this);
|
pm.registerEvents(playerInfoLogging = new PlayerInfoLogging(this), this);
|
||||||
if (askRollbackAfterBan) {
|
if (askRollbackAfterBan) {
|
||||||
pm.registerEvents(new BanListener(this), this);
|
pm.registerEvents(new BanListener(this), this);
|
||||||
}
|
}
|
||||||
@@ -214,9 +215,9 @@ public class LogBlock extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
getServer().getScheduler().cancelTasks(this);
|
getServer().getScheduler().cancelTasks(this);
|
||||||
if (consumer != null) {
|
if (consumer != null) {
|
||||||
if (logPlayerInfo && getServer().getOnlinePlayers() != null) {
|
if (logPlayerInfo && playerInfoLogging != null) {
|
||||||
for (final Player player : getServer().getOnlinePlayers()) {
|
for (final Player player : getServer().getOnlinePlayers()) {
|
||||||
consumer.queueLeave(player);
|
playerInfoLogging.onPlayerQuit(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getLogger().info("Waiting for consumer ...");
|
getLogger().info("Waiting for consumer ...");
|
||||||
|
@@ -1,23 +1,43 @@
|
|||||||
package de.diddiz.LogBlock.listeners;
|
package de.diddiz.LogBlock.listeners;
|
||||||
|
|
||||||
import de.diddiz.LogBlock.LogBlock;
|
import de.diddiz.LogBlock.LogBlock;
|
||||||
|
import de.diddiz.LogBlock.config.Config;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
|
||||||
public class PlayerInfoLogging extends LoggingListener {
|
public class PlayerInfoLogging extends LoggingListener {
|
||||||
|
|
||||||
|
private final HashMap<UUID, Long> playerLogins = new HashMap<>();
|
||||||
|
|
||||||
public PlayerInfoLogging(LogBlock lb) {
|
public PlayerInfoLogging(LogBlock lb) {
|
||||||
super(lb);
|
super(lb);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
|
playerLogins.put(event.getPlayer().getUniqueId(), System.currentTimeMillis());
|
||||||
consumer.queueJoin(event.getPlayer());
|
consumer.queueJoin(event.getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
consumer.queueLeave(event.getPlayer());
|
onPlayerQuit(event.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPlayerQuit(Player player) {
|
||||||
|
Long joinTime = playerLogins.remove(player.getUniqueId());
|
||||||
|
if (Config.logPlayerInfo && joinTime != null) {
|
||||||
|
long onlineTime = (System.currentTimeMillis() - joinTime) / 1000;
|
||||||
|
if (onlineTime > 0) {
|
||||||
|
consumer.queueLeave(player, onlineTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user