--- a/com/mojang/datafixers/DataFixerBuilder.java +++ b/com/mojang/datafixers/DataFixerBuilder.java @@ -29,8 +_,10 @@ private final Int2ObjectSortedMap schemas = new Int2ObjectAVLTreeMap<>(); private final List globalList = new ArrayList<>(); private final IntSortedSet fixerVersions = new IntAVLTreeSet(); + private final int minDataFixPrecacheVersion; // Paper - Perf: Cache DataFixerUpper Rewrite Rules on demand public DataFixerBuilder(final int dataVersion) { + this.minDataFixPrecacheVersion = Integer.getInteger("Paper.minPrecachedDatafixVersion", dataVersion + 1) * 10; // Paper - Perf: default to precache nothing - Mojang stores versions * 10 to allow for 'sub versions' this.dataVersion = dataVersion; } @@ -88,6 +_,7 @@ final IntIterator iterator = fixerUpper.fixerVersions().iterator(); while (iterator.hasNext()) { final int versionKey = iterator.nextInt(); + if (versionKey < minDataFixPrecacheVersion) continue; // Paper - Perf: Cache DataFixerUpper Rewrite Rules on demand final Schema schema = schemas.get(versionKey); for (final String typeName : schema.types()) { if (!requiredTypeNames.contains(typeName)) {