loggers can now be configured to start with different default configurations.
This commit is contained in:
1 parent
0e2ab5d4f3
commit
65d2208e9e
4 files changed
+50
-4
No files matched your search
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in new issue
Block a user