diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-01-31 15:32:33 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-01-31 15:32:33 +0800 |
| commit | 2f95b698dee3368666cefe8890a015eb098dd77b (patch) | |
| tree | 994981d645051f5360ea29dc0d7701a83cd1858a /src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugin.java | |
| parent | 40d345b6b0f0bea1e4313ad9cdb789762e160f8d (diff) | |
| download | RoughlyEnoughItems-2.2.0.15.tar.gz RoughlyEnoughItems-2.2.0.15.tar.bz2 RoughlyEnoughItems-2.2.0.15.zip | |
Update to v2.2.0.15 & Fix Optifinev2.2.0.15
Fix #16
Diffstat (limited to 'src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugin.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugin.java | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugin.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugin.java index 8f91e7e0e..ad3c15ba6 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugin.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugin.java @@ -3,6 +3,7 @@ package me.shedaniel.rei; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import com.google.gson.JsonParser; import me.shedaniel.rei.api.IRecipePlugin; import net.minecraft.util.ResourceLocation; @@ -10,7 +11,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.dimdev.riftloader.ModInfo; import org.dimdev.riftloader.RiftLoader; -import org.dimdev.riftloader.listener.InitializationListener; import java.io.File; import java.io.FileReader; @@ -24,14 +24,15 @@ import java.util.jar.JarFile; import java.util.stream.Collectors; import java.util.zip.ZipEntry; -public class RoughlyEnoughItemsPlugin implements InitializationListener { +public class RoughlyEnoughItemsPlugin { public static final Logger LOGGER = LogManager.getFormatterLogger("REI"); - private static final Map<ResourceLocation, IRecipePlugin> plugins = Maps.newHashMap(); + private static final Map<String, IRecipePlugin> plugins = Maps.newHashMap(); private static JsonParser parser = new JsonParser(); - private static List<ResourceLocation> disablingPlugins; + private static List<String> disablingPlugins; + private static boolean loaded = false; - public static IRecipePlugin registerPlugin(ResourceLocation resourceLocation, IRecipePlugin plugin) { + public static IRecipePlugin registerPlugin(String resourceLocation, IRecipePlugin plugin) { plugins.put(resourceLocation, plugin); RoughlyEnoughItemsPlugin.LOGGER.info("REI: Registered Plugin from %s by %s.", resourceLocation.toString(), plugin.getClass().getSimpleName()); return plugin; @@ -41,24 +42,22 @@ public class RoughlyEnoughItemsPlugin implements InitializationListener { return new LinkedList<>(plugins.values()); } - public static ResourceLocation getPluginResourceLocation(IRecipePlugin plugin) { - for(ResourceLocation ResourceLocation : plugins.keySet()) - if (plugins.get(ResourceLocation).equals(plugin)) - return ResourceLocation; + public static String getPluginResourceLocation(IRecipePlugin plugin) { + for(String resourceLocation : plugins.keySet()) + if (plugins.get(resourceLocation).equals(plugin)) + return resourceLocation; return null; } public static void disablePlugin(ResourceLocation location) { - if (disablingPlugins.stream().noneMatch(location1 -> {return location.equals(location1);})) - disablingPlugins.add(location); + if (disablingPlugins.stream().noneMatch(location1 -> {return location.toString().equals(location1);})) + disablingPlugins.add(location.toString()); } - @Override - public void onInitialization() { - discoverPlugins(); - } - - private void discoverPlugins() { + public static void discoverPlugins() { + if (loaded) + return; + loaded = true; LOGGER.info("REI: Discovering Plugins."); disablingPlugins = Lists.newArrayList(); Collection<ModInfo> modInfoCollection = RiftLoader.instance.getMods(); @@ -78,29 +77,27 @@ public class RoughlyEnoughItemsPlugin implements InitializationListener { RoughlyEnoughItemsPlugin.LOGGER.error("REI: Failed to load plugin file from %s. (%s)", (Object) modInfo.id, (Object) e.getLocalizedMessage()); } }); - plugins.forEach((location, plugin) -> plugin.onFirstLoad()); - plugins.keySet().stream().filter(location -> { - return disablingPlugins.contains(location); - }).collect(Collectors.toList()).forEach(location -> { + plugins.values().forEach(IRecipePlugin::onFirstLoad); + new LinkedList<>(plugins.keySet()).stream().filter(location -> disablingPlugins.contains(location)).forEach(location -> { plugins.remove(location); LOGGER.info("REI: Disabled REI plugin %s.", location.toString()); }); - LOGGER.info("REI: Discovered %d REI Plugins%s", plugins.size(), (plugins.size() > 0 ? ": " + String.join(", ", plugins.keySet().stream().map(ResourceLocation::toString).collect(Collectors.toList())) : ".")); + LOGGER.info("REI: Discovered %d REI Plugins%s", plugins.size(), (plugins.size() > 0 ? ": " + String.join(", ", plugins.keySet().stream().collect(Collectors.toList())) : ".")); } - private void loadPluginInfo(ModInfo modInfo, Reader reader) throws Exception { + private static void loadPluginInfo(ModInfo modInfo, Reader reader) throws Exception { JsonElement infoElement = parser.parse(reader); if (infoElement.isJsonArray()) for(JsonElement jsonElement : infoElement.getAsJsonArray()) - parseAndRegisterPlugin(modInfo.id, jsonElement); + parseAndRegisterPlugin(modInfo.id, jsonElement.getAsJsonObject()); else - parseAndRegisterPlugin(modInfo.id, infoElement); + parseAndRegisterPlugin(modInfo.id, infoElement.getAsJsonObject()); reader.close(); } - private void parseAndRegisterPlugin(String modId, JsonElement jsonElement) throws Exception { - ResourceLocation location = new ResourceLocation(modId, jsonElement.getAsJsonObject().getAsJsonPrimitive("id").getAsString()); - Class<?> aClass = Class.forName(jsonElement.getAsJsonObject().getAsJsonPrimitive("initializer").getAsString()); + private static void parseAndRegisterPlugin(String modId, JsonObject jsonObject) throws Exception { + String location = modId + ":" + jsonObject.getAsJsonPrimitive("id").getAsString(); + Class<?> aClass = Class.forName(jsonObject.getAsJsonPrimitive("initializer").getAsString()); IRecipePlugin plugin = IRecipePlugin.class.cast(aClass.newInstance()); registerPlugin(location, plugin); } |
