Rebrand client as GEC Client

Refresh the launcher, HUD, metadata, and user-facing branding while preserving internal IDs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
simeonvartik 2026-10-26 08:08:02 +04:00
parent cb6910b424
commit 14327061a5
31 changed files with 93 additions and 90 deletions

View file

@ -1,33 +1,33 @@
# Credits # Credits
AUTISM Client includes original code written for this project, but it also uses, references, or derives ideas/code from other open-source Minecraft client projects. GEC Client includes original code written for this project, but it also uses, references, or derives ideas/code from other open-source Minecraft client projects.
Huge credit to the following developers and projects: Huge credit to the following developers and projects:
## OpSec by aurickk ## OpSec by aurickk
Parts of AUTISM Client related to client privacy, mod detection protection, compatibility handling, and anti-fingerprinting behavior are inspired by or derived from OpSec. Parts of GEC Client related to client privacy, mod detection protection, compatibility handling, and anti-fingerprinting behavior are inspired by or derived from OpSec.
Project: https://github.com/aurickk/OpSec Project: https://github.com/aurickk/OpSec
License: GPL-3.0 License: GPL-3.0
## Meteor Client ## Meteor Client
AUTISM Client uses ideas, structure, APIs, or source-code references from Meteor Client, especially around Fabric client architecture, modules, utilities, and client-side systems. GEC Client uses ideas, structure, APIs, or source-code references from Meteor Client, especially around Fabric client architecture, modules, utilities, and client-side systems.
Project: https://github.com/MeteorDevelopment/meteor-client Project: https://github.com/MeteorDevelopment/meteor-client
License: GPL-3.0 License: GPL-3.0
## Wurst Client ## Wurst Client
AUTISM Client uses ideas, references, or code patterns from Wurst Client, one of the long-running open-source Minecraft utility clients. GEC Client uses ideas, references, or code patterns from Wurst Client, one of the long-running open-source Minecraft utility clients.
Project: https://github.com/Wurst-Imperium/Wurst7 Project: https://github.com/Wurst-Imperium/Wurst7
License: GPL-3.0 License: GPL-3.0
## ExploitPreventer by NikOverflow ## ExploitPreventer by NikOverflow
AUTISM Client uses ideas, references, or derived logic from ExploitPreventer for protection against known client-side exploits. GEC Client uses ideas, references, or derived logic from ExploitPreventer for protection against known client-side exploits.
Project: https://github.com/NikOverflow/ExploitPreventer Project: https://github.com/NikOverflow/ExploitPreventer
License: MIT License: MIT
@ -40,7 +40,7 @@ Project: https://github.com/bestluaucoder/Autism-Better-Storage-esp-1-addon/tree
## License Notice ## License Notice
Because AUTISM Client uses and/or derives from GPL-licensed projects, AUTISM Client is released under the GNU General Public License v3.0. Because GEC Client uses and/or derives from GPL-licensed projects, GEC Client is released under the GNU General Public License v3.0.
Source code must stay available to users, and any redistributed modified versions must follow the same GPL-3.0 license terms. Source code must stay available to users, and any redistributed modified versions must follow the same GPL-3.0 license terms.

View file

@ -1,14 +1,14 @@
# AUTISM Client # GEC Client
AUTISM Client is the best Duping/Debugging client built for people who actually want control over what actions server recieves. GEC Client is an advanced Minecraft client built for players who want precise control over modules, macros, visual customization, and addon support.
It is not trying to be a bloated all-in-one mess with 400 random buttons nobody uses. The point is simple: useful modules, a strong macro system, clean addon support, and tools that make testing, automation, and server interaction less painful. Its focus is a fast, cohesive experience: useful modules, a flexible macro system, clean addon support, and tools that make testing and automation easier.
This client is built around speed, control, and not pretending that users are too stupid to touch advanced features. The interface pairs a compact, animated main menu with configurable colors and detailed controls, while keeping advanced features accessible.
## What It Includes ## What It Includes
AUTISM Client includes the normal client stuff you would expect, but the main focus is on systems that are actually useful. GEC Client includes the expected client features, with a focus on systems that are genuinely useful.
Main features include: Main features include:
@ -32,34 +32,34 @@ The client is made to be expandable. If the base client is not enough, addons ca
# Credits # Credits
AUTISM Client includes original code written for this project, but it also uses, references, or derives ideas/code from other open-source Minecraft client projects. GEC Client includes original code written for this project, but it also uses, references, or derives ideas/code from other open-source Minecraft client projects.
Huge credit to the following developers and projects: Huge credit to the following developers and projects:
## OpSec by aurickk ## OpSec by aurickk
Parts of AUTISM Client related to client privacy, mod detection protection, compatibility handling, and anti-fingerprinting behavior are inspired by or derived from OpSec. Parts of GEC Client related to client privacy, mod detection protection, compatibility handling, and anti-fingerprinting behavior are inspired by or derived from OpSec.
Project: https://github.com/aurickk/OpSec Project: https://github.com/aurickk/OpSec
License: GPL-3.0 License: GPL-3.0
## Meteor Client ## Meteor Client
AUTISM Client uses ideas, structure, APIs, or source-code references from Meteor Client, especially around Fabric client architecture, modules, utilities, and client-side systems. GEC Client uses ideas, structure, APIs, or source-code references from Meteor Client, especially around Fabric client architecture, modules, utilities, and client-side systems.
Project: https://github.com/MeteorDevelopment/meteor-client Project: https://github.com/MeteorDevelopment/meteor-client
License: GPL-3.0 License: GPL-3.0
## Wurst Client ## Wurst Client
AUTISM Client uses ideas, references, or code patterns from Wurst Client, one of the long-running open-source Minecraft utility clients. GEC Client uses ideas, references, or code patterns from Wurst Client, one of the long-running open-source Minecraft utility clients.
Project: https://github.com/Wurst-Imperium/Wurst7 Project: https://github.com/Wurst-Imperium/Wurst7
License: GPL-3.0 License: GPL-3.0
## ExploitPreventer by NikOverflow ## ExploitPreventer by NikOverflow
AUTISM Client uses ideas, references, or derived logic from ExploitPreventer for protection against known client-side exploits. GEC Client uses ideas, references, or derived logic from ExploitPreventer for protection against known client-side exploits.
Project: https://github.com/NikOverflow/ExploitPreventer Project: https://github.com/NikOverflow/ExploitPreventer
License: MIT License: MIT
@ -78,7 +78,7 @@ Project: https://github.com/bestluaucoder/Autism-Better-Storage-esp-1-addon/tree
## License Notice ## License Notice
Because AUTISM Client uses and/or derives from GPL-licensed projects, AUTISM Client is released under the GNU General Public License v3.0. Because GEC Client uses and/or derives from GPL-licensed projects, GEC Client is released under the GNU General Public License v3.0.
Source code must stay available to users, and any redistributed modified versions must follow the same GPL-3.0 license terms. Source code must stay available to users, and any redistributed modified versions must follow the same GPL-3.0 license terms.

View file

@ -779,7 +779,7 @@ tasks.register("buildAllTemplates") {
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// LITE variant: turns the FINAL release jar (post guardian weaving) into the stripped-down // LITE variant: turns the FINAL release jar (post guardian weaving) into the stripped-down
// "AUTISM Client Lite" build in four stages, with no recompilation so the jars can never drift. // "GEC Client Lite" build in four stages, with no recompilation so the jars can never drift.
// The pipeline uses NO ProGuard and NO obfuscation tooling of any kind - every stage is our own // The pipeline uses NO ProGuard and NO obfuscation tooling of any kind - every stage is our own
// code (ASM for bytecode surgery, plain zip + constant-pool analysis for shrinking): // code (ASM for bytecode surgery, plain zip + constant-pool analysis for shrinking):
// litePatchVariant - copies the full jar, patches AutismLiteVariant.ENABLED to a compile-time // litePatchVariant - copies the full jar, patches AutismLiteVariant.ENABLED to a compile-time
@ -2119,7 +2119,7 @@ tasks.register("verifyLiteJar") {
} }
val fabricJson = entryText("fabric.mod.json") val fabricJson = entryText("fabric.mod.json")
if (!fabricJson.contains("\"name\":\"AUTISM Client\"")) { if (!fabricJson.contains("\"name\":\"GEC Client\"")) {
fail("fabric.mod.json name drifted - the game title/icon must not change in lite") fail("fabric.mod.json name drifted - the game title/icon must not change in lite")
} }
if (fabricJson.contains("AutismModMenuIntegration")) { if (fabricJson.contains("AutismModMenuIntegration")) {

View file

@ -6,4 +6,4 @@ org.gradle.configuration-cache=false
org.gradle.daemon=false org.gradle.daemon=false
maven_group=com.autismclient maven_group=com.autismclient
archives_base_name=AUTISM Client archives_base_name=GEC Client

View file

@ -53,7 +53,7 @@ public final class AddonManager {
String modId = mod.getMetadata().getId(); String modId = mod.getMetadata().getId();
AddonReport report = ensureReport(mod.getMetadata()); AddonReport report = ensureReport(mod.getMetadata());
if (isDisabledOnRestart(modId)) { if (isDisabledOnRestart(modId)) {
report.markDisabled("Disabled in AUTISM config. Enable it and restart to load."); report.markDisabled("Disabled in GEC Client config. Enable it and restart to load.");
continue; continue;
} }
@ -124,7 +124,7 @@ public final class AddonManager {
for (String id : config.disabledAddonIds) { for (String id : config.disabledAddonIds) {
if (id == null || id.isBlank() || REPORTS.containsKey(id)) continue; if (id == null || id.isBlank() || REPORTS.containsKey(id)) continue;
AddonReport report = new AddonReport(id.trim(), id.trim(), "", "", 0xFFAA66FF); AddonReport report = new AddonReport(id.trim(), id.trim(), "", "", 0xFFAA66FF);
report.markDisabled("Disabled in AUTISM config, but no matching addon entrypoint was discovered."); report.markDisabled("Disabled in GEC Client config, but no matching addon entrypoint was discovered.");
REPORTS.put(report.modId(), report); REPORTS.put(report.modId(), report);
} }
} }

View file

@ -263,7 +263,7 @@ public final class AutismCommands {
Command command = find(first); Command command = find(first);
String prefix = effectivePrefix(); String prefix = effectivePrefix();
if (command == null) { if (command == null) {
AutismClientMessaging.sendPrefixed("§cUnknown AUTISM command: §f" + first); AutismClientMessaging.sendPrefixed("§cUnknown GEC command: §f" + first);
AutismClientMessaging.sendPrefixed("§7Use §f" + prefix + "commands §7or §f" + prefix + "help§7."); AutismClientMessaging.sendPrefixed("§7Use §f" + prefix + "commands §7or §f" + prefix + "help§7.");
return; return;
} }

View file

@ -13,7 +13,7 @@ import com.mojang.brigadier.builder.RequiredArgumentBuilder;
public class PrefixCommand extends Command { public class PrefixCommand extends Command {
public PrefixCommand() { public PrefixCommand() {
super("prefix", "Change the AUTISM command prefix."); super("prefix", "Change the GEC Client command prefix.");
} }
@Override @Override

View file

@ -59,7 +59,7 @@ public class AutismModMenuConfigScreen extends Screen {
private record Hit(UiBounds bounds, Runnable onLeft, Runnable onRight) {} private record Hit(UiBounds bounds, Runnable onLeft, Runnable onRight) {}
public AutismModMenuConfigScreen(Screen parent) { public AutismModMenuConfigScreen(Screen parent) {
super(Component.literal("AUTISM Client Settings")); super(Component.literal("GEC Client Settings"));
this.parent = parent; this.parent = parent;
AutismConfig cfg = AutismConfig.getGlobal(); AutismConfig cfg = AutismConfig.getGlobal();
keybinds.add(new Keybind("Module Menu", () -> cfg.keybindModuleMenu, v -> { cfg.keybindModuleMenu = v; cfg.save(); })); keybinds.add(new Keybind("Module Menu", () -> cfg.keybindModuleMenu, v -> { cfg.keybindModuleMenu = v; cfg.save(); }));
@ -98,7 +98,7 @@ public class AutismModMenuConfigScreen extends Screen {
UiBounds header = UiBounds.of(px, py, panelW, HEADER_H); UiBounds header = UiBounds.of(px, py, panelW, HEADER_H);
UiRenderer.rect(graphics, UiBounds.of(px + 1, py + 1, panelW - 2, HEADER_H - 1), p(0x33241A1D, Channel.HEADER)); UiRenderer.rect(graphics, UiBounds.of(px + 1, py + 1, panelW - 2, HEADER_H - 1), p(0x33241A1D, Channel.HEADER));
drawCentered(graphics, "AUTISM Client Settings", UiAssets.FONT_TITLE, p(TEXT_COLOR, Channel.TEXT), header); drawCentered(graphics, "GEC Client Settings", UiAssets.FONT_TITLE, p(TEXT_COLOR, Channel.TEXT), header);
UiBounds footer = UiBounds.of(px, panel.bottom() - FOOTER_H, panelW, FOOTER_H); UiBounds footer = UiBounds.of(px, panel.bottom() - FOOTER_H, panelW, FOOTER_H);
UiBounds done = UiBounds.of(px + 8, footer.y() + 6, panelW - 16, ROW_H); UiBounds done = UiBounds.of(px + 8, footer.y() + 6, panelW - 16, ROW_H);

View file

@ -41,7 +41,7 @@ public class AutismMultiDisclaimerScreen extends Screen {
private static final String TITLE_TEXT = "[DISCLAIMER]"; private static final String TITLE_TEXT = "[DISCLAIMER]";
private static final String[] PARAGRAPHS = { private static final String[] PARAGRAPHS = {
"AUTISM just provides the open-source software that lets you run more than one Minecraft account. That's all it does.", "GEC Client provides the open-source software that lets you run more than one Minecraft account. That's all it does.",
"What you choose to do with it is not our concern, and not our responsibility.", "What you choose to do with it is not our concern, and not our responsibility.",
"By clicking Agree, you take full responsibility for whatever you use this feature for.", "By clicking Agree, you take full responsibility for whatever you use this feature for.",
}; };

View file

@ -50,7 +50,6 @@ import net.minecraft.client.resources.sounds.SimpleSoundInstance;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.resources.Identifier; import net.minecraft.resources.Identifier;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.util.ARGB;
import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.FabricLoader;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
@ -62,11 +61,10 @@ import java.util.Locale;
import java.util.function.Supplier; import java.util.function.Supplier;
public class AutismTitleScreen extends Screen { public class AutismTitleScreen extends Screen {
private static final Identifier LOGO = Identifier.fromNamespaceAndPath("autismclient", "textures/gui/title/autism_client_logo.png");
private static final Identifier BUTTON_CLICK_SOUND_ID = Identifier.fromNamespaceAndPath("autismclient", "gui.main_menu_click"); private static final Identifier BUTTON_CLICK_SOUND_ID = Identifier.fromNamespaceAndPath("autismclient", "gui.main_menu_click");
private static final SoundEvent BUTTON_CLICK_SOUND = SoundEvent.createVariableRangeEvent(BUTTON_CLICK_SOUND_ID); private static final SoundEvent BUTTON_CLICK_SOUND = SoundEvent.createVariableRangeEvent(BUTTON_CLICK_SOUND_ID);
private static final int LOGO_TEXTURE_WIDTH = 516; private static final int BRAND_CARD_WIDTH = 300;
private static final int LOGO_TEXTURE_HEIGHT = 144; private static final int BRAND_CARD_HEIGHT = 72;
private static final Identifier TEXT_SINGLEPLAYER = buttonText("singleplayer"); private static final Identifier TEXT_SINGLEPLAYER = buttonText("singleplayer");
private static final Identifier TEXT_MULTIPLAYER = buttonText("multiplayer"); private static final Identifier TEXT_MULTIPLAYER = buttonText("multiplayer");
private static final Identifier TEXT_REALMS = buttonText("minecraft_realms"); private static final Identifier TEXT_REALMS = buttonText("minecraft_realms");
@ -326,8 +324,8 @@ public class AutismTitleScreen extends Screen {
int margin = 8; int margin = 8;
cardW = Math.min(296, Math.max(180, screenW - margin * 2)); cardW = Math.min(296, Math.max(180, screenW - margin * 2));
cardH = Math.max(20, Math.round(LOGO_TEXTURE_HEIGHT cardH = Math.max(52, Math.round(BRAND_CARD_HEIGHT
* Math.min(1.0f, (cardW - 16) / (float) LOGO_TEXTURE_WIDTH))); * Math.min(1.0f, (cardW - 16) / (float) BRAND_CARD_WIDTH)));
int rowW = Math.min(cardW - 28, compact ? 220 : 240); int rowW = Math.min(cardW - 28, compact ? 220 : 240);
int rowH = compact ? 18 : 22; int rowH = compact ? 18 : 22;
int rowGap = compact ? 3 : 5; int rowGap = compact ? 3 : 5;
@ -408,7 +406,7 @@ public class AutismTitleScreen extends Screen {
int supportRowGap = 3; int supportRowGap = 3;
int supportIcon = Math.min(14, supportRowH - 6); int supportIcon = Math.min(14, supportRowH - 6);
String[] supportLabels = {"Card/PayPal", "Crypto", "AUTISM INC", "AUTISM CLIENT"}; String[] supportLabels = {"Card/PayPal", "Crypto", "COMMUNITY", "GEC CLIENT"};
int supportTextW = 0; int supportTextW = 0;
for (String label : supportLabels) { for (String label : supportLabels) {
supportTextW = Math.max(supportTextW, supportTextW = Math.max(supportTextW,
@ -630,13 +628,39 @@ public class AutismTitleScreen extends Screen {
float p = introProgress(0); float p = introProgress(0);
if (p <= 0.0f) return; if (p <= 0.0f) return;
float scale = Math.min(1.0f, (cardW - 16) / (float) LOGO_TEXTURE_WIDTH); int y = cardY + introOffset(p);
int drawW = Math.max(1, Math.round(LOGO_TEXTURE_WIDTH * scale)); int accent = fade(theme.color(UiTone.ACCENT), p);
int drawH = Math.max(1, Math.round(LOGO_TEXTURE_HEIGHT * scale)); int text = fade(theme.color(UiTone.TITLE), p);
int logoX = UiSizing.centerInside(cardX, cardW, drawW); boolean compact = cardH < 60;
int logoY = cardY + introOffset(p) + Math.max(0, (cardH - drawH) / 2); UiRenderer.frame(graphics, UiBounds.of(cardX, y, cardW, cardH), fade(theme.windowFill(), p), fade(theme.borderSoft(), p));
graphics.blit(RenderPipelines.GUI_TEXTURED, AutismThemeTextures.recolored(LOGO, Channel.ACCENT), logoX, logoY, 0.0F, 0.0F, drawW, drawH, UiRenderer.horizontalEdge(graphics, cardX + 1, y + 1, Math.min(18, cardW - 2), accent);
LOGO_TEXTURE_WIDTH, LOGO_TEXTURE_HEIGHT, LOGO_TEXTURE_WIDTH, LOGO_TEXTURE_HEIGHT, ARGB.white(p)); UiRenderer.verticalEdge(graphics, cardX + 1, y + 1, Math.min(18, cardH - 2), accent);
UiRenderer.horizontalEdge(graphics, cardX + cardW - Math.min(19, cardW - 1), y + 1,
Math.min(18, cardW - 2), accent);
UiRenderer.verticalEdge(graphics, cardX + cardW - 2, y + 1, Math.min(18, cardH - 2), accent);
String name = "GEC";
int nameWidth = UiText.width(this.font, name, UiAssets.FONT_TITLE, text);
UiText.draw(graphics, this.font, name, UiAssets.FONT_TITLE, text,
cardX + (cardW - nameWidth) / 2, y + (compact ? 6 : 10), false);
String label = "CLIENT";
int labelWidth = UiText.width(this.font, label, UiAssets.FONT_LABEL, accent);
int labelY = y + (compact ? 25 : 31);
int labelX = cardX + (cardW - labelWidth) / 2;
UiText.draw(graphics, this.font, label, UiAssets.FONT_LABEL, accent, labelX, labelY, false);
int ruleY = y + cardH - 12;
UiRenderer.horizontalEdge(graphics, cardX + 14, ruleY, cardW - 28, fade(theme.borderSoft(), p));
int sweepWidth = Math.min(24, cardW - 28);
int sweepTravel = Math.max(1, cardW - 28 - sweepWidth);
int sweepX = cardX + 14 + (int) Math.floorMod(System.nanoTime() / 12_000_000L, sweepTravel);
UiRenderer.horizontalEdge(graphics, sweepX, ruleY, sweepWidth, accent);
String caption = "ADVANCED CLIENT SYSTEMS";
int captionWidth = UiText.width(this.font, caption, UiAssets.FONT_BODY, fade(theme.color(UiTone.MUTED), p));
UiText.draw(graphics, this.font, caption, UiAssets.FONT_BODY, fade(theme.color(UiTone.MUTED), p),
cardX + (cardW - captionWidth) / 2, y + cardH - 9, false);
} }
private void renderSupportPanel(GuiGraphicsExtractor graphics) { private void renderSupportPanel(GuiGraphicsExtractor graphics) {

View file

@ -16,7 +16,6 @@ import net.minecraft.client.gui.GuiGraphicsExtractor;
import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.TitleScreen; import net.minecraft.client.gui.screens.TitleScreen;
import net.minecraft.client.input.MouseButtonEvent; import net.minecraft.client.input.MouseButtonEvent;
import net.minecraft.client.renderer.RenderPipelines;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.resources.Identifier; import net.minecraft.resources.Identifier;
@ -34,11 +33,6 @@ public class AutismWelcomeScreen extends Screen {
private static final int CARD_FILL = 0xF20A0A0C; private static final int CARD_FILL = 0xF20A0A0C;
private static final int CARD_BORDER = 0xFFFF4A4A; private static final int CARD_BORDER = 0xFFFF4A4A;
private static final int DIVIDER_COLOR = 0x66FF4A4A; private static final int DIVIDER_COLOR = 0x66FF4A4A;
private static final Identifier HUD_LOGO = Identifier.fromNamespaceAndPath("autismclient", "textures/gui/hud/autismclient_welcome.png");
private static final int HUD_LOGO_TEXTURE_WIDTH = 878;
private static final int HUD_LOGO_TEXTURE_HEIGHT = 83;
private static final int HUD_LOGO_DISPLAY_WIDTH = 878;
private static final int HUD_LOGO_DISPLAY_HEIGHT = 83;
private static final Identifier DONATE_SUPPORT_ICON = Identifier.fromNamespaceAndPath("autismclient", "textures/gui/title/icons/donate.png"); private static final Identifier DONATE_SUPPORT_ICON = Identifier.fromNamespaceAndPath("autismclient", "textures/gui/title/icons/donate.png");
private static final int SUPPORT_ICON_WIDTH = 32; private static final int SUPPORT_ICON_WIDTH = 32;
private static final int SUPPORT_ICON_HEIGHT = 32; private static final int SUPPORT_ICON_HEIGHT = 32;
@ -47,7 +41,7 @@ public class AutismWelcomeScreen extends Screen {
private static final String TITLE_TEXT = "Thanks for using"; private static final String TITLE_TEXT = "Thanks for using";
private static final String[][] SECTIONS = { private static final String[][] SECTIONS = {
{"Donate", {"Donate",
"If AUTISM Client has helped you or made Minecraft more fun, a donation is a kind way to support the time behind it."}, "If GEC Client has helped you or made Minecraft more fun, a donation is a kind way to support the time behind it."},
{"Choose Method", {"Choose Method",
"Use Card or PayPal for the normal route, or Crypto if you want the direct one."}, "Use Card or PayPal for the normal route, or Crypto if you want the direct one."},
}; };
@ -121,11 +115,9 @@ public class AutismWelcomeScreen extends Screen {
int y = cardY + PAD + 2; int y = cardY + PAD + 2;
drawCentered(graphics, TITLE_TEXT, FONT_TITLE, autismclient.util.AutismTheme.recolor(TITLE_COLOR, autismclient.util.AutismTheme.Channel.TEXT), x, innerW, y); drawCentered(graphics, TITLE_TEXT, FONT_TITLE, autismclient.util.AutismTheme.recolor(TITLE_COLOR, autismclient.util.AutismTheme.Channel.TEXT), x, innerW, y);
y += UiText.fontHeight(FONT_TITLE) + 7; y += UiText.fontHeight(FONT_TITLE) + 7;
int logoW = welcomeLogoWidth(innerW); drawCentered(graphics, "GEC CLIENT", FONT_TITLE,
int logoH = welcomeLogoHeight(logoW); autismclient.util.AutismTheme.recolor(HEADER_COLOR, autismclient.util.AutismTheme.Channel.ACCENT), x, innerW, y);
int logoX = x + (innerW - logoW) / 2; int logoH = UiText.fontHeight(FONT_TITLE);
graphics.blit(RenderPipelines.GUI_TEXTURED, autismclient.util.AutismThemeTextures.recolored(HUD_LOGO, autismclient.util.AutismTheme.Channel.ACCENT), logoX, y, 0.0F, 0.0F, logoW, logoH,
HUD_LOGO_TEXTURE_WIDTH, HUD_LOGO_TEXTURE_HEIGHT, HUD_LOGO_TEXTURE_WIDTH, HUD_LOGO_TEXTURE_HEIGHT);
y += logoH + 9; y += logoH + 9;
UiRenderer.rect(graphics, UiBounds.of(x, y, innerW, 1), autismclient.util.AutismTheme.recolor(DIVIDER_COLOR, autismclient.util.AutismTheme.Channel.OUTLINE)); UiRenderer.rect(graphics, UiBounds.of(x, y, innerW, 1), autismclient.util.AutismTheme.recolor(DIVIDER_COLOR, autismclient.util.AutismTheme.Channel.OUTLINE));
y += 8; y += 8;
@ -185,8 +177,7 @@ public class AutismWelcomeScreen extends Screen {
int headerH = UiText.fontHeight(FONT_LABEL); int headerH = UiText.fontHeight(FONT_LABEL);
int lineH = UiText.fontHeight(FONT_LABEL) + 3; int lineH = UiText.fontHeight(FONT_LABEL) + 3;
int logoW = welcomeLogoWidth(innerW); int h = PAD + UiText.fontHeight(FONT_TITLE) + 7 + UiText.fontHeight(FONT_TITLE) + 9 + 1 + 8;
int h = PAD + UiText.fontHeight(FONT_TITLE) + 7 + welcomeLogoHeight(logoW) + 9 + 1 + 8;
List<List<String>> linesBySection = wrappedSections(innerW); List<List<String>> linesBySection = wrappedSections(innerW);
for (int i = 0; i < SECTIONS.length; i++) { for (int i = 0; i < SECTIONS.length; i++) {
h += headerH + 3 + linesBySection.get(i).size() * lineH + 8; h += headerH + 3 + linesBySection.get(i).size() * lineH + 8;
@ -250,14 +241,6 @@ public class AutismWelcomeScreen extends Screen {
UiText.draw(graphics, this.font, text, fontId, color, x + (width - textW) / 2, y, false); UiText.draw(graphics, this.font, text, fontId, color, x + (width - textW) / 2, y, false);
} }
private static int welcomeLogoWidth(int innerW) {
return Math.max(170, Math.min(innerW - 18, 286));
}
private static int welcomeLogoHeight(int width) {
return Math.max(1, Math.round(width * (HUD_LOGO_DISPLAY_HEIGHT / (float) HUD_LOGO_DISPLAY_WIDTH)));
}
private void renderButton(GuiGraphicsExtractor graphics, Btn btn, float mouseX, float mouseY, boolean enabled) { private void renderButton(GuiGraphicsExtractor graphics, Btn btn, float mouseX, float mouseY, boolean enabled) {
boolean hovered = enabled && btn.contains(mouseX, mouseY); boolean hovered = enabled && btn.contains(mouseX, mouseY);
UiContext ctx = UiContexts.overlay(graphics, this.font, (int) mouseX, (int) mouseY); UiContext ctx = UiContexts.overlay(graphics, this.font, (int) mouseX, (int) mouseY);

View file

@ -39,8 +39,8 @@ public abstract class AutismTitleScreenSupportMixin extends Screen {
autism$leftButton(Component.literal("Card/PayPal"), 4, AutismLinks.KOFI); autism$leftButton(Component.literal("Card/PayPal"), 4, AutismLinks.KOFI);
autism$leftButton(Component.literal("Crypto"), 28, AutismLinks.CRYPTO_DONATE); autism$leftButton(Component.literal("Crypto"), 28, AutismLinks.CRYPTO_DONATE);
autism$leftButton(Component.literal("AUTISM INC"), 52, AutismLinks.AUTISM_INC_DISCORD); autism$leftButton(Component.literal("COMMUNITY"), 52, AutismLinks.AUTISM_INC_DISCORD);
autism$leftButton(Component.literal("AUTISM Client"), 76, AutismLinks.DISCORD); autism$leftButton(Component.literal("GEC Client"), 76, AutismLinks.DISCORD);
} }
@Unique @Unique

View file

@ -166,7 +166,7 @@ public final class PackFreecamState {
private static net.minecraft.network.chat.Component speedMessage(double speed) { private static net.minecraft.network.chat.Component speedMessage(double speed) {
return net.minecraft.network.chat.Component.empty() return net.minecraft.network.chat.Component.empty()
.append(styled("[", autismclient.util.AutismColors.textMuted(), false)) .append(styled("[", autismclient.util.AutismColors.textMuted(), false))
.append(styled("AUTISM", autismclient.util.AutismColors.accent(), true)) .append(styled("GEC", autismclient.util.AutismColors.accent(), true))
.append(styled("] ", autismclient.util.AutismColors.textMuted(), false)) .append(styled("] ", autismclient.util.AutismColors.textMuted(), false))
.append(styled("Freecam Speed", autismclient.util.AutismColors.packetGray(), true)) .append(styled("Freecam Speed", autismclient.util.AutismColors.packetGray(), true))
.append(styled(": ", autismclient.util.AutismColors.textMuted(), false)) .append(styled(": ", autismclient.util.AutismColors.textMuted(), false))

View file

@ -21,7 +21,7 @@ import java.util.Set;
public final class AutismClientMessaging { public final class AutismClientMessaging {
private static final Minecraft MC = Minecraft.getInstance(); private static final Minecraft MC = Minecraft.getInstance();
private static final long DUPLICATE_WINDOW_MS = 600L; private static final long DUPLICATE_WINDOW_MS = 600L;
private static final String PREFIX_TEXT = "[AUTISM] "; private static final String PREFIX_TEXT = "[GEC] ";
private static String lastMessageKey = ""; private static String lastMessageKey = "";
private static long lastMessageAtMs = 0L; private static long lastMessageAtMs = 0L;
@ -38,7 +38,7 @@ public final class AutismClientMessaging {
public static void sendPrefixed(String message) { public static void sendPrefixed(String message) {
MutableComponent text = Component.empty() MutableComponent text = Component.empty()
.append(themedTag("AUTISM")) .append(themedTag("GEC"))
.append(buildBodyText(message)); .append(buildBodyText(message));
send(text); send(text);
} }
@ -563,8 +563,7 @@ public final class AutismClientMessaging {
private static String normalizeDuplicateKey(String message) { private static String normalizeDuplicateKey(String message) {
if (message == null) return ""; if (message == null) return "";
return stripLegacyCodes(normalizeLegacyFormatting(message)) return stripAutismPrefix(stripLegacyCodes(normalizeLegacyFormatting(message)))
.replace(PREFIX_TEXT, "")
.replaceAll("\\s+", " ") .replaceAll("\\s+", " ")
.trim() .trim()
.toLowerCase(); .toLowerCase();

View file

@ -292,7 +292,7 @@ public final class AutismHudManager {
case WORLD_TIME -> "Current world day time."; case WORLD_TIME -> "Current world day time.";
case REAL_TIME -> "Local system time."; case REAL_TIME -> "Local system time.";
case ROTATION -> "Camera direction, yaw, and pitch."; case ROTATION -> "Camera direction, yaw, and pitch.";
case WATERMARK -> "Movable AUTISM Client logo image."; case WATERMARK -> "Movable GEC Client logo image.";
case ARMOR -> "Equipped armor with vanilla item overlays."; case ARMOR -> "Equipped armor with vanilla item overlays.";
case INVENTORY -> "Main inventory grid."; case INVENTORY -> "Main inventory grid.";
case ITEM_COUNTER -> "Counts a picked or held item across the inventory."; case ITEM_COUNTER -> "Counts a picked or held item across the inventory.";

View file

@ -870,7 +870,7 @@ public class AutismMacroListOverlay extends AutismOverlayBase {
localSection.add(DisplayItem.localMacro(macro)); localSection.add(DisplayItem.localMacro(macro));
} }
if (!localSection.isEmpty()) { if (!localSection.isEmpty()) {
items.add(DisplayItem.section("AUTISM Client Macros", AutismTheme.recolor(0xFFFF5555, AutismTheme.Channel.ACCENT))); items.add(DisplayItem.section("GEC Client Macros", AutismTheme.recolor(0xFFFF5555, AutismTheme.Channel.ACCENT)));
items.addAll(localSection); items.addAll(localSection);
} }
@ -887,7 +887,7 @@ public class AutismMacroListOverlay extends AutismOverlayBase {
} }
if (!remoteSection.isEmpty()) { if (!remoteSection.isEmpty()) {
if (localSection.isEmpty()) { if (localSection.isEmpty()) {
items.add(DisplayItem.section("AUTISM Client Macros", AutismTheme.recolor(0xFFFF5555, AutismTheme.Channel.ACCENT))); items.add(DisplayItem.section("GEC Client Macros", AutismTheme.recolor(0xFFFF5555, AutismTheme.Channel.ACCENT)));
} }
items.addAll(remoteSection); items.addAll(remoteSection);
} }

View file

@ -17,7 +17,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public final class AutismWindowBranding { public final class AutismWindowBranding {
public static final String WINDOW_TITLE = "AUTISM Client"; public static final String WINDOW_TITLE = "GEC Client";
private static final String ICON_ROOT = "assets/autismclient/icons/window/"; private static final String ICON_ROOT = "assets/autismclient/icons/window/";
private static final int[] ICON_SIZES = {16, 32, 48, 128, 256}; private static final int[] ICON_SIZES = {16, 32, 48, 128, 256};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 654 B

After

Width:  |  Height:  |  Size: 674 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

View file

@ -1,15 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg id="a" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1191.36" height="114.62" viewBox="0 0 1191.36 114.62"> <svg xmlns="http://www.w3.org/2000/svg" width="1191.36" height="160" viewBox="0 0 1191.36 160">
<path d="M39.8,21.38h33.46l38.73,72.19h-31.69l-5.69-12.35h-36.15l-5.69,12.35H1.07L39.8,21.38ZM46.62,63.59h19.82l-9.88-21.32-9.94,21.32Z" fill="#ec2027"/> <defs>
<path d="M177.73,21.27h28.2v38.78c.11,27.29-22.24,35.13-49.31,35.18-27.07-.05-49.41-7.9-49.31-35.18V21.27h28.14v37.01c-.11,11.87,9.61,13.91,21.16,14.07,11.49-.16,21.27-2.2,21.11-14.07V21.27Z" fill="#ec2027"/> <linearGradient id="gec-accent" x1="0" y1="0" x2="1" y2="0">
<path d="M248.68,93.56v-49.31h-33.46v-22.88h95.07v22.88h-33.46v49.31h-28.14Z" fill="#ec2027"/> <stop offset="0" stop-color="#ff4a58"/>
<path d="M347.83,21.27v72.19h-28.15V21.27h28.15Z" fill="#ec2027"/> <stop offset="1" stop-color="#be5bff"/>
<path d="M404.98,49.2c20.14,1.02,48.45,2.42,48.39,20.52,0,20.62-23.63,25.51-48.98,25.51-25.3-.05-46.3-3.12-48.98-25.51h29.49c3.22,5.59,10.69,7.04,19.5,7.04s19.5-1.45,19.5-7.04c0-3.17-8.75-3.65-20.09-4.19-20.14-1.02-48.45-2.42-48.39-20.46,0-20.62,23.63-25.57,48.98-25.57,25.3.16,46.3,3.01,48.98,25.57h-29.49c-3.22-5.69-10.69-7.04-19.5-7.04s-19.5,1.29-19.5,7.04c0,3.17,8.75,3.6,20.09,4.14Z" fill="#ec2027"/> </linearGradient>
<path d="M460.89,21.27h35.23l28.14,36.09,28.2-36.09h35.18v72.19h-28.14v-38.51l-28.2,38.51h-14.07l-28.2-38.51v38.51h-28.14V21.27Z" fill="#ec2027"/> </defs>
<path d="M741.96,63.54c-1.77,24.38-23.15,31.69-49.15,31.69-27.07-.05-49.41-7.9-49.31-35.23v-5.26c-.11-27.29,22.24-35.13,49.31-35.23,26,.05,47.37,7.36,49.15,31.69h-28.84c-2.63-7.09-10.63-8.75-20.3-8.75-11.49.16-21.27,2.2-21.11,14.07v1.77c-.16,11.76,9.61,13.91,21.11,14.07,9.67,0,17.72-1.72,20.3-8.81h28.84Z" fill="#ec2027"/> <path d="M95 126 160 14h72l65 112h-54l-11-22h-72l-11 22zm83-62h36l-18-34z" fill="url(#gec-accent)"/>
<path d="M778.49,21.27v49.31h56.34v22.88h-84.49V21.27h28.14Z" fill="#ec2027"/> <text x="650" y="108" fill="#f6f4ff" font-family="Segoe UI,Arial,sans-serif" font-size="100" font-weight="700" letter-spacing="4" text-anchor="middle">GEC CLIENT</text>
<path d="M872.48,21.27v72.19h-28.14V21.27h28.14Z" fill="#ec2027"/> <path d="M95 146h1000" fill="none" stroke="url(#gec-accent)" stroke-linecap="round" stroke-width="5"/>
<path d="M887.41,21.38h84.49v18.48h-56.34v9.24h56.34v16.7h-56.34v9.24h56.34v18.53h-84.49V21.38Z" fill="#ec2027"/> </svg>
<path d="M1057.25,21.27h28.2v72.19h-31.69l-38.78-44.1v44.1h-28.14V21.27h38.73l31.69,38.24V21.27Z" fill="#ec2027"/>
<path d="M1128.68,93.56v-49.31h-33.46v-22.88h95.07v22.88h-33.46v49.31h-28.14Z" fill="#ec2027"/>
</svg>

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 719 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 288 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Before After
Before After

View file

@ -2,8 +2,8 @@
"schemaVersion": 1, "schemaVersion": 1,
"id": "autism", "id": "autism",
"version": "${version}", "version": "${version}",
"name": "AUTISM Client", "name": "GEC Client",
"description": "AUTISM Client is an elite packet, macro, and duping toolkit built for players who want total control.", "description": "GEC Client is an advanced Minecraft client focused on modules, macros, visual customization, and addon support.",
"authors": [ "authors": [
"Melonik" "Melonik"
], ],