nosingleplayer 1.1.7 : menu titre nettoyé (splash, amis, copyright) + titre de fenêtre
- Titre de fenêtre : "Minecraft* 26.3" -> "SurviePote [26.3]" (mixin sur Minecraft.createTitle(), la classe Window a changé de package en 26.3 : com.mojang.blaze3d.platform.Window). - Suppression du texte de splash (message rotatif) du menu principal. - Bouton "amis" (FriendsButton) réellement supprimé : le if/else if de TitleScreenMixin testait "instanceof Button" en premier, et FriendsButton / SpriteIconButton / PlainTextButton en héritent -> ils tombaient dans cette branche et n'étaient jamais retirés. Ordre des tests corrigé (icônes et texte cliquable testés avant Button).
This commit is contained in:
@@ -5,7 +5,7 @@ loader_version=0.20.0
|
||||
loom_version=1.19.1
|
||||
|
||||
# Mod Properties
|
||||
mod_version=1.1.6
|
||||
mod_version=1.1.7
|
||||
maven_group=fr.surviepote
|
||||
archives_base_name=nosingleplayer
|
||||
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package fr.surviepote.nosingleplayer.mixin;
|
||||
|
||||
import fr.surviepote.nosingleplayer.NoSingleplayer;
|
||||
import net.minecraft.SharedConstants;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
/**
|
||||
* Titre de la fenêtre : "Minecraft* 26.3" -> "SurviePote [26.3]".
|
||||
* Minecraft.createTitle() est privé, appelé au démarrage (création de la fenêtre)
|
||||
* et par updateTitle() (changement de monde, focus, resize...).
|
||||
*/
|
||||
@Mixin(Minecraft.class)
|
||||
public abstract class MinecraftTitleMixin {
|
||||
|
||||
@Unique
|
||||
private static boolean surviepote$titleLogged;
|
||||
|
||||
@Inject(method = "createTitle", at = @At("HEAD"), cancellable = true)
|
||||
private void surviepote$customWindowTitle(CallbackInfoReturnable<String> cir) {
|
||||
String title = "SurviePote [" + SharedConstants.getCurrentVersion().name() + "]";
|
||||
cir.setReturnValue(title);
|
||||
if (!surviepote$titleLogged) {
|
||||
surviepote$titleLogged = true;
|
||||
NoSingleplayer.LOGGER.info("[SurviePote] Titre de fenêtre : {}", title);
|
||||
}
|
||||
}
|
||||
}
|
||||
+13
-9
@@ -47,7 +47,19 @@ public abstract class TitleScreenMixin {
|
||||
|
||||
List<GuiEventListener> toRemove = new ArrayList<>();
|
||||
for (GuiEventListener child : new ArrayList<>(self.children())) {
|
||||
if (child instanceof Button button) {
|
||||
// ATTENTION : FriendsButton/SpriteIconButton/PlainTextButton héritent tous
|
||||
// de Button. Il faut donc les tester AVANT "instanceof Button", sinon la
|
||||
// première branche les avale et ils ne sont jamais retirés.
|
||||
if (child instanceof FriendsButton) {
|
||||
// Bouton "amis" (interactions sociales).
|
||||
toRemove.add(child);
|
||||
} else if (child instanceof SpriteIconButton) {
|
||||
// Bas-gauche : langue, accessibilité, etc.
|
||||
toRemove.add(child);
|
||||
} else if (child instanceof PlainTextButton) {
|
||||
// Copyright Mojang cliquable en bas.
|
||||
toRemove.add(child);
|
||||
} else if (child instanceof Button button) {
|
||||
String msg = button.getMessage().getString();
|
||||
if (msg.equals(solo)) {
|
||||
// Solo retiré complètement (plutôt que grisé).
|
||||
@@ -60,14 +72,6 @@ public abstract class TitleScreenMixin {
|
||||
} else if (msg.equals(realms)) {
|
||||
toRemove.add(button);
|
||||
}
|
||||
} else if (child instanceof FriendsButton) {
|
||||
toRemove.add(child);
|
||||
} else if (child instanceof SpriteIconButton) {
|
||||
// Bas-gauche : langue, accessibilité, etc.
|
||||
toRemove.add(child);
|
||||
} else if (child instanceof PlainTextButton) {
|
||||
// Copyright Mojang cliquable en bas.
|
||||
toRemove.add(child);
|
||||
}
|
||||
}
|
||||
for (GuiEventListener widget : toRemove) {
|
||||
|
||||
+9
@@ -7,7 +7,9 @@ import com.mojang.renderpearl.api.textures.FilterMode;
|
||||
import fr.surviepote.nosingleplayer.NoSingleplayer;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiGraphicsExtractor;
|
||||
import net.minecraft.client.gui.Font;
|
||||
import net.minecraft.client.gui.components.LogoRenderer;
|
||||
import net.minecraft.client.gui.components.SplashRenderer;
|
||||
import net.minecraft.client.gui.screens.TitleScreen;
|
||||
import net.minecraft.client.renderer.RenderPipelines;
|
||||
import net.minecraft.client.renderer.texture.DynamicTexture;
|
||||
@@ -126,6 +128,13 @@ public abstract class TitleScreenRenderMixin {
|
||||
}
|
||||
}
|
||||
|
||||
// Pas de texte de splash (message rotatif) sur le menu principal.
|
||||
@Redirect(method = "extractRenderState",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/gui/components/SplashRenderer;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;ILnet/minecraft/client/gui/Font;F)V"))
|
||||
private void surviepote$skipSplash(SplashRenderer splash, GuiGraphicsExtractor extractor, int width, Font font, float fade) {
|
||||
}
|
||||
|
||||
// Pas de logo Minecraft.
|
||||
@Redirect(method = "extractRenderState",
|
||||
at = @At(value = "INVOKE",
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"TitleScreenMixin",
|
||||
"TitleScreenRenderMixin",
|
||||
"TitleScreenTextMixin",
|
||||
"MinecraftTitleMixin",
|
||||
"RealmsNotificationsMixin",
|
||||
"PauseScreenMixin",
|
||||
"ScreenAccessor"
|
||||
|
||||
Reference in New Issue
Block a user