From 4afa75e0a92cc648045ba825fdd2f5db619f186f Mon Sep 17 00:00:00 2001 From: Gegy Date: Tue, 23 Jan 2024 09:01:32 +0100 Subject: [PATCH] Fix: apply all rules from subversions of target version --- .../com/mojang/datafixers/DataFixerUpper.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/mojang/datafixers/DataFixerUpper.java b/src/main/java/com/mojang/datafixers/DataFixerUpper.java index d0f417ef..a4464616 100644 --- a/src/main/java/com/mojang/datafixers/DataFixerUpper.java +++ b/src/main/java/com/mojang/datafixers/DataFixerUpper.java @@ -107,20 +107,20 @@ private int getLowestFixSameVersion(final int versionKey) { return fixerVersions.subSet(0, versionKey + 1).lastInt(); } - protected TypeRewriteRule getRule(final int version, final int dataVersion) { - if (version >= dataVersion) { + protected TypeRewriteRule getRule(final int version, final int newVersion) { + if (version >= newVersion) { return TypeRewriteRule.nop(); } - final int expandedVersion = getLowestFixSameVersion(DataFixUtils.makeKey(version)); - final int expandedDataVersion = DataFixUtils.makeKey(dataVersion); - - final long key = (long) expandedVersion << 32 | expandedDataVersion; + final long key = (long) version << 32 | newVersion; return rules.computeIfAbsent(key, k -> { + final int expandedVersion = getLowestFixSameVersion(DataFixUtils.makeKey(version)); + final List rules = Lists.newArrayList(); for (final DataFix fix : globalList) { - final int fixVersion = fix.getVersionKey(); - if (fixVersion > expandedVersion && fixVersion <= expandedDataVersion) { + final int expandedFixVersion = fix.getVersionKey(); + final int fixVersion = DataFixUtils.getVersion(expandedFixVersion); + if (expandedFixVersion > expandedVersion && fixVersion <= newVersion) { final TypeRewriteRule fixRule = fix.getRule(); if (fixRule == TypeRewriteRule.nop()) { continue;