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
|
loom_version=1.19.1
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version=1.1.6
|
mod_version=1.1.7
|
||||||
maven_group=fr.surviepote
|
maven_group=fr.surviepote
|
||||||
archives_base_name=nosingleplayer
|
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<>();
|
List<GuiEventListener> toRemove = new ArrayList<>();
|
||||||
for (GuiEventListener child : new ArrayList<>(self.children())) {
|
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();
|
String msg = button.getMessage().getString();
|
||||||
if (msg.equals(solo)) {
|
if (msg.equals(solo)) {
|
||||||
// Solo retiré complètement (plutôt que grisé).
|
// Solo retiré complètement (plutôt que grisé).
|
||||||
@@ -60,14 +72,6 @@ public abstract class TitleScreenMixin {
|
|||||||
} else if (msg.equals(realms)) {
|
} else if (msg.equals(realms)) {
|
||||||
toRemove.add(button);
|
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) {
|
for (GuiEventListener widget : toRemove) {
|
||||||
|
|||||||
+9
@@ -7,7 +7,9 @@ import com.mojang.renderpearl.api.textures.FilterMode;
|
|||||||
import fr.surviepote.nosingleplayer.NoSingleplayer;
|
import fr.surviepote.nosingleplayer.NoSingleplayer;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.GuiGraphicsExtractor;
|
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.LogoRenderer;
|
||||||
|
import net.minecraft.client.gui.components.SplashRenderer;
|
||||||
import net.minecraft.client.gui.screens.TitleScreen;
|
import net.minecraft.client.gui.screens.TitleScreen;
|
||||||
import net.minecraft.client.renderer.RenderPipelines;
|
import net.minecraft.client.renderer.RenderPipelines;
|
||||||
import net.minecraft.client.renderer.texture.DynamicTexture;
|
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.
|
// Pas de logo Minecraft.
|
||||||
@Redirect(method = "extractRenderState",
|
@Redirect(method = "extractRenderState",
|
||||||
at = @At(value = "INVOKE",
|
at = @At(value = "INVOKE",
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
"TitleScreenMixin",
|
"TitleScreenMixin",
|
||||||
"TitleScreenRenderMixin",
|
"TitleScreenRenderMixin",
|
||||||
"TitleScreenTextMixin",
|
"TitleScreenTextMixin",
|
||||||
|
"MinecraftTitleMixin",
|
||||||
"RealmsNotificationsMixin",
|
"RealmsNotificationsMixin",
|
||||||
"PauseScreenMixin",
|
"PauseScreenMixin",
|
||||||
"ScreenAccessor"
|
"ScreenAccessor"
|
||||||
|
|||||||
Reference in New Issue
Block a user