Use mapped names for sensor and behavior timings/config (#6228)

This commit is contained in:
Nassim Jahnke
2021-07-19 13:07:49 +02:00
parent 3051846c73
commit e2ed8e9e86
2 changed files with 30 additions and 14 deletions

View File

@@ -372,19 +372,23 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ return rootClassName + ".java"; + return rootClassName + ".java";
+ } + }
+ +
+ private record ClassMapping( + public record ClassMapping(
+ String obfName, + String obfName,
+ String mojangName, + String mojangName,
+ Map<Pair<String, String>, MethodMapping> methodMappings + Map<Pair<String, String>, MethodMapping> methodMappings
+ ) { + ) {
+ } + }
+ +
+ private record MethodMapping( + public record MethodMapping(
+ String obfName, + String obfName,
+ String mojangName, + String mojangName,
+ String descriptor + String descriptor
+ ) { + ) {
+ } + }
+
+ public @Nullable Map<String, ClassMapping> mappings() {
+ return mappings;
+ }
+} +}
diff --git a/src/main/java/io/papermc/paper/util/TraceUtil.java b/src/main/java/io/papermc/paper/util/TraceUtil.java diff --git a/src/main/java/io/papermc/paper/util/TraceUtil.java b/src/main/java/io/papermc/paper/util/TraceUtil.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644

View File

@@ -59,8 +59,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ private Table<String, String, Integer> sensorTickRates; + private Table<String, String, Integer> sensorTickRates;
+ private Table<String, String, Integer> behaviorTickRates; + private Table<String, String, Integer> behaviorTickRates;
+ private void tickRates() { + private void tickRates() {
+ config.addDefault("world-settings.default.tick-rates.sensor.villager.secondaryplaces", 40); + config.addDefault("world-settings.default.tick-rates.sensor.villager.secondarypoisensor", 40);
+ config.addDefault("world-settings.default.tick-rates.behavior.villager.positionvalidate", 20); + config.addDefault("world-settings.default.tick-rates.behavior.villager.validatenearbypoi", -1); // Example
+ log("Tick rates:"); + log("Tick rates:");
+ sensorTickRates = loadTickRates("sensor"); + sensorTickRates = loadTickRates("sensor");
+ behaviorTickRates = loadTickRates("behavior"); + behaviorTickRates = loadTickRates("behavior");
@@ -130,12 +130,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
this.maxDuration = maxRunTime; this.maxDuration = maxRunTime;
this.entryCondition = requiredMemoryState; this.entryCondition = requiredMemoryState;
+ // Paper start - configurable behavior tick rate and timings + // Paper start - configurable behavior tick rate and timings
+ String key = getClass().getName().startsWith("net.minecraft.") ? getClass().getSimpleName() : getClass().getName(); + Map<String, io.papermc.paper.util.StacktraceDeobfuscator.ClassMapping> mappings = io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.mappings();
+ key = key.toLowerCase(java.util.Locale.ROOT); + String key;
+ if (key.startsWith("behavior")) { + if (mappings != null) {
+ key = key.substring("behavior".length()); + key = mappings.get(getClass().getName()).mojangName();
+ int lastSeparator = key.lastIndexOf('.');
+ if (lastSeparator != -1) {
+ key = key.substring(lastSeparator + 1);
+ }
+ } else {
+ key = getClass().getSimpleName();
+ } + }
+ this.configKey = key; + this.configKey = key.toLowerCase(java.util.Locale.ROOT);
+ this.timing = co.aikar.timings.MinecraftTimings.getBehaviorTimings(configKey); + this.timing = co.aikar.timings.MinecraftTimings.getBehaviorTimings(configKey);
+ // Paper end + // Paper end
} }
@@ -190,12 +196,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
public Sensor(int senseInterval) { public Sensor(int senseInterval) {
+ // Paper start - configurable sensor tick rate and timings + // Paper start - configurable sensor tick rate and timings
+ String key = getClass().getName().startsWith("net.minecraft.") ? getClass().getSimpleName() : getClass().getName(); + java.util.Map<String, io.papermc.paper.util.StacktraceDeobfuscator.ClassMapping> mappings = io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.mappings();
+ key = key.toLowerCase(java.util.Locale.ROOT); + String key;
+ if (key.startsWith("sensor")) { + if (mappings != null) {
+ key = key.substring("sensor".length()); + key = mappings.get(getClass().getName()).mojangName();
+ int lastSeparator = key.lastIndexOf('.');
+ if (lastSeparator != -1) {
+ key = key.substring(lastSeparator + 1);
+ }
+ } else {
+ key = getClass().getSimpleName();
+ } + }
+ this.configKey = key; + this.configKey = key.toLowerCase(java.util.Locale.ROOT);
+ this.timing = co.aikar.timings.MinecraftTimings.getSensorTimings(configKey); + this.timing = co.aikar.timings.MinecraftTimings.getSensorTimings(configKey);
+ // Paper end + // Paper end
this.scanRate = senseInterval; this.scanRate = senseInterval;