ModPacketHandler.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package me.km.networking;
  2. import me.km.KajetansMod;
  3. import me.km.inventory.ModInventory;
  4. import net.minecraft.entity.player.ServerPlayerEntity;
  5. import net.minecraft.util.ResourceLocation;
  6. import net.minecraftforge.fml.network.NetworkRegistry;
  7. import net.minecraftforge.fml.network.PacketDistributor;
  8. import net.minecraftforge.fml.network.simple.SimpleChannel;
  9. public class ModPacketHandler
  10. {
  11. private static final String PROTOCOL_VERSION = "1";
  12. private static final SimpleChannel INSTANCE = NetworkRegistry.ChannelBuilder
  13. .named(new ResourceLocation(KajetansMod.MODID, "main"))
  14. .clientAcceptedVersions(PROTOCOL_VERSION::equals)
  15. .serverAcceptedVersions(PROTOCOL_VERSION::equals)
  16. .networkProtocolVersion(() -> PROTOCOL_VERSION)
  17. .simpleChannel();
  18. public static void init()
  19. {
  20. int id = 0;
  21. INSTANCE.registerMessage(id++, PlayerDisplay.class, PlayerDisplay::writeBytes, PlayerDisplay::fromBytes, PlayerDisplay::handle);
  22. INSTANCE.registerMessage(id++, FunctionKey.class, FunctionKey::writeBytes, FunctionKey::fromBytes, FunctionKey::handle);
  23. INSTANCE.registerMessage(id++, CustomInventory.class, CustomInventory::writeBytes, CustomInventory::fromBytes, CustomInventory::handle);
  24. INSTANCE.registerMessage(id++, StatusDisplay.class, StatusDisplay::writeBytes, StatusDisplay::fromBytes, StatusDisplay::handle);
  25. INSTANCE.registerMessage(id++, PlayerHead.class, PlayerHead::writeBytes, PlayerHead::fromBytes, PlayerHead::handle);
  26. INSTANCE.registerMessage(id++, ItemStackDisplay.class, ItemStackDisplay::writeBytes, ItemStackDisplay::fromBytes, ItemStackDisplay::handle);
  27. INSTANCE.registerMessage(id++, PlayerLeftClickEmpty.class, PlayerLeftClickEmpty::writeBytes, PlayerLeftClickEmpty::fromBytes, PlayerLeftClickEmpty::handle);
  28. }
  29. private static void sendToPlayer(ServerPlayerEntity p, Object msg)
  30. {
  31. INSTANCE.send(PacketDistributor.PLAYER.with(() -> p), msg);
  32. }
  33. private static void sendToPlayers(Object msg)
  34. {
  35. INSTANCE.send(PacketDistributor.ALL.noArg(), msg);
  36. }
  37. private static void sendToServer(Object msg)
  38. {
  39. INSTANCE.sendToServer(msg);
  40. }
  41. public static void sendToDisplay(ServerPlayerEntity p, byte action, byte index, String text)
  42. {
  43. sendToPlayer(p, new PlayerDisplay(action, index, text));
  44. }
  45. public static void sendFunctionKey(int key)
  46. {
  47. sendToServer(new FunctionKey(key));
  48. }
  49. public static void sendCustomInventory(ServerPlayerEntity p, int id, String title, ModInventory inv)
  50. {
  51. sendToPlayer(p, new CustomInventory(id, title, inv));
  52. }
  53. public static void addStatus(ServerPlayerEntity p, byte index, String text)
  54. {
  55. sendToPlayer(p, new StatusDisplay((byte) 1, index, text));
  56. }
  57. public static void addTimedStatus(ServerPlayerEntity p, byte index, String text, int time)
  58. {
  59. sendToPlayer(p, new StatusDisplay((byte) 1, index, time, text));
  60. }
  61. public static void removeStatus(ServerPlayerEntity p, byte index)
  62. {
  63. sendToPlayer(p, new StatusDisplay((byte) 2, index, ""));
  64. }
  65. public static void clearStatus(ServerPlayerEntity p)
  66. {
  67. sendToPlayer(p, new StatusDisplay((byte) 3, (byte) 0, ""));
  68. }
  69. public static void sendToHead(ServerPlayerEntity p, byte action, byte index, String name, int x, int y, byte scale)
  70. {
  71. sendToPlayer(p, new PlayerHead(action, index, name, x, y, scale));
  72. }
  73. public static void sendLeftClickEmpty()
  74. {
  75. sendToServer(new PlayerLeftClickEmpty());
  76. }
  77. //--------------------------------------------------------------------------
  78. // item stack display
  79. //--------------------------------------------------------------------------
  80. public static void setItemStackIndex(ServerPlayerEntity p, byte index, int iconIndex, int count)
  81. {
  82. sendToPlayer(p, new ItemStackDisplay(index, iconIndex, count));
  83. }
  84. public static void setItemStackActive(ServerPlayerEntity p, boolean active)
  85. {
  86. sendToPlayer(p, new ItemStackDisplay(active ? (byte) -1 : (byte) -2, -1, -1));
  87. }
  88. public static void clearItemStacks(ServerPlayerEntity p)
  89. {
  90. sendToPlayer(p, new ItemStackDisplay((byte) -3, -1, -1));
  91. }
  92. }