diff --git a/build.gradle b/build.gradle index 3ca6a2ab..7958c9c5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,118 +1,36 @@ -buildscript { - repositories { - // These repositories are only for Gradle plugins, put any other repositories in the repository block further below - maven { url = 'https://repo.spongepowered.org/repository/maven-public/' } - mavenCentral() - } - dependencies { - classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT' - } -} - plugins { - id 'net.minecraftforge.gradle' version '5.1.61' - id 'org.parchmentmc.librarian.forgegradle' version '1.+' + id "dev.architectury.loom" version "1.0.312" + id "maven-publish" id 'com.matthewprenger.cursegradle' version '1.4.0' } -apply plugin: 'org.spongepowered.mixin' +sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8 group = 'org.embeddedt' version = '1.6.0-beta3' java { archivesBaseName = 'modernfix-mc' + minecraft_version - toolchain.languageVersion = JavaLanguageVersion.of(8) } -minecraft { - // The mappings can be changed at any time and must be in the following format. - // Channel: Version: - // official MCVersion Official field/method names from Mojang mapping files - // parchment YYYY.MM.DD-MCVersion Open community-sourced parameter names and javadocs layered on top of official - // - // You must be aware of the Mojang license when using the 'official' or 'parchment' mappings. - // See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md - // - // Parchment is an unofficial project maintained by ParchmentMC, separate from MinecraftForge - // Additional setup is needed to use their mappings: https://github.com/ParchmentMC/Parchment/wiki/Getting-Started - // - // Use non-default mappings at your own risk. They may not always work. - // Simply re-run your setup task after changing the mappings to update your workspace. - mappings channel: 'parchment', version: "${parchment_version}-${minecraft_version}" +loom { + // use this if you are using the official mojang mappings + // and want loom to stop warning you about their license + silentMojangMappingsLicense() - accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') - - // Default run configurations. - // These can be tweaked, removed, or duplicated as needed. - runs { - client { - workingDirectory project.file('run') - - // Recommended logging data for a userdev environment - // The markers can be added/remove as needed separated by commas. - // "SCAN": For mods scan. - // "REGISTRIES": For firing of registry events. - // "REGISTRYDUMP": For getting the contents of all registries. - property 'forge.logging.markers', 'REGISTRIES' - - - // Recommended logging level for the console - // You can set various levels here. - // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels - property 'forge.logging.console.level', 'info' - - - mods { - modernfix { - source sourceSets.main - } - } - } - - server { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' - - property 'forge.logging.console.level', 'debug' - - - mods { - modernfix { - source sourceSets.main - } - } - } - - data { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' - - property 'forge.logging.console.level', 'debug' - - // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. - args '--mod', 'modernfix', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') - - mods { - modernfix { - source sourceSets.main - } - } - } + // since loom 0.10, you are **required** to use the + // "forge" block to configure forge-specific features, + // such as the mixinConfigs array or datagen + forge { + // specify the mixin configs used in this mod + // this will be added to the jar manifest as well! + mixinConfigs = [ + "modernfix.mixins.json" + ] } + mixin.defaultRefmapName = "modernfix.refmap.json" } -mixin { - add sourceSets.main, "modernfix.refmap.json" - - config "modernfix.mixins.json" -} - -// Include resources generated by data generators. -sourceSets.main.resources { srcDir 'src/generated/resources' } - repositories { maven { url 'https://modmaven.dev/' } maven { @@ -124,35 +42,63 @@ repositories { } dependencies { - // Specify the version of Minecraft to use. If this is any group other than 'net.minecraft' it is assumed - // that the dep is a ForgeGradle 'patcher' dependency, and its patches will be applied. - // The userdev artifact is a special name and will get all sorts of transformations applied to it. - minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" + // to change the versions see the gradle.properties file + minecraft "com.mojang:minecraft:${project.minecraft_version}" - annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' + // choose what mappings you want to use here + // leave this uncommented if you want to use + // mojang's official mappings, or feel free + // to add your own mappings here (how about + // mojmap layered with parchment, for example?) + mappings loom.officialMojangMappings() - runtimeOnly fg.deobf("curse.maven:lazydfu-460819:${lazydfu_version}") + // uncomment this if you want to use yarn mappings + // mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}") - compileOnly fg.deobf("curse.maven:ferritecore-429235:4074330") + // your forge dependency, this is **required** when using Forge Loom in forge mode! + forge "net.minecraftforge:forge:${project.forge_version}" + modRuntimeOnly "curse.maven:lazydfu-460819:${lazydfu_version}" + + modCompileOnly("mezz.jei:jei-${minecraft_version}:${jei_version}") + modCompileOnly("curse.maven:ferritecore-429235:4074330") if(include_optimization_mods.toBoolean()) { - runtimeOnly fg.deobf("curse.maven:roadrunner-529754:3683120") - runtimeOnly fg.deobf("curse.maven:rubidium-574856:3949659") - runtimeOnly fg.deobf("curse.maven:noexperimental-407174:3188120") - runtimeOnly fg.deobf("curse.maven:spark-361579:3767277") - runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}") + modRuntimeOnly("curse.maven:roadrunner-529754:3683120") + modRuntimeOnly("curse.maven:rubidium-574856:3949659") + modRuntimeOnly("curse.maven:noexperimental-407174:3188120") + modRuntimeOnly("curse.maven:spark-361579:3767277") + modRuntimeOnly("mezz.jei:jei-${minecraft_version}:${jei_version}") } if(include_content_mods.toBoolean()) { - runtimeOnly fg.deobf("mekanism:Mekanism:${mekanism_version}")// core - runtimeOnly fg.deobf("mekanism:Mekanism:${mekanism_version}:generators")// Mekanism: Generators - runtimeOnly fg.deobf("mekanism:Mekanism:${mekanism_version}:tools")// Mekanism: Tools - - runtimeOnly fg.deobf("curse.maven:betterfoliage-470013:3396105") + modRuntimeOnly("mekanism:Mekanism:${mekanism_version}")// core + modRuntimeOnly("curse.maven:betterfoliage-470013:3396105") } - compileOnly fg.deobf("curse.maven:refinedstorage-243076:3807951") + modCompileOnly("curse.maven:refinedstorage-243076:3807951") +} + +tasks.withType(JavaCompile) { + // ensure that the encoding is set to UTF-8, no matter what the system default is + // this fixes some edge cases with special characters not displaying correctly + // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html + // If Javadoc is generated, this must be specified in that task too. + options.encoding = "UTF-8" + + // The Minecraft launcher currently installs Java 8 for users, so your mod probably wants to target Java 8 too + // JDK 9 introduced a new way of specifying this that will make sure no newer classes or methods are used. + // We'll use that if it's available, but otherwise we'll use the older option. + def targetVersion = 8 + if (JavaVersion.current().isJava9Compatible()) { + options.release = targetVersion + } +} + +java { + // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task + // if it is present. + // If you remove this line, sources will not be generated. + withSourcesJar() } // Example for how to get properties into the manifest for reading at runtime. @@ -171,10 +117,27 @@ jar { } } -jar.finalizedBy('reobfJar') +// configure the maven publication +publishing { + publications { + mavenJava(MavenPublication) { + // add all the jars that should be included when publishing to maven + artifact(remapJar) { + builtBy remapJar + } + artifact(sourcesJar) { + builtBy remapSourcesJar + } + } + } -tasks.withType(JavaCompile).configureEach { - options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + // Notice: This block does NOT have the same function as the block in the top level. + // The repositories here will be used for publishing your artifact, not for + // retrieving dependencies. + } } curseforge { diff --git a/gradle.properties b/gradle.properties index af8f725a..0bd69dc4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,15 @@ -org.gradle.jvmargs=-Xmx3G -org.gradle.daemon=false +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx1G + +# tell architectury loom that this project is a forge project. +# this will enable us to use the "forge" dependency. +# using archloom without this is possible and will give you a +# "standard" loom installation with some extra features. +loom.platform=forge + +mod_id=modernfix minecraft_version=1.16.5 -forge_version=36.2.39 +forge_version=1.16.5-36.2.39 lazydfu_version=3249059 mekanism_version=1.16.5-10.1.2.457 parchment_version=2022.03.06 diff --git a/settings.gradle b/settings.gradle index f13a1985..7bd03562 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,8 +1,9 @@ pluginManagement { repositories { gradlePluginPortal() - maven { url = 'https://maven.minecraftforge.net/' } - maven { url = 'https://maven.parchmentmc.org' } + maven { url "https://maven.fabricmc.net/" } + maven { url "https://maven.architectury.dev/" } + maven { url "https://maven.minecraftforge.net/" } } } diff --git a/src/main/java/org/embeddedt/modernfix/ModernFix.java b/src/main/java/org/embeddedt/modernfix/ModernFix.java index cd861db2..01ee30c7 100644 --- a/src/main/java/org/embeddedt/modernfix/ModernFix.java +++ b/src/main/java/org/embeddedt/modernfix/ModernFix.java @@ -1,29 +1,14 @@ package org.embeddedt.modernfix; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.ConnectingScreen; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.GuiOpenEvent; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.ExtensionPoint; -import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; -import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; import net.minecraftforge.fml.event.server.FMLServerStartedEvent; -import net.minecraftforge.fml.event.server.FMLServerStartingEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.loading.FMLLoader; import net.minecraftforge.fml.network.FMLNetworkConstants; import org.apache.commons.lang3.tuple.Pair; @@ -32,7 +17,6 @@ import org.apache.logging.log4j.Logger; import org.embeddedt.modernfix.core.config.ModernFixConfig; import java.lang.management.ManagementFactory; -import java.util.stream.Collectors; // The value here should match an entry in the META-INF/mods.toml file @Mod(ModernFix.MODID) diff --git a/src/main/java/org/embeddedt/modernfix/ModernFixClient.java b/src/main/java/org/embeddedt/modernfix/ModernFixClient.java index f170d239..33974e37 100644 --- a/src/main/java/org/embeddedt/modernfix/ModernFixClient.java +++ b/src/main/java/org/embeddedt/modernfix/ModernFixClient.java @@ -1,8 +1,8 @@ package org.embeddedt.modernfix; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.ConnectingScreen; -import net.minecraft.client.gui.screen.MainMenuScreen; +import net.minecraft.client.gui.screens.ConnectScreen; +import net.minecraft.client.gui.screens.TitleScreen; import net.minecraftforge.client.event.GuiOpenEvent; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.EventPriority; @@ -24,9 +24,9 @@ public class ModernFixClient { @SubscribeEvent(priority = EventPriority.LOWEST) public void onMultiplayerConnect(GuiOpenEvent event) { - if(event.getGui() instanceof ConnectingScreen && !event.isCanceled()) { + if(event.getGui() instanceof ConnectScreen && !event.isCanceled()) { worldLoadStartTime = System.nanoTime(); - } else if (event.getGui() instanceof MainMenuScreen && gameStartTimeSeconds < 0) { + } else if (event.getGui() instanceof TitleScreen && gameStartTimeSeconds < 0) { gameStartTimeSeconds = ManagementFactory.getRuntimeMXBean().getUptime() / 1000f; ModernFix.LOGGER.warn("Game took " + gameStartTimeSeconds + " seconds to start"); } diff --git a/src/main/java/org/embeddedt/modernfix/blockstate/BlockStateCacheHandler.java b/src/main/java/org/embeddedt/modernfix/blockstate/BlockStateCacheHandler.java index 01f7ea6e..07a01858 100644 --- a/src/main/java/org/embeddedt/modernfix/blockstate/BlockStateCacheHandler.java +++ b/src/main/java/org/embeddedt/modernfix/blockstate/BlockStateCacheHandler.java @@ -2,12 +2,12 @@ package org.embeddedt.modernfix.blockstate; import com.google.common.base.Stopwatch; import com.google.common.collect.ImmutableSet; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.util.Util; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.world.EmptyBlockReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.Util; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.level.EmptyBlockGetter; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.loading.FMLLoader; import org.embeddedt.modernfix.ModernFix; @@ -102,8 +102,8 @@ public class BlockStateCacheHandler { specialStates.parallelStream() .forEach(state -> { /* Force these blocks to compute their shapes ahead of time on worker threads */ - state.getBlock().getCollisionShape(state, EmptyBlockReader.INSTANCE, BlockPos.ZERO, ISelectionContext.empty()); - state.getBlock().getOcclusionShape(state, EmptyBlockReader.INSTANCE, BlockPos.ZERO); + state.getBlock().getCollisionShape(state, EmptyBlockGetter.INSTANCE, BlockPos.ZERO, CollisionContext.empty()); + state.getBlock().getOcclusionShape(state, EmptyBlockGetter.INSTANCE, BlockPos.ZERO); }); }, Util.backgroundExecutor()).join(); rebuildCache(); diff --git a/src/main/java/org/embeddedt/modernfix/core/config/ModernFixConfig.java b/src/main/java/org/embeddedt/modernfix/core/config/ModernFixConfig.java index 98e720e7..c4e6d610 100644 --- a/src/main/java/org/embeddedt/modernfix/core/config/ModernFixConfig.java +++ b/src/main/java/org/embeddedt/modernfix/core/config/ModernFixConfig.java @@ -2,7 +2,7 @@ package org.embeddedt.modernfix.core.config; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import net.minecraft.util.ResourceLocation; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -39,7 +39,6 @@ public class ModernFixConfig { "jepb:jei_plugin" ), locationValidator); INTEGRATED_SERVER_PRIORITY = COMMON_BUILDER.comment("Thread priority to use for the integrated server. By default this is one less than the client thread, to help prevent the server from lowering FPS.").defineInRange("integratedServerPriority", 4, 1, 10); - BACKGROUND_WORKER_PRIORITY = COMMON_BUILDER.comment("Priority to use for the background workers that complete various tasks. By default this is one less than the client thread.").defineInRange("backgroundWorkerPriority", 4, 1, 10); REBUILD_BLOCKSTATES_ASYNC = COMMON_BUILDER .comment("Rebuild blockstate cache asynchronously. Should work with most mods, but can be disabled.") .define("rebuild_blockstate_cache_async", true); diff --git a/src/main/java/org/embeddedt/modernfix/duck/IClientNetHandler.java b/src/main/java/org/embeddedt/modernfix/duck/IClientNetHandler.java index 8659bd70..71b1a0a6 100644 --- a/src/main/java/org/embeddedt/modernfix/duck/IClientNetHandler.java +++ b/src/main/java/org/embeddedt/modernfix/duck/IClientNetHandler.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.duck; -import net.minecraft.network.PacketBuffer; +import net.minecraft.network.FriendlyByteBuf; public interface IClientNetHandler { - PacketBuffer getCopiedCustomBuffer(); + FriendlyByteBuf getCopiedCustomBuffer(); } diff --git a/src/main/java/org/embeddedt/modernfix/duck/IExtendedModelBakery.java b/src/main/java/org/embeddedt/modernfix/duck/IExtendedModelBakery.java index 634b0b84..34ce3862 100644 --- a/src/main/java/org/embeddedt/modernfix/duck/IExtendedModelBakery.java +++ b/src/main/java/org/embeddedt/modernfix/duck/IExtendedModelBakery.java @@ -1,8 +1,8 @@ package org.embeddedt.modernfix.duck; -import net.minecraft.client.renderer.texture.SpriteMap; +import net.minecraft.client.renderer.texture.AtlasSet; public interface IExtendedModelBakery { - SpriteMap getUnfinishedAtlasSet(); + AtlasSet getUnfinishedAtlasSet(); } diff --git a/src/main/java/org/embeddedt/modernfix/duck/ILevelSave.java b/src/main/java/org/embeddedt/modernfix/duck/ILevelSave.java index a10e433d..3299c8b9 100644 --- a/src/main/java/org/embeddedt/modernfix/duck/ILevelSave.java +++ b/src/main/java/org/embeddedt/modernfix/duck/ILevelSave.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.duck; -import net.minecraft.world.storage.SaveFormat; +import net.minecraft.world.level.storage.LevelStorageSource; public interface ILevelSave { - public void runWorldPersistenceHooks(SaveFormat format); + public void runWorldPersistenceHooks(LevelStorageSource format); } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/concurrency/MinecraftMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/concurrency/MinecraftMixin.java index e83404d5..54dfea2d 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/concurrency/MinecraftMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/concurrency/MinecraftMixin.java @@ -1,14 +1,14 @@ package org.embeddedt.modernfix.mixin.bugfix.concurrency; import net.minecraft.client.Minecraft; -import net.minecraft.util.concurrent.ThreadTaskExecutor; +import net.minecraft.util.thread.BlockableEventLoop; import org.embeddedt.modernfix.ModernFix; import org.spongepowered.asm.mixin.Mixin; import java.util.function.BooleanSupplier; @Mixin(Minecraft.class) -public abstract class MinecraftMixin extends ThreadTaskExecutor { +public abstract class MinecraftMixin extends BlockableEventLoop { protected MinecraftMixin(String p_i50403_1_) { super(p_i50403_1_); diff --git a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/concurrency/RenderTypeMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/concurrency/RenderTypeMixin.java index 16054830..c28f7a1f 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/concurrency/RenderTypeMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/concurrency/RenderTypeMixin.java @@ -2,24 +2,24 @@ package org.embeddedt.modernfix.mixin.bugfix.concurrency; import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexFormat; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; -@Mixin(targets = {"net/minecraft/client/renderer/RenderType$Type"}) +@Mixin(RenderType.CompositeRenderType.class) public class RenderTypeMixin { - @Shadow @Final private static ObjectOpenCustomHashSet INSTANCES; + @Shadow @Final private static ObjectOpenCustomHashSet INSTANCES; /** * @author embeddedt * @reason synchronize, can be accessed by multiple mods during modloading */ @Overwrite - private static RenderType.Type memoize(String name, VertexFormat format, int drawMode, int bufferSize, boolean useDelegate, boolean needsSorting, RenderType.State renderState) { + private static RenderType.CompositeRenderType memoize(String name, VertexFormat format, int drawMode, int bufferSize, boolean useDelegate, boolean needsSorting, RenderType.CompositeState renderState) { synchronized (INSTANCES){ - return INSTANCES.addOrGet(new RenderType.Type(name, format, drawMode, bufferSize, useDelegate, needsSorting, renderState)); + return INSTANCES.addOrGet(new RenderType.CompositeRenderType(name, format, drawMode, bufferSize, useDelegate, needsSorting, renderState)); } } } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/edge_chunk_not_saved/ChunkManagerMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/edge_chunk_not_saved/ChunkManagerMixin.java index fdae3d0c..188deb57 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/edge_chunk_not_saved/ChunkManagerMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/edge_chunk_not_saved/ChunkManagerMixin.java @@ -1,11 +1,11 @@ package org.embeddedt.modernfix.mixin.bugfix.edge_chunk_not_saved; -import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.chunk.ChunkPrimer; -import net.minecraft.world.chunk.ChunkPrimerWrapper; -import net.minecraft.world.chunk.IChunk; -import net.minecraft.world.server.ChunkHolder; -import net.minecraft.world.server.ChunkManager; +import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraft.world.level.chunk.ProtoChunk; +import net.minecraft.world.level.chunk.ImposterProtoChunk; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.server.level.ChunkHolder; +import net.minecraft.server.level.ChunkMap; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; import java.util.function.Predicate; /* https://github.com/SuperCoder7979/chunksavingfix-fabric/blob/main/src/main/java/supercoder79/chunksavingfix/mixin/MixinThreadedAnvilChunkStorage.java */ -@Mixin(ChunkManager.class) +@Mixin(ChunkMap.class) public class ChunkManagerMixin { // TODO: hits both at the moment- check and re-evaluate @ModifyArg(method = "saveAllChunks(Z)V", at = @At(value = "INVOKE", target = "Ljava/util/stream/Stream;filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;", ordinal = 0), require = 0) @@ -21,8 +21,8 @@ public class ChunkManagerMixin { return c -> true; } @ModifyArg(method = "saveAllChunks(Z)V", at = @At(value = "INVOKE", target = "Ljava/util/stream/Stream;filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;", ordinal = 1), require = 0) - private Predicate allowProtoChunkFlush(Predicate chunk) { - return c -> c instanceof ChunkPrimer || c instanceof ChunkPrimerWrapper || c instanceof Chunk; + private Predicate allowProtoChunkFlush(Predicate chunk) { + return c -> c instanceof ProtoChunk || c instanceof ImposterProtoChunk || c instanceof LevelChunk; } @ModifyArg(method = "saveAllChunks(Z)V", at = @At(value = "INVOKE", target = "Ljava/util/stream/Stream;filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;", ordinal = 3), require = 0) diff --git a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/packet_leak/ClientPlayNetHandlerMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/packet_leak/ClientPlayNetHandlerMixin.java index 1cbc53ba..5fa5cba0 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/packet_leak/ClientPlayNetHandlerMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/packet_leak/ClientPlayNetHandlerMixin.java @@ -1,30 +1,30 @@ package org.embeddedt.modernfix.mixin.bugfix.packet_leak; -import net.minecraft.client.network.play.ClientPlayNetHandler; -import net.minecraft.network.PacketBuffer; -import net.minecraft.network.play.server.SCustomPayloadPlayPacket; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket; import org.embeddedt.modernfix.duck.IClientNetHandler; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(ClientPlayNetHandler.class) +@Mixin(ClientPacketListener.class) public class ClientPlayNetHandlerMixin implements IClientNetHandler { - private PacketBuffer savedCopy = null; + private FriendlyByteBuf savedCopy = null; /** * @author embeddedt * @reason Release the packet buffer at the end. Needed in f */ - @Redirect(method = "handleCustomPayload", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/play/server/SCustomPayloadPlayPacket;getData()Lnet/minecraft/network/PacketBuffer;")) - private PacketBuffer saveCopyForRelease(SCustomPayloadPlayPacket instance) { - PacketBuffer copy = instance.getData(); + @Redirect(method = "handleCustomPayload", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/protocol/game/ClientboundCustomPayloadPacket;getData()Lnet/minecraft/network/FriendlyByteBuf;")) + private FriendlyByteBuf saveCopyForRelease(ClientboundCustomPayloadPacket instance) { + FriendlyByteBuf copy = instance.getData(); savedCopy = copy; return copy; } @Override - public PacketBuffer getCopiedCustomBuffer() { - PacketBuffer copy = savedCopy; + public FriendlyByteBuf getCopiedCustomBuffer() { + FriendlyByteBuf copy = savedCopy; savedCopy = null; return copy; } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/packet_leak/SCustomPayloadPlayPacketMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/packet_leak/SCustomPayloadPlayPacketMixin.java index 700ae882..739ee1d3 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/packet_leak/SCustomPayloadPlayPacketMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/packet_leak/SCustomPayloadPlayPacketMixin.java @@ -1,9 +1,9 @@ package org.embeddedt.modernfix.mixin.bugfix.packet_leak; -import net.minecraft.client.network.play.IClientPlayNetHandler; -import net.minecraft.network.PacketBuffer; -import net.minecraft.network.play.server.SCustomPayloadPlayPacket; -import net.minecraft.util.ResourceLocation; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket; +import net.minecraft.resources.ResourceLocation; import org.embeddedt.modernfix.duck.IClientNetHandler; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -12,28 +12,28 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(SCustomPayloadPlayPacket.class) +@Mixin(ClientboundCustomPayloadPacket.class) public class SCustomPayloadPlayPacketMixin { - @Shadow private PacketBuffer data; + @Shadow private FriendlyByteBuf data; private boolean needsRelease; - @Inject(method = "(Lnet/minecraft/util/ResourceLocation;Lnet/minecraft/network/PacketBuffer;)V", at = @At("RETURN")) - private void markNotOwned(ResourceLocation pIdentifier, PacketBuffer pData, CallbackInfo ci) { + @Inject(method = "(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/network/FriendlyByteBuf;)V", at = @At("RETURN")) + private void markNotOwned(ResourceLocation pIdentifier, FriendlyByteBuf pData, CallbackInfo ci) { this.needsRelease = false; } @Inject(method = "read", at = @At("RETURN")) - private void markOwned(PacketBuffer p_148837_1_, CallbackInfo ci) { + private void markOwned(FriendlyByteBuf p_148837_1_, CallbackInfo ci) { this.needsRelease = true; } - @Redirect(method = "handle(Lnet/minecraft/client/network/play/IClientPlayNetHandler;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/play/IClientPlayNetHandler;handleCustomPayload(Lnet/minecraft/network/play/server/SCustomPayloadPlayPacket;)V")) - private void handleAndFree(IClientPlayNetHandler instance, SCustomPayloadPlayPacket sCustomPayloadPlayPacket) { + @Redirect(method = "handle(Lnet/minecraft/network/protocol/game/ClientGamePacketListener;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/protocol/game/ClientGamePacketListener;handleCustomPayload(Lnet/minecraft/network/protocol/game/ClientboundCustomPayloadPacket;)V")) + private void handleAndFree(ClientGamePacketListener instance, ClientboundCustomPayloadPacket sCustomPayloadPlayPacket) { try { instance.handleCustomPayload(sCustomPayloadPlayPacket); } finally { - PacketBuffer copied = ((IClientNetHandler)instance).getCopiedCustomBuffer(); + FriendlyByteBuf copied = ((IClientNetHandler)instance).getCopiedCustomBuffer(); if(copied != null) copied.release(); } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/BootstrapMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/BootstrapMixin.java index a3ef7818..53f11afc 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/BootstrapMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/BootstrapMixin.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.mixin.feature.measure_time; import com.google.common.base.Stopwatch; -import net.minecraft.util.registry.Bootstrap; +import net.minecraft.server.Bootstrap; import org.apache.logging.log4j.Logger; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Final; @@ -17,7 +17,7 @@ import java.util.concurrent.TimeUnit; public class BootstrapMixin { @Shadow @Final private static Logger LOGGER; private static Stopwatch startWatch; - @Inject(method = "bootStrap", at = @At(value = "FIELD", opcode = Opcodes.PUTSTATIC, target = "Lnet/minecraft/util/registry/Bootstrap;isBootstrapped:Z", ordinal = 0)) + @Inject(method = "bootStrap", at = @At(value = "FIELD", opcode = Opcodes.PUTSTATIC, target = "Lnet/minecraft/server/Bootstrap;isBootstrapped:Z", ordinal = 0)) private static void recordStartTime(CallbackInfo ci) { startWatch = Stopwatch.createStarted(); } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/MinecraftMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/MinecraftMixin.java index fc9b7f38..5a71b12d 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/MinecraftMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/MinecraftMixin.java @@ -2,11 +2,11 @@ package org.embeddedt.modernfix.mixin.feature.measure_time; import com.mojang.datafixers.util.Function4; import net.minecraft.client.Minecraft; -import net.minecraft.resources.IResourceManager; -import net.minecraft.util.datafix.codec.DatapackCodec; -import net.minecraft.util.registry.DynamicRegistries; -import net.minecraft.world.storage.IServerConfiguration; -import net.minecraft.world.storage.SaveFormat; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.world.level.DataPackConfig; +import net.minecraft.core.RegistryAccess; +import net.minecraft.world.level.storage.WorldData; +import net.minecraft.world.level.storage.LevelStorageSource; import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.ModernFixClient; import org.spongepowered.asm.mixin.Mixin; @@ -22,18 +22,18 @@ public class MinecraftMixin { private long datapackReloadStartTime; @Inject(method = "makeServerStem", at = @At(value = "HEAD")) - private void recordReloadStart(DynamicRegistries.Impl p_238189_1_, Function p_238189_2_, Function4 p_238189_3_, boolean p_238189_4_, SaveFormat.LevelSave p_238189_5_, CallbackInfoReturnable cir) { + private void recordReloadStart(RegistryAccess.RegistryHolder p_238189_1_, Function p_238189_2_, Function4 p_238189_3_, boolean p_238189_4_, LevelStorageSource.LevelStorageAccess p_238189_5_, CallbackInfoReturnable cir) { datapackReloadStartTime = System.nanoTime(); } @Inject(method = "makeServerStem", at = @At(value = "RETURN")) - private void recordReloadEnd(DynamicRegistries.Impl p_238189_1_, Function p_238189_2_, Function4 p_238189_3_, boolean p_238189_4_, SaveFormat.LevelSave p_238189_5_, CallbackInfoReturnable cir) { + private void recordReloadEnd(RegistryAccess.RegistryHolder p_238189_1_, Function p_238189_2_, Function4 p_238189_3_, boolean p_238189_4_, LevelStorageSource.LevelStorageAccess p_238189_5_, CallbackInfoReturnable cir) { float timeSpentReloading = ((float)(System.nanoTime() - datapackReloadStartTime) / 1000000000f); ModernFix.LOGGER.warn("Datapack reload took " + timeSpentReloading + " seconds."); } - @Inject(method = "loadWorld(Ljava/lang/String;Lnet/minecraft/util/registry/DynamicRegistries$Impl;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Function4;ZLnet/minecraft/client/Minecraft$WorldSelectionType;Z)V", at = @At("HEAD"), remap = false) - private void recordWorldLoadStart(String worldName, DynamicRegistries.Impl dynamicRegistries, Function levelSaveToDatapackFunction, Function4 quadFunction, boolean vanillaOnly, Minecraft.WorldSelectionType selectionType, boolean creating, CallbackInfo ci) { + @Inject(method = "loadWorld", at = @At("HEAD"), remap = false) + private void recordWorldLoadStart(String worldName, RegistryAccess.RegistryHolder dynamicRegistries, Function levelSaveToDatapackFunction, Function4 quadFunction, boolean vanillaOnly, Minecraft.ExperimentalDialogType selectionType, boolean creating, CallbackInfo ci) { ModernFixClient.worldLoadStartTime = System.nanoTime(); } } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/feature/reduce_loading_screen_freezes/ModelBakeryMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/feature/reduce_loading_screen_freezes/ModelBakeryMixin.java index 5d3f122a..8e73592c 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/feature/reduce_loading_screen_freezes/ModelBakeryMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/feature/reduce_loading_screen_freezes/ModelBakeryMixin.java @@ -1,8 +1,8 @@ package org.embeddedt.modernfix.mixin.feature.reduce_loading_screen_freezes; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.model.ModelBakery; -import net.minecraft.util.Util; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.Util; import net.minecraftforge.fml.loading.progress.StartupMessageManager; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/IngredientListElementFactoryMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/IngredientListElementFactoryMixin.java index 93499273..021562fe 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/IngredientListElementFactoryMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/IngredientListElementFactoryMixin.java @@ -4,7 +4,7 @@ import mezz.jei.api.ingredients.IIngredientType; import mezz.jei.api.runtime.IIngredientManager; import mezz.jei.gui.ingredients.IIngredientListElement; import mezz.jei.ingredients.IngredientListElementFactory; -import net.minecraft.util.NonNullList; +import net.minecraft.core.NonNullList; import org.embeddedt.modernfix.jei.async.IAsyncJeiStarter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(IngredientListElementFactory.class) public class IngredientListElementFactoryMixin { private static int ingredientNum = 0; - @Inject(method = "addToBaseList", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/NonNullList;add(Ljava/lang/Object;)Z"), remap = false) + @Inject(method = "addToBaseList", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/NonNullList;add(Ljava/lang/Object;)Z")) private static void checkForInterrupt(NonNullList> baseList, IIngredientManager ingredientManager, IIngredientType ingredientType, CallbackInfo ci) { if((ingredientNum++ % 100) == 0) IAsyncJeiStarter.checkForLoadInterruption(); diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/RecipeManagerInternalMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/RecipeManagerInternalMixin.java index eb750559..75cd87b7 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/RecipeManagerInternalMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/RecipeManagerInternalMixin.java @@ -2,7 +2,7 @@ package org.embeddedt.modernfix.mixin.perf.async_jei; import com.google.common.collect.ImmutableListMultimap; import mezz.jei.recipes.RecipeManagerInternal; -import net.minecraft.util.ResourceLocation; +import net.minecraft.resources.ResourceLocation; import org.embeddedt.modernfix.jei.async.IAsyncJeiStarter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -11,7 +11,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(RecipeManagerInternal.class) public class RecipeManagerInternalMixin { - @Inject(method = "addRecipes", at = @At(value = "INVOKE", target = "Lmezz/jei/recipes/RecipeManagerInternal;addRecipeTyped(Ljava/lang/Object;Lnet/minecraft/util/ResourceLocation;)V"), remap = false) + @Inject(method = "addRecipes", at = @At(value = "INVOKE", target = "Lmezz/jei/recipes/RecipeManagerInternal;addRecipeTyped(Ljava/lang/Object;Lnet/minecraft/resources/ResourceLocation;)V")) private void checkForInterrupt(ImmutableListMultimap recipes, CallbackInfo ci) { IAsyncJeiStarter.checkForLoadInterruption(); } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/blast_search_trees/IngredientFilterInvoker.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/blast_search_trees/IngredientFilterInvoker.java index 4c46b457..cd69f9c5 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/blast_search_trees/IngredientFilterInvoker.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/blast_search_trees/IngredientFilterInvoker.java @@ -9,6 +9,6 @@ import java.util.List; @Mixin(IngredientFilter.class) public interface IngredientFilterInvoker { - @Invoker + @Invoker(remap = false) List> invokeGetIngredientListUncached(String filterText); } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/blast_search_trees/MinecraftMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/blast_search_trees/MinecraftMixin.java index 591519db..3e2335f6 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/blast_search_trees/MinecraftMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/blast_search_trees/MinecraftMixin.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.mixin.perf.blast_search_trees; import net.minecraft.client.Minecraft; -import net.minecraft.client.util.SearchTreeManager; +import net.minecraft.client.searchtree.SearchRegistry; import net.minecraftforge.fml.ModList; import org.embeddedt.modernfix.searchtree.DummySearchTree; import org.embeddedt.modernfix.searchtree.JEIBackedSearchTree; @@ -14,18 +14,18 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Minecraft.class) public class MinecraftMixin { - @Shadow @Final private SearchTreeManager searchRegistry; + @Shadow @Final private SearchRegistry searchRegistry; @Inject(method = "createSearchTrees", at = @At("HEAD"), cancellable = true) private void replaceSearchTrees(CallbackInfo ci) { ci.cancel(); if(ModList.get().getModFileById("jei") != null) { - this.searchRegistry.register(SearchTreeManager.CREATIVE_NAMES, new JEIBackedSearchTree(false)); - this.searchRegistry.register(SearchTreeManager.CREATIVE_TAGS, new JEIBackedSearchTree(true)); + this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, new JEIBackedSearchTree(false)); + this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, new JEIBackedSearchTree(true)); } else { - this.searchRegistry.register(SearchTreeManager.CREATIVE_NAMES, new DummySearchTree<>()); - this.searchRegistry.register(SearchTreeManager.CREATIVE_TAGS, new DummySearchTree<>()); + this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, new DummySearchTree<>()); + this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, new DummySearchTree<>()); } - this.searchRegistry.register(SearchTreeManager.RECIPE_COLLECTIONS, new DummySearchTree<>()); + this.searchRegistry.register(SearchRegistry.RECIPE_COLLECTIONS, new DummySearchTree<>()); } } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/boost_worker_count/UtilMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/boost_worker_count/UtilMixin.java index e3bdce58..cf5dd15a 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/boost_worker_count/UtilMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/boost_worker_count/UtilMixin.java @@ -1,6 +1,6 @@ package org.embeddedt.modernfix.mixin.perf.boost_worker_count; -import net.minecraft.util.Util; +import net.minecraft.Util; import org.embeddedt.modernfix.ModernFix; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.Constant; diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_blockstate_cache_arrays/AbstractBlockStateCacheMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_blockstate_cache_arrays/AbstractBlockStateCacheMixin.java index 0cf2fdc4..5ddea843 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_blockstate_cache_arrays/AbstractBlockStateCacheMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_blockstate_cache_arrays/AbstractBlockStateCacheMixin.java @@ -1,22 +1,23 @@ package org.embeddedt.modernfix.mixin.perf.cache_blockstate_cache_arrays; -import net.minecraft.util.BlockVoxelShape; -import net.minecraft.util.Direction; +import net.minecraft.world.level.block.SupportType; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.BlockBehaviour; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(targets = { "net/minecraft/block/AbstractBlock$AbstractBlockState$Cache" }) +@Mixin(BlockBehaviour.BlockStateBase.Cache.class) public class AbstractBlockStateCacheMixin { - private static final BlockVoxelShape[] MF_BLOCK_VOXEL_SHAPES = BlockVoxelShape.values(); + private static final SupportType[] MF_BLOCK_VOXEL_SHAPES = SupportType.values(); private static final Direction.Axis[] DIRECTION_AXIS_VALUES = Direction.Axis.values(); - @Redirect(method = "(Lnet/minecraft/block/BlockState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/BlockVoxelShape;values()[Lnet/minecraft/util/BlockVoxelShape;")) - private BlockVoxelShape[] getVoxelShapeValues() { + @Redirect(method = "(Lnet/minecraft/world/level/block/state/BlockState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/SupportType;values()[Lnet/minecraft/world/level/block/SupportType;")) + private SupportType[] getVoxelShapeValues() { return MF_BLOCK_VOXEL_SHAPES; } - @Redirect(method = "(Lnet/minecraft/block/BlockState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Direction$Axis;values()[Lnet/minecraft/util/Direction$Axis;")) + @Redirect(method = "(Lnet/minecraft/world/level/block/state/BlockState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/Direction$Axis;values()[Lnet/minecraft/core/Direction$Axis;")) private Direction.Axis[] getDirectionAxisValues() { return DIRECTION_AXIS_VALUES; } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_model_materials/MultipartMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_model_materials/MultipartMixin.java index 9da20bae..aa23cdc3 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_model_materials/MultipartMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_model_materials/MultipartMixin.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.mixin.perf.cache_model_materials; -import net.minecraft.client.renderer.model.multipart.Multipart; -import net.minecraft.util.ResourceLocation; +import net.minecraft.client.renderer.block.model.multipart.MultiPart; +import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.Collection; -@Mixin(Multipart.class) +@Mixin(MultiPart.class) public class MultipartMixin { private Collection dependencyCache = null; @Inject(method = "getDependencies", at = @At("HEAD"), cancellable = true) diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_model_materials/VanillaModelMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_model_materials/VanillaModelMixin.java index aed0fc11..6d9a9a55 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_model_materials/VanillaModelMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/cache_model_materials/VanillaModelMixin.java @@ -1,12 +1,12 @@ package org.embeddedt.modernfix.mixin.perf.cache_model_materials; import com.mojang.datafixers.util.Pair; -import net.minecraft.client.renderer.model.BlockModel; -import net.minecraft.client.renderer.model.IUnbakedModel; -import net.minecraft.client.renderer.model.RenderMaterial; -import net.minecraft.client.renderer.model.VariantList; -import net.minecraft.client.renderer.model.multipart.Multipart; -import net.minecraft.util.ResourceLocation; +import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.client.resources.model.Material; +import net.minecraft.client.renderer.block.model.MultiVariant; +import net.minecraft.client.renderer.block.model.multipart.MultiPart; +import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -17,19 +17,19 @@ import java.util.Collections; import java.util.Set; import java.util.function.Function; -@Mixin(value = {VariantList.class, Multipart.class, BlockModel.class}) +@Mixin(value = {MultiVariant.class, MultiPart.class, BlockModel.class}) public class VanillaModelMixin { - private Collection materialsCache = null; + private Collection materialsCache = null; @Inject(method = "getMaterials", at = @At("HEAD"), cancellable = true) - private void useCachedMaterials(Function pModelGetter, Set> pMissingTextureErrors, CallbackInfoReturnable> cir) { + private void useCachedMaterials(Function pModelGetter, Set> pMissingTextureErrors, CallbackInfoReturnable> cir) { if(materialsCache != null) { cir.setReturnValue(materialsCache); } } @Inject(method = "getMaterials", at = @At("RETURN")) - private void storeCachedMaterials(Function pModelGetter, Set> pMissingTextureErrors, CallbackInfoReturnable> cir) { + private void storeCachedMaterials(Function pModelGetter, Set> pMissingTextureErrors, CallbackInfoReturnable> cir) { if(materialsCache == null) materialsCache = Collections.unmodifiableCollection(cir.getReturnValue()); } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/compress_biome_container/MixinBiomeContainer.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/compress_biome_container/MixinBiomeContainer.java index af58cf0d..857e593c 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/compress_biome_container/MixinBiomeContainer.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/compress_biome_container/MixinBiomeContainer.java @@ -2,19 +2,19 @@ package org.embeddedt.modernfix.mixin.perf.compress_biome_container; import it.unimi.dsi.fastutil.objects.Reference2ShortMap; import it.unimi.dsi.fastutil.objects.Reference2ShortOpenHashMap; -import net.minecraft.util.BitArray; -import net.minecraft.util.IObjectIntIterable; -import net.minecraft.util.math.ChunkPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.biome.BiomeContainer; -import net.minecraft.world.biome.provider.BiomeProvider; +import net.minecraft.util.BitStorage; +import net.minecraft.core.IdMap; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.util.Mth; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.chunk.ChunkBiomeContainer; +import net.minecraft.world.level.biome.BiomeSource; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(BiomeContainer.class) +@Mixin(ChunkBiomeContainer.class) public class MixinBiomeContainer { @Mutable @Shadow @@ -23,32 +23,32 @@ public class MixinBiomeContainer { @Shadow @Final - private IObjectIntIterable biomeRegistry; + private IdMap biomeRegistry; @Shadow @Final private static int WIDTH_BITS; private Biome[] palette; - private BitArray intArray; + private BitStorage intArray; - @Inject(method = "(Lnet/minecraft/util/IObjectIntIterable;[I)V", at = @At("RETURN")) - private void reinit1(IObjectIntIterable p_i241970_1_, int[] p_i241970_2_, CallbackInfo ci) { + @Inject(method = "(Lnet/minecraft/core/IdMap;[I)V", at = @At("RETURN")) + private void reinit1(IdMap p_i241970_1_, int[] p_i241970_2_, CallbackInfo ci) { this.createCompact(); } - @Inject(method = "(Lnet/minecraft/util/IObjectIntIterable;[Lnet/minecraft/world/biome/Biome;)V", at = @At("RETURN")) - private void reinit2(IObjectIntIterable p_i241971_1_, Biome[] p_i241971_2_, CallbackInfo ci) { + @Inject(method = "(Lnet/minecraft/core/IdMap;[Lnet/minecraft/world/level/biome/Biome;)V", at = @At("RETURN")) + private void reinit2(IdMap p_i241971_1_, Biome[] p_i241971_2_, CallbackInfo ci) { this.createCompact(); } - @Inject(method = "(Lnet/minecraft/util/IObjectIntIterable;Lnet/minecraft/util/math/ChunkPos;Lnet/minecraft/world/biome/provider/BiomeProvider;)V", at = @At("RETURN")) - private void reinit3(IObjectIntIterable p_i241968_1_, ChunkPos p_i241968_2_, BiomeProvider p_i241968_3_, CallbackInfo ci) { + @Inject(method = "(Lnet/minecraft/core/IdMap;Lnet/minecraft/world/level/ChunkPos;Lnet/minecraft/world/level/biome/BiomeSource;)V", at = @At("RETURN")) + private void reinit3(IdMap p_i241968_1_, ChunkPos p_i241968_2_, BiomeSource p_i241968_3_, CallbackInfo ci) { this.createCompact(); } - @Inject(method = "(Lnet/minecraft/util/IObjectIntIterable;Lnet/minecraft/util/math/ChunkPos;Lnet/minecraft/world/biome/provider/BiomeProvider;[I)V", at = @At("RETURN")) - private void reinit4(IObjectIntIterable p_i241969_1_, ChunkPos p_i241969_2_, BiomeProvider p_i241969_3_, int[] p_i241969_4_, CallbackInfo ci) { + @Inject(method = "(Lnet/minecraft/core/IdMap;Lnet/minecraft/world/level/ChunkPos;Lnet/minecraft/world/level/biome/BiomeSource;[I)V", at = @At("RETURN")) + private void reinit4(IdMap p_i241969_1_, ChunkPos p_i241969_2_, BiomeSource p_i241969_3_, int[] p_i241969_4_, CallbackInfo ci) { this.createCompact(); } @@ -64,8 +64,8 @@ public class MixinBiomeContainer { paletteIndexed[entry.getShortValue()] = entry.getKey(); } - int packedIntSize = Math.max(2, MathHelper.ceillog2(paletteTable.size())); - BitArray integerArray = new BitArray(packedIntSize, BiomeContainer.BIOMES_SIZE); + int packedIntSize = Math.max(2, Mth.ceillog2(paletteTable.size())); + BitStorage integerArray = new BitStorage(packedIntSize, ChunkBiomeContainer.BIOMES_SIZE); Biome prevBiome = null; short prevId = -1; @@ -139,9 +139,9 @@ public class MixinBiomeContainer { */ @Overwrite public Biome getNoiseBiome(int biomeX, int biomeY, int biomeZ) { - int x = biomeX & BiomeContainer.HORIZONTAL_MASK; - int y = MathHelper.clamp(biomeY, 0, BiomeContainer.VERTICAL_MASK); - int z = biomeZ & BiomeContainer.HORIZONTAL_MASK; + int x = biomeX & ChunkBiomeContainer.HORIZONTAL_MASK; + int y = Mth.clamp(biomeY, 0, ChunkBiomeContainer.VERTICAL_MASK); + int z = biomeZ & ChunkBiomeContainer.HORIZONTAL_MASK; return this.palette[this.intArray.get(y << WIDTH_BITS + WIDTH_BITS | z << WIDTH_BITS | x)]; } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/LootTableManagerMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/LootTableManagerMixin.java index 80c8279b..02c2a1a2 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/LootTableManagerMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/LootTableManagerMixin.java @@ -1,15 +1,15 @@ package org.embeddedt.modernfix.mixin.perf.datapack_reload_exceptions; -import net.minecraft.loot.LootTableManager; +import net.minecraft.world.level.storage.loot.LootTables; import org.apache.logging.log4j.Logger; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(LootTableManager.class) +@Mixin(LootTables.class) public class LootTableManagerMixin { @Redirect(method = "*(Lnet/minecraft/resources/IResourceManager;Lcom/google/common/collect/ImmutableMap$Builder;Lnet/minecraft/util/ResourceLocation;Lcom/google/gson/JsonElement;)V", - at = @At(value = "INVOKE", target = "Lorg/apache/logging/log4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V")) + at = @At(value = "INVOKE", target = "Lorg/apache/logging/log4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V", remap = false)) private void logWithoutStacktrace(Logger instance, String s, Object location, Object exc) { instance.error(s + ": {}", location, exc.toString()); } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/RecipeManagerMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/RecipeManagerMixin.java index 035d4df6..ba928c36 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/RecipeManagerMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/RecipeManagerMixin.java @@ -1,6 +1,6 @@ package org.embeddedt.modernfix.mixin.perf.datapack_reload_exceptions; -import net.minecraft.item.crafting.RecipeManager; +import net.minecraft.world.item.crafting.RecipeManager; import org.apache.logging.log4j.Logger; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -8,7 +8,7 @@ import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(RecipeManager.class) public class RecipeManagerMixin { - @Redirect(method = "apply(Ljava/util/Map;Lnet/minecraft/resources/IResourceManager;Lnet/minecraft/profiler/IProfiler;)V", at = @At(value = "INVOKE", target = "Lorg/apache/logging/log4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V")) + @Redirect(method = "apply(Ljava/util/Map;Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)V", at = @At(value = "INVOKE", target = "Lorg/apache/logging/log4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V", remap = false)) private void silenceException(Logger instance, String s, Object location, Object exc) { instance.error(s + ": {}", location, exc.toString()); } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/deduplicate_location/MixinResourceLocation.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/deduplicate_location/MixinResourceLocation.java index 7a67de59..aff6436e 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/deduplicate_location/MixinResourceLocation.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/deduplicate_location/MixinResourceLocation.java @@ -1,6 +1,6 @@ package org.embeddedt.modernfix.mixin.perf.deduplicate_location; -import net.minecraft.util.ResourceLocation; +import net.minecraft.resources.ResourceLocation; import org.embeddedt.modernfix.dedup.IdentifierCaches; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/BlockModelShapesMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/BlockModelShapesMixin.java index 95f369b9..c397f9a9 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/BlockModelShapesMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/BlockModelShapesMixin.java @@ -1,14 +1,13 @@ package org.embeddedt.modernfix.mixin.perf.faster_baking; import com.mojang.datafixers.util.Pair; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.BlockModelShapes; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ModelManager; -import net.minecraft.client.renderer.model.ModelResourceLocation; -import net.minecraft.util.Util; -import net.minecraft.util.registry.Registry; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.block.BlockModelShaper; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.ModelManager; +import net.minecraft.Util; +import net.minecraft.core.Registry; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; @@ -18,11 +17,11 @@ import java.util.ArrayList; import java.util.Map; import java.util.concurrent.CompletableFuture; -@Mixin(BlockModelShapes.class) +@Mixin(BlockModelShaper.class) public abstract class BlockModelShapesMixin { @Shadow @Final private ModelManager modelManager; - @Shadow @Final private Map modelByStateCache; + @Shadow @Final private Map modelByStateCache; /** * @author embeddedt @@ -31,16 +30,16 @@ public abstract class BlockModelShapesMixin { @Overwrite public void rebuildCache() { this.modelByStateCache.clear(); - ArrayList>> futures = new ArrayList<>(); + ArrayList>> futures = new ArrayList<>(); for(Block block : Registry.BLOCK) { block.getStateDefinition().getPossibleStates().forEach((state) -> { futures.add(CompletableFuture.supplyAsync(() -> { - return Pair.of(state, this.modelManager.getModel(BlockModelShapes.stateToModelLocation(state))); + return Pair.of(state, this.modelManager.getModel(BlockModelShaper.stateToModelLocation(state))); }, Util.backgroundExecutor())); }); } - for(CompletableFuture> future : futures) { - Pair pair = future.join(); + for(CompletableFuture> future : futures) { + Pair pair = future.join(); this.modelByStateCache.put(pair.getFirst(), pair.getSecond()); } } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelBakeryMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelBakeryMixin.java index 6c49c0ca..6fb48308 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelBakeryMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelBakeryMixin.java @@ -3,28 +3,16 @@ package org.embeddedt.modernfix.mixin.perf.faster_baking; import com.google.common.collect.ImmutableSet; import com.mojang.datafixers.util.Pair; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.model.*; -import net.minecraft.client.renderer.model.multipart.Multipart; -import net.minecraft.client.renderer.model.multipart.Selector; -import net.minecraft.client.renderer.texture.AtlasTexture; -import net.minecraft.client.renderer.texture.SpriteMap; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.renderer.texture.AtlasSet; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.profiler.IProfiler; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Util; -import net.minecraft.util.math.vector.TransformationMatrix; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.resources.ResourceLocation; +import com.mojang.math.Transformation; import net.minecraftforge.client.event.ModelBakeEvent; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.EventBus; -import net.minecraftforge.eventbus.api.EventListenerHelper; -import net.minecraftforge.eventbus.api.IEventListener; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; import net.minecraftforge.fml.loading.progress.StartupMessageManager; import org.apache.commons.lang3.tuple.Triple; -import org.apache.logging.log4j.Logger; -import org.embeddedt.modernfix.ModernFix; -import org.embeddedt.modernfix.ModernFixClient; import org.embeddedt.modernfix.core.config.ModernFixConfig; import org.embeddedt.modernfix.duck.IExtendedModelBakery; import org.embeddedt.modernfix.models.LazyBakedModel; @@ -43,31 +31,40 @@ import java.util.stream.Collectors; import static org.embeddedt.modernfix.ModernFix.LOGGER; +import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.BlockModelRotation; +import net.minecraft.client.resources.model.Material; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.client.resources.model.ModelState; +import net.minecraft.client.resources.model.UnbakedModel; + @Mixin(ModelBakery.class) public abstract class ModelBakeryMixin implements IExtendedModelBakery { - @Shadow @Final private Map topLevelModels; + @Shadow @Final private Map topLevelModels; - @Shadow @Final private Map bakedTopLevelModels; + @Shadow @Final private Map bakedTopLevelModels; - @Shadow @Deprecated @Nullable public abstract IBakedModel bake(ResourceLocation pLocation, IModelTransform pTransform); + @Shadow @Deprecated @Nullable public abstract BakedModel bake(ResourceLocation pLocation, ModelState pTransform); - @Shadow private Map> atlasPreparations; + @Shadow private Map> atlasPreparations; - @Shadow @Nullable private SpriteMap atlasSet; + @Shadow @Nullable private AtlasSet atlasSet; - @Shadow @Nullable public abstract IBakedModel getBakedModel(ResourceLocation pLocation, IModelTransform pTransform, Function textureGetter); + @Shadow @Nullable public abstract BakedModel getBakedModel(ResourceLocation pLocation, ModelState pTransform, Function textureGetter); @Shadow @Final public static ModelResourceLocation MISSING_MODEL_LOCATION; - @Shadow @Final private Map, IBakedModel> bakedCache; + @Shadow @Final private Map, BakedModel> bakedCache; - @Shadow @Final private Map unbakedCache; + @Shadow @Final private Map unbakedCache; - private IBakedModel bakeIfPossible(ResourceLocation p_229350_1_) { - IBakedModel ibakedmodel = null; + private BakedModel bakeIfPossible(ResourceLocation p_229350_1_) { + BakedModel ibakedmodel = null; try { - ibakedmodel = this.bake(p_229350_1_, ModelRotation.X0_Y0); + ibakedmodel = this.bake(p_229350_1_, BlockModelRotation.X0_Y0); } catch (Exception exception) { exception.printStackTrace(); LOGGER.warn("Unable to bake model: '{}': {}", p_229350_1_, exception); @@ -76,27 +73,27 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { return ibakedmodel; } - private boolean requiresBake(IUnbakedModel model) { + private boolean requiresBake(UnbakedModel model) { if(model instanceof BlockModel && ((BlockModel)model).customData.hasCustomGeometry()) return true; else return false; } - @Inject(method = "processLoading", at = @At(value = "INVOKE", target = "Lnet/minecraft/profiler/IProfiler;pop()V")) - private void bakeModels(IProfiler pProfiler, int p_i226056_4_, CallbackInfo ci) { + @Inject(method = "processLoading", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiling/ProfilerFiller;pop()V")) + private void bakeModels(ProfilerFiller pProfiler, int p_i226056_4_, CallbackInfo ci) { pProfiler.popPush("atlas"); Minecraft.getInstance().executeBlocking(() -> { - for(Pair pair : this.atlasPreparations.values()) { - AtlasTexture atlastexture = pair.getFirst(); - AtlasTexture.SheetData atlastexture$sheetdata = pair.getSecond(); + for(Pair pair : this.atlasPreparations.values()) { + TextureAtlas atlastexture = pair.getFirst(); + TextureAtlas.Preparations atlastexture$sheetdata = pair.getSecond(); atlastexture.reload(atlastexture$sheetdata); } }); pProfiler.popPush("baking"); StartupMessageManager.mcLoaderConsumer().ifPresent(c -> c.accept("Baking models")); - this.atlasSet = new SpriteMap(this.atlasPreparations.values().stream().map(Pair::getFirst).collect(Collectors.toList())); - IBakedModel missingModel = this.bake(MISSING_MODEL_LOCATION, ModelRotation.X0_Y0); + this.atlasSet = new AtlasSet(this.atlasPreparations.values().stream().map(Pair::getFirst).collect(Collectors.toList())); + BakedModel missingModel = this.bake(MISSING_MODEL_LOCATION, BlockModelRotation.X0_Y0); this.bakedTopLevelModels.put(MISSING_MODEL_LOCATION, missingModel); Collection modsListening = ModUtil.findAllModsListeningToEvent(ModelBakeEvent.class); LOGGER.debug("Found ModelBakeEvent listeners: [" + String.join(", ", modsListening) + "]"); @@ -113,13 +110,13 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { /* Then store them as top-level models if needed, and set up the lazy models */ this.topLevelModels.forEach((location, value) -> { if (incompatibleLazyBakedModels.contains(location.getNamespace()) || requiresBake(value)) { - IBakedModel model = this.bakeIfPossible(location); + BakedModel model = this.bakeIfPossible(location); if (model != null) this.bakedTopLevelModels.put(location, model); } else { this.bakedTopLevelModels.put(location, new LazyBakedModel(() -> { synchronized (this.bakedCache) { - IBakedModel ibakedmodel = this.bakeIfPossible(location); + BakedModel ibakedmodel = this.bakeIfPossible(location); return ibakedmodel != null ? ibakedmodel : missingModel; } @@ -133,11 +130,11 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { * @reason texture loading and baking are moved earlier in the launch process, only render thread stuff is done here */ @Overwrite - public SpriteMap uploadTextures(TextureManager pResourceManager, IProfiler pProfiler) { + public AtlasSet uploadTextures(TextureManager pResourceManager, ProfilerFiller pProfiler) { pProfiler.push("atlas_upload"); - for(Pair pair : this.atlasPreparations.values()) { - AtlasTexture atlastexture = pair.getFirst(); - AtlasTexture.SheetData atlastexture$sheetdata = pair.getSecond(); + for(Pair pair : this.atlasPreparations.values()) { + TextureAtlas atlastexture = pair.getFirst(); + TextureAtlas.Preparations atlastexture$sheetdata = pair.getSecond(); pResourceManager.register(atlastexture.location(), atlastexture); pResourceManager.bind(atlastexture.location()); atlastexture.updateFilter(atlastexture$sheetdata); @@ -147,7 +144,7 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { } @Override - public SpriteMap getUnfinishedAtlasSet() { + public AtlasSet getUnfinishedAtlasSet() { return this.atlasSet; } } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelManagerMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelManagerMixin.java index 2f2af276..1a2283fc 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelManagerMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelManagerMixin.java @@ -1,17 +1,17 @@ package org.embeddedt.modernfix.mixin.perf.faster_baking; import it.unimi.dsi.fastutil.objects.Object2IntMap; -import net.minecraft.block.BlockState; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BlockModelShapes; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ModelBakery; -import net.minecraft.client.renderer.model.ModelManager; -import net.minecraft.client.renderer.texture.SpriteMap; +import net.minecraft.client.renderer.block.BlockModelShaper; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelManager; +import net.minecraft.client.renderer.texture.AtlasSet; import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.profiler.IProfiler; -import net.minecraft.resources.IResourceManager; -import net.minecraft.util.ResourceLocation; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.common.ObfuscationReflectionHelper; import org.embeddedt.modernfix.duck.IExtendedModelBakery; @@ -31,20 +31,20 @@ import java.util.Map; @Mixin(ModelManager.class) public class ModelManagerMixin { - @Shadow @Nullable private SpriteMap atlases; + @Shadow @Nullable private AtlasSet atlases; - @Shadow private Map bakedRegistry; + @Shadow private Map bakedRegistry; @Shadow private Object2IntMap modelGroups; @Shadow @Final private TextureManager textureManager; - @Shadow private IBakedModel missingModel; + @Shadow private BakedModel missingModel; - @Shadow @Final private BlockModelShapes blockModelShaper; + @Shadow @Final private BlockModelShaper blockModelShaper; - @Inject(method = "prepare(Lnet/minecraft/resources/IResourceManager;Lnet/minecraft/profiler/IProfiler;)Lnet/minecraft/client/renderer/model/ModelBakery;", at = @At(value = "INVOKE", target = "Lnet/minecraft/profiler/IProfiler;endTick()V"), locals = LocalCapture.CAPTURE_FAILHARD) - private void fireModelBakeEvent(IResourceManager pResourceManager, IProfiler pProfiler, CallbackInfoReturnable cir, ModelLoader pObject) { + @Inject(method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Lnet/minecraft/client/resources/model/ModelBakery;", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiling/ProfilerFiller;endTick()V"), locals = LocalCapture.CAPTURE_FAILHARD) + private void fireModelBakeEvent(ResourceManager pResourceManager, ProfilerFiller pProfiler, CallbackInfoReturnable cir, ModelLoader pObject) { pProfiler.push("modelevent"); if (this.atlases != null) { Minecraft.getInstance().executeBlocking(() -> { @@ -66,7 +66,7 @@ public class ModelManagerMixin { * @reason most of the code is moved to prepare() */ @Overwrite - protected void apply(ModelBakery pObject, IResourceManager pResourceManager, IProfiler pProfiler) { + protected void apply(ModelBakery pObject, ResourceManager pResourceManager, ProfilerFiller pProfiler) { pProfiler.startTick(); pProfiler.push("upload"); this.atlases = pObject.uploadTextures(this.textureManager, pProfiler); diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/AndConditionMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/AndConditionMixin.java index a8c55fad..94283f0a 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/AndConditionMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/AndConditionMixin.java @@ -1,11 +1,11 @@ package org.embeddedt.modernfix.mixin.perf.flatten_model_predicates; import com.google.common.collect.Streams; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.model.multipart.AndCondition; -import net.minecraft.client.renderer.model.multipart.ICondition; -import net.minecraft.state.StateContainer; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.block.model.multipart.AndCondition; +import net.minecraft.client.renderer.block.model.multipart.Condition; +import net.minecraft.world.level.block.state.StateDefinition; import org.embeddedt.modernfix.predicate.StatePropertyPredicateHelper; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -17,14 +17,14 @@ import java.util.stream.Collectors; @Mixin(AndCondition.class) public class AndConditionMixin { - @Shadow @Final private Iterable conditions; + @Shadow @Final private Iterable conditions; /** * @author JellySquid * @reason Flatten predicates */ @Overwrite - public Predicate getPredicate(StateContainer stateManager) { + public Predicate getPredicate(StateDefinition stateManager) { return StatePropertyPredicateHelper.allMatch(Streams.stream(this.conditions).map((multipartModelSelector) -> { return multipartModelSelector.getPredicate(stateManager); }).collect(Collectors.toList())); diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/OrConditionMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/OrConditionMixin.java index d9a0682b..f336a997 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/OrConditionMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/OrConditionMixin.java @@ -1,11 +1,11 @@ package org.embeddedt.modernfix.mixin.perf.flatten_model_predicates; import com.google.common.collect.Streams; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.model.multipart.ICondition; -import net.minecraft.client.renderer.model.multipart.OrCondition; -import net.minecraft.state.StateContainer; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.block.model.multipart.Condition; +import net.minecraft.client.renderer.block.model.multipart.OrCondition; +import net.minecraft.world.level.block.state.StateDefinition; import org.embeddedt.modernfix.predicate.StatePropertyPredicateHelper; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -17,14 +17,14 @@ import java.util.stream.Collectors; @Mixin(OrCondition.class) public class OrConditionMixin { - @Shadow @Final private Iterable conditions; + @Shadow @Final private Iterable conditions; /** * @author JellySquid * @reason Flatten predicates */ @Overwrite - public Predicate getPredicate(StateContainer stateManager) { + public Predicate getPredicate(StateDefinition stateManager) { return StatePropertyPredicateHelper.anyMatch(Streams.stream(this.conditions).map((multipartModelSelector) -> { return multipartModelSelector.getPredicate(stateManager); }).collect(Collectors.toList())); diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/PropertyValueConditionMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/PropertyValueConditionMixin.java index b9a2ef35..80c8991d 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/PropertyValueConditionMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/flatten_model_predicates/PropertyValueConditionMixin.java @@ -1,11 +1,11 @@ package org.embeddedt.modernfix.mixin.perf.flatten_model_predicates; import com.google.common.base.Splitter; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.model.multipart.PropertyValueCondition; -import net.minecraft.state.Property; -import net.minecraft.state.StateContainer; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.block.model.multipart.KeyValueCondition; +import net.minecraft.world.level.block.state.properties.Property; +import net.minecraft.world.level.block.state.StateDefinition; import org.embeddedt.modernfix.predicate.single.SingleMatchAny; import org.embeddedt.modernfix.predicate.single.SingleMatchOne; import org.spongepowered.asm.mixin.Final; @@ -17,7 +17,7 @@ import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; -@Mixin(PropertyValueCondition.class) +@Mixin(KeyValueCondition.class) public class PropertyValueConditionMixin { @Shadow @Final private String key; @@ -30,7 +30,7 @@ public class PropertyValueConditionMixin { * @reason De-duplication */ @Overwrite - public Predicate getPredicate(StateContainer stateManager) { + public Predicate getPredicate(StateDefinition stateManager) { Property property = stateManager.getProperty(this.key); if (property == null) { @@ -63,7 +63,7 @@ public class PropertyValueConditionMixin { return negate ? predicate.negate() : predicate; } - private Object getPropertyValue(StateContainer stateFactory, Property property, String valueString) { + private Object getPropertyValue(StateDefinition stateFactory, Property property, String valueString) { Object value = property.getValue(valueString) .orElse(null); diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/nuke_empty_chunk_sections/MixinChunk.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/nuke_empty_chunk_sections/MixinChunk.java index e2e389db..a6b6e1a1 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/nuke_empty_chunk_sections/MixinChunk.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/nuke_empty_chunk_sections/MixinChunk.java @@ -1,12 +1,12 @@ package org.embeddedt.modernfix.mixin.perf.nuke_empty_chunk_sections; -import net.minecraft.util.math.ChunkPos; -import net.minecraft.util.palette.UpgradeData; -import net.minecraft.world.ITickList; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeContainer; -import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.chunk.ChunkSection; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.chunk.UpgradeData; +import net.minecraft.world.level.TickList; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.chunk.ChunkBiomeContainer; +import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraft.world.level.chunk.LevelChunkSection; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -16,21 +16,18 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.function.Consumer; -@Mixin(Chunk.class) +@Mixin(LevelChunk.class) public class MixinChunk { - @Shadow @Final private ChunkSection[] sections; + @Shadow @Final private LevelChunkSection[] sections; - @Inject(method = "(Lnet/minecraft/world/World;" + - "Lnet/minecraft/util/math/ChunkPos;Lnet/minecraft/world/biome/BiomeContainer;" + - "Lnet/minecraft/util/palette/UpgradeData;Lnet/minecraft/world/ITickList;" + - "Lnet/minecraft/world/ITickList;J[Lnet/minecraft/world/chunk/ChunkSection;Ljava/util/function/Consumer;)V", + @Inject(method = "(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/ChunkPos;Lnet/minecraft/world/level/chunk/ChunkBiomeContainer;Lnet/minecraft/world/level/chunk/UpgradeData;Lnet/minecraft/world/level/TickList;Lnet/minecraft/world/level/TickList;J[Lnet/minecraft/world/level/chunk/LevelChunkSection;Ljava/util/function/Consumer;)V", at = @At("RETURN")) - private void reinit(World world, ChunkPos pos, BiomeContainer container, UpgradeData data, - ITickList list1, ITickList list2, long inhabited, - ChunkSection[] oldSections, Consumer consumer, CallbackInfo ci) { + private void reinit(Level world, ChunkPos pos, ChunkBiomeContainer container, UpgradeData data, + TickList list1, TickList list2, long inhabited, + LevelChunkSection[] oldSections, Consumer consumer, CallbackInfo ci) { /* taken from Hydrogen */ for(int i = 0; i < this.sections.length; i++) { - if(ChunkSection.isEmpty(this.sections[i])) { + if(LevelChunkSection.isEmpty(this.sections[i])) { this.sections[i] = null; } } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/BooleanPropertyMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/BooleanPropertyMixin.java index 7474c762..a5fb1b72 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/BooleanPropertyMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/BooleanPropertyMixin.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.mixin.perf.parallelize_model_loading; import com.google.common.collect.ImmutableSet; -import net.minecraft.state.BooleanProperty; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -12,7 +12,7 @@ public class BooleanPropertyMixin { * There is no point comparing the immutable sets in any two instances of this class, as they will always be * the same. */ - @Redirect(method = "equals", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableSet;equals(Ljava/lang/Object;)Z")) + @Redirect(method = "equals", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableSet;equals(Ljava/lang/Object;)Z", remap = false)) private boolean skipEqualityCheck(ImmutableSet instance, Object object) { return true; } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/ModelBakeryMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/ModelBakeryMixin.java index ea76dd83..9e3c73a6 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/ModelBakeryMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/ModelBakeryMixin.java @@ -1,16 +1,15 @@ package org.embeddedt.modernfix.mixin.perf.parallelize_model_loading; import com.mojang.datafixers.util.Pair; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.model.*; -import net.minecraft.profiler.IProfiler; -import net.minecraft.resources.IResource; -import net.minecraft.resources.IResourceManager; -import net.minecraft.state.StateContainer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Util; -import net.minecraft.util.registry.Registry; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.Util; +import net.minecraft.core.Registry; import net.minecraftforge.fml.loading.progress.StartupMessageManager; import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.util.AsyncStopwatch; @@ -31,25 +30,29 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.stream.Stream; +import net.minecraft.client.renderer.block.model.BlockModelDefinition; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelResourceLocation; + @Mixin(ModelBakery.class) public abstract class ModelBakeryMixin { - @Shadow @Final protected IResourceManager resourceManager; + @Shadow @Final protected ResourceManager resourceManager; private Map>> deserializedBlockstateCache = null; - @Inject(method = "processLoading", at = @At(value = "INVOKE", target = "Lnet/minecraft/profiler/IProfiler;popPush(Ljava/lang/String;)V", ordinal = 0)) - private void preloadJsonModels(IProfiler profilerIn, int maxMipmapLevel, CallbackInfo ci) { + @Inject(method = "processLoading", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiling/ProfilerFiller;popPush(Ljava/lang/String;)V", ordinal = 0)) + private void preloadJsonModels(ProfilerFiller profilerIn, int maxMipmapLevel, CallbackInfo ci) { StartupMessageManager.mcLoaderConsumer().ifPresent(c -> c.accept("Loading models")); profilerIn.popPush("loadblockstates"); AsyncStopwatch.measureAndLogSerialRunningTime("Parallel blockstate loading", () -> { - ThreadLocal containerHolder = ThreadLocal.withInitial(BlockModelDefinition.ContainerHolder::new); + ThreadLocal containerHolder = ThreadLocal.withInitial(BlockModelDefinition.Context::new); this.deserializedBlockstateCache = new ConcurrentHashMap<>(); ArrayList> futures = new ArrayList<>(); for(Block block : Registry.BLOCK) { ResourceLocation blockLocation = Registry.BLOCK.getKey(block); futures.add(CompletableFuture.runAsync(() -> { ResourceLocation blockStateJSON = new ResourceLocation(blockLocation.getNamespace(), "blockstates/" + blockLocation.getPath() + ".json"); - List blockStates; + List blockStates; try { blockStates = this.resourceManager.getResources(blockStateJSON); } catch(IOException e) { @@ -57,10 +60,10 @@ public abstract class ModelBakeryMixin { return; } List> definitions = new ArrayList<>(); - StateContainer stateContainer = block.getStateDefinition(); - BlockModelDefinition.ContainerHolder context = containerHolder.get(); + StateDefinition stateContainer = block.getStateDefinition(); + BlockModelDefinition.Context context = containerHolder.get(); context.setDefinition(stateContainer); - for(IResource resource : blockStates) { + for(Resource resource : blockStates) { try (InputStream inputstream = resource.getInputStream()) { BlockModelDefinition definition = BlockModelDefinition.fromStream(context, new InputStreamReader(inputstream, StandardCharsets.UTF_8)); definitions.add(Pair.of(resource.getSourceName(), definition)); @@ -77,14 +80,14 @@ public abstract class ModelBakeryMixin { } @Inject(method = "processLoading", at = @At("RETURN"), remap = false) - private void clearModelCache(IProfiler profilerIn, int maxMipmapLevel, CallbackInfo ci) { + private void clearModelCache(ProfilerFiller profilerIn, int maxMipmapLevel, CallbackInfo ci) { deserializedBlockstateCache.clear(); } private List replacementList = null; - @Redirect(method = "loadModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/resources/IResourceManager;getResources(Lnet/minecraft/util/ResourceLocation;)Ljava/util/List;", ordinal = 0)) - private List getResourceList(IResourceManager instance, ResourceLocation jsonLocation, ResourceLocation originalBlockLocation) throws IOException { + @Redirect(method = "loadModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/ResourceManager;getResources(Lnet/minecraft/resources/ResourceLocation;)Ljava/util/List;", ordinal = 0)) + private List getResourceList(ResourceManager instance, ResourceLocation jsonLocation, ResourceLocation originalBlockLocation) throws IOException { replacementList = null; if(this.deserializedBlockstateCache != null) { if(!(originalBlockLocation instanceof ModelResourceLocation)) { diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/OBJLoaderMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/OBJLoaderMixin.java index b2ad2c54..79b3c1f8 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/OBJLoaderMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/OBJLoaderMixin.java @@ -1,6 +1,6 @@ package org.embeddedt.modernfix.mixin.perf.parallelize_model_loading; -import net.minecraft.util.ResourceLocation; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.client.model.obj.MaterialLibrary; import net.minecraftforge.client.model.obj.OBJLoader; import net.minecraftforge.client.model.obj.OBJModel; diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/PropertyMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/PropertyMixin.java index a48b903e..4ff99e9c 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/PropertyMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/PropertyMixin.java @@ -1,6 +1,6 @@ package org.embeddedt.modernfix.mixin.perf.parallelize_model_loading; -import net.minecraft.state.Property; +import net.minecraft.world.level.block.state.properties.Property; import org.embeddedt.modernfix.dedup.IdentifierCaches; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.At; @@ -17,7 +17,7 @@ public class PropertyMixin { @Shadow @Final private Class clazz; - @Redirect(method = "", at = @At(value = "FIELD", target = "Lnet/minecraft/state/Property;name:Ljava/lang/String;")) + @Redirect(method = "", at = @At(value = "FIELD", target = "Lnet/minecraft/world/level/block/state/properties/Property;name:Ljava/lang/String;")) private void internName(Property instance, String name) { this.name = IdentifierCaches.PROPERTY.deduplicate(name); } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/SelectorMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/SelectorMixin.java index 7fda2c06..19c88421 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/SelectorMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/SelectorMixin.java @@ -1,10 +1,10 @@ package org.embeddedt.modernfix.mixin.perf.parallelize_model_loading; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.model.multipart.Selector; -import net.minecraft.state.StateContainer; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.block.model.multipart.Selector; +import net.minecraft.world.level.block.state.StateDefinition; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -15,16 +15,16 @@ import java.util.function.Predicate; @Mixin(Selector.class) public class SelectorMixin { - private ConcurrentHashMap, Predicate> predicateCache = new ConcurrentHashMap<>(); + private ConcurrentHashMap, Predicate> predicateCache = new ConcurrentHashMap<>(); @Inject(method = "getPredicate", at = @At("HEAD"), cancellable = true) - private void useCachedPredicate(StateContainer pState, CallbackInfoReturnable> cir) { + private void useCachedPredicate(StateDefinition pState, CallbackInfoReturnable> cir) { Predicate cached = this.predicateCache.get(pState); if(cached != null) cir.setReturnValue(cached); } @Inject(method = "getPredicate", at = @At("RETURN")) - private void storeCachedPredicate(StateContainer pState, CallbackInfoReturnable> cir) { + private void storeCachedPredicate(StateDefinition pState, CallbackInfoReturnable> cir) { this.predicateCache.put(pState, cir.getReturnValue()); } } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/TransformationMatrixMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/TransformationMatrixMixin.java index dcbd0bb1..184b4006 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/TransformationMatrixMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/TransformationMatrixMixin.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.mixin.perf.parallelize_model_loading; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.math.vector.TransformationMatrix; +import com.mojang.math.Matrix4f; +import com.mojang.math.Transformation; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; @@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.Shadow; import java.util.Objects; -@Mixin(TransformationMatrix.class) +@Mixin(Transformation.class) public class TransformationMatrixMixin { @Shadow @Final private Matrix4f matrix; private Integer cachedHashCode = null; diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/multipart/MultipartMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/multipart/MultipartMixin.java index 2664fa9e..5d375be1 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/multipart/MultipartMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/multipart/MultipartMixin.java @@ -1,6 +1,6 @@ package org.embeddedt.modernfix.mixin.perf.parallelize_model_loading.multipart; -import net.minecraft.client.renderer.model.multipart.Multipart; +import net.minecraft.client.renderer.block.model.multipart.MultiPart; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -8,7 +8,7 @@ import org.spongepowered.asm.mixin.injection.Redirect; import java.util.List; import java.util.stream.Stream; -@Mixin(Multipart.class) +@Mixin(MultiPart.class) public class MultipartMixin { @Redirect(method = "getMaterials", at = @At(value = "INVOKE", target = "Ljava/util/List;stream()Ljava/util/stream/Stream;", ordinal = 0)) private Stream makeStreamParallel(List instance) { diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/multipart/VariantListMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/multipart/VariantListMixin.java index 09e0d54c..ead9af25 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/multipart/VariantListMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallelize_model_loading/multipart/VariantListMixin.java @@ -1,11 +1,11 @@ package org.embeddedt.modernfix.mixin.perf.parallelize_model_loading.multipart; import com.mojang.datafixers.util.Pair; -import net.minecraft.client.renderer.model.IUnbakedModel; -import net.minecraft.client.renderer.model.RenderMaterial; -import net.minecraft.client.renderer.model.Variant; -import net.minecraft.client.renderer.model.VariantList; -import net.minecraft.util.ResourceLocation; +import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.client.resources.model.Material; +import net.minecraft.client.renderer.block.model.Variant; +import net.minecraft.client.renderer.block.model.MultiVariant; +import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; @@ -16,7 +16,7 @@ import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; -@Mixin(VariantList.class) +@Mixin(MultiVariant.class) public abstract class VariantListMixin { @Shadow public abstract List getVariants(); @@ -25,8 +25,8 @@ public abstract class VariantListMixin { * @reason Parallelize calls to getMaterials */ @Overwrite - public Collection getMaterials(Function pModelGetter, Set> pMissingTextureErrors) { - List models = this.getVariants().stream().map(Variant::getModelLocation).distinct().map(pModelGetter).collect(Collectors.toList()); + public Collection getMaterials(Function pModelGetter, Set> pMissingTextureErrors) { + List models = this.getVariants().stream().map(Variant::getModelLocation).distinct().map(pModelGetter).collect(Collectors.toList()); return models.parallelStream().flatMap(model -> model.getMaterials(pModelGetter, pMissingTextureErrors).stream()).collect(Collectors.toSet()); } } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/BlockCallbacksMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/BlockCallbacksMixin.java index b7502f18..df586c9f 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/BlockCallbacksMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/BlockCallbacksMixin.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.mixin.perf.reduce_blockstate_cache_rebuilds; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.registries.IForgeRegistryInternal; import net.minecraftforge.registries.RegistryManager; import org.embeddedt.modernfix.blockstate.BlockStateCacheHandler; @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(targets = { "net/minecraftforge/registries/GameData$BlockCallbacks" }) public class BlockCallbacksMixin { - @Redirect(method = "onBake", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/BlockState;initCache()V")) + @Redirect(method = "onBake", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;initCache()V")) private void skipCache(BlockState instance) { } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/BlocksMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/BlocksMixin.java index acf13d4b..12de7b98 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/BlocksMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/BlocksMixin.java @@ -1,6 +1,6 @@ package org.embeddedt.modernfix.mixin.perf.reduce_blockstate_cache_rebuilds; -import net.minecraft.block.Blocks; +import net.minecraft.world.level.block.Blocks; import org.embeddedt.modernfix.blockstate.BlockStateCacheHandler; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/GameDataMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/GameDataMixin.java index 3c5cd53e..3df6d6ba 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/GameDataMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/GameDataMixin.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.mixin.perf.reduce_blockstate_cache_rebuilds; import com.google.common.collect.Multimap; -import net.minecraft.util.ResourceLocation; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.registries.ForgeRegistry; import net.minecraftforge.registries.GameData; import org.embeddedt.modernfix.util.BakeReason; diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/ShapeCacheMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/ShapeCacheMixin.java index b17ba507..cebb4ac6 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/ShapeCacheMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/reduce_blockstate_cache_rebuilds/ShapeCacheMixin.java @@ -1,8 +1,8 @@ package org.embeddedt.modernfix.mixin.perf.reduce_blockstate_cache_rebuilds; import com.refinedmods.refinedstorage.block.shape.ShapeCache; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.VoxelShape; import org.embeddedt.modernfix.ModernFix; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/remove_biome_temperature_cache/BiomeMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/remove_biome_temperature_cache/BiomeMixin.java index bab747ad..36a1991d 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/remove_biome_temperature_cache/BiomeMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/remove_biome_temperature_cache/BiomeMixin.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.mixin.perf.remove_biome_temperature_cache; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.biome.Biome; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.biome.Biome; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/resourcepacks/ModFileResourcePackMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/resourcepacks/ModFileResourcePackMixin.java index 79df2634..9e11a02a 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/resourcepacks/ModFileResourcePackMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/resourcepacks/ModFileResourcePackMixin.java @@ -1,8 +1,8 @@ package org.embeddedt.modernfix.mixin.perf.resourcepacks; import com.google.common.base.Joiner; -import net.minecraft.resources.ResourcePackType; -import net.minecraft.util.ResourceLocation; +import net.minecraft.server.packs.PackType; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.fml.loading.moddiscovery.ModFile; import net.minecraftforge.fml.packs.ModFileResourcePack; import org.embeddedt.modernfix.ModernFix; @@ -28,11 +28,11 @@ import java.util.stream.Stream; @Mixin(ModFileResourcePack.class) public abstract class ModFileResourcePackMixin { - @Shadow public abstract Set getNamespaces(ResourcePackType type); + @Shadow public abstract Set getNamespaces(PackType type); @Shadow(remap = false) @Final private ModFile modFile; - private EnumMap> namespacesByType; - private EnumMap>> rootListingByNamespaceAndType; + private EnumMap> namespacesByType; + private EnumMap>> rootListingByNamespaceAndType; private Set containedPaths; private boolean useNamespaceCaches; private FileSystem resourcePackFS; @@ -42,14 +42,14 @@ public abstract class ModFileResourcePackMixin { private void cacheResources(ModFile modFile, CallbackInfo ci) { this.resourcePackFS = modFile.getLocator().findPath(modFile, "").getFileSystem(); this.useNamespaceCaches = false; - this.namespacesByType = new EnumMap<>(ResourcePackType.class); - for(ResourcePackType type : ResourcePackType.values()) { + this.namespacesByType = new EnumMap<>(PackType.class); + for(PackType type : PackType.values()) { this.namespacesByType.put(type, this.getNamespaces(type)); } this.useNamespaceCaches = true; - this.rootListingByNamespaceAndType = new EnumMap<>(ResourcePackType.class); + this.rootListingByNamespaceAndType = new EnumMap<>(PackType.class); this.containedPaths = new HashSet<>(); - for(ResourcePackType type : ResourcePackType.values()) { + for(PackType type : PackType.values()) { Set namespaces = this.namespacesByType.get(type); HashMap> rootListingForNamespaces = new HashMap<>(); for(String namespace : namespaces) { @@ -88,7 +88,7 @@ public abstract class ModFileResourcePackMixin { } @Inject(method = "getNamespaces", at = @At("HEAD"), cancellable = true) - private void useCacheForNamespaces(ResourcePackType type, CallbackInfoReturnable> cir) { + private void useCacheForNamespaces(PackType type, CallbackInfoReturnable> cir) { if(useNamespaceCaches) { cir.setReturnValue(this.namespacesByType.get(type)); } @@ -104,7 +104,7 @@ public abstract class ModFileResourcePackMixin { * @reason Use cached listing of mod resources */ @Overwrite - public Collection getResources(ResourcePackType type, String resourceNamespace, String pathIn, int maxDepth, Predicate filter) + public Collection getResources(PackType type, String resourceNamespace, String pathIn, int maxDepth, Predicate filter) { Path inputPath = this.resourcePackFS.getPath(pathIn); return this.rootListingByNamespaceAndType.get(type).getOrDefault(resourceNamespace, Collections.emptyList()).stream(). diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/resourcepacks/VanillaPackMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/resourcepacks/VanillaPackMixin.java index ac530d1e..d3e133a6 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/resourcepacks/VanillaPackMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/resourcepacks/VanillaPackMixin.java @@ -4,9 +4,9 @@ import com.google.common.base.Joiner; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; -import net.minecraft.resources.ResourcePackType; -import net.minecraft.resources.VanillaPack; -import net.minecraft.util.ResourceLocation; +import net.minecraft.server.packs.PackType; +import net.minecraft.server.packs.VanillaPackResources; +import net.minecraft.resources.ResourceLocation; import org.apache.commons.lang3.tuple.Pair; import org.embeddedt.modernfix.FileWalker; import org.embeddedt.modernfix.ModernFix; @@ -26,9 +26,9 @@ import java.util.*; import java.util.concurrent.ExecutionException; import java.util.stream.Stream; -@Mixin(VanillaPack.class) +@Mixin(VanillaPackResources.class) public class VanillaPackMixin { - @Shadow @Final private static Map JAR_FILESYSTEM_BY_TYPE; + @Shadow @Final private static Map JAR_FILESYSTEM_BY_TYPE; private static LoadingCache, List> pathStreamLoadingCache = CacheBuilder.newBuilder() .build(FileWalker.INSTANCE); @@ -40,7 +40,7 @@ public class VanillaPackMixin { return; containedPaths = new HashSet<>(); Joiner slashJoiner = Joiner.on('/'); - for(ResourcePackType type : ResourcePackType.values()) { + for(PackType type : PackType.values()) { FileSystem fs = JAR_FILESYSTEM_BY_TYPE.get(type); if(fs == null) throw new IllegalStateException("No filesystem for vanilla " + type.name() + " assets"); @@ -70,7 +70,7 @@ public class VanillaPackMixin { } @Inject(method = "hasResource", at = @At(value = "INVOKE", target = "Ljava/lang/Class;getResource(Ljava/lang/String;)Ljava/net/URL;"), cancellable = true) - private void useCacheForExistence(ResourcePackType type, ResourceLocation location, CallbackInfoReturnable cir) { + private void useCacheForExistence(PackType type, ResourceLocation location, CallbackInfoReturnable cir) { cir.setReturnValue(containedPaths.contains(type.getDirectory() + "/" + location.getNamespace() + "/" + location.getPath())); } } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/LevelSaveMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/LevelSaveMixin.java index 36359c8c..b6f6d978 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/LevelSaveMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/LevelSaveMixin.java @@ -1,9 +1,9 @@ package org.embeddedt.modernfix.mixin.perf.skip_first_datapack_reload; import net.minecraft.client.Minecraft; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.CompressedStreamTools; -import net.minecraft.world.storage.SaveFormat; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtIo; +import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraftforge.fml.common.ObfuscationReflectionHelper; import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.duck.ILevelSave; @@ -14,15 +14,15 @@ import org.spongepowered.asm.mixin.Shadow; import java.nio.file.Path; -@Mixin(SaveFormat.LevelSave.class) +@Mixin(LevelStorageSource.LevelStorageAccess.class) public class LevelSaveMixin implements ILevelSave { @Shadow @Final private Path levelPath; - public void runWorldPersistenceHooks(SaveFormat format) { + public void runWorldPersistenceHooks(LevelStorageSource format) { ((SaveFormatAccessor)format).invokeReadLevelData(this.levelPath.toFile(), (file, dataFixer) -> { try { - CompoundNBT compoundTag = CompressedStreamTools.readCompressed(file); - net.minecraftforge.fml.WorldPersistenceHooks.handleWorldDataLoad((SaveFormat.LevelSave)(Object)this, new DummyServerConfiguration(), compoundTag); + CompoundTag compoundTag = NbtIo.readCompressed(file); + net.minecraftforge.fml.WorldPersistenceHooks.handleWorldDataLoad((LevelStorageSource.LevelStorageAccess)(Object)this, new DummyServerConfiguration(), compoundTag); } catch (Exception e) { ModernFix.LOGGER.error("Exception reading {}", file, e); } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/MinecraftMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/MinecraftMixin.java index 4255da39..b6a8079e 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/MinecraftMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/MinecraftMixin.java @@ -2,11 +2,11 @@ package org.embeddedt.modernfix.mixin.perf.skip_first_datapack_reload; import com.mojang.datafixers.util.Function4; import net.minecraft.client.Minecraft; -import net.minecraft.resources.IResourceManager; -import net.minecraft.util.datafix.codec.DatapackCodec; -import net.minecraft.util.registry.DynamicRegistries; -import net.minecraft.world.storage.IServerConfiguration; -import net.minecraft.world.storage.SaveFormat; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.world.level.DataPackConfig; +import net.minecraft.core.RegistryAccess; +import net.minecraft.world.level.storage.WorldData; +import net.minecraft.world.level.storage.LevelStorageSource; import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.ModernFixClient; import org.embeddedt.modernfix.duck.ILevelSave; @@ -24,17 +24,17 @@ import java.util.function.Function; @Mixin(Minecraft.class) public abstract class MinecraftMixin { - @Shadow public abstract Minecraft.PackManager makeServerStem(DynamicRegistries.Impl dynamicRegistries, Function worldStorageToDatapackFunction, Function4 quadFunction, boolean vanillaOnly, SaveFormat.LevelSave worldStorage) throws InterruptedException, ExecutionException; + @Shadow public abstract Minecraft.ServerStem makeServerStem(RegistryAccess.RegistryHolder dynamicRegistries, Function worldStorageToDatapackFunction, Function4 quadFunction, boolean vanillaOnly, LevelStorageSource.LevelStorageAccess worldStorage) throws InterruptedException, ExecutionException; - @Shadow @Final private SaveFormat levelSource; + @Shadow @Final private LevelStorageSource levelSource; - @Redirect(method = "loadLevel(Ljava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/registry/DynamicRegistries;builtin()Lnet/minecraft/util/registry/DynamicRegistries$Impl;")) - private DynamicRegistries.Impl useNullRegistry() { + @Redirect(method = "loadLevel(Ljava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/RegistryAccess;builtin()Lnet/minecraft/core/RegistryAccess$RegistryHolder;")) + private RegistryAccess.RegistryHolder useNullRegistry() { return null; } - @Redirect(method = "loadWorld(Ljava/lang/String;Lnet/minecraft/util/registry/DynamicRegistries$Impl;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Function4;ZLnet/minecraft/client/Minecraft$WorldSelectionType;Z)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;makeServerStem(Lnet/minecraft/util/registry/DynamicRegistries$Impl;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Function4;ZLnet/minecraft/world/storage/SaveFormat$LevelSave;)Lnet/minecraft/client/Minecraft$PackManager;", ordinal = 0)) - private Minecraft.PackManager skipFirstReload(Minecraft client, DynamicRegistries.Impl dynamicRegistries, Function worldStorageToDatapackFunction, Function4 quadFunction, boolean vanillaOnly, SaveFormat.LevelSave levelSave, String worldName, DynamicRegistries.Impl originalRegistries, Function levelSaveToDatapackFunction, Function4 quadFunction2, boolean vanillaOnly2, Minecraft.WorldSelectionType selectionType, boolean creating) throws InterruptedException, ExecutionException { + @Redirect(method = "loadWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;makeServerStem(Lnet/minecraft/core/RegistryAccess$RegistryHolder;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Function4;ZLnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;)Lnet/minecraft/client/Minecraft$ServerStem;", ordinal = 0)) + private Minecraft.ServerStem skipFirstReload(Minecraft client, RegistryAccess.RegistryHolder dynamicRegistries, Function worldStorageToDatapackFunction, Function4 quadFunction, boolean vanillaOnly, LevelStorageSource.LevelStorageAccess levelSave, String worldName, RegistryAccess.RegistryHolder originalRegistries, Function levelSaveToDatapackFunction, Function4 quadFunction2, boolean vanillaOnly2, Minecraft.ExperimentalDialogType selectionType, boolean creating) throws InterruptedException, ExecutionException { if(!creating) { ModernFix.LOGGER.warn("Skipping first reload, this is still experimental"); ModernFix.runningFirstInjection = true; diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/SaveFormatAccessor.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/SaveFormatAccessor.java index d66e878e..ce3ac88f 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/SaveFormatAccessor.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/SaveFormatAccessor.java @@ -1,14 +1,14 @@ package org.embeddedt.modernfix.mixin.perf.skip_first_datapack_reload; import com.mojang.datafixers.DataFixer; -import net.minecraft.world.storage.SaveFormat; +import net.minecraft.world.level.storage.LevelStorageSource; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; import java.io.File; import java.util.function.BiFunction; -@Mixin(SaveFormat.class) +@Mixin(LevelStorageSource.class) public interface SaveFormatAccessor { @Invoker T invokeReadLevelData(File saveDir, BiFunction levelDatReader); diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/thread_priorities/IntegratedServerMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/thread_priorities/IntegratedServerMixin.java index 19126ed5..10f57276 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/thread_priorities/IntegratedServerMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/thread_priorities/IntegratedServerMixin.java @@ -3,14 +3,14 @@ package org.embeddedt.modernfix.mixin.perf.thread_priorities; import com.mojang.authlib.GameProfileRepository; import com.mojang.authlib.minecraft.MinecraftSessionService; import net.minecraft.client.Minecraft; -import net.minecraft.resources.DataPackRegistries; -import net.minecraft.resources.ResourcePackList; -import net.minecraft.server.integrated.IntegratedServer; -import net.minecraft.server.management.PlayerProfileCache; -import net.minecraft.util.registry.DynamicRegistries; -import net.minecraft.world.chunk.listener.IChunkStatusListenerFactory; -import net.minecraft.world.storage.IServerConfiguration; -import net.minecraft.world.storage.SaveFormat; +import net.minecraft.server.ServerResources; +import net.minecraft.server.packs.repository.PackRepository; +import net.minecraft.client.server.IntegratedServer; +import net.minecraft.server.players.GameProfileCache; +import net.minecraft.core.RegistryAccess; +import net.minecraft.server.level.progress.ChunkProgressListenerFactory; +import net.minecraft.world.level.storage.WorldData; +import net.minecraft.world.level.storage.LevelStorageSource; import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.core.config.ModernFixConfig; import org.spongepowered.asm.mixin.Mixin; @@ -21,7 +21,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(IntegratedServer.class) public class IntegratedServerMixin { @Inject(method = "", at = @At("RETURN")) - private void adjustServerPriority(Thread pServerThread, Minecraft pMinecraft, DynamicRegistries.Impl pRegistryHolder, SaveFormat.LevelSave pStorageSource, ResourcePackList pPackRepository, DataPackRegistries pResources, IServerConfiguration pWorldData, MinecraftSessionService pSessionService, GameProfileRepository pProfileRepository, PlayerProfileCache pProfileCache, IChunkStatusListenerFactory pProgressListenerfactory, CallbackInfo ci) { + private void adjustServerPriority(Thread pServerThread, Minecraft pMinecraft, RegistryAccess.RegistryHolder pRegistryHolder, LevelStorageSource.LevelStorageAccess pStorageSource, PackRepository pPackRepository, ServerResources pResources, WorldData pWorldData, MinecraftSessionService pSessionService, GameProfileRepository pProfileRepository, GameProfileCache pProfileCache, ChunkProgressListenerFactory pProgressListenerfactory, CallbackInfo ci) { int pri = ModernFixConfig.INTEGRATED_SERVER_PRIORITY.get(); ModernFix.LOGGER.info("Changing server thread priority to " + pri); pServerThread.setPriority(pri); diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/thread_priorities/UtilMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/thread_priorities/UtilMixin.java index 695b6961..986b965a 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/thread_priorities/UtilMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/thread_priorities/UtilMixin.java @@ -1,6 +1,6 @@ package org.embeddedt.modernfix.mixin.perf.thread_priorities; -import net.minecraft.util.Util; +import net.minecraft.Util; import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.core.config.ModernFixConfig; import org.spongepowered.asm.mixin.Mixin; @@ -16,7 +16,7 @@ public class UtilMixin { private static ForkJoinPool.ForkJoinWorkerThreadFactory adjustPriorityOfThreadFactory(ForkJoinPool.ForkJoinWorkerThreadFactory factory) { return pool -> { ForkJoinWorkerThread thread = factory.newThread(pool); - int pri = ModernFixConfig.BACKGROUND_WORKER_PRIORITY.get(); + int pri = 4; // used to be configurable, but this causes classloading issues thread.setPriority(pri); return thread; }; diff --git a/src/main/java/org/embeddedt/modernfix/mixin/safety/BlockColorsMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/safety/BlockColorsMixin.java index 1f675882..fd5e407f 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/safety/BlockColorsMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/safety/BlockColorsMixin.java @@ -1,9 +1,9 @@ package org.embeddedt.modernfix.mixin.safety; -import net.minecraft.block.Block; +import net.minecraft.world.level.block.Block; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.color.BlockColors; -import net.minecraft.client.renderer.color.IBlockColor; +import net.minecraft.client.color.block.BlockColors; +import net.minecraft.client.color.block.BlockColor; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -16,11 +16,11 @@ import java.util.concurrent.locks.ReentrantLock; public class BlockColorsMixin { private Lock mapLock = new ReentrantLock(); @Inject(method = "register", at = @At("HEAD")) - private void lockMapBeforeAccess(IBlockColor pBlockColor, Block[] pBlocks, CallbackInfo ci) { + private void lockMapBeforeAccess(BlockColor pBlockColor, Block[] pBlocks, CallbackInfo ci) { mapLock.lock(); } @Inject(method = "register", at = @At("TAIL")) - private void unlockMap(IBlockColor pBlockColor, Block[] pBlocks, CallbackInfo ci) { + private void unlockMap(BlockColor pBlockColor, Block[] pBlocks, CallbackInfo ci) { mapLock.unlock(); } } diff --git a/src/main/java/org/embeddedt/modernfix/models/LazyBakedModel.java b/src/main/java/org/embeddedt/modernfix/models/LazyBakedModel.java index 445ce81e..d5b87496 100644 --- a/src/main/java/org/embeddedt/modernfix/models/LazyBakedModel.java +++ b/src/main/java/org/embeddedt/modernfix/models/LazyBakedModel.java @@ -1,18 +1,18 @@ package org.embeddedt.modernfix.models; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.datafixers.util.Pair; -import net.minecraft.block.BlockState; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ItemCameraTransforms; -import net.minecraft.client.renderer.model.ItemOverrideList; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.block.model.ItemOverrides; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockAndTintGetter; import net.minecraftforge.client.model.data.EmptyModelData; import net.minecraftforge.client.model.data.IModelData; import org.embeddedt.modernfix.ModernFix; @@ -23,9 +23,9 @@ import java.util.List; import java.util.Random; import java.util.function.Supplier; -public class LazyBakedModel implements IBakedModel { - private IBakedModel delegate = null; - private Supplier delegateSupplier; +public class LazyBakedModel implements BakedModel { + private BakedModel delegate = null; + private Supplier delegateSupplier; /** * This flag is changed to true when we should bake instead of returning reasonable defaults for certain @@ -33,11 +33,11 @@ public class LazyBakedModel implements IBakedModel { */ public static boolean allowBakeForFlags = false; - public LazyBakedModel(Supplier delegateSupplier) { + public LazyBakedModel(Supplier delegateSupplier) { this.delegateSupplier = delegateSupplier; } - public IBakedModel computeDelegate() { + public BakedModel computeDelegate() { if(this.delegate == null) { this.delegate = this.delegateSupplier.get(); this.delegateSupplier = null; @@ -80,17 +80,17 @@ public class LazyBakedModel implements IBakedModel { } @Override - public ItemCameraTransforms getTransforms() { + public ItemTransforms getTransforms() { return computeDelegate().getTransforms(); } @Override - public ItemOverrideList getOverrides() { + public ItemOverrides getOverrides() { return computeDelegate().getOverrides(); } @Override - public IBakedModel getBakedModel() { + public BakedModel getBakedModel() { return computeDelegate().getBakedModel(); } @@ -111,13 +111,13 @@ public class LazyBakedModel implements IBakedModel { } @Override - public IBakedModel handlePerspective(ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat) { + public BakedModel handlePerspective(ItemTransforms.TransformType cameraTransformType, PoseStack mat) { return computeDelegate().handlePerspective(cameraTransformType, mat); } @Nonnull @Override - public IModelData getModelData(@Nonnull IBlockDisplayReader world, @Nonnull BlockPos pos, @Nonnull BlockState state, @Nonnull IModelData tileData) { + public IModelData getModelData(@Nonnull BlockAndTintGetter world, @Nonnull BlockPos pos, @Nonnull BlockState state, @Nonnull IModelData tileData) { return computeDelegate().getModelData(world, pos, state, tileData); } @@ -132,7 +132,7 @@ public class LazyBakedModel implements IBakedModel { } @Override - public List> getLayerModels(ItemStack itemStack, boolean fabulous) { + public List> getLayerModels(ItemStack itemStack, boolean fabulous) { return computeDelegate().getLayerModels(itemStack, fabulous); } } diff --git a/src/main/java/org/embeddedt/modernfix/predicate/StatePropertyPredicateHelper.java b/src/main/java/org/embeddedt/modernfix/predicate/StatePropertyPredicateHelper.java index 730e9977..8125e307 100644 --- a/src/main/java/org/embeddedt/modernfix/predicate/StatePropertyPredicateHelper.java +++ b/src/main/java/org/embeddedt/modernfix/predicate/StatePropertyPredicateHelper.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.predicate; -import me.jellysquid.mods.hydrogen.common.state.all.AllMatchOneBoolean; -import net.minecraft.block.BlockState; +import net.minecraft.world.level.block.state.BlockState; +import org.embeddedt.modernfix.predicate.all.AllMatchOneBoolean; import org.embeddedt.modernfix.predicate.all.AllMatchOneObject; import org.embeddedt.modernfix.predicate.any.AllMatchAnyObject; import org.embeddedt.modernfix.predicate.single.SingleMatchAny; diff --git a/src/main/java/org/embeddedt/modernfix/predicate/all/AllMatchOneBoolean.java b/src/main/java/org/embeddedt/modernfix/predicate/all/AllMatchOneBoolean.java index 87490e98..06984eb1 100644 --- a/src/main/java/org/embeddedt/modernfix/predicate/all/AllMatchOneBoolean.java +++ b/src/main/java/org/embeddedt/modernfix/predicate/all/AllMatchOneBoolean.java @@ -1,7 +1,7 @@ -package me.jellysquid.mods.hydrogen.common.state.all; +package org.embeddedt.modernfix.predicate.all; -import net.minecraft.block.BlockState; -import net.minecraft.state.Property; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; import org.embeddedt.modernfix.predicate.single.SingleMatchOne; import java.util.List; diff --git a/src/main/java/org/embeddedt/modernfix/predicate/all/AllMatchOneObject.java b/src/main/java/org/embeddedt/modernfix/predicate/all/AllMatchOneObject.java index 1522d5ed..5a90591b 100644 --- a/src/main/java/org/embeddedt/modernfix/predicate/all/AllMatchOneObject.java +++ b/src/main/java/org/embeddedt/modernfix/predicate/all/AllMatchOneObject.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.predicate.all; -import net.minecraft.block.BlockState; -import net.minecraft.state.Property; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; import org.embeddedt.modernfix.predicate.single.SingleMatchOne; import java.util.List; diff --git a/src/main/java/org/embeddedt/modernfix/predicate/any/AllMatchAnyObject.java b/src/main/java/org/embeddedt/modernfix/predicate/any/AllMatchAnyObject.java index 04fa3533..f9585376 100644 --- a/src/main/java/org/embeddedt/modernfix/predicate/any/AllMatchAnyObject.java +++ b/src/main/java/org/embeddedt/modernfix/predicate/any/AllMatchAnyObject.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.predicate.any; -import net.minecraft.block.BlockState; -import net.minecraft.state.Property; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; import org.apache.commons.lang3.ArrayUtils; import org.embeddedt.modernfix.predicate.single.SingleMatchAny; diff --git a/src/main/java/org/embeddedt/modernfix/predicate/single/SingleMatchAny.java b/src/main/java/org/embeddedt/modernfix/predicate/single/SingleMatchAny.java index 72a8c6de..1c7906e9 100644 --- a/src/main/java/org/embeddedt/modernfix/predicate/single/SingleMatchAny.java +++ b/src/main/java/org/embeddedt/modernfix/predicate/single/SingleMatchAny.java @@ -1,8 +1,8 @@ package org.embeddedt.modernfix.predicate.single; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; -import net.minecraft.block.BlockState; -import net.minecraft.state.Property; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; import org.apache.commons.lang3.ArrayUtils; import java.util.Arrays; diff --git a/src/main/java/org/embeddedt/modernfix/predicate/single/SingleMatchOne.java b/src/main/java/org/embeddedt/modernfix/predicate/single/SingleMatchOne.java index 6bd5c389..e44e0515 100644 --- a/src/main/java/org/embeddedt/modernfix/predicate/single/SingleMatchOne.java +++ b/src/main/java/org/embeddedt/modernfix/predicate/single/SingleMatchOne.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.predicate.single; -import net.minecraft.block.BlockState; -import net.minecraft.state.Property; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; import java.util.List; import java.util.function.Predicate; diff --git a/src/main/java/org/embeddedt/modernfix/registry/DeferredRegisterBaker.java b/src/main/java/org/embeddedt/modernfix/registry/DeferredRegisterBaker.java index 3528074e..be78ace2 100644 --- a/src/main/java/org/embeddedt/modernfix/registry/DeferredRegisterBaker.java +++ b/src/main/java/org/embeddedt/modernfix/registry/DeferredRegisterBaker.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.registry; import com.google.common.base.Stopwatch; -import net.minecraft.util.ResourceLocation; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.fml.ModWorkManager; import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.util.AsyncStopwatch; diff --git a/src/main/java/org/embeddedt/modernfix/searchtree/DummySearchTree.java b/src/main/java/org/embeddedt/modernfix/searchtree/DummySearchTree.java index e3a80f32..ff337dc0 100644 --- a/src/main/java/org/embeddedt/modernfix/searchtree/DummySearchTree.java +++ b/src/main/java/org/embeddedt/modernfix/searchtree/DummySearchTree.java @@ -1,19 +1,16 @@ package org.embeddedt.modernfix.searchtree; -import net.minecraft.client.util.IMutableSearchTree; -import net.minecraft.client.util.SearchTree; -import net.minecraft.client.util.SearchTreeReloadable; -import net.minecraft.util.ResourceLocation; +import net.minecraft.client.searchtree.MutableSearchTree; +import net.minecraft.client.searchtree.ReloadableIdSearchTree; import java.util.Collections; import java.util.List; -import java.util.function.Function; import java.util.stream.Stream; /** * Dummy search tree that stores nothing and returns nothing on searches. */ -public class DummySearchTree extends SearchTreeReloadable implements IMutableSearchTree { +public class DummySearchTree extends ReloadableIdSearchTree implements MutableSearchTree { public DummySearchTree() { super(t -> Stream.empty()); } diff --git a/src/main/java/org/embeddedt/modernfix/searchtree/JEIBackedSearchTree.java b/src/main/java/org/embeddedt/modernfix/searchtree/JEIBackedSearchTree.java index 58d608dd..b26ff661 100644 --- a/src/main/java/org/embeddedt/modernfix/searchtree/JEIBackedSearchTree.java +++ b/src/main/java/org/embeddedt/modernfix/searchtree/JEIBackedSearchTree.java @@ -4,7 +4,7 @@ import mezz.jei.Internal; import mezz.jei.ingredients.IIngredientListElementInfo; import mezz.jei.ingredients.IngredientFilter; import mezz.jei.runtime.JeiRuntime; -import net.minecraft.item.ItemStack; +import net.minecraft.world.item.ItemStack; import org.embeddedt.modernfix.mixin.perf.blast_search_trees.IngredientFilterInvoker; import java.util.ArrayList; diff --git a/src/main/java/org/embeddedt/modernfix/util/BlockClassPreloader.java b/src/main/java/org/embeddedt/modernfix/util/BlockClassPreloader.java index 83933513..140de108 100644 --- a/src/main/java/org/embeddedt/modernfix/util/BlockClassPreloader.java +++ b/src/main/java/org/embeddedt/modernfix/util/BlockClassPreloader.java @@ -1,8 +1,8 @@ package org.embeddedt.modernfix.util; import com.google.common.base.Stopwatch; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.Block; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModWorkManager; import net.minecraftforge.fml.loading.moddiscovery.ModFile; @@ -22,7 +22,7 @@ public class BlockClassPreloader { Stopwatch stopwatch = Stopwatch.createStarted(); ModernFix.LOGGER.warn("Preparing to preload classes..."); HashMap isABlockClass = new HashMap<>(); - isABlockClass.put(Type.getType(AbstractBlock.class), true); + isABlockClass.put(Type.getType(BlockBehaviour.class), true); isABlockClass.put(Type.getType(Block.class), true); Field selfField, parentField; List futures = new ArrayList<>(); @@ -37,7 +37,7 @@ public class BlockClassPreloader { .flatMap(data -> data.getClasses().stream()) .collect(Collectors.toList()); HashSet blockClasses = new HashSet<>(); - blockClasses.add(Type.getType(AbstractBlock.class)); + blockClasses.add(Type.getType(BlockBehaviour.class)); HashSet nonBlockClasses = new HashSet<>(); int previousSize = -1; nonBlockClasses.add(Type.getType(Object.class)); diff --git a/src/main/java/org/embeddedt/modernfix/util/DummyServerConfiguration.java b/src/main/java/org/embeddedt/modernfix/util/DummyServerConfiguration.java index 77bef0f8..96e3fbf1 100644 --- a/src/main/java/org/embeddedt/modernfix/util/DummyServerConfiguration.java +++ b/src/main/java/org/embeddedt/modernfix/util/DummyServerConfiguration.java @@ -2,28 +2,28 @@ package org.embeddedt.modernfix.util; import com.google.common.collect.ImmutableSet; import com.mojang.serialization.Lifecycle; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.datafix.codec.DatapackCodec; -import net.minecraft.util.registry.DynamicRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.DataPackConfig; +import net.minecraft.core.RegistryAccess; import net.minecraft.world.Difficulty; -import net.minecraft.world.GameRules; -import net.minecraft.world.GameType; -import net.minecraft.world.WorldSettings; -import net.minecraft.world.gen.settings.DimensionGeneratorSettings; -import net.minecraft.world.storage.IServerConfiguration; -import net.minecraft.world.storage.IServerWorldInfo; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.GameType; +import net.minecraft.world.level.LevelSettings; +import net.minecraft.world.level.levelgen.WorldGenSettings; +import net.minecraft.world.level.storage.WorldData; +import net.minecraft.world.level.storage.ServerLevelData; import javax.annotation.Nullable; import java.util.Set; -public class DummyServerConfiguration implements IServerConfiguration { +public class DummyServerConfiguration implements WorldData { @Override - public DatapackCodec getDataPackConfig() { - return DatapackCodec.DEFAULT; + public DataPackConfig getDataPackConfig() { + return DataPackConfig.DEFAULT; } @Override - public void setDataPackConfig(DatapackCodec codec) { + public void setDataPackConfig(DataPackConfig codec) { } @@ -44,27 +44,27 @@ public class DummyServerConfiguration implements IServerConfiguration { @Nullable @Override - public CompoundNBT getCustomBossEvents() { + public CompoundTag getCustomBossEvents() { return null; } @Override - public void setCustomBossEvents(@Nullable CompoundNBT nbt) { + public void setCustomBossEvents(@Nullable CompoundTag nbt) { } @Override - public IServerWorldInfo overworldData() { + public ServerLevelData overworldData() { return null; } @Override - public WorldSettings getLevelSettings() { + public LevelSettings getLevelSettings() { return null; } @Override - public CompoundNBT createTag(DynamicRegistries registries, @Nullable CompoundNBT hostPlayerNBT) { + public CompoundTag createTag(RegistryAccess registries, @Nullable CompoundTag hostPlayerNBT) { return null; } @@ -124,22 +124,22 @@ public class DummyServerConfiguration implements IServerConfiguration { } @Override - public CompoundNBT getLoadedPlayerTag() { + public CompoundTag getLoadedPlayerTag() { return null; } @Override - public CompoundNBT endDragonFightData() { + public CompoundTag endDragonFightData() { return null; } @Override - public void setEndDragonFightData(CompoundNBT nbt) { + public void setEndDragonFightData(CompoundTag nbt) { } @Override - public DimensionGeneratorSettings worldGenSettings() { + public WorldGenSettings worldGenSettings() { return null; } diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index ba522272..248ef35f 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -1,6 +1,6 @@ -public net.minecraft.client.Minecraft$WorldSelectionType -public net.minecraft.client.renderer.RenderType$Type -public net.minecraft.client.renderer.RenderType$Type (Ljava/lang/String;Lnet/minecraft/client/renderer/vertex/VertexFormat;IIZZLnet/minecraft/client/renderer/RenderType$State;)V -public net.minecraft.block.AbstractBlock$AbstractBlockState$Cache -public net.minecraft.util.math.shapes.VoxelShape (Lnet/minecraft/util/math/shapes/VoxelShapePart;)V # -public net.minecraft.client.renderer.model.ModelBakery$BlockStateDefinitionException \ No newline at end of file +public net.minecraft.client.Minecraft$ExperimentalDialogType +public net.minecraft.client.renderer.RenderType$CompositeRenderType +public net.minecraft.client.renderer.RenderType$CompositeRenderType (Ljava/lang/String;Lcom/mojang/blaze3d/vertex/VertexFormat;IIZZLnet/minecraft/client/renderer/RenderType$CompositeState;)V +public net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase$Cache +public net.minecraft.world.phys.shapes.VoxelShape (Lnet/minecraft/util/math/shapes/VoxelShapePart;)V # +public net.minecraft.client.resources.model.ModelBakery$BlockStateDefinitionException \ No newline at end of file