Skip to content

Commit 5a007c3

Browse files
committed
Rebranding (Titles + Icons)
1 parent 56e95bd commit 5a007c3

File tree

17 files changed

+215
-4
lines changed

17 files changed

+215
-4
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ org.gradle.jvmargs=-Xmx2G
33
org.gradle.parallel=true
44

55
# SimpleClient
6-
simpleclient_version=0.2.1
6+
simpleclient_version=0.2.2
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package simpleclient.mixin;
2+
3+
import net.minecraft.SharedConstants;
4+
import net.minecraft.client.Minecraft;
5+
import net.minecraft.resources.ResourceLocation;
6+
import net.minecraft.server.packs.resources.IoSupplier;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.Inject;
10+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
11+
import simpleclient.SimpleClient;
12+
13+
import java.io.InputStream;
14+
15+
@Mixin(Minecraft.class)
16+
public abstract class MinecraftMixin {
17+
@Inject(at = @At("HEAD"), method = "createTitle", cancellable = true)
18+
public void createTitle(CallbackInfoReturnable<String> cir) {
19+
cir.setReturnValue("Minecraft " + SharedConstants.getCurrentVersion().getName() + " | SimpleClient " + SimpleClient.VERSION);
20+
}
21+
22+
@Inject(at = @At("HEAD"), method = "getIconFile", cancellable = true)
23+
public void getIconFile(String[] strings, CallbackInfoReturnable<IoSupplier<InputStream>> cir) {
24+
cir.setReturnValue(() -> Minecraft.getInstance().getResourceManager().open(new ResourceLocation("simpleclient", "textures/" + String.join("/", strings))));
25+
}
26+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package simpleclient.mixin;
2+
3+
import com.mojang.blaze3d.vertex.PoseStack;
4+
import net.minecraft.SharedConstants;
5+
import net.minecraft.client.Minecraft;
6+
import net.minecraft.client.gui.screens.TitleScreen;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.Inject;
10+
import org.spongepowered.asm.mixin.injection.ModifyArg;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
12+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
13+
import simpleclient.SimpleClient;
14+
15+
@Mixin(TitleScreen.class)
16+
public abstract class TitleScreenMixin {
17+
@ModifyArg(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/TitleScreen;drawString(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/gui/Font;Ljava/lang/String;III)V"), method = "render", index = 2)
18+
public String render(String str) {
19+
return "Minecraft " + SharedConstants.getCurrentVersion().getName() + " | SimpleClient " + SimpleClient.VERSION;
20+
}
21+
}

simpleclient-1.19.4/src/main/resources/simpleclient.mixins.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111
"performance.SharedConstantsMixin",
1212
"GameRendererMixin",
1313
"GuiMixin",
14+
"MinecraftMixin",
1415
"OptionsMixin",
15-
"ScreenEffectRendererMixin"
16+
"ScreenEffectRendererMixin",
17+
"TitleScreenMixin"
1618
],
1719
"injectors": {
1820
"defaultRequire": 1
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package simpleclient.mixin;
2+
3+
import com.mojang.blaze3d.platform.IconSet;
4+
import net.minecraft.client.Minecraft;
5+
import net.minecraft.resources.ResourceLocation;
6+
import net.minecraft.server.packs.PackResources;
7+
import net.minecraft.server.packs.resources.IoSupplier;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
12+
13+
import java.io.InputStream;
14+
15+
@Mixin(IconSet.class)
16+
public abstract class IconSetMixin {
17+
@Inject(at = @At("HEAD"), method = "getFile", cancellable = true)
18+
public void getFile(PackResources packResources, String string, CallbackInfoReturnable<IoSupplier<InputStream>> cir) {
19+
cir.setReturnValue(() -> Minecraft.getInstance().getResourceManager().open(new ResourceLocation("simpleclient", "textures/icons/" + string)));
20+
}
21+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package simpleclient.mixin;
2+
3+
import com.mojang.blaze3d.platform.IconSet;
4+
import com.mojang.blaze3d.platform.Window;
5+
import net.minecraft.SharedConstants;
6+
import net.minecraft.client.Minecraft;
7+
import net.minecraft.client.main.GameConfig;
8+
import net.minecraft.server.packs.PackResources;
9+
import net.minecraft.server.packs.VanillaPackResources;
10+
import org.spongepowered.asm.mixin.Final;
11+
import org.spongepowered.asm.mixin.Mixin;
12+
import org.spongepowered.asm.mixin.Shadow;
13+
import org.spongepowered.asm.mixin.injection.At;
14+
import org.spongepowered.asm.mixin.injection.Inject;
15+
import org.spongepowered.asm.mixin.injection.Redirect;
16+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
17+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
18+
import simpleclient.SimpleClient;
19+
20+
import java.io.IOException;
21+
22+
@Mixin(Minecraft.class)
23+
public abstract class MinecraftMixin {
24+
@Shadow @Final private VanillaPackResources vanillaPackResources;
25+
26+
@Shadow @Final private Window window;
27+
28+
@Inject(at = @At("HEAD"), method = "createTitle", cancellable = true)
29+
public void createTitle(CallbackInfoReturnable<String> cir) {
30+
cir.setReturnValue("Minecraft " + SharedConstants.getCurrentVersion().getName() + " | SimpleClient " + SimpleClient.VERSION);
31+
}
32+
33+
@Redirect(at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/Window;setIcon(Lnet/minecraft/server/packs/PackResources;Lcom/mojang/blaze3d/platform/IconSet;)V"), method = "<init>")
34+
public void setIcon(Window instance, PackResources packResources, IconSet iconSet) {}
35+
36+
@Inject(at = @At("TAIL"), method = "<init>")
37+
public void init(GameConfig gameConfig, CallbackInfo ci) {
38+
try {
39+
window.setIcon(vanillaPackResources, SharedConstants.getCurrentVersion().isStable() ? IconSet.RELEASE : IconSet.SNAPSHOT);
40+
} catch (Exception e) {e.printStackTrace();}
41+
}
42+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package simpleclient.mixin;
2+
3+
import net.minecraft.SharedConstants;
4+
import net.minecraft.client.gui.screens.TitleScreen;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.injection.At;
7+
import org.spongepowered.asm.mixin.injection.ModifyArg;
8+
import simpleclient.SimpleClient;
9+
10+
@Mixin(TitleScreen.class)
11+
public abstract class TitleScreenMixin {
12+
@ModifyArg(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiGraphics;drawString(Lnet/minecraft/client/gui/Font;Ljava/lang/String;III)I"), method = "render", index = 1)
13+
public String render(String str) {
14+
return "Minecraft " + SharedConstants.getCurrentVersion().getName() + " | SimpleClient " + SimpleClient.VERSION;
15+
}
16+
}

simpleclient-1.20.1/src/main/resources/simpleclient.mixins.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111
"performance.SharedConstantsMixin",
1212
"GameRendererMixin",
1313
"GuiMixin",
14+
"IconSetMixin",
15+
"MinecraftMixin",
1416
"OptionsMixin",
15-
"ScreenEffectRendererMixin"
17+
"ScreenEffectRendererMixin",
18+
"TitleScreenMixin"
1619
],
1720
"injectors": {
1821
"defaultRequire": 1
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package simpleclient.mixin;
2+
3+
import com.mojang.blaze3d.platform.IconSet;
4+
import net.minecraft.client.Minecraft;
5+
import net.minecraft.resources.ResourceLocation;
6+
import net.minecraft.server.packs.PackResources;
7+
import net.minecraft.server.packs.resources.IoSupplier;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
12+
13+
import java.io.InputStream;
14+
15+
@Mixin(IconSet.class)
16+
public abstract class IconSetMixin {
17+
@Inject(at = @At("HEAD"), method = "getFile", cancellable = true)
18+
public void getFile(PackResources packResources, String string, CallbackInfoReturnable<IoSupplier<InputStream>> cir) {
19+
cir.setReturnValue(() -> Minecraft.getInstance().getResourceManager().open(new ResourceLocation("simpleclient", "textures/icons/" + string)));
20+
}
21+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package simpleclient.mixin;
2+
3+
import com.mojang.blaze3d.platform.IconSet;
4+
import com.mojang.blaze3d.platform.Window;
5+
import net.minecraft.SharedConstants;
6+
import net.minecraft.client.Minecraft;
7+
import net.minecraft.client.main.GameConfig;
8+
import net.minecraft.server.packs.PackResources;
9+
import net.minecraft.server.packs.VanillaPackResources;
10+
import org.spongepowered.asm.mixin.Final;
11+
import org.spongepowered.asm.mixin.Mixin;
12+
import org.spongepowered.asm.mixin.Shadow;
13+
import org.spongepowered.asm.mixin.injection.At;
14+
import org.spongepowered.asm.mixin.injection.Inject;
15+
import org.spongepowered.asm.mixin.injection.Redirect;
16+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
17+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
18+
import simpleclient.SimpleClient;
19+
20+
@Mixin(Minecraft.class)
21+
public abstract class MinecraftMixin {
22+
@Shadow @Final private Window window;
23+
24+
@Shadow @Final private VanillaPackResources vanillaPackResources;
25+
26+
@Inject(at = @At("HEAD"), method = "createTitle", cancellable = true)
27+
public void createTitle(CallbackInfoReturnable<String> cir) {
28+
cir.setReturnValue("Minecraft " + SharedConstants.getCurrentVersion().getName() + " | SimpleClient " + SimpleClient.VERSION);
29+
}
30+
31+
@Redirect(at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/Window;setIcon(Lnet/minecraft/server/packs/PackResources;Lcom/mojang/blaze3d/platform/IconSet;)V"), method = "<init>")
32+
public void setIcon(Window instance, PackResources packResources, IconSet iconSet) {}
33+
34+
@Inject(at = @At("TAIL"), method = "<init>")
35+
public void init(GameConfig gameConfig, CallbackInfo ci) {
36+
try {
37+
window.setIcon(vanillaPackResources, SharedConstants.getCurrentVersion().isStable() ? IconSet.RELEASE : IconSet.SNAPSHOT);
38+
} catch (Exception e) {e.printStackTrace();}
39+
}
40+
}

0 commit comments

Comments
 (0)