loggers can now be configured to start with different default configurations.

This commit is contained in:
gnembon committed 2019-09-27 08:34:43 -05:00
1 parent 0e2ab5d4f3
commit 65d2208e9e
4 files changed
+50 -4

No files matched your search

+3
View File
@@ -99,16 +99,19 @@ public class CarpetServer // static for now - easier to handle all around the co
public static void onPlayerLoggedIn(ServerPlayerEntity player) public static void onPlayerLoggedIn(ServerPlayerEntity player)
{ {
LoggerRegistry.playerConnected(player);
extensions.forEach(e -> e.onPlayerLoggedIn(player)); extensions.forEach(e -> e.onPlayerLoggedIn(player));
} }
public static void onPlayerLoggedOut(ServerPlayerEntity player) public static void onPlayerLoggedOut(ServerPlayerEntity player)
{ {
LoggerRegistry.playerDisconnected(player);
extensions.forEach(e -> e.onPlayerLoggedOut(player)); extensions.forEach(e -> e.onPlayerLoggedOut(player));
} }
public static void onServerClosed(MinecraftServer server) public static void onServerClosed(MinecraftServer server)
{ {
LoggerRegistry.stopLoggers();
extensions.forEach(e -> e.onServerClosed(server)); extensions.forEach(e -> e.onServerClosed(server));
} }
} }
+18 -1
View File
@@ -1,13 +1,16 @@
package carpet.logging; package carpet.logging;
import carpet.CarpetServer; import carpet.CarpetServer;
import carpet.settings.CarpetSettings;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.BaseText; import net.minecraft.text.BaseText;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.function.Supplier; import java.util.function.Supplier;
public class Logger public class Logger
@@ -85,6 +88,12 @@ public class Logger
return subscribedOnlinePlayers.size() > 0; return subscribedOnlinePlayers.size() > 0;
} }
public void serverStopped()
{
subscribedOnlinePlayers.clear();
subscribedOfflinePlayers.clear();
}
/** /**
* serves messages to players fetching them from the promise * serves messages to players fetching them from the promise
* will repeat invocation for players that share the same option * will repeat invocation for players that share the same option
@@ -162,7 +171,7 @@ public class Logger
// ----- Event Handlers ----- // // ----- Event Handlers ----- //
public void onPlayerConnect(PlayerEntity player) public void onPlayerConnect(PlayerEntity player, boolean firstTime)
{ {
// If the player was subscribed to the log and offline, move them to the set of online subscribers. // If the player was subscribed to the log and offline, move them to the set of online subscribers.
String playerName = player.getName().getString(); String playerName = player.getName().getString();
@@ -171,6 +180,14 @@ public class Logger
subscribedOnlinePlayers.put(playerName, subscribedOfflinePlayers.get(playerName)); subscribedOnlinePlayers.put(playerName, subscribedOfflinePlayers.get(playerName));
subscribedOfflinePlayers.remove(playerName); subscribedOfflinePlayers.remove(playerName);
} }
else if(firstTime)
{
Set<String> loggingOptions = new HashSet<>(Arrays.asList(CarpetSettings.defaultLoggers.split(",")));
if (loggingOptions.contains(getLogName()))
{
subscribedOnlinePlayers.put(playerName, getDefault());
}
}
LoggerRegistry.setAccess(this); LoggerRegistry.setAccess(this);
} }
@@ -7,6 +7,7 @@ import net.minecraft.util.DyeColor;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@@ -137,14 +138,31 @@ public class LoggerRegistry
setAccess(logger); setAccess(logger);
} }
public static void playerConnected(PlayerEntity player) private static Set<String> seenPlayers = new HashSet<>();
public static void stopLoggers()
{ {
seenPlayers.clear();
for(Logger log: loggerRegistry.values() ) for(Logger log: loggerRegistry.values() )
{ {
log.onPlayerConnect(player); log.serverStopped();
} }
} }
public static void playerConnected(PlayerEntity player)
{
boolean firstTime = false;
if (!seenPlayers.contains(player.getName().getString()))
{
seenPlayers.add(player.getName().getString());
firstTime = true;
//subscribe them to the defualt loggers
}
for(Logger log: loggerRegistry.values() )
{
log.onPlayerConnect(player, firstTime);
}
}
public static void playerDisconnected(PlayerEntity player) public static void playerDisconnected(PlayerEntity player)
{ {
for(Logger log: loggerRegistry.values() ) for(Logger log: loggerRegistry.values() )
@@ -172,6 +172,14 @@ public class CarpetSettings
) )
public static boolean commandLog = true; public static boolean commandLog = true;
@Rule(
desc = "sets these loggers in their default configurations for all new players",
extra = "use csv, like 'tps,mobcaps' for multiple loggers, none for nothing",
category = {CREATIVE, SURVIVAL},
options = {"none", "tps", "mobcaps,tps"}
)
public static String defaultLoggers = "none";
@Rule( @Rule(
desc = "Enables /distance command to measure in game distance between points", desc = "Enables /distance command to measure in game distance between points",
extra = "Also enables brown carpet placement action if 'carpets' rule is turned on as well", extra = "Also enables brown carpet placement action if 'carpets' rule is turned on as well",