add skin descriptor factory to the api
This commit is contained in:
parent
d91d86ca88
commit
6b75423f9c
5 changed files with 60 additions and 2 deletions
|
@ -3,9 +3,11 @@ package lol.pyr.znpcsplus.api;
|
||||||
import lol.pyr.znpcsplus.api.entity.EntityPropertyRegistry;
|
import lol.pyr.znpcsplus.api.entity.EntityPropertyRegistry;
|
||||||
import lol.pyr.znpcsplus.api.npc.NpcRegistry;
|
import lol.pyr.znpcsplus.api.npc.NpcRegistry;
|
||||||
import lol.pyr.znpcsplus.api.npc.NpcTypeRegistry;
|
import lol.pyr.znpcsplus.api.npc.NpcTypeRegistry;
|
||||||
|
import lol.pyr.znpcsplus.api.skin.SkinDescriptorFactory;
|
||||||
|
|
||||||
public interface NpcApi {
|
public interface NpcApi {
|
||||||
NpcRegistry getNpcRegistry();
|
NpcRegistry getNpcRegistry();
|
||||||
NpcTypeRegistry getNpcTypeRegistry();
|
NpcTypeRegistry getNpcTypeRegistry();
|
||||||
EntityPropertyRegistry getPropertyRegistry();
|
EntityPropertyRegistry getPropertyRegistry();
|
||||||
|
SkinDescriptorFactory getSkinDescriptorFactory();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
package lol.pyr.znpcsplus.api.skin;
|
||||||
|
|
||||||
|
public interface SkinDescriptorFactory {
|
||||||
|
SkinDescriptor createMirrorDescriptor();
|
||||||
|
SkinDescriptor createRefreshingDescriptor(String playerName);
|
||||||
|
SkinDescriptor createStaticDescriptor(String playerName);
|
||||||
|
SkinDescriptor createStaticDescriptor(String texture, String signature);
|
||||||
|
}
|
|
@ -175,7 +175,7 @@ public class ZNpcsPlus extends JavaPlugin {
|
||||||
shutdownTasks.add(adventure::close);
|
shutdownTasks.add(adventure::close);
|
||||||
if (configManager.getConfig().autoSaveEnabled()) shutdownTasks.add(npcRegistry::save);
|
if (configManager.getConfig().autoSaveEnabled()) shutdownTasks.add(npcRegistry::save);
|
||||||
|
|
||||||
NpcApiProvider.register(this, new ZNpcsPlusApi(npcRegistry, typeRegistry, propertyRegistry));
|
NpcApiProvider.register(this, new ZNpcsPlusApi(npcRegistry, typeRegistry, propertyRegistry, skinCache));
|
||||||
enabled = true;
|
enabled = true;
|
||||||
log(ChatColor.WHITE + " * Loading complete! (" + (System.currentTimeMillis() - before) + "ms)");
|
log(ChatColor.WHITE + " * Loading complete! (" + (System.currentTimeMillis() - before) + "ms)");
|
||||||
log("");
|
log("");
|
||||||
|
|
|
@ -4,19 +4,24 @@ import lol.pyr.znpcsplus.api.NpcApi;
|
||||||
import lol.pyr.znpcsplus.api.entity.EntityPropertyRegistry;
|
import lol.pyr.znpcsplus.api.entity.EntityPropertyRegistry;
|
||||||
import lol.pyr.znpcsplus.api.npc.NpcRegistry;
|
import lol.pyr.znpcsplus.api.npc.NpcRegistry;
|
||||||
import lol.pyr.znpcsplus.api.npc.NpcTypeRegistry;
|
import lol.pyr.znpcsplus.api.npc.NpcTypeRegistry;
|
||||||
|
import lol.pyr.znpcsplus.api.skin.SkinDescriptorFactory;
|
||||||
import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl;
|
import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl;
|
||||||
import lol.pyr.znpcsplus.npc.NpcRegistryImpl;
|
import lol.pyr.znpcsplus.npc.NpcRegistryImpl;
|
||||||
import lol.pyr.znpcsplus.npc.NpcTypeRegistryImpl;
|
import lol.pyr.znpcsplus.npc.NpcTypeRegistryImpl;
|
||||||
|
import lol.pyr.znpcsplus.skin.SkinDescriptorFactoryImpl;
|
||||||
|
import lol.pyr.znpcsplus.skin.cache.SkinCache;
|
||||||
|
|
||||||
public class ZNpcsPlusApi implements NpcApi {
|
public class ZNpcsPlusApi implements NpcApi {
|
||||||
private final NpcRegistryImpl npcRegistry;
|
private final NpcRegistryImpl npcRegistry;
|
||||||
private final NpcTypeRegistryImpl typeRegistry;
|
private final NpcTypeRegistryImpl typeRegistry;
|
||||||
private final EntityPropertyRegistryImpl propertyRegistry;
|
private final EntityPropertyRegistryImpl propertyRegistry;
|
||||||
|
private final SkinDescriptorFactoryImpl skinDescriptorFactory;
|
||||||
|
|
||||||
public ZNpcsPlusApi(NpcRegistryImpl npcRegistry, NpcTypeRegistryImpl typeRegistry, EntityPropertyRegistryImpl propertyRegistry) {
|
public ZNpcsPlusApi(NpcRegistryImpl npcRegistry, NpcTypeRegistryImpl typeRegistry, EntityPropertyRegistryImpl propertyRegistry, SkinCache skinCache) {
|
||||||
this.npcRegistry = npcRegistry;
|
this.npcRegistry = npcRegistry;
|
||||||
this.typeRegistry = typeRegistry;
|
this.typeRegistry = typeRegistry;
|
||||||
this.propertyRegistry = propertyRegistry;
|
this.propertyRegistry = propertyRegistry;
|
||||||
|
this.skinDescriptorFactory = new SkinDescriptorFactoryImpl(skinCache);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -33,4 +38,9 @@ public class ZNpcsPlusApi implements NpcApi {
|
||||||
public EntityPropertyRegistry getPropertyRegistry() {
|
public EntityPropertyRegistry getPropertyRegistry() {
|
||||||
return propertyRegistry;
|
return propertyRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SkinDescriptorFactory getSkinDescriptorFactory() {
|
||||||
|
return skinDescriptorFactory;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
package lol.pyr.znpcsplus.skin;
|
||||||
|
|
||||||
|
import lol.pyr.znpcsplus.api.skin.SkinDescriptor;
|
||||||
|
import lol.pyr.znpcsplus.api.skin.SkinDescriptorFactory;
|
||||||
|
import lol.pyr.znpcsplus.skin.cache.SkinCache;
|
||||||
|
import lol.pyr.znpcsplus.skin.descriptor.FetchingDescriptor;
|
||||||
|
import lol.pyr.znpcsplus.skin.descriptor.MirrorDescriptor;
|
||||||
|
import lol.pyr.znpcsplus.skin.descriptor.PrefetchedDescriptor;
|
||||||
|
|
||||||
|
public class SkinDescriptorFactoryImpl implements SkinDescriptorFactory {
|
||||||
|
private final SkinCache skinCache;
|
||||||
|
private final MirrorDescriptor mirrorDescriptor;
|
||||||
|
|
||||||
|
public SkinDescriptorFactoryImpl(SkinCache skinCache) {
|
||||||
|
this.skinCache = skinCache;
|
||||||
|
mirrorDescriptor = new MirrorDescriptor(skinCache);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SkinDescriptor createMirrorDescriptor() {
|
||||||
|
return mirrorDescriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SkinDescriptor createRefreshingDescriptor(String playerName) {
|
||||||
|
return new FetchingDescriptor(skinCache, playerName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SkinDescriptor createStaticDescriptor(String playerName) {
|
||||||
|
return PrefetchedDescriptor.forPlayer(skinCache, playerName).join();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SkinDescriptor createStaticDescriptor(String texture, String signature) {
|
||||||
|
return new PrefetchedDescriptor(new Skin(texture, signature));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue