31 lines
1.4 KiB
Java
31 lines
1.4 KiB
Java
package com.example.signleakshield.mixin;
|
|
|
|
import com.example.signleakshield.ExploitState;
|
|
import com.example.signleakshield.SignLeakShieldTraceLog;
|
|
import com.example.signleakshield.SignTextExtractor;
|
|
import net.minecraft.block.entity.BlockEntityType;
|
|
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
|
import net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket;
|
|
import net.minecraft.util.math.BlockPos;
|
|
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 abstract class ClientPlayNetworkHandlerBlockEntityUpdateMixin {
|
|
@Inject(method = "onBlockEntityUpdate(Lnet/minecraft/network/packet/s2c/play/BlockEntityUpdateS2CPacket;)V", at = @At("HEAD"))
|
|
private void signleakshield$captureSign(BlockEntityUpdateS2CPacket packet, CallbackInfo ci) {
|
|
if (packet.getNbt() == null) {
|
|
return;
|
|
}
|
|
|
|
if (packet.getBlockEntityType() != BlockEntityType.SIGN && packet.getBlockEntityType() != BlockEntityType.HANGING_SIGN) {
|
|
return;
|
|
}
|
|
|
|
BlockPos pos = packet.getPos();
|
|
ExploitState.SIGNS.put(pos.toImmutable(), SignTextExtractor.fromNbt(packet.getNbt()));
|
|
}
|
|
}
|