diff --git a/src/client/java/tobinio/visibleentities/VisibleEntitiesClient.java b/src/client/java/tobinio/visibleentities/VisibleEntitiesClient.java index 7621d81..1ee4f8a 100644 --- a/src/client/java/tobinio/visibleentities/VisibleEntitiesClient.java +++ b/src/client/java/tobinio/visibleentities/VisibleEntitiesClient.java @@ -31,9 +31,6 @@ public class VisibleEntitiesClient implements ClientModInitializer { 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); } @@ -46,15 +43,23 @@ public class VisibleEntitiesClient implements ClientModInitializer { ClientTickEvents.END_CLIENT_TICK.register(client -> { while (TOGGLE_ACTIVE_KEY.wasPressed()) { + boolean isActive = Config.HANDLER.instance().isActive; + client.player.sendMessage(Text.translatable(isActive ? "visible-entities.active.disabled" : "visible-entities.active.enabled") .formatted(Formatting.GRAY), true); - isActive = !isActive; + + Config.HANDLER.instance().isActive = !isActive; + Config.HANDLER.save(); } while (TOGGLE_VISIBILITY_KEY.wasPressed()) { - client.player.sendMessage(Text.translatable(showEntities ? "visible-entities.visibility.disabled" : "visible-entities.visibility.enabled") + boolean renderEntities = Config.HANDLER.instance().renderEntities; + + client.player.sendMessage(Text.translatable(renderEntities ? "visible-entities.visibility.disabled" : "visible-entities.visibility.enabled") .formatted(Formatting.GRAY), true); - showEntities = !showEntities; + + Config.HANDLER.instance().renderEntities = !renderEntities; + Config.HANDLER.save(); } }); } diff --git a/src/client/java/tobinio/visibleentities/entity/InteractionEntityRenderer.java b/src/client/java/tobinio/visibleentities/entity/InteractionEntityRenderer.java index 267e8c9..024ce18 100644 --- a/src/client/java/tobinio/visibleentities/entity/InteractionEntityRenderer.java +++ b/src/client/java/tobinio/visibleentities/entity/InteractionEntityRenderer.java @@ -39,7 +39,9 @@ public class InteractionEntityRenderer extends EntityRenderer cir) { - if (isInFilterList(player) == (Config.HANDLER.instance().listType == Config.ListType.BLACKLIST)) { + + Config instance = Config.HANDLER.instance(); + + if (isInFilterList(player) == (instance.listType == Config.ListType.BLACKLIST)) { return; } - if (VisibleEntitiesClient.isActive && Config.HANDLER.instance().showEntities) { + if (instance.isActive && instance.showEntities) { cir.setReturnValue(false); cir.cancel(); } diff --git a/src/client/java/tobinio/visibleentities/mixin/client/EntityRendererMixin.java b/src/client/java/tobinio/visibleentities/mixin/client/EntityRendererMixin.java index d7d434a..764ede2 100644 --- a/src/client/java/tobinio/visibleentities/mixin/client/EntityRendererMixin.java +++ b/src/client/java/tobinio/visibleentities/mixin/client/EntityRendererMixin.java @@ -9,6 +9,7 @@ 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; +import tobinio.visibleentities.settings.Config; /** * Created: 28.10.24 @@ -20,7 +21,7 @@ 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) { + if (!Config.HANDLER.instance().renderEntities) { cir.setReturnValue(false); cir.cancel(); } diff --git a/src/client/java/tobinio/visibleentities/mixin/client/ItemFrameEntityRendererMixin.java b/src/client/java/tobinio/visibleentities/mixin/client/ItemFrameEntityRendererMixin.java index 4f1968a..16d943f 100644 --- a/src/client/java/tobinio/visibleentities/mixin/client/ItemFrameEntityRendererMixin.java +++ b/src/client/java/tobinio/visibleentities/mixin/client/ItemFrameEntityRendererMixin.java @@ -36,7 +36,9 @@ public abstract class ItemFrameEntityRendererMixin { private void renderTransparent(ItemFrameEntityRenderState state, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, CallbackInfo ci) { - if (VisibleEntitiesClient.isActive && Config.HANDLER.instance().showItemFrames && state.invisible) { + Config instance = Config.HANDLER.instance(); + + if (instance.isActive && instance.showItemFrames && state.invisible) { ItemStack itemStack = state.contents; BakedModelManager bakedModelManager = this.blockRenderManager.getModels().getModelManager(); @@ -61,7 +63,9 @@ public abstract class ItemFrameEntityRendererMixin { private void offSetMap(ItemFrameEntityRenderState state, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, CallbackInfo ci) { - if (VisibleEntitiesClient.isActive && Config.HANDLER.instance().showItemFrames && state.invisible) { + Config instance = Config.HANDLER.instance(); + + if (instance.isActive && instance.showItemFrames && state.invisible) { matrixStack.translate(0, 0, 0.4375F - 0.5F); } } diff --git a/src/client/java/tobinio/visibleentities/settings/Config.java b/src/client/java/tobinio/visibleentities/settings/Config.java index 97fcade..e823cfe 100644 --- a/src/client/java/tobinio/visibleentities/settings/Config.java +++ b/src/client/java/tobinio/visibleentities/settings/Config.java @@ -24,21 +24,23 @@ public class Config { .build()) .build(); - public static final boolean SHOW_ITEM_FRAMES_DEFAULT = true; @SerialEntry - public boolean showItemFrames = SHOW_ITEM_FRAMES_DEFAULT; + public boolean isActive = false; - public static final boolean SHOW_ENTITIES_DEFAULT = true; @SerialEntry - public boolean showEntities = SHOW_ENTITIES_DEFAULT; + public boolean renderEntities = true; - public static final boolean SHOW_INTERACTIONS_DEFAULT = true; @SerialEntry - public boolean showInteractions = SHOW_INTERACTIONS_DEFAULT; + public boolean showItemFrames = true; - public static final boolean SHOW_MARKER_DEFAULT = true; @SerialEntry - public boolean showMarker = SHOW_MARKER_DEFAULT; + public boolean showEntities = true; + + @SerialEntry + public boolean showInteractions = true; + + @SerialEntry + public boolean showMarker = true; public static final int TRANSPARENCY_DEFAULT = 38; @SerialEntry diff --git a/src/client/java/tobinio/visibleentities/settings/ModMenuIntegration.java b/src/client/java/tobinio/visibleentities/settings/ModMenuIntegration.java index 8fe69c5..769ca8a 100644 --- a/src/client/java/tobinio/visibleentities/settings/ModMenuIntegration.java +++ b/src/client/java/tobinio/visibleentities/settings/ModMenuIntegration.java @@ -20,6 +20,24 @@ public class ModMenuIntegration implements ModMenuApi { .title(Text.literal("Visible Entities")) .category(ConfigCategory.createBuilder() .name(Text.literal("General")) + .option(Option.createBuilder() + .name(Text.literal("Active")) + .description(OptionDescription.of(Text.literal( + "If the mod should be active"))) + .binding(false, + () -> Config.HANDLER.instance().isActive, + newVal -> Config.HANDLER.instance().isActive = newVal) + .controller(TickBoxControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.literal("Render Entities")) + .description(OptionDescription.of(Text.literal( + "If Entities should be renderer at all"))) + .binding(true, + () -> Config.HANDLER.instance().renderEntities, + newVal -> Config.HANDLER.instance().renderEntities = newVal) + .controller(TickBoxControllerBuilder::create) + .build()) .option(Option.createBuilder() .name(Text.literal("Entity Transparency")) .binding(Config.TRANSPARENCY_DEFAULT, @@ -34,7 +52,7 @@ public class ModMenuIntegration implements ModMenuApi { .name(Text.literal("Show Invisible")) .description(OptionDescription.of(Text.literal( "If invisible entities should be shown when the mod is active"))) - .binding(Config.SHOW_ENTITIES_DEFAULT, + .binding(true, () -> Config.HANDLER.instance().showEntities, newVal -> Config.HANDLER.instance().showEntities = newVal) .controller(TickBoxControllerBuilder::create) @@ -65,7 +83,7 @@ public class ModMenuIntegration implements ModMenuApi { .name(Text.literal("Show ItemFrames")) .description(OptionDescription.of(Text.literal( "If invisible ItemFrames should be shown when the mod is active"))) - .binding(Config.SHOW_ITEM_FRAMES_DEFAULT, + .binding(true, () -> Config.HANDLER.instance().showItemFrames, newVal -> Config.HANDLER.instance().showItemFrames = newVal) .controller(TickBoxControllerBuilder::create) @@ -74,7 +92,7 @@ public class ModMenuIntegration implements ModMenuApi { .name(Text.literal("Show Interactions")) .description(OptionDescription.of(Text.literal( "If Interactions should be shown when the mod is active"))) - .binding(Config.SHOW_INTERACTIONS_DEFAULT, + .binding(true, () -> Config.HANDLER.instance().showInteractions, newVal -> Config.HANDLER.instance().showInteractions = newVal) .controller(TickBoxControllerBuilder::create) @@ -83,7 +101,7 @@ public class ModMenuIntegration implements ModMenuApi { .name(Text.literal("Show Marker")) .description(OptionDescription.of(Text.literal( "If Marker should be shown when the mod is active"))) - .binding(Config.SHOW_MARKER_DEFAULT, + .binding(true, () -> Config.HANDLER.instance().showMarker, newVal -> Config.HANDLER.instance().showMarker = newVal) .controller(TickBoxControllerBuilder::create)