From bd938ac2b986398e96a62aaf7a1ebf6238ab46d8 Mon Sep 17 00:00:00 2001 From: Aeltumn Date: Tue, 23 Jul 2024 23:45:45 +0200 Subject: [PATCH] Properly reload the level renderer --- .../com/noxcrew/noxesium/feature/rule/ServerRules.java | 8 +++++++- .../feature/rule/impl/OptionalEnumServerRule.java | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/fabric/src/main/java/com/noxcrew/noxesium/feature/rule/ServerRules.java b/fabric/src/main/java/com/noxcrew/noxesium/feature/rule/ServerRules.java index c7be0b7a..2a96b8a7 100644 --- a/fabric/src/main/java/com/noxcrew/noxesium/feature/rule/ServerRules.java +++ b/fabric/src/main/java/com/noxcrew/noxesium/feature/rule/ServerRules.java @@ -11,6 +11,7 @@ import com.noxcrew.noxesium.feature.rule.impl.OptionalEnumServerRule; import com.noxcrew.noxesium.feature.rule.impl.QibBehaviorServerRule; import net.minecraft.client.GraphicsStatus; +import net.minecraft.client.Minecraft; import net.minecraft.world.item.ItemStack; import java.util.Optional; @@ -85,7 +86,12 @@ public class ServerRules { /** * Allows the server to override the graphics mode used by the client. */ - public static OptionalEnumServerRule OVERRIDE_GRAPHICS_MODE = register(new OptionalEnumServerRule<>(ServerRuleIndices.OVERRIDE_GRAPHICS_MODE, GraphicsStatus.class, Optional.empty())); + public static OptionalEnumServerRule OVERRIDE_GRAPHICS_MODE = register(new OptionalEnumServerRule<>(ServerRuleIndices.OVERRIDE_GRAPHICS_MODE, GraphicsStatus.class, Optional.empty(), () -> { + // We need to call this whenever we change the display type. + if (Minecraft.getInstance().levelRenderer != null) { + Minecraft.getInstance().levelRenderer.allChanged(); + } + })); /** * Registers a new server rule. diff --git a/fabric/src/main/java/com/noxcrew/noxesium/feature/rule/impl/OptionalEnumServerRule.java b/fabric/src/main/java/com/noxcrew/noxesium/feature/rule/impl/OptionalEnumServerRule.java index 99d607a9..988c2d9e 100644 --- a/fabric/src/main/java/com/noxcrew/noxesium/feature/rule/impl/OptionalEnumServerRule.java +++ b/fabric/src/main/java/com/noxcrew/noxesium/feature/rule/impl/OptionalEnumServerRule.java @@ -12,11 +12,13 @@ public class OptionalEnumServerRule> extends ClientServerRule< private final Optional defaultValue; private final Class clazz; + private final Runnable onChange; - public OptionalEnumServerRule(int index, Class clazz, Optional defaultValue) { + public OptionalEnumServerRule(int index, Class clazz, Optional defaultValue, Runnable onChange) { super(index); this.clazz = clazz; this.defaultValue = defaultValue; + this.onChange = onChange; setValue(defaultValue); } @@ -32,4 +34,10 @@ public Optional read(FriendlyByteBuf buffer) { } return Optional.empty(); } + + @Override + protected void onValueChanged(Optional oldValue, Optional newValue) { + super.onValueChanged(oldValue, newValue); + onChange.run(); + } }