diff --git a/build.gradle b/build.gradle index 4cd2ce8..383a6c7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.9-SNAPSHOT' + id 'fabric-loom' version '1.11-SNAPSHOT' id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index b3c74f7..9908d04 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,9 +4,9 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21.1 -yarn_mappings=1.21.1+build.3 -loader_version=0.16.10 +minecraft_version=1.21.10 +yarn_mappings=1.21.10+build.2 +loader_version=0.17.3 # Mod Properties mod_version=1.0.0 @@ -14,5 +14,5 @@ maven_group=com.github.Dusty-Development archives_base_name=LemonLib # Dependencies -fabric_version=0.115.0+1.21.1 +fabric_version=0.135.0+1.21.10 dominion_version=0.9.0 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e2847c8..ca025c8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/net/dustley/lemon/LemonLib.java b/src/main/java/net/dustley/lemon/LemonLib.java index 7ae58c5..94b07cb 100644 --- a/src/main/java/net/dustley/lemon/LemonLib.java +++ b/src/main/java/net/dustley/lemon/LemonLib.java @@ -1,11 +1,8 @@ package net.dustley.lemon; import net.dustley.lemon.content.registry.ModItems; -import net.dustley.lemon.modules.camera_effects.freeze_frames.FreezeFrameManager; -import net.dustley.lemon.modules.citrus_physics.debug.CitrusDebugRenderer; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.minecraft.util.Identifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,13 +17,5 @@ public void onInitialize() { LOGGER.info("Hello Fabric world!"); ModItems.registerModItems(); - CitrusDebugRenderer.registerEvents(); - - /* - Freeze Frame Tick Caller - */ - ClientTickEvents.END_CLIENT_TICK.register(client -> { - FreezeFrameManager.tick(); - }); } } \ No newline at end of file diff --git a/src/main/java/net/dustley/lemon/LemonLibClient.java b/src/main/java/net/dustley/lemon/LemonLibClient.java index f7e09ac..ce0393a 100644 --- a/src/main/java/net/dustley/lemon/LemonLibClient.java +++ b/src/main/java/net/dustley/lemon/LemonLibClient.java @@ -1,22 +1,11 @@ package net.dustley.lemon; -import net.dustley.lemon.modules.camera_effects.freeze_frames.DefaultOverlay; -import net.dustley.lemon.modules.citrus_physics.debug.CitrusDebugRenderer; import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; public class LemonLibClient implements ClientModInitializer { @Override public void onInitializeClient() { - /* - Debug Renderer - */ - CitrusDebugRenderer.registerEvents(); - /* - Freeze Frame Overlay HUD Render Callback - */ - HudRenderCallback.EVENT.register(new DefaultOverlay()); } } \ No newline at end of file diff --git a/src/main/java/net/dustley/lemon/content/registry/ModItems.java b/src/main/java/net/dustley/lemon/content/registry/ModItems.java index 060ef61..0fb445f 100644 --- a/src/main/java/net/dustley/lemon/content/registry/ModItems.java +++ b/src/main/java/net/dustley/lemon/content/registry/ModItems.java @@ -1,7 +1,6 @@ package net.dustley.lemon.content.registry; import net.dustley.lemon.LemonLib; -import net.dustley.lemon.content.test_freezer.Freezer; import net.dustley.lemon.content.test_shake.Shaker; import net.dustley.lemon.content.test_stick.TestStick; import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; @@ -9,26 +8,30 @@ import net.minecraft.item.ItemGroups; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; -public class ModItems { +import java.util.function.Function; + +public interface ModItems { // Items // - public static final Item TESTER = registerItem("tester", new TestStick()); - public static final Item FREEZER = registerItem("freezer", new Freezer()); - public static final Item SHAKER = registerItem("shaker", new Shaker()); + Item TESTER = register("tester", TestStick::new); + Item SHAKER = register("shaker", Shaker::new); // Utility Functions // - private static Item registerItem(String name, Item item) { - return Registry.register(Registries.ITEM, LemonLib.id(name), item); + static Item register(String id, Function factory) { + RegistryKey key = RegistryKey.of(RegistryKeys.ITEM, LemonLib.id(id)); + Item item = factory.apply(new Item.Settings().registryKey(key)); + return Registry.register(Registries.ITEM, key, item); } // Initializer // - public static void registerModItems() { + static void registerModItems() { LemonLib.LOGGER.info("Registering Mod Items for " + LemonLib.MOD_ID); ItemGroupEvents.modifyEntriesEvent(ItemGroups.OPERATOR).register(entries -> { entries.add(TESTER); - entries.add(FREEZER); entries.add(SHAKER); }); } diff --git a/src/main/java/net/dustley/lemon/content/test_freezer/Freezer.java b/src/main/java/net/dustley/lemon/content/test_freezer/Freezer.java deleted file mode 100644 index 6e9a98a..0000000 --- a/src/main/java/net/dustley/lemon/content/test_freezer/Freezer.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.dustley.lemon.content.test_freezer; - -import net.dustley.lemon.modules.camera_effects.freeze_frames.FreezeFrameManager; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Hand; -import net.minecraft.util.Rarity; -import net.minecraft.util.TypedActionResult; -import net.minecraft.world.World; - -public class Freezer extends Item { - public Freezer() { super(new Settings().rarity(Rarity.EPIC).maxCount(1)); } - - @Override - public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - FreezeFrameManager.triggerFreeze(5, new ParryOverlay()); - return super.use(world, user, hand); - } -} \ No newline at end of file diff --git a/src/main/java/net/dustley/lemon/content/test_freezer/ParryOverlay.java b/src/main/java/net/dustley/lemon/content/test_freezer/ParryOverlay.java deleted file mode 100644 index 218bbf6..0000000 --- a/src/main/java/net/dustley/lemon/content/test_freezer/ParryOverlay.java +++ /dev/null @@ -1,34 +0,0 @@ -package net.dustley.lemon.content.test_freezer; - -import com.mojang.blaze3d.systems.RenderSystem; -import net.dustley.lemon.LemonLib; -import net.dustley.lemon.modules.camera_effects.freeze_frames.FreezeFrameManager; -import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.RenderTickCounter; -import net.minecraft.util.Identifier; - -public class ParryOverlay implements HudRenderCallback { - - private static final Identifier PARRY_OVERLAY = LemonLib.id("textures/parry.png"); - - @Override - public void onHudRender(DrawContext context, RenderTickCounter counter) { - MinecraftClient client = MinecraftClient.getInstance(); - - if (client == null || client.player == null) { - return; // Ensure the client and player are valid - } - - RenderSystem.enableBlend(); - - int screenWidth = client.getWindow().getScaledWidth(); - int screenHeight = client.getWindow().getScaledHeight(); - - // Draw the texture stretched over the entire screen - if (FreezeFrameManager.getOverlayTime()) { - context.drawTexture(PARRY_OVERLAY, 0, 0, 0, 0, screenWidth, screenHeight, screenWidth, screenHeight); - } - } -} \ No newline at end of file diff --git a/src/main/java/net/dustley/lemon/content/test_shake/Shaker.java b/src/main/java/net/dustley/lemon/content/test_shake/Shaker.java index bd63bbf..9de4728 100644 --- a/src/main/java/net/dustley/lemon/content/test_shake/Shaker.java +++ b/src/main/java/net/dustley/lemon/content/test_shake/Shaker.java @@ -2,20 +2,21 @@ import net.dustley.lemon.modules.camera_effects.screen_shake.ScreenShake; import net.dustley.lemon.modules.camera_effects.screen_shake.ScreenShakeManager; -import net.dustley.lemon.modules.math.easing.Easing; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.DebugStickItem; -import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.Rarity; -import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; public class Shaker extends DebugStickItem { - public Shaker() { super(new Settings().rarity(Rarity.EPIC).maxCount(1)); } + public Shaker(Item.Settings settings) { + super(settings.rarity(Rarity.EPIC).maxCount(1)); + } @Override - public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + public ActionResult use(World world, PlayerEntity user, Hand hand) { ScreenShakeManager.createScreenShake(new ScreenShake(40, 0.5f)); return super.use(world, user, hand); } diff --git a/src/main/java/net/dustley/lemon/content/test_stick/TestStick.java b/src/main/java/net/dustley/lemon/content/test_stick/TestStick.java index be7a636..d07def9 100644 --- a/src/main/java/net/dustley/lemon/content/test_stick/TestStick.java +++ b/src/main/java/net/dustley/lemon/content/test_stick/TestStick.java @@ -9,10 +9,10 @@ import net.dustley.lemon.modules.citrus_physics.component.constraint.single.StaticConstraint; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.DebugStickItem; -import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.Rarity; -import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import org.joml.Vector2i; import org.joml.Vector2ic; @@ -20,10 +20,12 @@ import org.joml.Vector3dc; public class TestStick extends DebugStickItem { - public TestStick() { super(new Settings().rarity(Rarity.EPIC).maxCount(1)); } + public TestStick(Item.Settings settings) { + super(settings.rarity(Rarity.EPIC).maxCount(1)); + } @Override - public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + public ActionResult use(World world, PlayerEntity user, Hand hand) { var physics = PhysicsWorld.getFromWorld(world); Vector2ic size = new Vector2i(32, 32); diff --git a/src/main/java/net/dustley/lemon/mixin/freeze_frames/GameRenderMixin.java b/src/main/java/net/dustley/lemon/mixin/freeze_frames/GameRenderMixin.java deleted file mode 100644 index 35c60a0..0000000 --- a/src/main/java/net/dustley/lemon/mixin/freeze_frames/GameRenderMixin.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.dustley.lemon.mixin.freeze_frames; - -import net.dustley.lemon.modules.camera_effects.freeze_frames.FreezeFrameManager; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.RenderTickCounter; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(GameRenderer.class) -public class GameRenderMixin { - @Inject(method = "render", at = @At("HEAD"), cancellable = true) - private void onRender(RenderTickCounter tickCounter, boolean tick, CallbackInfo ci) { - if (FreezeFrameManager.isFrozen() && !FreezeFrameManager.getOverlayTime()) { - FreezeFrameManager.renderFreeze(); - ci.cancel(); - } - } -} diff --git a/src/main/java/net/dustley/lemon/mixin/physics/PhysicsWorldMixin.java b/src/main/java/net/dustley/lemon/mixin/physics/PhysicsWorldMixin.java index b401344..5721ede 100644 --- a/src/main/java/net/dustley/lemon/mixin/physics/PhysicsWorldMixin.java +++ b/src/main/java/net/dustley/lemon/mixin/physics/PhysicsWorldMixin.java @@ -12,7 +12,7 @@ @Mixin(World.class) public class PhysicsWorldMixin implements PhysicsWorldDuck { - @Override public PhysicsWorld getPhysics() { return physicsWorld; } + @Override public PhysicsWorld lemonLib$getPhysics() { return physicsWorld; } @Unique PhysicsWorld physicsWorld; @Inject(at = @At("TAIL"), method = "") diff --git a/src/main/java/net/dustley/lemon/mixin/physics/WorldRendererMixin.java b/src/main/java/net/dustley/lemon/mixin/physics/WorldRendererMixin.java new file mode 100644 index 0000000..7d67d4d --- /dev/null +++ b/src/main/java/net/dustley/lemon/mixin/physics/WorldRendererMixin.java @@ -0,0 +1,55 @@ +package net.dustley.lemon.mixin.physics; + +import net.dustley.lemon.modules.citrus_physics.PhysicsWorld; +import net.dustley.lemon.modules.citrus_physics.component.ActorComponent; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.hud.debug.DebugHudEntries; +import net.minecraft.client.render.*; +import net.minecraft.client.render.debug.DebugRenderer; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.Vec3d; +import org.joml.Vector3d; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.concurrent.atomic.AtomicInteger; + +import static java.lang.Math.abs; +import static java.lang.Math.clamp; + +@Mixin(DebugRenderer.class) +public class WorldRendererMixin { + + @Inject(method = "render", at = @At("TAIL")) + private void render(MatrixStack matrices, Frustum frustum, VertexConsumerProvider.Immediate vertexConsumers, double cameraX, double cameraY, double cameraZ, boolean lateDebug, CallbackInfo ci) { + MinecraftClient client = MinecraftClient.getInstance(); + var physicsWorld = PhysicsWorld.getFromWorld(client.world); + + if(client.debugHudEntryList.isEntryVisible(DebugHudEntries.ENTITY_HITBOXES)) { + AtomicInteger renderTokens = new AtomicInteger(50000); // In short how many particles can render at once + + physicsWorld.ecsWorld.findEntitiesWith(ActorComponent.class).stream().forEach(result -> { + if(renderTokens.get() > 0) { + ActorComponent actor = result.comp(); + matrices.push(); + + matrices.translate(-cameraX, -cameraY, -cameraZ); + + var position = actor.position; + matrices.translate(position.x, position.y, position.z); + + var box = Box.of(Vec3d.ZERO, actor.mass, actor.mass, actor.mass); + var vel = actor.position.sub(actor.positionCache, new Vector3d()).mul(20); + + DebugRenderer.drawBox(matrices, vertexConsumers, box, (float) clamp(abs(vel.x), 0.0, 1.0), (float) clamp(abs(vel.y), 0.0, 1.0), (float) clamp(abs(vel.z), 0.0, 1.0), 1f); + + renderTokens.addAndGet(-1); + matrices.pop(); + } + }); + } + } +} diff --git a/src/main/java/net/dustley/lemon/mixin_duck/PhysicsWorldDuck.java b/src/main/java/net/dustley/lemon/mixin_duck/PhysicsWorldDuck.java index fb1e562..d065500 100644 --- a/src/main/java/net/dustley/lemon/mixin_duck/PhysicsWorldDuck.java +++ b/src/main/java/net/dustley/lemon/mixin_duck/PhysicsWorldDuck.java @@ -4,6 +4,6 @@ public interface PhysicsWorldDuck { - public PhysicsWorld getPhysics(); + PhysicsWorld lemonLib$getPhysics(); } diff --git a/src/main/java/net/dustley/lemon/modules/camera_effects/freeze_frames/DefaultOverlay.java b/src/main/java/net/dustley/lemon/modules/camera_effects/freeze_frames/DefaultOverlay.java deleted file mode 100644 index 0572bc3..0000000 --- a/src/main/java/net/dustley/lemon/modules/camera_effects/freeze_frames/DefaultOverlay.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.dustley.lemon.modules.camera_effects.freeze_frames; - -import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.RenderTickCounter; - -public class DefaultOverlay implements HudRenderCallback { - - @Override - public void onHudRender(DrawContext context, RenderTickCounter counter) { - if (FreezeFrameManager.getOverlay() != null) { - FreezeFrameManager.getOverlay().onHudRender(context, counter); - } - } -} diff --git a/src/main/java/net/dustley/lemon/modules/camera_effects/freeze_frames/FreezeFrameManager.java b/src/main/java/net/dustley/lemon/modules/camera_effects/freeze_frames/FreezeFrameManager.java deleted file mode 100644 index 0d839c8..0000000 --- a/src/main/java/net/dustley/lemon/modules/camera_effects/freeze_frames/FreezeFrameManager.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.dustley.lemon.modules.camera_effects.freeze_frames; - -import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; -import net.minecraft.client.MinecraftClient; - -public class FreezeFrameManager { - private static int freezeTicks = 0; - private static int overlayTime = 0; - - // Freeze Frame Overlay - private static HudRenderCallback overlay; - - public static void triggerFreeze(int duration) { - FreezeFrameManager.freezeTicks = duration; - } - - public static void triggerFreeze(int duration, HudRenderCallback overlay) { - FreezeFrameManager.freezeTicks = duration; - FreezeFrameManager.overlayTime = 2; - FreezeFrameManager.overlay = overlay; - } - - public static boolean isFrozen() { - return freezeTicks > 0; - } - - public static boolean getOverlayTime() { - return overlayTime > 0; - } - - public static void tick() { - if (freezeTicks > 0) { - freezeTicks--; - } - if (overlayTime > 0) { - overlayTime--; - } - } - - public static void renderFreeze() { - // Pause the game's frame progression - MinecraftClient client = MinecraftClient.getInstance(); - client.getFramebuffer().beginWrite(false); - } - - public static HudRenderCallback getOverlay() { - // gets the overlay - return overlay; - } -} diff --git a/src/main/java/net/dustley/lemon/modules/camera_effects/screen_shake/ScreenShakeManager.java b/src/main/java/net/dustley/lemon/modules/camera_effects/screen_shake/ScreenShakeManager.java index 9f2441b..0cc5139 100644 --- a/src/main/java/net/dustley/lemon/modules/camera_effects/screen_shake/ScreenShakeManager.java +++ b/src/main/java/net/dustley/lemon/modules/camera_effects/screen_shake/ScreenShakeManager.java @@ -6,7 +6,6 @@ import net.minecraft.util.math.random.Random; import java.util.ArrayList; -import java.util.random.RandomGenerator; import static java.lang.Math.pow; @@ -42,7 +41,7 @@ public static void createScreenShake(ScreenShake instance) { public static float randomizeOffset(int offset) { float sampled = 0; if (MinecraftClient.getInstance().world != null) { - sampled = (float) noise.sample((MinecraftClient.getInstance().world.getTime() % 24000 + MinecraftClient.getInstance().getRenderTickCounter().getTickDelta(false))/intensity, offset, 0) * 1.5f; + sampled = (float) noise.sample((MinecraftClient.getInstance().world.getTime() % 24000 + MinecraftClient.getInstance().getRenderTickCounter().getTickProgress(false))/intensity, offset, 0) * 1.5f; } return -intensity * 2 >= intensity * 2 ? -intensity * 2 : sampled * intensity * 2; } diff --git a/src/main/java/net/dustley/lemon/modules/citrus_physics/PhysicsWorld.java b/src/main/java/net/dustley/lemon/modules/citrus_physics/PhysicsWorld.java index 039b0f3..d4f8430 100644 --- a/src/main/java/net/dustley/lemon/modules/citrus_physics/PhysicsWorld.java +++ b/src/main/java/net/dustley/lemon/modules/citrus_physics/PhysicsWorld.java @@ -34,7 +34,7 @@ public class PhysicsWorld { public static int MAX_SPEED = 200; // HELPER // - public static PhysicsWorld getFromWorld(World world) { return ((PhysicsWorldDuck) world).getPhysics(); } + public static PhysicsWorld getFromWorld(World world) { return ((PhysicsWorldDuck) world).lemonLib$getPhysics(); } // RUNTIME // public PhysicsWorld(World gameWorld) { diff --git a/src/main/java/net/dustley/lemon/modules/citrus_physics/debug/CitrusDebugRenderer.java b/src/main/java/net/dustley/lemon/modules/citrus_physics/debug/CitrusDebugRenderer.java deleted file mode 100644 index 1e89022..0000000 --- a/src/main/java/net/dustley/lemon/modules/citrus_physics/debug/CitrusDebugRenderer.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.dustley.lemon.modules.citrus_physics.debug; - -import net.dustley.lemon.modules.citrus_physics.PhysicsWorld; -import net.dustley.lemon.modules.citrus_physics.component.ActorComponent; -import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.debug.DebugRenderer; -import net.minecraft.util.math.Box; -import net.minecraft.util.math.Vec3d; -import org.joml.Vector3d; - -import java.util.concurrent.atomic.AtomicInteger; - -import static java.lang.Math.abs; -import static java.lang.Math.clamp; - -public class CitrusDebugRenderer { - - public static void registerEvents() { - WorldRenderEvents.BEFORE_DEBUG_RENDER.register((renderer) -> { - var physicsWorld = PhysicsWorld.getFromWorld(renderer.world()); - - if(MinecraftClient.getInstance().getEntityRenderDispatcher().shouldRenderHitboxes()) { - AtomicInteger renderTokens = new AtomicInteger(50000); // In short how many particles can render at once - - physicsWorld.ecsWorld.findEntitiesWith(ActorComponent.class).stream().forEach(result -> { - if(renderTokens.get() > 0) { - ActorComponent actor = result.comp(); - var stack = renderer.matrixStack(); - var consumers = renderer.consumers(); - - if (stack != null && consumers != null) { - stack.push(); - - var cameraPos = renderer.camera().getPos(); - stack.translate(-cameraPos.x, -cameraPos.y, -cameraPos.z); - - var position = actor.position; - stack.translate(position.x, position.y, position.z); - - var box = Box.of(Vec3d.ZERO, actor.mass, actor.mass, actor.mass); - var vel = actor.position.sub(actor.positionCache, new Vector3d()).mul(20); - DebugRenderer.drawBox(stack, consumers, box, (float) clamp(abs(vel.x), 0.0, 1.0), (float) clamp(abs(vel.y), 0.0, 1.0), (float) clamp(abs(vel.z), 0.0, 1.0), 1f); - renderTokens.addAndGet(-1); - stack.pop(); - } - } - }); - } - }); - } - -} diff --git a/src/main/resources/lemon.mixins.json b/src/main/resources/lemon.mixins.json index 38fd3c3..c5205c1 100644 --- a/src/main/resources/lemon.mixins.json +++ b/src/main/resources/lemon.mixins.json @@ -9,7 +9,7 @@ "defaultRequire": 1 }, "client": [ - "freeze_frames.GameRenderMixin", + "physics.WorldRendererMixin", "screen_shake.CameraMixin", "screen_shake.MinecraftClientMixin" ]