From 686c0cfecc7300df96ec536c66509d2ffee45982 Mon Sep 17 00:00:00 2001 From: tobinio Date: Sun, 24 Nov 2024 08:58:02 +0100 Subject: [PATCH] add option to completely disable entity rendering --- README.md | 1 + .../VisibleEntitiesClient.java | 23 +++++++++++---- .../mixin/client/EntityRendererMixin.java | 28 +++++++++++++++++++ .../visible-entities.client.mixins.json | 1 + .../assets/visible-entities/lang/en_us.json | 9 ++++-- 5 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 src/client/java/tobinio/visibleentities/mixin/client/EntityRendererMixin.java diff --git a/README.md b/README.md index 3eb35ad..d35dcb0 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ A mostly clientside Fabric mod that makes map making easier by showing you: * the bounding box of interactions * invisible itemFrames * markers (requires server side) +* completely disable entity rendering The mod can easily be toggled via the N Key diff --git a/src/client/java/tobinio/visibleentities/VisibleEntitiesClient.java b/src/client/java/tobinio/visibleentities/VisibleEntitiesClient.java index 78243e0..7621d81 100644 --- a/src/client/java/tobinio/visibleentities/VisibleEntitiesClient.java +++ b/src/client/java/tobinio/visibleentities/VisibleEntitiesClient.java @@ -12,8 +12,6 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import org.lwjgl.glfw.GLFW; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import tobinio.visibleentities.entity.InteractionEntityRenderer; import tobinio.visibleentities.entity.MarkerEntityRenderer; import tobinio.visibleentities.settings.Config; @@ -21,13 +19,20 @@ import tobinio.visibleentities.settings.Config; import static tobinio.visibleentities.VisibleEntities.MOD_ID; public class VisibleEntitiesClient implements ClientModInitializer { - private static final KeyBinding TOGGLE_KEY = KeyBindingHelper.registerKeyBinding(new KeyBinding( - "key.visible-entities.toggle", + private static final KeyBinding TOGGLE_ACTIVE_KEY = KeyBindingHelper.registerKeyBinding(new KeyBinding( + "key.visible-entities.active", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_N, "category.visible-entities.visible-entities")); + private static final KeyBinding TOGGLE_VISIBILITY_KEY = KeyBindingHelper.registerKeyBinding(new KeyBinding( + "key.visible-entities.visibility", + InputUtil.Type.KEYSYM, + GLFW.GLFW_KEY_UNKNOWN, + "category.visible-entities.visible-entities")); + public static Boolean isActive = false; + public static Boolean showEntities = true; public static Identifier id(String path) { return Identifier.of(MOD_ID, path); @@ -40,11 +45,17 @@ public class VisibleEntitiesClient implements ClientModInitializer { EntityRendererRegistry.register(EntityType.MARKER, MarkerEntityRenderer::new); ClientTickEvents.END_CLIENT_TICK.register(client -> { - while (TOGGLE_KEY.wasPressed()) { - client.player.sendMessage(Text.translatable(isActive ? "visible-entities.disabled" : "visible-entities.enabled") + while (TOGGLE_ACTIVE_KEY.wasPressed()) { + client.player.sendMessage(Text.translatable(isActive ? "visible-entities.active.disabled" : "visible-entities.active.enabled") .formatted(Formatting.GRAY), true); isActive = !isActive; } + + while (TOGGLE_VISIBILITY_KEY.wasPressed()) { + client.player.sendMessage(Text.translatable(showEntities ? "visible-entities.visibility.disabled" : "visible-entities.visibility.enabled") + .formatted(Formatting.GRAY), true); + showEntities = !showEntities; + } }); } } \ No newline at end of file diff --git a/src/client/java/tobinio/visibleentities/mixin/client/EntityRendererMixin.java b/src/client/java/tobinio/visibleentities/mixin/client/EntityRendererMixin.java new file mode 100644 index 0000000..d7d434a --- /dev/null +++ b/src/client/java/tobinio/visibleentities/mixin/client/EntityRendererMixin.java @@ -0,0 +1,28 @@ +package tobinio.visibleentities.mixin.client; + +import net.minecraft.client.render.Frustum; +import net.minecraft.client.render.entity.EntityRenderer; +import net.minecraft.client.render.entity.state.EntityRenderState; +import net.minecraft.entity.Entity; +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 tobinio.visibleentities.VisibleEntitiesClient; + +/** + * Created: 28.10.24 + * + * @author Tobias Frischmann + */ +@Mixin (EntityRenderer.class) +public class EntityRendererMixin { + @Inject (at = @At ("HEAD"), method = "shouldRender", cancellable = true) + private void shouldRender(T entity, Frustum frustum, double x, double y, double z, + CallbackInfoReturnable cir) { + if (!VisibleEntitiesClient.showEntities) { + cir.setReturnValue(false); + cir.cancel(); + } + } +} diff --git a/src/client/resources/visible-entities.client.mixins.json b/src/client/resources/visible-entities.client.mixins.json index 07cd6db..a21b02d 100644 --- a/src/client/resources/visible-entities.client.mixins.json +++ b/src/client/resources/visible-entities.client.mixins.json @@ -5,6 +5,7 @@ "client": [ "BlockStatesLoaderMixin", "EntityMixin", + "EntityRendererMixin", "ItemFrameEntityRendererMixin", "LivingEntityRendererMixin" ], diff --git a/src/main/resources/assets/visible-entities/lang/en_us.json b/src/main/resources/assets/visible-entities/lang/en_us.json index 880332b..7b24c64 100644 --- a/src/main/resources/assets/visible-entities/lang/en_us.json +++ b/src/main/resources/assets/visible-entities/lang/en_us.json @@ -1,6 +1,9 @@ { - "visible-entities.disabled": "[Visible Entities] Disabled", - "visible-entities.enabled": "[Visible Entities] Enabled", - "key.visible-entities.toggle": "Enabled/Disabled", + "visible-entities.active.disabled": "[Visible Entities] Disabled", + "visible-entities.active.enabled": "[Visible Entities] Enabled", + "key.visible-entities.active": "show invisible - Enabled/Disabled", + "visible-entities.visibility.disabled": "[Visible Entities] All Rending Disabled", + "visible-entities.visibility.enabled": "[Visible Entities] All Rending Enabled", + "key.visible-entities.visibility": "stop rending - Enabled/Disabled", "category.visible-entities.visible-entities": "Visible Entities" } \ No newline at end of file -- 2.51.2