package me.km.networking; import io.netty.buffer.ByteBuf; import java.nio.charset.StandardCharsets; import me.km.entities.EntityHuman; import me.km.entities.HumanSkinLoader; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; public class HumanUpdate implements IMessage { private int humanId; private String name; public HumanUpdate() { humanId = -1; name = null; } public HumanUpdate(EntityHuman h) { humanId = h.getEntityId(); name = h.getSkinName(); } @Override public void fromBytes(ByteBuf buf) { humanId = buf.readInt(); int length = buf.readInt(); name = buf.readBytes(length).toString(StandardCharsets.UTF_8); } @Override public void toBytes(ByteBuf buf) { buf.writeInt(humanId); byte[] b = name.getBytes(StandardCharsets.UTF_8); buf.writeInt(b.length); buf.writeBytes(b); } public static class Handler implements IMessageHandler { @Override public IMessage onMessage(HumanUpdate message, MessageContext ctx) { Entity ent = Minecraft.getMinecraft().world.getEntityByID(message.humanId); if(ent == null || ent.getClass() != EntityHuman.class) { return null; } EntityHuman h = (EntityHuman) ent; h.setSkinName(message.name); h.setTexture(HumanSkinLoader.INSTANCE.getTexture(message.name, loc -> h.setTexture(loc))); return null; } } }