PacketManager.java 943 B

123456789101112131415161718192021222324252627
  1. package com.hexdragon.util.network;
  2. import net.minecraft.network.PacketBuffer;
  3. import net.minecraft.util.ResourceLocation;
  4. import net.minecraftforge.fml.network.NetworkRegistry;
  5. import net.minecraftforge.fml.network.simple.SimpleChannel;
  6. import java.util.function.Function;
  7. public class PacketManager {
  8. // 获取数据包的种类 ID
  9. private static int ID = 0;
  10. private static int nextID() {return ID++;}
  11. // 创建 channel
  12. public static SimpleChannel channel;
  13. public static void create(String modid) {
  14. PacketManager.channel = NetworkRegistry.newSimpleChannel(new ResourceLocation(modid + ":packets"), () -> "1.0", (s) -> true, (s) -> true);
  15. }
  16. // 注册数据包
  17. public static <T extends Packet> void registerPacket(Class<T> messageType, Function<PacketBuffer, T> decoder) {
  18. channel.registerMessage(nextID(), messageType, T::encoder, decoder, T::onServerReceivePacketConsumer);
  19. }
  20. }