diff --git a/src/main/java/com/jozufozu/flywheel/backend/Loader.java b/src/main/java/com/jozufozu/flywheel/backend/Loader.java index dde50a6fe..363dcff13 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/Loader.java +++ b/src/main/java/com/jozufozu/flywheel/backend/Loader.java @@ -1,8 +1,5 @@ package com.jozufozu.flywheel.backend; -import java.util.Collection; -import java.util.function.Predicate; - import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; @@ -21,23 +18,27 @@ import com.mojang.serialization.JsonOps; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ReloadableResourceManager; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.ResourceManagerReloadListener; import net.minecraftforge.fml.ModLoader; import net.minecraftforge.resource.IResourceType; -import net.minecraftforge.resource.ISelectiveResourceReloadListener; import net.minecraftforge.resource.VanillaResourceType; +import javax.annotation.Nullable; + +import java.util.Collection; + /** * The main entity for loading shaders. * *

- * This class is responsible for invoking the loading, parsing, and compilation stages. + * This class is responsible for invoking the loading, parsing, and compilation stages. *

*/ -public class Loader implements ISelectiveResourceReloadListener { +public class Loader implements ResourceManagerReloadListener { public static final String PROGRAM_DIR = "flywheel/programs/"; private static final Gson GSON = new GsonBuilder().create(); @@ -64,44 +65,42 @@ public class Loader implements ISelectiveResourceReloadListener { } @Override - public void onResourceManagerReload(ResourceManager manager, Predicate predicate) { - if (predicate.test(VanillaResourceType.SHADERS)) { - backend.refresh(); + public void onResourceManagerReload(ResourceManager manager) { + backend.refresh(); - if (backend.gl20()) { - shouldCrash = false; - backend._clearContexts(); + if (backend.gl20()) { + shouldCrash = false; + backend._clearContexts(); - Resolver.INSTANCE.invalidate(); - ModLoader.get() - .postEvent(new GatherContextEvent(backend, firstLoad)); + Resolver.INSTANCE.invalidate(); + ModLoader.get() + .postEvent(new GatherContextEvent(backend, firstLoad)); - ShaderSources sources = new ShaderSources(manager); + ShaderSources sources = new ShaderSources(manager); - loadProgramSpecs(manager); + loadProgramSpecs(manager); - Resolver.INSTANCE.resolve(sources); + Resolver.INSTANCE.resolve(sources); - for (IShaderContext context : backend.allContexts()) { - context.load(); - } - - if (shouldCrash) { - throw new ShaderLoadingException("Could not load all shaders, see log for details"); - } - - Backend.log.info("Loaded all shader programs."); - - ClientLevel world = Minecraft.getInstance().level; - if (Backend.isFlywheelWorld(world)) { - // TODO: looks like it might be good to have another event here - InstancedRenderDispatcher.loadAllInWorld(world); - CrumblingRenderer.reset(); - } + for (IShaderContext context : backend.allContexts()) { + context.load(); } - firstLoad = false; + if (shouldCrash) { + throw new ShaderLoadingException("Could not load all shaders, see log for details"); + } + + Backend.log.info("Loaded all shader programs."); + + ClientLevel world = Minecraft.getInstance().level; + if (Backend.isFlywheelWorld(world)) { + // TODO: looks like it might be good to have another event here + InstancedRenderDispatcher.loadAllInWorld(world); + CrumblingRenderer.reset(); + } } + + firstLoad = false; } private void loadProgramSpecs(ResourceManager manager) { @@ -129,4 +128,10 @@ public class Loader implements ISelectiveResourceReloadListener { } } } + + @Nullable + @Override + public IResourceType getResourceType() { + return VanillaResourceType.SHADERS; + } } diff --git a/src/main/java/com/jozufozu/flywheel/backend/gl/attrib/package-info.java b/src/main/java/com/jozufozu/flywheel/backend/gl/attrib/package-info.java index 4d3485865..5fb341756 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/gl/attrib/package-info.java +++ b/src/main/java/com/jozufozu/flywheel/backend/gl/attrib/package-info.java @@ -3,4 +3,4 @@ package com.jozufozu.flywheel.backend.gl.attrib; import javax.annotation.ParametersAreNonnullByDefault; -import mcp.MethodsReturnNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/package-info.java b/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/package-info.java index fb593bf7c..42e951282 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/package-info.java +++ b/src/main/java/com/jozufozu/flywheel/backend/gl/buffer/package-info.java @@ -3,4 +3,4 @@ package com.jozufozu.flywheel.backend.gl.buffer; import javax.annotation.ParametersAreNonnullByDefault; -import mcp.MethodsReturnNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/com/jozufozu/flywheel/backend/gl/package-info.java b/src/main/java/com/jozufozu/flywheel/backend/gl/package-info.java index 8abd8a8a9..aa181e8fe 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/gl/package-info.java +++ b/src/main/java/com/jozufozu/flywheel/backend/gl/package-info.java @@ -3,4 +3,4 @@ package com.jozufozu.flywheel.backend.gl; import javax.annotation.ParametersAreNonnullByDefault; -import mcp.MethodsReturnNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/com/jozufozu/flywheel/backend/gl/shader/package-info.java b/src/main/java/com/jozufozu/flywheel/backend/gl/shader/package-info.java index 5c4bed0b3..865330294 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/gl/shader/package-info.java +++ b/src/main/java/com/jozufozu/flywheel/backend/gl/shader/package-info.java @@ -3,4 +3,4 @@ package com.jozufozu.flywheel.backend.gl.shader; import javax.annotation.ParametersAreNonnullByDefault; -import mcp.MethodsReturnNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstanceRendered.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstanceRendered.java index 7a9fe3ec8..50073b868 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstanceRendered.java +++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/IInstanceRendered.java @@ -3,7 +3,7 @@ package com.jozufozu.flywheel.backend.instancing; import net.minecraft.world.level.Level; /** - * Something (a TileEntity or Entity) that can be rendered using the instancing API. + * Something (a BlockEntity or Entity) that can be rendered using the instancing API. */ public interface IInstanceRendered { diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/ITickableInstance.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/ITickableInstance.java index 041f62ff1..71e5e1d8d 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/instancing/ITickableInstance.java +++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/ITickableInstance.java @@ -13,7 +13,7 @@ import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; * eg. adding or removing parts, snapping to a different rotation, etc. * *
  • - * Your TileEntity does animate, but the animation doesn't have + * Your BlockEntity does animate, but the animation doesn't have * to be smooth, in which case this could be an optimization. *
  • * diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/entity/EntityInstance.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/entity/EntityInstance.java index 1eeb5aa32..64e92c3ee 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/instancing/entity/EntityInstance.java +++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/entity/EntityInstance.java @@ -11,7 +11,7 @@ import com.jozufozu.flywheel.light.IMovingListener; import com.jozufozu.flywheel.light.LightProvider; import net.minecraft.world.entity.Entity; -import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.phys.AABB; import net.minecraft.core.BlockPos; import net.minecraft.util.Mth; @@ -20,7 +20,7 @@ import com.mojang.math.Vector3f; import net.minecraft.core.Vec3i; /** - * The layer between a {@link TileEntity} and the Flywheel backend. + * The layer between a {@link BlockEntity} and the Flywheel backend. * * *

    There are a few additional features that overriding classes can opt in to: *