BetterEnd/src/main/java/ru/betterend/mixin/client/ClientPlayNetworkHandlerMixin.java
2021-05-27 18:01:31 +03:00

37 lines
No EOL
1.4 KiB
Java

package ru.betterend.mixin.client;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.network.protocol.PacketUtils;
import net.minecraft.network.protocol.game.ClientboundOpenSignEditorPacket;
import net.minecraft.world.level.block.entity.BlockEntity;
import ru.bclib.blockentities.BaseSignBlockEntity;
import ru.bclib.client.gui.BlockSignEditScreen;
@Mixin(ClientPacketListener.class)
public class ClientPlayNetworkHandlerMixin
{
@Shadow
private Minecraft minecraft;
@Shadow
private ClientLevel level;
@Inject(method = "handleOpenSignEditor", at = @At(value = "HEAD"), cancellable = true)
public void be_openSignEditor(ClientboundOpenSignEditorPacket packet, CallbackInfo info) {
PacketUtils.ensureRunningOnSameThread(packet, ClientPacketListener.class.cast(this), minecraft);
BlockEntity blockEntity = level.getBlockEntity(packet.getPos());
if (blockEntity instanceof BaseSignBlockEntity) {
BaseSignBlockEntity sign = (BaseSignBlockEntity) blockEntity;
minecraft.setScreen(new BlockSignEditScreen(sign));
info.cancel();
}
}
}