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<ServerVersion, LazyLoader<? extends PacketFactory>> factories = buildFactoryMap(); + + + static PacketFactory get() { + return factories.get(PacketEvents.getAPI().getServerManager().getVersion()).get(); + } + + private static Map<ServerVersion, LazyLoader<? extends PacketFactory>> 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 <T> { + private final ObjectProvider<T> provider; + private T value; + + private LazyLoader(ObjectProvider<T> provider) { + this.provider = provider; + } + + public T get() { + if (value == null) value = provider.provide(); + return value; + } + + public static <T> LazyLoader<T> of(ObjectProvider<T> provider) { + return new LazyLoader<>(provider); + } + + @FunctionalInterface + public interface ObjectProvider<T> { + T provide(); + } +}