A ViaVersion hack library to intercept and override packet mappers of specific protocols.
public class DemoBukkitPlugin extends JavaPlugin {
@Override
public void onLoad() {
// Shortcut of Via.getManager().getProtocolManager().getProtocol();
Protocol1_9To1_8 proto = ViaAlfajor.getProtocol(Protocol1_9To1_8.class);
// Class to start the dirty tricks
ProtocolHandle<ClientboundPackets1_8, ServerboundPackets1_9> handle = ProtocolHandle.wrap(protocol);
// Inject a PacketRemapper into spawn_mob remappers
// It wouldn't override any registered remapper
handle.injectClientbound(ClientboundPackets1_8.SPAWN_MOB,
remapper -> {
// Do whatever you want here
});
// Inject a remapper for serverbound packets
handle.injectServerbound(ServerboundPackets1_9.VEHICLE_MOVE,
remapper -> {
//...
}
);
// Inject a remapper overriding all the spawn_mob remappers.
handle.injectOverrideClientbound(ClientboundPackets1_8.SPAWN_MOB,
remapper -> {
// ...
});
}
}
Note:
- PacketRemapper needs to map their fields
- Be careful with adding remappers; fields and objects might already be consumed and will throw an exception
There is a plugin example of coloured beds for clients that support it with a 1.8.8 server base.
<repositories>
<repository>
<id>unnamed-snapshots</id>
<url>https://repo.unnamed.team/repository/unnamed-snapshots/</url>
</repository>
</repositories>
<dependency>
<groupId>me.oczi.alfajor</groupId>
<artifactId>Alfajor-api</artifactId>
<version>1.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
repositories {
maven { url 'https://repo.unnamed.team/repository/unnamed-snapshots/' }
}
compileOnly('me.oczi.alfajor:Alfajor-api:1.1-SNAPSHOT')
The entire project is built with JDK 8 using ViaVersion 4.4.2 as the target.
The API is licensed under The MIT License and the plugin example is under GPL v3 License.