diff --git a/src/main/java/gregtech/datafix/GTDataFixers.java b/src/main/java/gregtech/datafix/GTDataFixers.java index d6b731d38be..ea8efe93388 100644 --- a/src/main/java/gregtech/datafix/GTDataFixers.java +++ b/src/main/java/gregtech/datafix/GTDataFixers.java @@ -2,13 +2,11 @@ import gregtech.api.GTValues; import gregtech.api.GregTechAPI; -import gregtech.api.metatileentity.registry.MTERegistry; import gregtech.datafix.migration.impl.MigrateMTEBlockTE; import gregtech.datafix.migration.impl.MigrateMTEItems; import gregtech.datafix.migration.lib.MTERegistriesMigrator; import gregtech.datafix.walker.WalkItemStackLike; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.datafix.FixTypes; import net.minecraft.util.datafix.IDataWalker; import net.minecraftforge.common.util.CompoundDataFixer; @@ -19,6 +17,8 @@ import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.NotNull; +import java.util.stream.IntStream; + public final class GTDataFixers { public static final Logger LOGGER = LogManager.getLogger("GregTech DataFixers"); @@ -63,13 +63,10 @@ private static void registerFixes(@NotNull GTDataVersion version, @NotNull ModFi } /** - * Migrate all MTEs to the new blocks automatically + * Migrate GT's own MTEs to the new blocks automatically */ private static void migrateMTERegistries() { MTERegistriesMigrator migrator = GregTechAPI.MIGRATIONS.registriesMigrator(); - MTERegistry registry = GregTechAPI.mteManager.getRegistry(GTValues.MODID); - for (ResourceLocation key : registry.getKeys()) { - migrator.migrate(key.getNamespace(), (short) registry.getIdByObjectName(key)); - } + migrator.migrate(GTValues.MODID, IntStream.range(0, 2000)); } } diff --git a/src/main/java/gregtech/datafix/migration/lib/MTERegistriesMigrator.java b/src/main/java/gregtech/datafix/migration/lib/MTERegistriesMigrator.java index 159fd1450fa..73460ac52b8 100644 --- a/src/main/java/gregtech/datafix/migration/lib/MTERegistriesMigrator.java +++ b/src/main/java/gregtech/datafix/migration/lib/MTERegistriesMigrator.java @@ -15,6 +15,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.stream.IntStream; + /** * Performs migration to an independent MTE registry. *
@@ -48,16 +50,30 @@ public void migrate(int preMeta, int postMeta) { } /** - * Register a data fix entry for the multiple MTE registry transition. + * Register a single data fix entry for the multiple MTE registry transition. + *
+ * Callers will probably prefer {@link #migrate(String, IntStream)}. * * @param modid the registry's modid * @param meta the metadata value to migrate */ - @ApiStatus.Internal public void migrate(@NotNull String modid, short meta) { metaModidMap.put(meta, modid); } + /** + * Register data fix entries for the multiple MTE registry transition. + *
+ * Register the range of values allocated to the modid using {@link IntStream#range(int, int)} or + * {@link IntStream#builder()}. + * + * @param modid the registry's modid + * @param metaValues the metadata values to migrate + */ + public void migrate(@NotNull String modid, @NotNull IntStream metaValues) { + metaValues.forEach(i -> metaModidMap.put((short) i, modid)); + } + @Override public @Nullable ResourceLocation fixMTEid(@NotNull ResourceLocation original) { return null; diff --git a/src/main/java/gregtech/integration/groovy/GroovyScriptModule.java b/src/main/java/gregtech/integration/groovy/GroovyScriptModule.java index a3409b37941..830c15c2f67 100644 --- a/src/main/java/gregtech/integration/groovy/GroovyScriptModule.java +++ b/src/main/java/gregtech/integration/groovy/GroovyScriptModule.java @@ -61,6 +61,7 @@ import java.util.NoSuchElementException; import java.util.Objects; import java.util.function.Supplier; +import java.util.stream.IntStream; @Optional.Interface(modid = Mods.Names.GROOVY_SCRIPT, iface = "com.cleanroommc.groovyscript.api.GroovyPlugin", @@ -100,7 +101,8 @@ public static void afterScriptLoad(ScriptRunEvent.Post event) { @SubscribeEvent public static void onMTERegistries(MTEManager.MTERegistryEvent event) { // automatically create a registry for groovyscript to store its MTEs - GregTechAPI.mteManager.createRegistry(GroovyScriptModule.getPackId()); + GregTechAPI.mteManager.createRegistry(getPackId()); + GregTechAPI.MIGRATIONS.registriesMigrator().migrate(getPackId(), IntStream.rangeClosed(32000, Short.MAX_VALUE)); } public static boolean isCurrentlyRunning() {