Skip to content

Added a protocol screen#126

Open
26140070-cpu wants to merge 20 commits into
coltonk9043:masterfrom
26140070-cpu:master
Open

Added a protocol screen#126
26140070-cpu wants to merge 20 commits into
coltonk9043:masterfrom
26140070-cpu:master

Conversation

@26140070-cpu

Copy link
Copy Markdown

This PR adds an Protocol and Client Brand Spoofing system. It allows users to dynamically alter how the client identifies itself to Minecraft servers through a new visual interface accessible directly from the multiplayer menu. Features On-the-fly customization of the version name, protocol number, and resource pack version (Pack Version) assigned internally by the client. Developer Notes and Future Improvements Compatibility Note: A visual warning was added to the menu because servers utilizing ViaVersion or rigid network-translation proxies might experience packet de-syncs if the spoofed protocol severely mismatches the real client codebase capabilities. Known UI Glitch: The multi-line informational note at the top of the protocol screen occasionally clips or gets cut off depending on the window's resolution scale.

Captura de pantalla 2026-06-02 a la(s) 9 03 15 a m

you change your protocol and package to trick the servers into thinking you actually have a version and loader, whether it's Forge Fabric or vanilla (I don't think NeoForge and Quilit are necessary)
added the protocol button
added things to do protocol works
@26140070-cpu

Copy link
Copy Markdown
Author

sorry in protocol screen I added my user on discord but my user in GitHub is Donalp012 or 26140070-cpu

@coltonk9043

Copy link
Copy Markdown
Owner

Thanks for the PR! I will test it as soon as possible.

A few things:

  1. The initialization / spoofing code needs a little bit of polish. The initialization and spoofing logic should be moved to a new class (ProtocolManager) so that the responsibility is not split between the Aoba and ProtocolScreen classes. This will make it easier to debug, unit test, and audit.
  2. In the reflection code, we should clean up the long namespaces if possible (net.minecraft.WorldVersion for example can just be imported and reduced to WorldVersion).
  3. Is it possible to replace reflection with a Mixin approach instead? It may be a better solution if we can confirm that these variables are accessed through a getter, which we can inject into.
@ModifyConstant(method = "protocolVersion()I", constant = @Constant(intValue = 4))
private int injected(int value) {
  return NEW_VERSION;
}

OR

@Mixin(SharedConstants.class)
public class SharedConstantsMixin {

    @Inject(method = "getCurrentVersion", at = @At("HEAD"), cancellable = true)
    private static void onCurrentVersion(CallbackInfoReturnable<WorldVersion> cir) {
        cir.setReturnValue(myCustomVersion);
    }
}

@26140070-cpu

Copy link
Copy Markdown
Author

ale

Thanks for the PR! I will test it as soon as possible.

A few things:

  1. The initialization / spoofing code needs a little bit of polish. The initialization and spoofing logic should be moved to a new class (ProtocolManager) so that the responsibility is not split between the Aoba and ProtocolScreen classes. This will make it easier to debug, unit test, and audit.
  2. In the reflection code, we should clean up the long namespaces if possible (net.minecraft.WorldVersion for example can just be imported and reduced to WorldVersion).
  3. Is it possible to replace reflection with a Mixin approach instead? It may be a better solution if we can confirm that these variables are accessed through a getter, which we can inject into.
@ModifyConstant(method = "protocolVersion()I", constant = @Constant(intValue = 4))
private int injected(int value) {
  return NEW_VERSION;
}

OR

@Mixin(SharedConstants.class)
public class SharedConstantsMixin {

    @Inject(method = "getCurrentVersion", at = @At("HEAD"), cancellable = true)
    private static void onCurrentVersion(CallbackInfoReturnable<WorldVersion> cir) {
        cir.setReturnValue(myCustomVersion);
    }
}

Thanks for the feedback I'll gonna do that rn. When I finish ill send the commit

@26140070-cpu

26140070-cpu commented Jun 3, 2026

Copy link
Copy Markdown
Author

I add the protocol manager natives Mixins to get the package and the brand added new font cause looks sooo tuff, return Aoba.java how it was before and added to more loaders (quilt, NeoForge and liteloader)
Captura de pantalla 2026-06-02 a la(s) 6 12 18 p m

@26140070-cpu

Copy link
Copy Markdown
Author

Gui overhaul added new things
Captura de pantalla 2026-06-03 a la(s) 11 12 53 a m

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants