package launchserver.texture;
import launcher.LauncherAPI;
import launcher.client.PlayerProfile.Texture;
import launcher.helper.VerifyHelper;
import launcher.serialize.config.entry.BlockConfigEntry;
import java.io.IOException;
import java.util.Objects;
import java.util.UUID;
public class DelegateTextureProvider extends TextureProvider
{
private volatile TextureProvider delegate;
public DelegateTextureProvider(BlockConfigEntry block)
{
super(block);
}
@Override
public void close() throws IOException
{
TextureProvider delegate = this.delegate;
if (delegate != null)
{
delegate.close();
}
}
@Override
public Texture getCloakTexture(UUID uuid, String username) throws IOException
{
return getDelegate().getCloakTexture(uuid, username);
}
@Override
public Texture getSkinTexture(UUID uuid, String username) throws IOException
{
return getDelegate().getSkinTexture(uuid, username);
}
private TextureProvider getDelegate()
{
return VerifyHelper.verify(delegate, Objects::nonNull, "Delegate texture provider wasn't set");
}
@LauncherAPI
public void setDelegate(TextureProvider delegate)
{
this.delegate = delegate;
}
}