diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index a9a6b9d30..ccafa560f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -59,6 +59,7 @@ body: label: Mod Version description: The version of the mod you were using when the bug occured options: + - "0.6.2" - "0.6.1" - "0.6.0" - "0.5.1" diff --git a/build.gradle b/build.gradle index 422abd840..909a37211 100644 --- a/build.gradle +++ b/build.gradle @@ -55,14 +55,14 @@ dependencies { // Fabric API modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_version}" - modCompileOnly 'curse.maven:starlight-521783:3599857' + modCompileOnly 'curse.maven:starlight-521783:3667443' - modCompileOnly 'maven.modrinth:iris:1.18.x-v1.1.4' - modCompileOnly 'maven.modrinth:sodium:mc1.18.1-0.4.0-alpha6' + modCompileOnly 'maven.modrinth:iris:1.18.x-v1.2.2' + modCompileOnly 'maven.modrinth:sodium:mc1.18.2-0.4.1' implementation 'com.google.code.findbugs:jsr305:3.0.2' - modCompileOnly 'maven.modrinth:indium:1.0.2-alpha1+mc1.18' - modCompileOnly 'io.vram:frex-fabric-mc118:6.0.229' + modCompileOnly 'maven.modrinth:indium:1.0.2+mc1.18.2' + modCompileOnly 'io.vram:frex-fabric-mc118:6.0.242' } processResources { @@ -153,6 +153,6 @@ curseforge { changelog = file('changelog.txt') releaseType = project.curse_type mainArtifact jar - addGameVersion '1.18.1' + addGameVersion '1.18.2' } } diff --git a/changelog.txt b/changelog.txt index 981b3af55..3afd6f854 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,11 @@ +0.6.1: +Fixes +- Fix crash when loading block entities for Flywheel to render, most common when exploring the end. +- Fix occasional visual artifacts when enabling optifine shaders. +Technical/API +- Added more debug information to the F3 screen. +- Distance update limiting can now be disabled. + 0.6.0: With this release, Flywheel is no longer needed on servers! Forge finally has client commands, and the /flywheel command now takes advantage of this. diff --git a/gradle.properties b/gradle.properties index b121f29ec..6a2f6e92c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,16 +2,16 @@ org.gradle.jvmargs = -Xmx3G org.gradle.daemon = false # mod version info -mod_version = 0.6.1 +mod_version = 0.6.2 mc_update_version = 1.18 -minecraft_version = 1.18.1 -loader_version = 0.12.12 -fabric_version = 0.46.1+1.18 +minecraft_version = 1.18.2 +loader_version = 0.13.3 +fabric_version = 0.48.0+1.18.2 # build dependency versions loom_version = 0.10-SNAPSHOT cursegradle_version = 1.4.0 -parchment_version = 2022.01.23 +parchment_version = 2022.03.13 # curseforge info projectId = 486392 diff --git a/src/main/java/com/jozufozu/flywheel/Flywheel.java b/src/main/java/com/jozufozu/flywheel/Flywheel.java index a01e46690..242615805 100644 --- a/src/main/java/com/jozufozu/flywheel/Flywheel.java +++ b/src/main/java/com/jozufozu/flywheel/Flywheel.java @@ -1,7 +1,6 @@ package com.jozufozu.flywheel; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.Loader; @@ -18,6 +17,7 @@ import com.jozufozu.flywheel.event.ForgeEvents; import com.jozufozu.flywheel.fabric.event.FlywheelEvents; import com.jozufozu.flywheel.mixin.PausedPartialTickAccessor; import com.jozufozu.flywheel.vanilla.VanillaInstances; +import com.mojang.logging.LogUtils; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientEntityEvents; @@ -34,7 +34,7 @@ import net.minecraft.server.packs.PackType; public class Flywheel implements ClientModInitializer { public static final String ID = "flywheel"; - public static final Logger LOGGER = LogManager.getLogger(Flywheel.class); + public static final Logger LOGGER = LogUtils.getLogger(); private static SemanticVersion version; @Override @@ -53,12 +53,12 @@ public class Flywheel implements ClientModInitializer { Backend.init(); + FlywheelEvents.RELOAD_RENDERERS.register(ProgramCompiler::invalidateAll); + FlywheelEvents.GATHER_CONTEXT.register(Contexts::flwInit); ModelLoadingRegistry.INSTANCE.registerModelProvider(PartialModel::onModelRegistry); ResourceManagerHelper.get(PackType.CLIENT_RESOURCES).registerReloadListener(PartialModel.ResourceReloadListener.INSTANCE); - FlywheelEvents.RELOAD_RENDERERS.register(ProgramCompiler::invalidateAll); - ResourceManagerHelper.get(PackType.CLIENT_RESOURCES).registerReloadListener(Loader.ResourceReloadListener.INSTANCE); WorldRenderEvents.END.register(RenderWork::onRenderWorldLast); diff --git a/src/main/java/com/jozufozu/flywheel/backend/Backend.java b/src/main/java/com/jozufozu/flywheel/backend/Backend.java index c68abc6fb..3b272283d 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/Backend.java +++ b/src/main/java/com/jozufozu/flywheel/backend/Backend.java @@ -2,14 +2,14 @@ package com.jozufozu.flywheel.backend; import javax.annotation.Nullable; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; import com.jozufozu.flywheel.api.FlywheelWorld; import com.jozufozu.flywheel.backend.gl.versioned.GlCompat; import com.jozufozu.flywheel.config.FlwConfig; import com.jozufozu.flywheel.config.FlwEngine; import com.jozufozu.flywheel.core.shader.ProgramSpec; +import com.mojang.logging.LogUtils; import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; @@ -17,7 +17,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; public class Backend { - public static final Logger LOGGER = LogManager.getLogger(Backend.class); + public static final Logger LOGGER = LogUtils.getLogger(); private static FlwEngine engine; diff --git a/src/main/java/com/jozufozu/flywheel/backend/Loader.java b/src/main/java/com/jozufozu/flywheel/backend/Loader.java index 3dbde897e..805fe13b5 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/Loader.java +++ b/src/main/java/com/jozufozu/flywheel/backend/Loader.java @@ -114,7 +114,7 @@ public class Loader { programs.put(specName, spec); } catch (Exception e) { - Backend.LOGGER.error(e); + Backend.LOGGER.error("Could not load program " + location, e); } } } diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/ParallelTaskEngine.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/ParallelTaskEngine.java index 316bed471..19f5b2f59 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/instancing/ParallelTaskEngine.java +++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/ParallelTaskEngine.java @@ -6,10 +6,10 @@ import java.util.List; import java.util.concurrent.ConcurrentLinkedDeque; import java.util.concurrent.atomic.AtomicBoolean; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.jozufozu.flywheel.Flywheel; import com.jozufozu.flywheel.backend.instancing.batching.WaitGroup; @@ -18,7 +18,7 @@ import net.minecraft.util.Mth; // https://github.com/CaffeineMC/sodium-fabric/blob/5d364ed5ba63f9067fcf72a078ca310bff4db3e9/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/ChunkBuilder.java public class ParallelTaskEngine implements TaskEngine { - private static final Logger LOGGER = LogManager.getLogger("BatchExecutor"); + private static final Logger LOGGER = LoggerFactory.getLogger("BatchExecutor"); private final AtomicBoolean running = new AtomicBoolean(false); private final WaitGroup wg = new WaitGroup(); @@ -135,11 +135,12 @@ public class ParallelTaskEngine implements TaskEngine { return job; } + // TODO: job context private void processTask(Runnable job) { try { job.run(); } catch (Exception e) { - Flywheel.LOGGER.error(e); + Flywheel.LOGGER.error("Error running job", e); } finally { ParallelTaskEngine.this.wg.done(); } diff --git a/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorBuilder.java b/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorBuilder.java index 2732a97fb..9a28a132f 100644 --- a/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorBuilder.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorBuilder.java @@ -117,7 +117,7 @@ public class ErrorBuilder { return this; } - public CharSequence build() { + public String build() { int maxLength = -1; for (ErrorLine line : lines) { @@ -136,6 +136,6 @@ public class ErrorBuilder { .append('\n'); } - return builder; + return builder.toString(); } } diff --git a/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorReporter.java b/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorReporter.java index fc9a1568d..acac0ccfa 100644 --- a/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorReporter.java +++ b/src/main/java/com/jozufozu/flywheel/core/source/error/ErrorReporter.java @@ -16,7 +16,7 @@ public class ErrorReporter { public static void generateSpanError(Span span, String message) { SourceFile file = span.getSourceFile(); - CharSequence error = ErrorBuilder.error(message) + String error = ErrorBuilder.error(message) .pointAtFile(file) .pointAt(span, 2) .build(); @@ -26,7 +26,7 @@ public class ErrorReporter { public static void generateFileError(SourceFile file, String message) { - CharSequence error = ErrorBuilder.error(message) + String error = ErrorBuilder.error(message) .pointAtFile(file) .build(); diff --git a/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualChunk.java b/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualChunk.java index 19639aa69..5324d15be 100644 --- a/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualChunk.java +++ b/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualChunk.java @@ -1,6 +1,7 @@ package com.jozufozu.flywheel.core.virtual; import java.util.Collection; +import java.util.Collections; import java.util.Map; import java.util.Set; import java.util.stream.Stream; @@ -12,6 +13,7 @@ import com.jozufozu.flywheel.util.Mods; import ca.spottedleaf.starlight.common.chunk.ExtendedChunk; import ca.spottedleaf.starlight.common.light.StarLightEngine; import it.unimi.dsi.fastutil.longs.LongSet; +import it.unimi.dsi.fastutil.longs.LongSets; import it.unimi.dsi.fastutil.shorts.ShortList; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; @@ -26,7 +28,7 @@ import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.chunk.UpgradeData; import net.minecraft.world.level.levelgen.Heightmap; -import net.minecraft.world.level.levelgen.feature.StructureFeature; +import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; import net.minecraft.world.level.levelgen.structure.StructureStart; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.FluidState; @@ -191,35 +193,40 @@ public class VirtualChunk extends ChunkAccess { } @Override - public void addReferenceForFeature(StructureFeature arg0, long arg1) {} - - @Override - public Map, LongSet> getAllReferences() { + @Nullable + public StructureStart getStartForFeature(ConfiguredStructureFeature pStructure) { return null; } @Override - public LongSet getReferencesForFeature(StructureFeature arg0) { - return null; + public void setStartForFeature(ConfiguredStructureFeature pStructure, StructureStart pStart) { } @Override - public StructureStart getStartForFeature(StructureFeature arg0) { - return null; + public Map, StructureStart> getAllStarts() { + return Collections.emptyMap(); } @Override - public void setAllReferences(Map, LongSet> arg0) {} + public void setAllStarts(Map, StructureStart> pStructureStarts) { + } @Override - public void setStartForFeature(StructureFeature arg0, StructureStart arg1) {} + public LongSet getReferencesForFeature(ConfiguredStructureFeature pStructure) { + return LongSets.emptySet(); + } @Override - public void setAllStarts(Map, StructureStart> p_201612_1_) {} + public void addReferenceForFeature(ConfiguredStructureFeature pStructure, long pReference) { + } @Override - public Map, StructureStart> getAllStarts() { - return null; + public Map, LongSet> getAllReferences() { + return Collections.emptyMap(); + } + + @Override + public void setAllReferences(Map, LongSet> pStructureReferences) { } @Override diff --git a/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualChunkSource.java b/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualChunkSource.java index b374260d0..7fa73d38d 100644 --- a/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualChunkSource.java +++ b/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualChunkSource.java @@ -52,7 +52,8 @@ public class VirtualChunkSource extends ChunkSource { } @Override - public void tick(BooleanSupplier pHasTimeLeft) {} + public void tick(BooleanSupplier p_202162_, boolean p_202163_) { + } @Override public int getLoadedChunksCount() { diff --git a/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualRenderWorld.java b/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualRenderWorld.java index 12d2fd852..9bc1871be 100644 --- a/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualRenderWorld.java +++ b/src/main/java/com/jozufozu/flywheel/core/virtual/VirtualRenderWorld.java @@ -15,12 +15,12 @@ import com.jozufozu.flywheel.api.FlywheelWorld; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Holder; import net.minecraft.core.RegistryAccess; import net.minecraft.core.SectionPos; import net.minecraft.core.Vec3i; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; -import net.minecraft.tags.TagContainer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.crafting.RecipeManager; @@ -67,7 +67,7 @@ public class VirtualRenderWorld extends Level implements FlywheelWorld { } public VirtualRenderWorld(Level level, Vec3i biomeOffset, int height, int minBuildHeight) { - super((WritableLevelData) level.getLevelData(), level.dimension(), level.dimensionType(), level::getProfiler, + super((WritableLevelData) level.getLevelData(), level.dimension(), level.dimensionTypeRegistration(), level::getProfiler, true, false, 0); this.biomeOffset = biomeOffset; this.level = level; @@ -188,19 +188,19 @@ public class VirtualRenderWorld extends Level implements FlywheelWorld { // BIOME OFFSET @Override - public Biome getBiome(BlockPos pPos) { + public Holder getBiome(BlockPos pPos) { return super.getBiome(pPos.offset(biomeOffset)); } @Override - public Biome getUncachedNoiseBiome(int pX, int pY, int pZ) { + public Holder getUncachedNoiseBiome(int pX, int pY, int pZ) { // Control flow should never reach this method, // so we add biomeOffset in case some other mod calls this directly. return level.getUncachedNoiseBiome(pX + biomeOffset.getX(), pY + biomeOffset.getY(), pZ + biomeOffset.getZ()); } @Override - public Biome getNoiseBiome(int pX, int pY, int pZ) { + public Holder getNoiseBiome(int pX, int pY, int pZ) { // Control flow should never reach this method, // so we add biomeOffset in case some other mod calls this directly. return level.getNoiseBiome(pX + biomeOffset.getX(), pY + biomeOffset.getY(), pZ + biomeOffset.getZ()); @@ -245,11 +245,6 @@ public class VirtualRenderWorld extends Level implements FlywheelWorld { return level.getRecipeManager(); } - @Override - public TagContainer getTagManager() { - return level.getTagManager(); - } - @Override public int getFreeMapId() { return level.getFreeMapId(); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 7d70f7eb2..3ebca6259 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -33,10 +33,7 @@ "depends": { "fabricloader": ">=0.11.3", "fabric": "*", - "minecraft": "1.18.x", + "minecraft": ">=1.18.2", "java": ">=17" - }, - "breaks": { - "iris": "<1.1.4" } }