Skip to content

Commit

Permalink
Logger Improvements (#1399)
Browse files Browse the repository at this point in the history
* Null checks & using getOptions

* Removed useless variable, and made HashMap's final

* This list & Map should not be modified.
Plus small changes

* Small things

* Fix #1398

* Apply suggestions from code review

* Remove Dead call

* Handle options being null

* Remove redundant field explainers

Those were there for when they were intermediary fields, they now have a proper name
  • Loading branch information
FxMorin authored Jun 27, 2022
1 parent 0a972d6 commit 286dbea
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 69 deletions.
25 changes: 9 additions & 16 deletions src/main/java/carpet/logging/HUDController.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

public class HUDController
{
private static List<Consumer<MinecraftServer>> HUDListeners = new ArrayList<>();
private static final List<Consumer<MinecraftServer>> HUDListeners = new ArrayList<>();

/**
* Adds listener to be called when HUD is updated for logging information
Expand All @@ -40,7 +40,7 @@ public static void register(Consumer<MinecraftServer> listener)
HUDListeners.add(listener);
}

public static Map<ServerPlayer, List<Component>> player_huds = new HashMap<>();
public static final Map<ServerPlayer, List<Component>> player_huds = new HashMap<>();
//keyed with player names so unlogged players don't hold the reference
public static final Map<String, Component> scarpet_headers = new HashMap<>();

Expand Down Expand Up @@ -91,27 +91,20 @@ public static void update_hud(MinecraftServer server, List<ServerPlayer> force)

if (LoggerRegistry.__mobcaps)
LoggerRegistry.getLogger("mobcaps").log((option, player) -> {
ResourceKey<Level> dim = player.level.dimension(); //getDimType
switch (option)
{
case "overworld":
dim = Level.OVERWORLD; // OW
break;
case "nether":
dim = Level.NETHER; // nether
break;
case "end":
dim = Level.END; // end
break;
}
ResourceKey<Level> dim = switch (option) {
case "overworld" -> Level.OVERWORLD;
case "nether" -> Level.NETHER;
case "end" -> Level.END;
default -> player.level.dimension();
};
return new Component[]{SpawnReporter.printMobcapsForDimension(server.getLevel(dim), false).get(0)};
});

if(LoggerRegistry.__counter)
LoggerRegistry.getLogger("counter").log((option)->send_counter_info(server, option));

if (LoggerRegistry.__packets)
LoggerRegistry.getLogger("packets").log(()-> packetCounter());
LoggerRegistry.getLogger("packets").log(HUDController::packetCounter);

// extensions have time to pitch in.
HUDListeners.forEach(l -> l.accept(server));
Expand Down
22 changes: 11 additions & 11 deletions src/main/java/carpet/logging/Logger.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public Logger(Field acceleratorField, String logName, String def, String [] opti
this.acceleratorField = acceleratorField;
this.logName = logName;
this.default_option = def;
this.options = options;
this.options = options == null ? new String[0] : options;
this.strictOptions = strictOptions;
if (acceleratorField == null)
CarpetSettings.LOG.error("[CM] Logger "+getLogName()+" is missing a specified accelerator");
Expand All @@ -74,10 +74,6 @@ public String getDefault()
}
public String [] getOptions()
{
if (options == null)
{
return new String[0];
}
return options;
}
public String getLogName()
Expand Down Expand Up @@ -219,9 +215,13 @@ public void onPlayerConnect(Player player, boolean firstTime)
else if(firstTime)
{
Set<String> loggingOptions = new HashSet<>(Arrays.asList(CarpetSettings.defaultLoggers.split(",")));
if (loggingOptions.contains(getLogName()))
{
LoggerRegistry.subscribePlayer(playerName, getLogName(), getDefault());
String logName = getLogName();
for (String str : loggingOptions) {
String[] vars = str.split(" ", 2);
if (vars[0].equals(logName)) {
LoggerRegistry.subscribePlayer(playerName, getLogName(), vars.length == 1 ? getDefault() : vars[1]);
break;
}
}
}
LoggerRegistry.setAccess(this);
Expand All @@ -241,15 +241,15 @@ public void onPlayerDisconnect(Player player)

public String getAcceptedOption(String arg)
{
if (options != null && Arrays.asList(options).contains(arg)) return arg;
if (Arrays.asList(this.getOptions()).contains(arg)) return arg;
return null;
}

public boolean isOptionValid(String option) {
if (strictOptions)
{
return Arrays.asList(this.options).contains(option);
return Arrays.asList(this.getOptions()).contains(option);
}
return true;
return option != null;
}
}
7 changes: 3 additions & 4 deletions src/main/java/carpet/logging/LoggerRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
public class LoggerRegistry
{
// Map from logger names to loggers.
private static Map<String, Logger> loggerRegistry = new HashMap<>();
private static final Map<String, Logger> loggerRegistry = new HashMap<>();
// Map from player names to the set of names of the logs that player is subscribed to.
private static Map<String, Map<String, String>> playerSubscriptions = new HashMap<>();
private static final Map<String, Map<String, String>> playerSubscriptions = new HashMap<>();
//statics to quickly asses if its worth even to call each one
public static boolean __tnt;
public static boolean __projectiles;
Expand Down Expand Up @@ -116,7 +116,6 @@ public static Map<String,String> getPlayerSubscriptions(String playerName)

protected static void setAccess(Logger logger)
{
String name = logger.getLogName();
boolean value = logger.hasOnlineSubscribers();
try
{
Expand All @@ -137,7 +136,7 @@ public static void registerLogger(String name, Logger logger)
setAccess(logger);
}

private static Set<String> seenPlayers = new HashSet<>();
private final static Set<String> seenPlayers = new HashSet<>();

public static void stopLoggers()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class ExplosionLogHelper
public final Entity entity;
private final float power;
private boolean affectBlocks = false;
private Object2IntMap<EntityChangedStatusWithCount> impactedEntities = new Object2IntOpenHashMap<>();
private final Object2IntMap<EntityChangedStatusWithCount> impactedEntities = new Object2IntOpenHashMap<>();

private static long lastGametime = 0;
private static int explosionCountInCurretGT = 0;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/carpet/logging/logHelpers/PacketCounter.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ public class PacketCounter
{
public static long totalOut=0;
public static long totalIn=0;
public static void reset() {totalIn = 0l; totalOut = 0L; }
public static void reset() {totalIn = 0L; totalOut = 0L; }
}
31 changes: 13 additions & 18 deletions src/main/java/carpet/logging/logHelpers/TNTLogHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,24 +33,19 @@ public void onExploded(double x, double y, double z, long gametime)
lastGametime = gametime;
}
tntCount++;
LoggerRegistry.getLogger("tnt").log( (option) -> {
switch (option)
{
case "brief":
return new Component[]{Messenger.c(
"l P ",Messenger.dblt("l",primedX,primedY,primedZ),
"w ",Messenger.dblt("l", primedAngle.x, primedAngle.y, primedAngle.z),
"r E ",Messenger.dblt("r",x, y, z))};
case "full":
return new Component[]{Messenger.c(
"r #" + tntCount,
"m @" + gametime,
"g : ",
"l P ",Messenger.dblf("l",primedX,primedY,primedZ),
"w ",Messenger.dblf("l", primedAngle.x, primedAngle.y, primedAngle.z),
"r E ",Messenger.dblf("r",x, y, z))};
}
return null;
LoggerRegistry.getLogger("tnt").log( (option) -> switch (option) {
case "brief" -> new Component[]{Messenger.c(
"l P ", Messenger.dblt("l", primedX, primedY, primedZ),
"w ", Messenger.dblt("l", primedAngle.x, primedAngle.y, primedAngle.z),
"r E ", Messenger.dblt("r", x, y, z))};
case "full" -> new Component[]{Messenger.c(
"r #" + tntCount,
"m @" + gametime,
"g : ",
"l P ", Messenger.dblf("l", primedX, primedY, primedZ),
"w ", Messenger.dblf("l", primedAngle.x, primedAngle.y, primedAngle.z),
"r E ", Messenger.dblf("r", x, y, z))};
default -> null;
});
}
}
31 changes: 13 additions & 18 deletions src/main/java/carpet/logging/logHelpers/TrajectoryLogHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ public class TrajectoryLogHelper
private static final int MAX_TICKS_PER_LINE = 20;

private boolean doLog;
private Logger logger;
private final Logger logger;

private ArrayList<Vec3> positions = new ArrayList<>();
private ArrayList<Vec3> motions = new ArrayList<>();
private final ArrayList<Vec3> positions = new ArrayList<>();
private final ArrayList<Vec3> motions = new ArrayList<>();

public TrajectoryLogHelper(String logName)
{
Expand All @@ -40,37 +40,32 @@ public void onFinish()
if (!doLog) return;
logger.log( (option) -> {
List<Component> comp = new ArrayList<>();
switch (option)
{
case "brief":
switch (option) {
case "brief" -> {
comp.add(Messenger.s(""));
List<String> line = new ArrayList<>();

for (int i = 0; i < positions.size(); i++)
{
for (int i = 0; i < positions.size(); i++) {
Vec3 pos = positions.get(i);
Vec3 mot = motions.get(i);
line.add("w x");
line.add(String.format("^w Tick: %d\nx: %f\ny: %f\nz: %f\n------------\nmx: %f\nmy: %f\nmz: %f",
i, pos.x, pos.y, pos.z, mot.x, mot.y, mot.z));
if ((((i+1) % MAX_TICKS_PER_LINE)==0) || i == positions.size()-1)
{
if ((((i + 1) % MAX_TICKS_PER_LINE) == 0) || i == positions.size() - 1) {
comp.add(Messenger.c(line.toArray(new Object[0])));
line.clear();
}
}
break;
case "full":
}
case "full" -> {
comp.add(Messenger.c("w ---------"));
for (int i = 0; i < positions.size(); i++)
{
for (int i = 0; i < positions.size(); i++) {
Vec3 pos = positions.get(i);
Vec3 mot = motions.get(i);
comp.add(Messenger.c(
String.format("w tick: %3d pos",i),Messenger.dblt("w",pos.x, pos.y, pos.z),
"w mot",Messenger.dblt("w",mot.x, mot.y, mot.z)));
String.format("w tick: %3d pos", i), Messenger.dblt("w", pos.x, pos.y, pos.z),
"w mot", Messenger.dblt("w", mot.x, mot.y, mot.z)));
}
break;
}
}
return comp.toArray(new Component[0]);
});
Expand Down

0 comments on commit 286dbea

Please sign in to comment.