CreateMod/src/main/java/com/simibubi/create/content/contraptions/ContraptionColliderLockPacket.java
2023-05-21 23:53:09 +02:00

79 lines
2.1 KiB
Java

package com.simibubi.create.content.contraptions;
import com.simibubi.create.AllPackets;
import com.simibubi.create.foundation.networking.SimplePacketBase;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.network.NetworkEvent.Context;
import net.minecraftforge.network.PacketDistributor;
public class ContraptionColliderLockPacket extends SimplePacketBase {
protected int contraption;
protected double offset;
private int sender;
public ContraptionColliderLockPacket(int contraption, double offset, int sender) {
this.contraption = contraption;
this.offset = offset;
this.sender = sender;
}
public ContraptionColliderLockPacket(FriendlyByteBuf buffer) {
contraption = buffer.readVarInt();
offset = buffer.readDouble();
sender = buffer.readVarInt();
}
@Override
public void write(FriendlyByteBuf buffer) {
buffer.writeVarInt(contraption);
buffer.writeDouble(offset);
buffer.writeVarInt(sender);
}
@Override
public boolean handle(Context context) {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT,
() -> () -> ContraptionCollider.lockPacketReceived(contraption, sender, offset));
return true;
}
public static class ContraptionColliderLockPacketRequest extends SimplePacketBase {
protected int contraption;
protected double offset;
public ContraptionColliderLockPacketRequest(int contraption, double offset) {
this.contraption = contraption;
this.offset = offset;
}
public ContraptionColliderLockPacketRequest(FriendlyByteBuf buffer) {
contraption = buffer.readVarInt();
offset = buffer.readDouble();
}
@Override
public void write(FriendlyByteBuf buffer) {
buffer.writeVarInt(contraption);
buffer.writeDouble(offset);
}
@Override
public boolean handle(Context context) {
context.enqueueWork(() -> {
AllPackets.getChannel()
.send(PacketDistributor.TRACKING_ENTITY.with(context::getSender),
new ContraptionColliderLockPacket(contraption, offset, context.getSender()
.getId()));
});
return true;
}
}
}