12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package me.km.networking;
- import java.nio.charset.StandardCharsets;
- import java.util.function.Supplier;
- import net.minecraft.network.PacketBuffer;
- import net.minecraftforge.fml.network.NetworkEvent;
- public class PlayerHead {
- // 1 - add - index, name, x, y, scale
- // 2 - remove - index
- // 3 - clear
- private byte action;
- private byte index;
- private String name;
- private int x;
- private int y;
- private byte scale;
- public PlayerHead() {
- action = -1;
- index = -1;
- name = "";
- x = -1;
- y = -1;
- scale = -1;
- }
- public PlayerHead(byte action, byte index, String name, int x, int y, byte scale) {
- this.action = action;
- this.index = index;
- if(name.length() > 16) {
- this.name = name.substring(0, 16);
- } else {
- this.name = name;
- }
- this.x = x;
- this.y = y;
- this.scale = scale;
- }
- public static void writeBytes(PlayerHead ph, PacketBuffer buf) {
- buf.writeByte(ph.action);
- switch(ph.action) {
- case 1:
- buf.writeInt(ph.x);
- buf.writeInt(ph.y);
- buf.writeByte(ph.scale);
- buf.writeByte(ph.index);
- byte[] b = ph.name.getBytes(StandardCharsets.UTF_8);
- buf.writeInt(b.length);
- buf.writeBytes(b);
- break;
- case 2:
- buf.writeByte(ph.index);
- break;
- }
- }
- public static PlayerHead fromBytes(PacketBuffer buf) {
- PlayerHead ph = new PlayerHead();
- ph.action = buf.readByte();
- switch(ph.action) {
- case 1:
- ph.x = buf.readInt();
- ph.y = buf.readInt();
- ph.scale = buf.readByte();
- ph.index = buf.readByte();
- int length = buf.readInt();
- ph.name = buf.readBytes(length).toString(StandardCharsets.UTF_8);
- break;
- case 2:
- ph.index = buf.readByte();
- break;
- }
- return ph;
- }
- public static void handle(PlayerHead ph, Supplier<NetworkEvent.Context> context) {
- context.get().enqueueWork(() -> {
- switch(ph.action) {
- case 1:
- PlayerHeadGui.INSTANCE.add(ph.index, ph.x, ph.y, ph.scale, ph.name);
- break;
- case 2:
- PlayerHeadGui.INSTANCE.remove(ph.index);
- break;
- case 3:
- PlayerHeadGui.INSTANCE.clear();
- break;
- }
- });
- context.get().setPacketHandled(true);
- }
- }
|