HumanUpdate.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package me.km.networking;
  2. import io.netty.buffer.ByteBuf;
  3. import java.nio.charset.StandardCharsets;
  4. import me.km.entities.EntityHuman;
  5. import me.km.entities.HumanSkinLoader;
  6. import net.minecraft.client.Minecraft;
  7. import net.minecraft.entity.Entity;
  8. import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
  9. import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
  10. import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
  11. public class HumanUpdate implements IMessage
  12. {
  13. private int humanId;
  14. private String name;
  15. public HumanUpdate()
  16. {
  17. humanId = -1;
  18. name = null;
  19. }
  20. public HumanUpdate(EntityHuman h)
  21. {
  22. humanId = h.getEntityId();
  23. name = h.getSkinName();
  24. }
  25. @Override
  26. public void fromBytes(ByteBuf buf)
  27. {
  28. humanId = buf.readInt();
  29. int length = buf.readInt();
  30. name = buf.readBytes(length).toString(StandardCharsets.UTF_8);
  31. }
  32. @Override
  33. public void toBytes(ByteBuf buf)
  34. {
  35. buf.writeInt(humanId);
  36. byte[] b = name.getBytes(StandardCharsets.UTF_8);
  37. buf.writeInt(b.length);
  38. buf.writeBytes(b);
  39. }
  40. public static class Handler implements IMessageHandler<HumanUpdate, IMessage>
  41. {
  42. @Override
  43. public IMessage onMessage(HumanUpdate message, MessageContext ctx)
  44. {
  45. Entity ent = Minecraft.getMinecraft().world.getEntityByID(message.humanId);
  46. if(ent == null || ent.getClass() != EntityHuman.class)
  47. {
  48. return null;
  49. }
  50. EntityHuman h = (EntityHuman) ent;
  51. h.setSkinName(message.name);
  52. h.setTexture(HumanSkinLoader.INSTANCE.getTexture(message.name, loc -> h.setTexture(loc)));
  53. return null;
  54. }
  55. }
  56. }