diff options
Diffstat (limited to 'runtime/src/main/java')
15 files changed, 107 insertions, 145 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/PluginDetector.java b/runtime/src/main/java/me/shedaniel/rei/PluginDetector.java new file mode 100644 index 000000000..5e6de2399 --- /dev/null +++ b/runtime/src/main/java/me/shedaniel/rei/PluginDetector.java @@ -0,0 +1,18 @@ +package me.shedaniel.rei; + +import me.shedaniel.architectury.annotations.ExpectPlatform; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +public class PluginDetector { + @ExpectPlatform + public static void detectServerPlugins() { + throw new AssertionError(); + } + + @Environment(EnvType.CLIENT) + @ExpectPlatform + public static void detectClientPlugins() { + throw new AssertionError(); + } +} diff --git a/runtime/src/main/java/me/shedaniel/rei/REIModMenuEntryPoint.java b/runtime/src/main/java/me/shedaniel/rei/REIModMenuEntryPoint.java index df51d9d03..1375c2f14 100644 --- a/runtime/src/main/java/me/shedaniel/rei/REIModMenuEntryPoint.java +++ b/runtime/src/main/java/me/shedaniel/rei/REIModMenuEntryPoint.java @@ -25,10 +25,8 @@ package me.shedaniel.rei; import me.shedaniel.architectury.platform.Platform; import me.shedaniel.rei.api.ConfigManager; -import net.fabricmc.api.ClientModInitializer; -public class REIModMenuEntryPoint implements ClientModInitializer { - @Override +public class REIModMenuEntryPoint { public void onInitializeClient() { Platform.getMod("roughlyenoughitems").registerConfigurationScreen(ConfigManager.getInstance()::getConfigScreen); } diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index 052cd903c..f0cfe81b5 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -23,7 +23,6 @@ package me.shedaniel.rei; -import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -61,11 +60,8 @@ import me.shedaniel.rei.impl.entry.EntryIngredientImpl; import me.shedaniel.rei.impl.view.ViewsImpl; import me.shedaniel.rei.impl.widgets.*; import me.shedaniel.rei.tests.plugin.REITestPlugin; -import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.api.ModContainer; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.events.GuiEventListener; @@ -110,7 +106,7 @@ import static me.shedaniel.rei.impl.Internals.attachInstance; @ApiStatus.Internal @Environment(EnvType.CLIENT) -public class RoughlyEnoughItemsCore implements ClientModInitializer { +public class RoughlyEnoughItemsCore { @ApiStatus.Internal public static final Logger LOGGER = LogManager.getFormatterLogger("REI"); private static final List<REIPlugin> PLUGINS = new ArrayList<>(); private static final ExecutorService SYNC_RECIPES = Executors.newSingleThreadScheduledExecutor(r -> new Thread(r, "REI-SyncRecipes")); @@ -396,15 +392,11 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { } @SuppressWarnings("deprecation") - @Override public void onInitializeClient() { IssuesDetector.detect(); registerClothEvents(); - discoverPluginEntries(); - for (ModContainer modContainer : FabricLoader.getInstance().getAllMods()) { - if (modContainer.getMetadata().containsCustomElement("roughlyenoughitems:plugins")) - RoughlyEnoughItemsCore.LOGGER.error("REI plugin from " + modContainer.getMetadata().getId() + " is not loaded because it is too old!"); - } + PluginDetector.detectClientPlugins(); + loadTestPlugins(); Minecraft client = Minecraft.getInstance(); NetworkManager.registerReceiver(NetworkManager.s2c(), RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, (buf, context) -> { @@ -445,42 +437,10 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { }); } - private void discoverPluginEntries() { - for (REIPlugin plugin : Iterables.concat( - FabricLoader.getInstance().getEntrypoints("rei_plugins", REIPlugin.class), - FabricLoader.getInstance().getEntrypoints("rei", REIPlugin.class) - )) { - try { - registerPlugin(plugin); - } catch (Exception e) { - e.printStackTrace(); - RoughlyEnoughItemsCore.LOGGER.error("Can't load REI plugins from %s: %s", plugin.getClass(), e.getLocalizedMessage()); - } - } - for (REIPlugin reiPlugin : FabricLoader.getInstance().getEntrypoints("rei_plugins_v0", REIPlugin.class)) { - try { - registerPlugin(reiPlugin); - } catch (Exception e) { - e.printStackTrace(); - RoughlyEnoughItemsCore.LOGGER.error("Can't load REI plugins from %s: %s", reiPlugin.getClass(), e.getLocalizedMessage()); - } - } - - // Test Only - loadTestPlugins(); - } - private void loadTestPlugins() { if (isDebugModeEnabled()) { registerPlugin(new REITestPlugin()); } - if (FabricLoader.getInstance().isModLoaded("libblockattributes-fluids")) { - try { - registerPlugin((REIPlugin) Class.forName("me.shedaniel.rei.compat.LBASupportPlugin").getConstructor().newInstance()); - } catch (Throwable throwable) { - throwable.printStackTrace(); - } - } } private boolean shouldReturn(Screen screen) { diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java index 4e933ac7a..7308fbb38 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java @@ -24,20 +24,18 @@ package me.shedaniel.rei; import com.google.common.collect.ImmutableSet; -import net.fabricmc.api.ClientModInitializer; +import me.shedaniel.architectury.platform.Platform; import net.fabricmc.api.EnvType; -import net.fabricmc.api.ModInitializer; -import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.api.SemanticVersion; -import net.fabricmc.loader.api.VersionParsingException; import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; -public class RoughlyEnoughItemsInitializer implements ModInitializer, ClientModInitializer { - @Override - public void onInitialize() { - checkRequiredFabricModules(); - if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { +public class RoughlyEnoughItemsInitializer { + public static void onInitialize() { + if (Platform.isFabric()) { + checkRequiredFabricModules(); + } + if (Platform.getEnv() == EnvType.CLIENT) { checkClothConfig(); } @@ -46,8 +44,7 @@ public class RoughlyEnoughItemsInitializer implements ModInitializer, ClientModI } } - @Override - public void onInitializeClient() { + public static void onInitializeClient() { if (RoughlyEnoughItemsState.getErrors().isEmpty()) { initializeEntryPoint("me.shedaniel.rei.RoughlyEnoughItemsCore"); initializeEntryPoint("me.shedaniel.rei.REIModMenuEntryPoint"); @@ -58,13 +55,25 @@ public class RoughlyEnoughItemsInitializer implements ModInitializer, ClientModI initializeEntryPoint("me.shedaniel.rei.impl.ErrorDisplayer"); } - public void initializeEntryPoint(String className) { + public static void initializeEntryPoint(String className) { try { - Object instance = Class.forName(className).getConstructor().newInstance(); - if (instance instanceof ModInitializer) { - ((ModInitializer) instance).onInitialize(); - } else if (instance instanceof ClientModInitializer) { - ((ClientModInitializer) instance).onInitializeClient(); + Class<?> name = Class.forName(className); + Object instance = name.getConstructor().newInstance(); + Method method = null; + try { + method = name.getDeclaredMethod("onInitialize"); + } catch (NoSuchMethodException ignored) { + } + if (method != null) { + method.invoke(instance); + } else if (Platform.getEnv() == EnvType.CLIENT) { + try { + method = name.getDeclaredMethod("onInitializeClient"); + } catch (NoSuchMethodException ignored) { + } + if (method != null) { + method.invoke(instance); + } } } catch (InstantiationException | InvocationTargetException | IllegalAccessException | ClassNotFoundException | NoSuchMethodException e) { throw new RuntimeException(e); @@ -72,7 +81,7 @@ public class RoughlyEnoughItemsInitializer implements ModInitializer, ClientModI } public static void checkRequiredFabricModules() { - ImmutableSet<String> requiredModules = FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT ? + ImmutableSet<String> requiredModules = Platform.getEnv() == EnvType.CLIENT ? ImmutableSet.<String>builder() .add("fabric-api-base") .add("fabric-resource-loader-v0") @@ -87,7 +96,7 @@ public class RoughlyEnoughItemsInitializer implements ModInitializer, ClientModI .add("fabric-lifecycle-events-v1") .build(); for (String module : requiredModules) { - boolean moduleLoaded = FabricLoader.getInstance().isModLoaded(module); + boolean moduleLoaded = Platform.isModLoaded(module); if (!moduleLoaded) { RoughlyEnoughItemsState.error("Fabric API is not installed!", "https://www.curseforge.com/minecraft/mc-mods/fabric-api/files/all"); break; @@ -96,15 +105,15 @@ public class RoughlyEnoughItemsInitializer implements ModInitializer, ClientModI } public static void checkClothConfig() { - try { - if (!FabricLoader.getInstance().isModLoaded("cloth-config2")) { + /*try { + if (!Platform.isModLoaded("cloth-config2")) { RoughlyEnoughItemsState.error("Cloth Config is not installed!", "https://www.curseforge.com/minecraft/mc-mods/cloth-config/files/all"); - } else if (SemanticVersion.parse(FabricLoader.getInstance().getModContainer("cloth-config2").get().getMetadata().getVersion().getFriendlyString()).compareTo(SemanticVersion.parse("4.10.9")) < 0) { + } else if (SemanticVersion.parse(Platform.getMod("cloth-config2").getVersion()).compareTo(SemanticVersion.parse("4.10.9")) < 0) { RoughlyEnoughItemsState.error("Your Cloth Config version is too old!", "https://www.curseforge.com/minecraft/mc-mods/cloth-config/files/all"); } } catch (VersionParsingException e) { RoughlyEnoughItemsState.error("Failed to parse Cloth Config version: " + e.getMessage()); e.printStackTrace(); - } + }*/ } }
\ No newline at end of file diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java index 24310961e..4013f6210 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java @@ -27,8 +27,6 @@ import com.google.common.collect.Lists; import io.netty.buffer.Unpooled; import me.shedaniel.architectury.networking.NetworkManager; import me.shedaniel.rei.api.server.InputSlotCrafter; -import net.fabricmc.api.ModInitializer; -import net.fabricmc.loader.api.FabricLoader; import net.minecraft.ChatFormatting; import net.minecraft.Util; import net.minecraft.core.NonNullList; @@ -45,7 +43,7 @@ import net.minecraft.world.item.ItemStack; import java.util.List; -public class RoughlyEnoughItemsNetwork implements ModInitializer { +public class RoughlyEnoughItemsNetwork { public static final ResourceLocation DELETE_ITEMS_PACKET = new ResourceLocation("roughlyenoughitems", "delete_item"); public static final ResourceLocation CREATE_ITEMS_PACKET = new ResourceLocation("roughlyenoughitems", "create_item"); public static final ResourceLocation CREATE_ITEMS_GRAB_PACKET = new ResourceLocation("roughlyenoughitems", "create_item_grab"); @@ -53,9 +51,8 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { public static final ResourceLocation MOVE_ITEMS_PACKET = new ResourceLocation("roughlyenoughitems", "move_items"); public static final ResourceLocation NOT_ENOUGH_ITEMS_PACKET = new ResourceLocation("roughlyenoughitems", "og_not_enough"); - @Override public void onInitialize() { - FabricLoader.getInstance().getEntrypoints("rei_containers", Runnable.class).forEach(Runnable::run); + PluginDetector.detectServerPlugins(); NetworkManager.registerReceiver(NetworkManager.c2s(), DELETE_ITEMS_PACKET, (buf, context) -> { ServerPlayer player = (ServerPlayer) context.getPlayer(); if (player.getServer().getProfilePermissions(player.getGameProfile()) < player.getServer().getOperatorUserPermissionLevel()) { diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsState.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsState.java index cd5b8c1e2..4f8c42bec 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsState.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsState.java @@ -23,9 +23,9 @@ package me.shedaniel.rei; -import com.google.common.collect.ImmutableSet; +import me.shedaniel.architectury.platform.Platform; +import me.shedaniel.architectury.utils.Env; import net.fabricmc.api.EnvType; -import net.fabricmc.loader.api.FabricLoader; import net.minecraft.util.Tuple; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -49,7 +49,7 @@ public class RoughlyEnoughItemsState { private static List<Runnable> continueCallbacks = new ArrayList<>(); public static void error(String reason) { - if (FabricLoader.getInstance().getEnvironmentType() == EnvType.SERVER || FabricLoader.getInstance().isDevelopmentEnvironment()) + if (Platform.getEnvironment() == Env.SERVER || Platform.isDevelopmentEnvironment()) throw new RuntimeException(reason); if (RoughlyEnoughItemsState.errorSet.add(reason + " " + null)) { RoughlyEnoughItemsState.errors.add(new Tuple<>(reason, null)); @@ -58,7 +58,7 @@ public class RoughlyEnoughItemsState { } public static void error(String reason, String link) { - if (FabricLoader.getInstance().getEnvironmentType() == EnvType.SERVER || FabricLoader.getInstance().isDevelopmentEnvironment()) + if (Platform.getEnvironment() == Env.SERVER || Platform.isDevelopmentEnvironment()) throw new RuntimeException(reason + " " + link); if (RoughlyEnoughItemsState.errorSet.add(reason + " " + link)) { RoughlyEnoughItemsState.errors.add(new Tuple<>(reason, link)); diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java b/runtime/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java index d90fb8140..1e676e405 100644 --- a/runtime/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -32,7 +32,6 @@ import me.shedaniel.rei.gui.TransformingScreen; import me.shedaniel.rei.gui.credits.CreditsEntryListWidget.TextCreditsItem; import me.shedaniel.rei.gui.credits.CreditsEntryListWidget.TranslationCreditsItem; import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.api.metadata.CustomValue; import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.chat.NarratorChatListener; @@ -47,7 +46,6 @@ import net.minecraft.util.Tuple; import org.apache.commons.lang3.mutable.MutableLong; import org.jetbrains.annotations.ApiStatus; -import java.util.Comparator; import java.util.List; import java.util.Locale; import java.util.stream.Collectors; @@ -79,7 +77,7 @@ public class CreditsScreen extends Screen { entryListWidget.creditsClearEntries(); List<Tuple<String, String>> translators = Lists.newArrayList(); Exception[] exception = {null}; - FabricLoader.getInstance().getModContainer("roughlyenoughitems-runtime").ifPresent(rei -> { + /*FabricLoader.getInstance().getModContainer("roughlyenoughitems").ifPresent(rei -> { try { if (rei.getMetadata().containsCustomValue("rei:translators")) { CustomValue.CvObject jsonObject = rei.getMetadata().getCustomValue("rei:translators").getAsObject(); @@ -94,7 +92,7 @@ public class CreditsScreen extends Screen { exception[0] = e; e.printStackTrace(); } - }); + });*/ List<Tuple<String, String>> translatorsMapped = translators.stream().map(pair -> { return new Tuple<>( " " + (I18n.exists("language.roughlyenoughitems." + pair.getA().toLowerCase(Locale.ROOT).replace(' ', '_')) ? I18n.get("language.roughlyenoughitems." + pair.getA().toLowerCase(Locale.ROOT).replace(' ', '_')) : pair.getA()), diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java index 390f40f69..2942991e4 100644 --- a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java +++ b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java @@ -86,6 +86,7 @@ public class DefaultRuntimePlugin implements REIPlugin { public void registerEntryTypes(EntryTypeRegistry registry) { registry.register(VanillaEntryTypes.ITEM, new ItemEntryDefinition()); registry.register(VanillaEntryTypes.FLUID, new FluidEntryDefinition()); + registry.registerBridge(VanillaEntryTypes.ITEM, VanillaEntryTypes.FLUID, input -> { Optional<Stream<EntryStack<FluidStack>>> stream = FluidSupportProvider.getInstance().itemToFluids(input); if (!stream.isPresent()) { @@ -97,7 +98,7 @@ public class DefaultRuntimePlugin implements REIPlugin { @Override public void registerEntries(EntryRegistry registry) { - if (ClientHelperImpl.getInstance().isAprilFools.get() || true) { + if (ClientHelperImpl.getInstance().isAprilFools.get()) { registry.registerEntry(EntryStacks.of(new AbstractRenderer() { private ResourceLocation id = new ResourceLocation("roughlyenoughitems", "textures/gui/kirb.png"); diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java index 0b6cd08ce..4eba1f245 100644 --- a/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java @@ -84,10 +84,12 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; -import java.util.concurrent.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import java.util.function.Consumer; import java.util.stream.Collectors; -import java.util.stream.Stream; @ApiStatus.Internal public class EntryListWidget extends WidgetWithBounds { @@ -285,37 +287,37 @@ public class EntryListWidget extends WidgetWithBounds { boolean fastEntryRendering = ConfigObject.getInstance().doesFastEntryRendering(); if (ConfigObject.getInstance().isEntryListWidgetScrolled()) { ScissorsHandler.INSTANCE.scissor(bounds); - + int skip = Math.max(0, Mth.floor(scrolling.scrollAmount / (float) entrySize())); int nextIndex = skip * innerBounds.width / entrySize(); int i = nextIndex; int cont = nextIndex; blockedCount = 0; - + Int2ObjectMap<List<EntryListEntry>> grouping = new Int2ObjectOpenHashMap<>(); List<EntryListEntry> toRender = new ArrayList<>(); Consumer<EntryListEntry> add; - + if (fastEntryRendering) { add = entry -> { int hash = BatchEntryRenderer.getBatchIdFrom(entry.getCurrentEntry()); List<EntryListEntry> entries = grouping.get(hash); - + if (entries == null) { grouping.put(hash, entries = new ArrayList<>()); } - + entries.add(entry); }; } else { add = toRender::add; } - + for (; cont < entries.size(); cont++) { EntryListEntry entry = entries.get(cont); - + Rectangle entryBounds = entry.getBounds(); - + entryBounds.y = (int) (entry.backupY - scrolling.scrollAmount); if (entryBounds.y > this.bounds.getMaxY()) break; if (allStacks.size() <= i) break; @@ -330,7 +332,7 @@ public class EntryListWidget extends WidgetWithBounds { blockedCount++; } } - + if (fastEntryRendering) { for (List<EntryListEntry> entries : grouping.values()) { renderEntries(debugTime, size, time, fastEntryRendering, matrices, mouseX, mouseY, delta, entries); @@ -338,10 +340,12 @@ public class EntryListWidget extends WidgetWithBounds { } else { renderEntries(debugTime, size, time, fastEntryRendering, matrices, mouseX, mouseY, delta, toRender); } - + updatePosition(delta); ScissorsHandler.INSTANCE.removeLastScissor(); - scrolling.renderScrollBar(0, 1, REIHelper.getInstance().isDarkThemeEnabled() ? 0.8f : 1f); + if (scrolling.getMaxScroll() > 0) { + scrolling.renderScrollBar(0, 1, REIHelper.getInstance().isDarkThemeEnabled() ? 0.8f : 1f); + } } else { for (Widget widget : renders) { widget.render(matrices, mouseX, mouseY, delta); diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java b/runtime/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java index 957ea3096..3b6726d09 100644 --- a/runtime/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java +++ b/runtime/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java @@ -25,11 +25,11 @@ package me.shedaniel.rei.gui.widget; import com.google.common.collect.Lists; +import me.shedaniel.architectury.platform.Platform; +import me.shedaniel.architectury.utils.Env; import me.shedaniel.math.Point; -import me.shedaniel.math.api.Executor; import me.shedaniel.math.impl.PointHelper; import me.shedaniel.rei.api.gui.widgets.Tooltip; -import net.fabricmc.api.EnvType; import net.minecraft.network.chat.Component; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -50,13 +50,17 @@ public class QueuedTooltip implements Tooltip { private QueuedTooltip(Point location, Collection<Component> text) { this.location = location; if (this.location == null) { - Executor.runIfEnv(EnvType.CLIENT, () -> () -> { - this.location = PointHelper.ofMouse(); - }); + if (Platform.getEnvironment() == Env.CLIENT) { + setLocationToMouse(); + } } this.text = Lists.newArrayList(text); } + private void setLocationToMouse() { + this.location = PointHelper.ofMouse(); + } + @NotNull public static QueuedTooltip create(Point location, List<Component> text) { return new QueuedTooltip(location, text); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java index c82203060..4ad00bb94 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java @@ -25,6 +25,7 @@ package me.shedaniel.rei.impl; import io.netty.buffer.Unpooled; import me.shedaniel.architectury.networking.NetworkManager; +import me.shedaniel.architectury.platform.Platform; import me.shedaniel.architectury.utils.Fraction; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.RoughlyEnoughItemsNetwork; @@ -44,12 +45,8 @@ import me.shedaniel.rei.gui.PreRecipeViewingScreen; import me.shedaniel.rei.gui.RecipeScreen; import me.shedaniel.rei.gui.RecipeViewingScreen; import me.shedaniel.rei.gui.VillagerRecipeViewingScreen; -import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.api.ModContainer; -import net.fabricmc.loader.api.metadata.ModMetadata; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; @@ -74,7 +71,7 @@ import static me.shedaniel.rei.impl.Internals.attachInstance; @ApiStatus.Internal @Environment(EnvType.CLIENT) -public class ClientHelperImpl implements ClientHelper, ClientModInitializer { +public class ClientHelperImpl implements ClientHelper { @ApiStatus.Internal public final LazyLoadedValue<Boolean> isYog = new LazyLoadedValue<>(() -> { try { if (Minecraft.getInstance().getUser().getGameProfile().getId().equals(UUID.fromString("f9546389-9415-4358-9c29-2c26b25bff5b"))) @@ -113,9 +110,12 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer { String any = modNameCache.getOrDefault(modId, null); if (any != null) return any; - String s = FabricLoader.getInstance().getModContainer(modId).map(ModContainer::getMetadata).map(ModMetadata::getName).orElse(modId); - modNameCache.put(modId, s); - return s; + if (Platform.isModLoaded(modId)) { + String modName = Platform.getMod(modId).getName(); + modNameCache.put(modId, modName); + return modName; + } + return modId; } @Override @@ -234,7 +234,6 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer { return NetworkManager.canServerReceive(RoughlyEnoughItemsNetwork.MOVE_ITEMS_PACKET); } - @Override public void onInitializeClient() { attachInstance(this, ClientHelper.class); attachInstance((Supplier<ViewSearchBuilder>) ViewSearchBuilderImpl::new, "viewSearchBuilder"); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java index c3bd6cdbd..0e3e0ff92 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java @@ -31,6 +31,7 @@ import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix4f; import me.shedaniel.architectury.hooks.ScreenHooks; +import me.shedaniel.architectury.platform.Platform; import me.shedaniel.autoconfig.AutoConfig; import me.shedaniel.autoconfig.annotation.ConfigEntry; import me.shedaniel.autoconfig.gui.ConfigScreenProvider; @@ -230,7 +231,7 @@ public class ConfigManagerImpl implements ConfigManager { @Override public Screen getConfigScreen(Screen parent) { try { - if (!detectWorkingOptifabric()) { + if (Platform.isFabric() && !detectWorkingOptifabric()) { List<Tuple<String, String>> warnings = Lists.newArrayList(); warnings.add(new Tuple<>(I18n.get("text.rei.config.optifine.title"), null)); warnings.add(new Tuple<>(I18n.get("text.rei.config.optifine.description"), null)); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ErrorDisplayer.java b/runtime/src/main/java/me/shedaniel/rei/impl/ErrorDisplayer.java index 411aa489e..90c5c4582 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/ErrorDisplayer.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/ErrorDisplayer.java @@ -26,12 +26,10 @@ package me.shedaniel.rei.impl; import me.shedaniel.architectury.event.events.GuiEvent; import me.shedaniel.rei.RoughlyEnoughItemsState; import me.shedaniel.rei.gui.WarningAndErrorScreen; -import net.fabricmc.api.ClientModInitializer; import net.minecraft.client.Minecraft; import net.minecraft.world.InteractionResult; -public class ErrorDisplayer implements ClientModInitializer { - @Override +public class ErrorDisplayer { public void onInitializeClient() { GuiEvent.INIT_PRE.register((screen, widgets, children) -> { Minecraft minecraft = Minecraft.getInstance(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/IssuesDetector.java b/runtime/src/main/java/me/shedaniel/rei/impl/IssuesDetector.java index 326425a93..9be504e61 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/IssuesDetector.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/IssuesDetector.java @@ -23,51 +23,28 @@ package me.shedaniel.rei.impl; +import me.shedaniel.architectury.platform.Platform; import me.shedaniel.rei.RoughlyEnoughItemsState; -import net.fabricmc.loader.api.FabricLoader; import org.apache.commons.lang3.tuple.Triple; -import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import java.io.File; import java.io.IOException; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import java.util.function.BooleanSupplier; @ApiStatus.Internal public final class IssuesDetector { - private static final List<Triple<BooleanSupplier, @Nullable String, String>> ISSUES; + private static final List<Triple<BooleanSupplier, @Nullable String, String>> ISSUES = new ArrayList<>(); - static { - ISSUES = new ArrayList<>(); - register(() -> { - try { - FabricLoader instance = FabricLoader.getInstance(); - for (Field field : instance.getClass().getDeclaredFields()) { - if (Logger.class.isAssignableFrom(field.getType())) { - field.setAccessible(true); - Logger logger = (Logger) field.get(instance); - if (logger.getName().toLowerCase(Locale.ROOT).contains("subsystem")) - return true; - } - } - } catch (Throwable ignored) { - } - return false; - }, ".ignoresubsystem", "Subsystem is detected (probably though Aristois), please contact support from them if anything happens."); - } - - private static void register(BooleanSupplier detector, @Nullable String ignoreFileName, String issueMessage) { + public static void register(BooleanSupplier detector, @Nullable String ignoreFileName, String issueMessage) { ISSUES.add(Triple.of(detector, ignoreFileName, issueMessage)); } public static void detect() { - FabricLoader instance = FabricLoader.getInstance(); - File reiConfigFolder = |
