diff --git a/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch b/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch index f936417e85..60ea4dc7cd 100644 --- a/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch +++ b/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch @@ -372,19 +372,23 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + return rootClassName + ".java"; + } + -+ private record ClassMapping( ++ public record ClassMapping( + String obfName, + String mojangName, + Map, MethodMapping> methodMappings + ) { + } + -+ private record MethodMapping( ++ public record MethodMapping( + String obfName, + String mojangName, + String descriptor + ) { + } ++ ++ public @Nullable Map 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 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Rate-options-and-timings-for-sensors-and-behaviors.patch b/patches/server/Rate-options-and-timings-for-sensors-and-behaviors.patch index 3b43fc7a55..3136dc5cf2 100644 --- a/patches/server/Rate-options-and-timings-for-sensors-and-behaviors.patch +++ b/patches/server/Rate-options-and-timings-for-sensors-and-behaviors.patch @@ -59,8 +59,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + private Table sensorTickRates; + private Table behaviorTickRates; + private void tickRates() { -+ config.addDefault("world-settings.default.tick-rates.sensor.villager.secondaryplaces", 40); -+ config.addDefault("world-settings.default.tick-rates.behavior.villager.positionvalidate", 20); ++ config.addDefault("world-settings.default.tick-rates.sensor.villager.secondarypoisensor", 40); ++ config.addDefault("world-settings.default.tick-rates.behavior.villager.validatenearbypoi", -1); // Example + log("Tick rates:"); + sensorTickRates = loadTickRates("sensor"); + behaviorTickRates = loadTickRates("behavior"); @@ -130,12 +130,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.maxDuration = maxRunTime; this.entryCondition = requiredMemoryState; + // Paper start - configurable behavior tick rate and timings -+ String key = getClass().getName().startsWith("net.minecraft.") ? getClass().getSimpleName() : getClass().getName(); -+ key = key.toLowerCase(java.util.Locale.ROOT); -+ if (key.startsWith("behavior")) { -+ key = key.substring("behavior".length()); ++ Map mappings = io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.mappings(); ++ String key; ++ if (mappings != null) { ++ 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); + // Paper end } @@ -190,12 +196,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public Sensor(int senseInterval) { + // Paper start - configurable sensor tick rate and timings -+ String key = getClass().getName().startsWith("net.minecraft.") ? getClass().getSimpleName() : getClass().getName(); -+ key = key.toLowerCase(java.util.Locale.ROOT); -+ if (key.startsWith("sensor")) { -+ key = key.substring("sensor".length()); ++ java.util.Map mappings = io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.mappings(); ++ String key; ++ if (mappings != null) { ++ 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); + // Paper end this.scanRate = senseInterval;