Improved separation

This commit is contained in:
2026-03-08 11:05:46 +01:00
parent b99840a937
commit 12b4a4fc5f
3 changed files with 56 additions and 46 deletions
+1 -1
Submodule common updated: f139ff5bd3...2e72fc5d6b
@@ -2,27 +2,32 @@ package org.saturnclient.impl.mixins;
import java.io.File; import java.io.File;
import java.io.InputStream; import java.io.InputStream;
import java.util.UUID;
import org.jetbrains.annotations.Nullable;
import org.saturnclient.common.ref.asset.IdentifierRef; import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.common.ref.game.MinecraftClientRef; import org.saturnclient.common.ref.game.MinecraftClientRef;
import org.saturnclient.common.ref.render.WindowRef; import org.saturnclient.common.ref.render.WindowRef;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.ui.SaturnScreen; import org.saturnclient.ui.SaturnScreen;
import org.saturnclient.ui.SaturnScreenFabric; import org.saturnclient.ui.SaturnScreenFabric;
import org.saturnclient.ui.screens.TitleMenu; import org.saturnclient.ui.screens.TitleMenu;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen; import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
import net.minecraft.client.gui.screen.option.OptionsScreen; import net.minecraft.client.gui.screen.option.OptionsScreen;
import net.minecraft.client.gui.screen.world.SelectWorldScreen; import net.minecraft.client.gui.screen.world.SelectWorldScreen;
import net.minecraft.client.option.GameOptions;
import net.minecraft.client.session.Session;
import net.minecraft.client.util.Window; import net.minecraft.client.util.Window;
import net.minecraft.resource.ReloadableResourceManagerImpl; import net.minecraft.resource.ReloadableResourceManagerImpl;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
@Mixin(MinecraftClient.class) @Mixin(MinecraftClient.class)
public class MinecraftClientMixin implements MinecraftClientRef { public abstract class MinecraftClientMixin implements MinecraftClientRef {
@Shadow @Shadow
public File runDirectory; public File runDirectory;
@@ -30,7 +35,20 @@ public class MinecraftClientMixin implements MinecraftClientRef {
private Window window; private Window window;
@Shadow @Shadow
public ReloadableResourceManagerImpl resourceManager; private ReloadableResourceManagerImpl resourceManager;
@Shadow
public GameOptions options;
@Shadow
private Session session;
@Shadow
public abstract void setScreen(@Nullable Screen screen);
@Shadow
@Override
public abstract void scheduleStop();
@Override @Override
public File getRunDirectory() { public File getRunDirectory() {
@@ -53,7 +71,7 @@ public class MinecraftClientMixin implements MinecraftClientRef {
@Override @Override
public void setScreen(SaturnScreen screen) { public void setScreen(SaturnScreen screen) {
SaturnClient.client.setScreen(new SaturnScreenFabric(screen)); this.setScreen(new SaturnScreenFabric(screen));
} }
@Override @Override
@@ -62,16 +80,46 @@ public class MinecraftClientMixin implements MinecraftClientRef {
switch (screen) { switch (screen) {
case SelectWorld: case SelectWorld:
SaturnClient.client.setScreen(new SelectWorldScreen(exitTarget)); this.setScreen(new SelectWorldScreen(exitTarget));
break; break;
case Multiplayer: case Multiplayer:
SaturnClient.client.setScreen(new MultiplayerScreen(exitTarget)); this.setScreen(new MultiplayerScreen(exitTarget));
break; break;
case Options: case Options:
SaturnClient.client.setScreen(new OptionsScreen(exitTarget, SaturnClient.client.options)); this.setScreen(new OptionsScreen(exitTarget, this.options));
break; break;
} }
} }
@Override
public String getAccessToken() {
if (session == null) {
return null;
}
return this.session.getAccessToken();
}
@Override
public UUID getUuid() {
if (session == null) {
return null;
}
return this.session.getUuidOrNull();
}
@Override
public String getUsername() {
if (session == null) {
return null;
}
return this.session.getUsername();
}
@Override
public void onClientStopping(Runnable handler) {
ClientLifecycleEvents.CLIENT_STOPPING.register(_o -> handler.run());
}
} }
@@ -12,7 +12,6 @@ import org.saturnclient.saturnclient.SaturnClient;
import dev.kosmx.playerAnim.api.layered.AnimationStack; import dev.kosmx.playerAnim.api.layered.AnimationStack;
import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationAccess; import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationAccess;
import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationRegistry; import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationRegistry;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
@@ -51,38 +50,6 @@ public class SaturnProviderImpl implements SaturnProvider {
} }
} }
@Override
public String getAccessToken() {
var session = SaturnClient.client.getSession();
if (session == null) {
return null;
}
return session.getAccessToken();
}
@Override
public UUID getUuid() {
var session = SaturnClient.client.getSession();
if (session == null) {
return null;
}
return session.getUuidOrNull();
}
@Override
public String getUsername() {
var session = SaturnClient.client.getSession();
if (session == null) {
return null;
}
return session.getUsername();
}
@Override
public void onClientStopping(Runnable handler) {
ClientLifecycleEvents.CLIENT_STOPPING.register(_o -> handler.run());
}
@Override @Override
public void logInfo(String message) { public void logInfo(String message) {
SaturnClient.LOGGER.info(message); SaturnClient.LOGGER.info(message);
@@ -98,11 +65,6 @@ public class SaturnProviderImpl implements SaturnProvider {
SaturnClient.LOGGER.error(message, throwable); SaturnClient.LOGGER.error(message, throwable);
} }
@Override
public void stop() {
SaturnClient.client.scheduleStop();
}
@Override @Override
public void registerBufferedImageTexture(IdentifierRef i, BufferedImage bi) { public void registerBufferedImageTexture(IdentifierRef i, BufferedImage bi) {
IdentifierUtils.registerBufferedImageTextureFast((Identifier) (Object) i, bi); IdentifierUtils.registerBufferedImageTextureFast((Identifier) (Object) i, bi);