From 2ed950db0170d650a43c78f10569b1fb42c2c1ef Mon Sep 17 00:00:00 2001 From: Pyrbu Date: Sun, 23 Apr 2023 20:24:31 +0100 Subject: [PATCH] start work --- src/main/java/lol/pyr/znpcsplus/npc/NPC.java | 4 ++++ .../java/lol/pyr/znpcsplus/npc/NPCType.java | 4 ++++ .../pyr/znpcsplus/packets/PacketFactory.java | 21 ++++++++++++++++ .../pyr/znpcsplus/packets/V1_8Factory.java | 4 ++++ .../lol/pyr/znpcsplus/util/LazyLoader.java | 24 +++++++++++++++++++ 5 files changed, 57 insertions(+) create mode 100644 src/main/java/lol/pyr/znpcsplus/npc/NPC.java create mode 100644 src/main/java/lol/pyr/znpcsplus/npc/NPCType.java create mode 100644 src/main/java/lol/pyr/znpcsplus/packets/PacketFactory.java create mode 100644 src/main/java/lol/pyr/znpcsplus/packets/V1_8Factory.java create mode 100644 src/main/java/lol/pyr/znpcsplus/util/LazyLoader.java diff --git a/src/main/java/lol/pyr/znpcsplus/npc/NPC.java b/src/main/java/lol/pyr/znpcsplus/npc/NPC.java new file mode 100644 index 0000000..d619ef8 --- /dev/null +++ b/src/main/java/lol/pyr/znpcsplus/npc/NPC.java @@ -0,0 +1,4 @@ +package lol.pyr.znpcsplus.npc; + +public class NPC { +} diff --git a/src/main/java/lol/pyr/znpcsplus/npc/NPCType.java b/src/main/java/lol/pyr/znpcsplus/npc/NPCType.java new file mode 100644 index 0000000..4f90fe4 --- /dev/null +++ b/src/main/java/lol/pyr/znpcsplus/npc/NPCType.java @@ -0,0 +1,4 @@ +package lol.pyr.znpcsplus.npc; + +public class NPCType { +} diff --git a/src/main/java/lol/pyr/znpcsplus/packets/PacketFactory.java b/src/main/java/lol/pyr/znpcsplus/packets/PacketFactory.java new file mode 100644 index 0000000..ce5f394 --- /dev/null +++ b/src/main/java/lol/pyr/znpcsplus/packets/PacketFactory.java @@ -0,0 +1,21 @@ +package lol.pyr.znpcsplus.packets; + +import com.github.retrooper.packetevents.PacketEvents; +import com.github.retrooper.packetevents.manager.server.ServerVersion; +import lol.pyr.znpcsplus.util.LazyLoader; + +import java.util.Map; + +public interface PacketFactory { + + Map> factories = buildFactoryMap(); + + + static PacketFactory get() { + return factories.get(PacketEvents.getAPI().getServerManager().getVersion()).get(); + } + + private static Map> buildFactoryMap() { + + } +} diff --git a/src/main/java/lol/pyr/znpcsplus/packets/V1_8Factory.java b/src/main/java/lol/pyr/znpcsplus/packets/V1_8Factory.java new file mode 100644 index 0000000..6db778c --- /dev/null +++ b/src/main/java/lol/pyr/znpcsplus/packets/V1_8Factory.java @@ -0,0 +1,4 @@ +package lol.pyr.znpcsplus.packets; + +public class V1_8Factory implements PacketFactory { +} diff --git a/src/main/java/lol/pyr/znpcsplus/util/LazyLoader.java b/src/main/java/lol/pyr/znpcsplus/util/LazyLoader.java new file mode 100644 index 0000000..e39d16a --- /dev/null +++ b/src/main/java/lol/pyr/znpcsplus/util/LazyLoader.java @@ -0,0 +1,24 @@ +package lol.pyr.znpcsplus.util; + +public class LazyLoader { + private final ObjectProvider provider; + private T value; + + private LazyLoader(ObjectProvider provider) { + this.provider = provider; + } + + public T get() { + if (value == null) value = provider.provide(); + return value; + } + + public static LazyLoader of(ObjectProvider provider) { + return new LazyLoader<>(provider); + } + + @FunctionalInterface + public interface ObjectProvider { + T provide(); + } +}