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