From f51bde3d6e6c7b88b62a00fe267a1454c435d72b Mon Sep 17 00:00:00 2001 From: Hedzer Kuijlman Date: Sat, 12 Apr 2025 20:53:52 +0200 Subject: [PATCH] Render Block Entities from further away --- README.md | 11 +++++++++- .../config/client/ClientConfig.java | 2 ++ .../client/BlockEntityRendererMixin.java | 22 +++++++++++++++++++ .../survivalfabric.client.mixins.json | 1 + 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/client/java/wtf/hak/survivalfabric/mixin/client/BlockEntityRendererMixin.java diff --git a/README.md b/README.md index 03d8767..5e39e8b 100644 --- a/README.md +++ b/README.md @@ -49,12 +49,21 @@ As a challenge I'm trying to make it as user-friendly as possible. - Toggleable - Keybinding for /camera +# Currently working on + +## Client Side + +- [x] Render block entities from a longer range + - [x] Toggleable via GUI + - [x] Configurable value + - [ ] In GUI + # To-do ## General - Rework config system - Store server settings in world folder for better singleplayer use - - Rework Mod Menu integration to be more flexible +- Rework Mod Menu integration to be more flexible ## Server Side - Telekinesis diff --git a/src/client/java/wtf/hak/survivalfabric/config/client/ClientConfig.java b/src/client/java/wtf/hak/survivalfabric/config/client/ClientConfig.java index d9f5cb5..1e4fb84 100644 --- a/src/client/java/wtf/hak/survivalfabric/config/client/ClientConfig.java +++ b/src/client/java/wtf/hak/survivalfabric/config/client/ClientConfig.java @@ -11,4 +11,6 @@ public class ClientConfig { public boolean renderSnowFog = false; public boolean removeDarknessEffect = true; public boolean lockTeleportHeadMovement = true; + public boolean alwaysRenderBlockEntities = true; + public int renderBlockEntitiesRange = 512; } diff --git a/src/client/java/wtf/hak/survivalfabric/mixin/client/BlockEntityRendererMixin.java b/src/client/java/wtf/hak/survivalfabric/mixin/client/BlockEntityRendererMixin.java new file mode 100644 index 0000000..e238165 --- /dev/null +++ b/src/client/java/wtf/hak/survivalfabric/mixin/client/BlockEntityRendererMixin.java @@ -0,0 +1,22 @@ +package wtf.hak.survivalfabric.mixin.client; + +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.client.render.Camera; +import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher; +import net.minecraft.client.render.block.entity.BlockEntityRenderer; +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.CallbackInfoReturnable; +import wtf.hak.survivalfabric.config.ConfigManager; +import wtf.hak.survivalfabric.config.client.ClientConfigManager; + +@Mixin(BlockEntityRenderer.class) +public interface BlockEntityRendererMixin { + + @Inject(method = "getRenderDistance", at = @At("HEAD"), cancellable = true) + private void getRenderDistance(CallbackInfoReturnable cir) { + if(ClientConfigManager.getConfig().alwaysRenderBlockEntities) + cir.setReturnValue(ClientConfigManager.getConfig().renderBlockEntitiesRange); + } +} diff --git a/src/client/resources/survivalfabric.client.mixins.json b/src/client/resources/survivalfabric.client.mixins.json index 6e215a6..b5906b0 100644 --- a/src/client/resources/survivalfabric.client.mixins.json +++ b/src/client/resources/survivalfabric.client.mixins.json @@ -4,6 +4,7 @@ "compatibilityLevel": "JAVA_21", "client": [ "BackgroundRendererMixin", + "BlockEntityRendererMixin", "EntityMixin" ], "injectors": {