Skip to content

Added a protocol screen#126

Closed
26140070-cpu wants to merge 26 commits into
Cocolots:masterfrom
26140070-cpu:master
Closed

Added a protocol screen#126
26140070-cpu wants to merge 26 commits into
Cocolots: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

@Cocolots

Cocolots commented Jun 2, 2026

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

@26140070-cpu

Copy link
Copy Markdown
Author

@coltonk9043 can u review it?

@Cocolots

Copy link
Copy Markdown
Owner

Yes sorry, life has just been busy. I have reviewed most of the code and have a couple things mind that I'll mention once I get a chance to test it. I'll definitely do it this weekend.

@26140070-cpu

Copy link
Copy Markdown
Author

Yes sorry, life has just been busy. I have reviewed most of the code and have a couple things mind that I'll mention once I get a chance to test it. I'll definitely do it this weekend.

alr no problem take ur time

@Cocolots

Copy link
Copy Markdown
Owner

One more thing- the spoof toggle doesn't appear to do anything. With it off, client information is still spoofed.

@26140070-cpu
26140070-cpu marked this pull request as draft June 30, 2026 23:13
@Cocolots Cocolots mentioned this pull request Jul 1, 2026
@Cocolots

Cocolots commented Jul 1, 2026

Copy link
Copy Markdown
Owner

Closing, see #137

@Cocolots Cocolots closed this Jul 1, 2026
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