chages
This commit is contained in:
@@ -5,8 +5,8 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ChatEventListener implements Listener {
|
||||
@@ -20,6 +20,7 @@ public class ChatEventListener implements Listener {
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onPlayerChat(AsyncPlayerChatEvent event) {
|
||||
if (!manager.isDevModeEnabled()) return;
|
||||
if (!manager.isChatLoggingEnabled()) return;
|
||||
|
||||
String sender = event.getPlayer().getName();
|
||||
boolean isCancelled = event.isCancelled();
|
||||
@@ -29,20 +30,19 @@ public class ChatEventListener implements Listener {
|
||||
.collect(Collectors.joining(", "));
|
||||
|
||||
StringBuilder log = new StringBuilder();
|
||||
log.append("[DevMode] CHAT EVENT:\n");
|
||||
log.append(" Sender: ").append(sender).append("\n");
|
||||
log.append(" Message: \"").append(message).append("\"\n");
|
||||
log.append("Sender: ").append(sender).append(" | ");
|
||||
log.append("Message: \"").append(message).append("\" | ");
|
||||
|
||||
if (isCancelled) {
|
||||
log.append(" Status: CANCELLED\n");
|
||||
log.append(" Reason: Message was blocked (possible plugin interference)\n");
|
||||
Optional<String> blocker = PluginInterceptor.getCancellingPlugin(event);
|
||||
log.append("Status: CANCELLED | ");
|
||||
log.append("Blocked by: ").append(blocker.orElse("Unknown"));
|
||||
} else {
|
||||
log.append(" Status: Delivered\n");
|
||||
log.append(" Recipients: ").append(recipients.isEmpty() ? "None" : recipients).append("\n");
|
||||
log.append("Status: Delivered | ");
|
||||
log.append("Recipients: ").append(recipients.isEmpty() ? "None" : recipients);
|
||||
}
|
||||
|
||||
System.out.println(log.toString());
|
||||
|
||||
// Eventually this will route to LogWriter once wired up
|
||||
// Log to CSV file in /logs/chat/
|
||||
manager.getLogWriter().logToCategory("chat", log.toString());
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,7 @@
|
||||
package com.minster586.devmode;
|
||||
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.*;
|
||||
import java.text.SimpleDateFormat;
|
||||
@@ -9,24 +11,34 @@ import java.util.zip.ZipOutputStream;
|
||||
|
||||
public class LogWriter {
|
||||
|
||||
private static final String BASE_FOLDER = "plugins/ServerDevMode/logs/";
|
||||
private static final String ZIP_FOLDER = "plugins/ServerDevMode/zipped_logs/";
|
||||
private static final SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
|
||||
private final String baseFolder = "plugins/ServerDevMode/logs/";
|
||||
private final String zipFolder = "plugins/ServerDevMode/zipped_logs/";
|
||||
|
||||
public LogWriter() {
|
||||
createFolder(BASE_FOLDER);
|
||||
createFolder(ZIP_FOLDER);
|
||||
private final SimpleDateFormat timestampFormatter;
|
||||
private final String fileExtension;
|
||||
|
||||
public LogWriter(Plugin plugin) {
|
||||
// Load config values
|
||||
String formatString = plugin.getConfig().getString("timestamp-format", "h:mm a | MM-dd-yyyy");
|
||||
this.timestampFormatter = new SimpleDateFormat(formatString);
|
||||
|
||||
this.fileExtension = plugin.getConfig().getString("log-extension", "csv").replace(".", "");
|
||||
|
||||
// Create folder structure
|
||||
createFolder(baseFolder);
|
||||
createFolder(zipFolder);
|
||||
}
|
||||
|
||||
public void logToCategory(String category, String message) {
|
||||
String folderPath = BASE_FOLDER + category + "/";
|
||||
String folderPath = baseFolder + category + "/";
|
||||
createFolder(folderPath);
|
||||
|
||||
String fileName = "log_" + FORMAT.format(new Date()) + ".log";
|
||||
String fileName = "log_" + getTimeStamp("yyyy-MM-dd_HH-mm-ss") + "." + fileExtension;
|
||||
File file = new File(folderPath, fileName);
|
||||
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file, true))) {
|
||||
String entry = "[" + FORMAT.format(new Date()) + "] " + message;
|
||||
String timestamp = timestampFormatter.format(new Date());
|
||||
String entry = timestamp + "," + message;
|
||||
writer.write(entry);
|
||||
writer.newLine();
|
||||
} catch (IOException e) {
|
||||
@@ -34,39 +46,44 @@ public class LogWriter {
|
||||
}
|
||||
}
|
||||
|
||||
private void createFolder(String path) {
|
||||
File folder = new File(path);
|
||||
if (!folder.exists()) folder.mkdirs();
|
||||
}
|
||||
|
||||
public void zipLogs() {
|
||||
String zipName = "logs_" + FORMAT.format(new Date()) + ".zip";
|
||||
File zipFile = new File(ZIP_FOLDER + zipName);
|
||||
String zipName = "logs_" + getTimeStamp("yyyy-MM-dd_HH-mm-ss") + ".zip";
|
||||
File zipFile = new File(zipFolder + zipName);
|
||||
|
||||
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) {
|
||||
Path basePath = Paths.get(BASE_FOLDER);
|
||||
Path root = Paths.get(baseFolder);
|
||||
|
||||
Files.walk(basePath)
|
||||
Files.walk(root)
|
||||
.filter(Files::isRegularFile)
|
||||
.forEach(path -> {
|
||||
try (InputStream is = Files.newInputStream(path)) {
|
||||
String entryName = basePath.relativize(path).toString().replace("\\", "/");
|
||||
zos.putNextEntry(new ZipEntry(entryName));
|
||||
String entryPath = root.relativize(path).toString().replace("\\", "/");
|
||||
zos.putNextEntry(new ZipEntry(entryPath));
|
||||
|
||||
byte[] buffer = new byte[4096];
|
||||
int len;
|
||||
while ((len = is.read(buffer)) > 0) {
|
||||
zos.write(buffer, 0, len);
|
||||
}
|
||||
|
||||
zos.closeEntry();
|
||||
} catch (IOException e) {
|
||||
System.err.println("Failed to zip file: " + path + " — " + e.getMessage());
|
||||
System.err.println("Failed to zip file " + path + ": " + e.getMessage());
|
||||
}
|
||||
});
|
||||
|
||||
System.out.println("[ServerDevMode] Logs zipped to " + zipFile.getName());
|
||||
System.out.println("[ServerDevMode] Logs zipped to: " + zipName);
|
||||
} catch (IOException e) {
|
||||
System.err.println("Failed to create zip file: " + e.getMessage());
|
||||
System.err.println("Zip creation failed: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private String getTimeStamp(String format) {
|
||||
return new SimpleDateFormat(format).format(new Date());
|
||||
}
|
||||
|
||||
private void createFolder(String path) {
|
||||
File folder = new File(path);
|
||||
if (!folder.exists()) folder.mkdirs();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user