PrettyPipes/src/main/java/de/ellpeck/prettypipes/packets/PacketRequest.java

62 lines
1.9 KiB
Java
Raw Normal View History

2020-05-07 21:10:29 +02:00
package de.ellpeck.prettypipes.packets;
import de.ellpeck.prettypipes.Utility;
2021-12-02 14:44:26 +01:00
import de.ellpeck.prettypipes.terminal.ItemTerminalBlockEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.player.Player;
2021-12-02 12:31:04 +01:00
import net.minecraft.world.item.ItemStack;
2024-02-03 15:17:58 +01:00
import net.neoforged.neoforge.network.NetworkEvent;
2020-05-07 21:10:29 +02:00
import java.util.function.Supplier;
public class PacketRequest {
private BlockPos pos;
private ItemStack stack;
private int nbtHash;
2020-05-07 21:10:29 +02:00
private int amount;
public PacketRequest(BlockPos pos, ItemStack stack, int amount) {
this.pos = pos;
this.stack = stack;
if (stack.hasTag())
this.nbtHash = stack.getTag().hashCode();
2020-05-07 21:10:29 +02:00
this.amount = amount;
}
private PacketRequest() {
}
2021-12-02 14:44:26 +01:00
public static PacketRequest fromBytes(FriendlyByteBuf buf) {
2021-12-02 17:46:56 +01:00
var packet = new PacketRequest();
2020-05-07 21:10:29 +02:00
packet.pos = buf.readBlockPos();
2021-12-02 14:44:26 +01:00
packet.stack = buf.readItem();
packet.nbtHash = buf.readVarInt();
2020-05-07 21:10:29 +02:00
packet.amount = buf.readVarInt();
return packet;
}
2021-12-02 14:44:26 +01:00
public static void toBytes(PacketRequest packet, FriendlyByteBuf buf) {
2020-05-07 21:10:29 +02:00
buf.writeBlockPos(packet.pos);
buf.writeItem(packet.stack);
buf.writeVarInt(packet.nbtHash);
2020-05-07 21:10:29 +02:00
buf.writeVarInt(packet.amount);
}
@SuppressWarnings("Convert2Lambda")
public static void onMessage(PacketRequest message, Supplier<NetworkEvent.Context> ctx) {
ctx.get().enqueueWork(new Runnable() {
@Override
public void run() {
2021-12-02 14:44:26 +01:00
Player player = ctx.get().getSender();
2023-07-07 19:54:52 +02:00
var tile = Utility.getBlockEntity(ItemTerminalBlockEntity.class, player.level(), message.pos);
2020-05-07 21:10:29 +02:00
message.stack.setCount(message.amount);
tile.requestItem(player, message.stack, message.nbtHash);
2020-05-07 21:10:29 +02:00
}
});
ctx.get().setPacketHandled(true);
}
}