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.npc.NpcRegistry;
|
||||
import lol.pyr.znpcsplus.api.npc.NpcTypeRegistry;
|
||||
import lol.pyr.znpcsplus.api.skin.SkinDescriptorFactory;
|
||||
|
||||
public interface NpcApi {
|
||||
NpcRegistry getNpcRegistry();
|
||||
NpcTypeRegistry getNpcTypeRegistry();
|
||||
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);
|
||||
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;
|
||||
log(ChatColor.WHITE + " * Loading complete! (" + (System.currentTimeMillis() - before) + "ms)");
|
||||
log("");
|
||||
|
|
|
@ -4,19 +4,24 @@ import lol.pyr.znpcsplus.api.NpcApi;
|
|||
import lol.pyr.znpcsplus.api.entity.EntityPropertyRegistry;
|
||||
import lol.pyr.znpcsplus.api.npc.NpcRegistry;
|
||||
import lol.pyr.znpcsplus.api.npc.NpcTypeRegistry;
|
||||
import lol.pyr.znpcsplus.api.skin.SkinDescriptorFactory;
|
||||
import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl;
|
||||
import lol.pyr.znpcsplus.npc.NpcRegistryImpl;
|
||||
import lol.pyr.znpcsplus.npc.NpcTypeRegistryImpl;
|
||||
import lol.pyr.znpcsplus.skin.SkinDescriptorFactoryImpl;
|
||||
import lol.pyr.znpcsplus.skin.cache.SkinCache;
|
||||
|
||||
public class ZNpcsPlusApi implements NpcApi {
|
||||
private final NpcRegistryImpl npcRegistry;
|
||||
private final NpcTypeRegistryImpl typeRegistry;
|
||||
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.typeRegistry = typeRegistry;
|
||||
this.propertyRegistry = propertyRegistry;
|
||||
this.skinDescriptorFactory = new SkinDescriptorFactoryImpl(skinCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -33,4 +38,9 @@ public class ZNpcsPlusApi implements NpcApi {
|
|||
public EntityPropertyRegistry getPropertyRegistry() {
|
||||
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