mardi 16 mars 2021

How can I change a number in a interface object from a variable in Java using something like Reflection or Javassist

I have a variable, which is a new interface. I would like to change something inside of that. I am not sure if this is possible with something like Reflection or Javassist.

This is fairly hard to explain, but if you look at the example you might understand me a bit better.

If you need more information, please ask because I really need to know this.

(this is code from ProtocolLib, which uses Netty. I want to patch something in ProtocolLib at runtime; hence I want to use something like Reflection or Javassist)

Here is an example:

final ChannelInboundHandler endInitProtocol = new ChannelInitializer<Channel>() {
    @Override
    protected void initChannel(final Channel channel) throws Exception {
        try {
synchronized (networkManagers) {
    if (MinecraftVersion.getCurrentVersion().getMinor() >= 12 /* I want to change this 12 to an 8 using Reflection or something like Javassist */) {
    channel.eventLoop().submit(() ->
injectionFactory.fromChannel(channel, ProtocolInjector.this, playerFactory).inject());
    } else {
        injectionFactory.fromChannel(channel, ProtocolInjector.this, playerFactory).inject();
    }
}
        } catch (Exception ex) {
reporter.reportDetailed(ProtocolInjector.this, Report.newBuilder(REPORT_CANNOT_INJECT_INCOMING_CHANNEL).messageParam(channel).error(ex));
        }
    }
};




Aucun commentaire:

Enregistrer un commentaire