Skip to content

Commit

Permalink
Correct naming
Browse files Browse the repository at this point in the history
  • Loading branch information
dima-dencep committed Jan 23, 2024
1 parent 4c4cdce commit 533997b
Show file tree
Hide file tree
Showing 8 changed files with 83 additions and 72 deletions.
18 changes: 0 additions & 18 deletions common/src/main/java/com/github/dimadencep/mods/rrls/Rrls.java
Expand Up @@ -10,28 +10,10 @@

package com.github.dimadencep.mods.rrls;

import com.github.dimadencep.mods.rrls.accessor.SplashAccessor;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Overlay;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.Nullable;

import java.util.Optional;

public class Rrls {
public static final String MOD_ID = "rrls";
public static final Logger LOGGER = LogManager.getLogger(MOD_ID);

@Nullable
public static Overlay tryGetOverlay() {
return Rrls.getAccessor(SplashAccessor.AttachType.DEFAULT)
.orElse(Rrls.getAccessor(SplashAccessor.AttachType.WAIT)
.orElse(null));
}

public static Optional<Overlay> getAccessor(SplashAccessor.AttachType type) {
return Optional.ofNullable(MinecraftClient.getInstance().overlay)
.filter(accessor -> accessor.rrls$getAttachType() == type);
}
}
Expand Up @@ -10,45 +10,18 @@

package com.github.dimadencep.mods.rrls.accessor;

import com.github.dimadencep.mods.rrls.ConfigExpectPlatform;
import com.github.dimadencep.mods.rrls.utils.SplashHelper;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.MessageScreen;
import net.minecraft.client.gui.screen.Overlay;
import net.minecraft.client.gui.screen.Screen;

@SuppressWarnings("unused")
public interface SplashAccessor {

default AttachType rrls$getAttachType() {
return AttachType.DEFAULT;
default SplashHelper.State rrls$getState() {
return SplashHelper.State.DEFAULT;
}

default void rrls$setAttachType(AttachType type) {
default void rrls$setState(SplashHelper.State state) {
}

default void rrls$miniRender(DrawContext context) {
}

default AttachType rrls$filterAttachType(Screen screen, boolean reloading) {
if (!ConfigExpectPlatform.hideType().canHide(reloading))
return AttachType.DEFAULT;

if (reloading || ConfigExpectPlatform.forceClose())
return AttachType.HIDE;

if (screen instanceof MessageScreen msg) // Loading Minecraft
return AttachType.WAIT;

return screen != null ? AttachType.HIDE : AttachType.WAIT;
}

enum AttachType {
DEFAULT,
HIDE,
WAIT
}

static boolean canMiniRender(Overlay overlay) {
return overlay != null && overlay.rrls$getAttachType() == AttachType.HIDE;
}
}
Expand Up @@ -12,6 +12,9 @@

import com.github.dimadencep.mods.rrls.ConfigExpectPlatform;
import com.github.dimadencep.mods.rrls.Rrls;
import com.github.dimadencep.mods.rrls.utils.SplashHelper;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.llamalad7.mixinextras.sugar.Local;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.RunArgs;
Expand All @@ -22,7 +25,6 @@
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import java.util.concurrent.CompletableFuture;
Expand Down Expand Up @@ -64,7 +66,7 @@ public abstract class MinecraftClientMixin {
}
}

@Redirect(
@WrapOperation(
method = {
"tick",
"handleInputEvents"
Expand All @@ -74,7 +76,12 @@ public abstract class MinecraftClientMixin {
target = "Lnet/minecraft/client/MinecraftClient;overlay:Lnet/minecraft/client/gui/screen/Overlay;"
)
)
public Overlay rrls$safeOverlays(MinecraftClient instance) {
return Rrls.tryGetOverlay();
public Overlay rrls$miniRender(MinecraftClient instance, Operation<Overlay> original) {
Overlay overlay = original.call(instance);

if (SplashHelper.isRenderingState(overlay))
return null;

return overlay;
}
}
Expand Up @@ -12,6 +12,7 @@

import com.github.dimadencep.mods.rrls.ConfigExpectPlatform;
import com.github.dimadencep.mods.rrls.utils.DummyDrawContext;
import com.github.dimadencep.mods.rrls.utils.SplashHelper;
import com.llamalad7.mixinextras.injector.WrapWithCondition;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
Expand Down Expand Up @@ -39,7 +40,7 @@
@Mixin(SplashOverlay.class)
public abstract class SplashOverlayMixin extends Overlay {
@Unique
public AttachType rrls$attach = AttachType.DEFAULT;
public SplashHelper.State rrls$state = SplashHelper.State.DEFAULT;
@Shadow
public float progress;
@Shadow
Expand All @@ -56,17 +57,17 @@ public abstract class SplashOverlayMixin extends Overlay {
)
)
private void rrls$init(MinecraftClient client, ResourceReload monitor, Consumer<Optional<Throwable>> exceptionHandler, boolean reloading, CallbackInfo ci) {
this.rrls$attach = rrls$filterAttachType(client.currentScreen, reloading);
this.rrls$state = SplashHelper.lookupState(client.currentScreen, reloading);
}

@Override
public AttachType rrls$getAttachType() {
return this.rrls$attach;
public SplashHelper.State rrls$getState() {
return this.rrls$state;
}

@Override
public void rrls$setAttachType(AttachType type) {
rrls$attach = type;
public void rrls$setState(SplashHelper.State state) {
rrls$state = state;
}

@Inject(
Expand All @@ -77,7 +78,7 @@ public abstract class SplashOverlayMixin extends Overlay {
cancellable = true
)
public void rrls$pauses(CallbackInfoReturnable<Boolean> cir) {
if (this.rrls$attach == AttachType.HIDE)
if (this.rrls$state.isRendering())
cir.setReturnValue(false);
}

Expand Down Expand Up @@ -108,8 +109,8 @@ public abstract class SplashOverlayMixin extends Overlay {
)
)
public void rrls$render(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) {
if (rrls$attach != AttachType.DEFAULT) // Update attach (Optifine ❤️)
this.rrls$attach = rrls$filterAttachType(client.currentScreen, this.rrls$attach != AttachType.WAIT);
if (rrls$state != SplashHelper.State.DEFAULT) // Update attach (Optifine ❤️)
this.rrls$state = SplashHelper.lookupState(client.currentScreen, this.rrls$state != SplashHelper.State.WAIT);
}

@WrapWithCondition(
Expand Down Expand Up @@ -193,7 +194,7 @@ public abstract class SplashOverlayMixin extends Overlay {
);
}

if (ConfigExpectPlatform.rgbProgress() && this.rrls$attach != AttachType.DEFAULT) {
if (ConfigExpectPlatform.rgbProgress() && this.rrls$state != SplashHelper.State.DEFAULT) {
int baseColor = ThreadLocalRandom.current().nextInt(0, 0xFFFFFF);

return ColorHelper.Argb.getArgb(
Expand Down
Expand Up @@ -11,8 +11,8 @@
package com.github.dimadencep.mods.rrls.mixins.compat;

import com.github.dimadencep.mods.rrls.ConfigExpectPlatform;
import com.github.dimadencep.mods.rrls.accessor.SplashAccessor;
import com.github.dimadencep.mods.rrls.utils.DummyDrawContext;
import com.github.dimadencep.mods.rrls.utils.SplashHelper;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.sugar.Local;
import net.minecraft.client.MinecraftClient;
Expand Down Expand Up @@ -42,7 +42,7 @@ public class GameRendererMixin {
)
)
public Overlay rrls$fixOverlayRendering(Overlay original, @Local(ordinal = 0) DrawContext drawContext) { // TODO @Local(name = "i", ordinal = 0, index = 7) int mouseX, @Local(name = "j", ordinal = 1, index = 8) int mouseY
if (!SplashAccessor.canMiniRender(original))
if (!SplashHelper.isRenderingState(original))
return original;

original.render(DummyDrawContext.INSTANCE, 0, 0, client.getLastFrameDuration());
Expand All @@ -60,7 +60,7 @@ public class GameRendererMixin {
public void rrls$miniRender(float tickDelta, long startTime, boolean tick, CallbackInfo ci, @Local(ordinal = 0) DrawContext drawContext) {
Overlay overlay = this.client.getOverlay();

if (ConfigExpectPlatform.miniRender() && SplashAccessor.canMiniRender(overlay))
if (ConfigExpectPlatform.miniRender() && SplashHelper.isRenderingState(overlay))
overlay.rrls$miniRender(drawContext);
}
}
Expand Up @@ -10,28 +10,34 @@

package com.github.dimadencep.mods.rrls.mixins.compat;

import com.github.dimadencep.mods.rrls.Rrls;
import com.github.dimadencep.mods.rrls.utils.SplashHelper;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import net.minecraft.client.Keyboard;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.Mouse;
import net.minecraft.client.gui.screen.Overlay;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

@Mixin(value = {
Keyboard.class,
Mouse.class
})
public class KeyboardMouseMixin {
@Redirect(
@WrapOperation(
method = "*",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/MinecraftClient;getOverlay()Lnet/minecraft/client/gui/screen/Overlay;"
)
)
public Overlay rrls$removeStuckOverlay(MinecraftClient instance) {
return Rrls.tryGetOverlay();
public Overlay rrls$miniRender(MinecraftClient instance, Operation<Overlay> original) {
Overlay overlay = original.call(instance);

if (SplashHelper.isRenderingState(overlay))
return null;

return overlay;
}
}
@@ -0,0 +1,41 @@
package com.github.dimadencep.mods.rrls.utils;

import com.github.dimadencep.mods.rrls.ConfigExpectPlatform;
import net.minecraft.client.gui.screen.MessageScreen;
import net.minecraft.client.gui.screen.Overlay;
import net.minecraft.client.gui.screen.Screen;

public class SplashHelper {
public static State lookupState(Screen screen, boolean reloading) {
if (!ConfigExpectPlatform.hideType().canHide(reloading))
return State.DEFAULT;

if (reloading || ConfigExpectPlatform.forceClose())
return State.HIDE;

if (screen instanceof MessageScreen) // Loading Minecraft
return State.WAIT;

return screen != null ? State.HIDE : State.WAIT;
}

public static boolean isRenderingState(Overlay overlay) {
return overlay != null && overlay.rrls$getState().isRendering();
}

public enum State {
DEFAULT(false),
HIDE(true),
WAIT(false);

private final boolean render;

State(boolean r) {
this.render = r;
}

public boolean isRendering() {
return render;
}
}
}
Expand Up @@ -12,6 +12,7 @@

import com.github.dimadencep.mods.rrls.ConfigExpectPlatform;
import com.github.dimadencep.mods.rrls.utils.DummyDrawContext;
import com.github.dimadencep.mods.rrls.utils.SplashHelper;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.SplashOverlay;
Expand Down Expand Up @@ -76,7 +77,7 @@ public ForgeLoadingOverlayMixin(MinecraftClient client, ResourceReload monitor,

ci.cancel();
} else {
rrls$setAttachType(rrls$filterAttachType(minecraft.currentScreen, false)); // Forge loading overlay is loading overlay :)
rrls$setState(SplashHelper.lookupState(minecraft.currentScreen, false)); // Forge loading overlay is loading overlay :)
}
}

Expand Down

0 comments on commit 533997b

Please sign in to comment.