79 lines
2.1 KiB
Java
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;
|
|
}
|
|
|
|
}
|
|
|
|
}
|