Skip to content

Commit

Permalink
Use Java spi to get emotes providers
Browse files Browse the repository at this point in the history
  • Loading branch information
Vinrobot committed Aug 7, 2023
1 parent 19a6c62 commit ea17809
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
import net.fabricmc.api.ClientModInitializer;
import net.vinrobot.mcemote.MinecraftEmoteMod;
import net.vinrobot.mcemote.client.font.Emote;
import net.vinrobot.mcemote.client.providers.FFZRoomEmoteProvider;
import net.vinrobot.mcemote.client.helpers.ListHelper;
import net.vinrobot.mcemote.client.providers.IEmoteProvider;
import net.vinrobot.mcemote.client.providers.STVGlobalEmoteProvider;
import net.vinrobot.mcemote.client.providers.STVUserEmoteProvider;
import net.vinrobot.mcemote.client.text.EmotesManager;
import net.vinrobot.mcemote.config.Configuration;
import net.vinrobot.mcemote.config.impl.ConfigurationImpl;
Expand All @@ -15,6 +13,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.ServiceLoader;

public class MinecraftEmoteModClient implements ClientModInitializer {
public static final EmotesManager EMOTES_MANAGER = new EmotesManager();
Expand All @@ -29,11 +28,8 @@ public void onInitializeClient() {
}

final Configuration config = new ConfigurationImpl();
final IEmoteProvider[] providers = new IEmoteProvider[]{
new STVGlobalEmoteProvider(),
new STVUserEmoteProvider(),
new FFZRoomEmoteProvider(),
};
final ServiceLoader<IEmoteProvider> serviceLoader = ServiceLoader.load(IEmoteProvider.class);
final List<IEmoteProvider> providers = ListHelper.sort(serviceLoader);

int codePoint = 100;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package net.vinrobot.mcemote.client.helpers;

import com.google.common.collect.Lists;

import java.util.List;

public final class ListHelper {
public static <T extends Comparable<T>> List<T> sort(Iterable<T> iterable) {
final List<T> list = Lists.newArrayList(iterable);
list.sort(null);
return list;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

import net.vinrobot.mcemote.config.Configuration;

public interface IEmoteProvider {
public interface IEmoteProvider extends Comparable<IEmoteProvider> {
default int priority() {
return 50;
}

void registerEmotes(Configuration config, IEmoteRegistry registry) throws Exception;

@Override
default int compareTo(IEmoteProvider other) {
return Integer.compare(this.priority(), other.priority());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
import java.io.IOException;

public class STVGlobalEmoteProvider implements IEmoteProvider {
@Override
public int priority() {
return 10;
}

@Override
public void registerEmotes(Configuration config, IEmoteRegistry registry) throws IOException, InterruptedException {
final SevenTVService service = new SevenTVService();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
net.vinrobot.mcemote.client.providers.STVGlobalEmoteProvider
net.vinrobot.mcemote.client.providers.STVUserEmoteProvider
net.vinrobot.mcemote.client.providers.FFZRoomEmoteProvider

0 comments on commit ea17809

Please sign in to comment.