AdvancedScripts/src/main/java/de/zonlykroks/advancedscripts/mixin/ClientPlayNetworkHandlerMix...

32 Zeilen
1.4 KiB
Java

package de.zonlykroks.advancedscripts.mixin;
import de.zonlykroks.advancedscripts.lexer.ScriptSyntaxPacketParser;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(ClientPlayNetworkHandler.class)
public class ClientPlayNetworkHandlerMixin {
private static final Identifier CHANNEL = new Identifier("sw:script_syntax");
@Inject(method = "onCustomPayload", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/CustomPayloadS2CPacket;getData()Lnet/minecraft/network/PacketByteBuf;"), cancellable = true)
public void onCustomPayload(CustomPayloadS2CPacket packet, CallbackInfo ci) {
if (CHANNEL.equals(packet.getChannel())) {
PacketByteBuf buf = packet.getData();
int readableBytes = buf.readableBytes();
StringBuilder st = new StringBuilder();
for (int i = 0; i < readableBytes; i++) {
st.append((char) buf.readByte());
}
ScriptSyntaxPacketParser.parse(st.toString());
ci.cancel();
}
}
}