diff --git a/runelite-api/src/test/java/net/runelite/api/geometry/RectangleUnionTest.java b/runelite-api/src/test/java/net/runelite/api/geometry/RectangleUnionTest.java deleted file mode 100644 index df678b350a..0000000000 --- a/runelite-api/src/test/java/net/runelite/api/geometry/RectangleUnionTest.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2019 Abex - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.api.geometry; - -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.Shape; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; -import javax.imageio.ImageIO; -import org.junit.Assert; -import org.junit.Test; - -public class RectangleUnionTest -{ - private static final int ITERATIONS = 100; - private static final int WIDTH = 1000; - private static final int MAX_RECTS = 50; - - @Test - public void test() throws IOException - { - for (int count = 1; count < MAX_RECTS; count++) - { - for (int r = 0; r < ITERATIONS; r++) - { - Random rand = new Random(count << 16 | r); - String id = count + "rects_iteration" + r; - - BufferedImage wanted = new BufferedImage(WIDTH, WIDTH, BufferedImage.TYPE_BYTE_BINARY); - BufferedImage got = new BufferedImage(WIDTH, WIDTH, BufferedImage.TYPE_BYTE_BINARY); - - Graphics2D wg = wanted.createGraphics(); - wg.setColor(Color.WHITE); - Graphics2D gg = got.createGraphics(); - gg.setColor(Color.WHITE); - - List rects = new ArrayList<>(count); - - for (int i = 0; i < count; i++) - { - int x1, y1, x2, y2; - - do - { - x1 = rand.nextInt(WIDTH); - x2 = rand.nextInt(WIDTH); - } - while (x1 >= x2); - - do - { - y1 = rand.nextInt(WIDTH); - y2 = rand.nextInt(WIDTH); - } - while (y1 >= y2); - - RectangleUnion.Rectangle rect = new RectangleUnion.Rectangle(x1, y1, x2, y2); - rects.add(rect); - - wg.fillRect(x1, y1, x2 - x1, y2 - y1); - } - - Shape union = RectangleUnion.union(rects); - - gg.fill(union); - - loop: - for (int x = 0; x < WIDTH; x++) - { - for (int y = 0; y < WIDTH; y++) - { - if (wanted.getRGB(x, y) != got.getRGB(x, y)) - { - File tmp = new File(System.getProperty("java.io.tmpdir")); - ImageIO.write(wanted, "png", new File(tmp, id + "_wanted.png")); - ImageIO.write(got, "png", new File(tmp, id + "_got.png")); - - Assert.fail(id); - break loop; - } - } - } - } - } - } -} \ No newline at end of file diff --git a/runelite-client/src/main/java/com/openosrs/client/PluginManager.java b/runelite-client/src/main/java/com/openosrs/client/PluginManager.java new file mode 100644 index 0000000000..8911d77ea5 --- /dev/null +++ b/runelite-client/src/main/java/com/openosrs/client/PluginManager.java @@ -0,0 +1,29 @@ +package com.openosrs.client; + +import com.openosrs.client.plugins.neverlog.NeverLogoutPlugin; +import java.util.ArrayList; +import java.util.List; +import net.runelite.client.externalplugins.ExternalPluginManager; +import net.runelite.client.plugins.PluginInstantiationException; + +public class PluginManager +{ + public static List> oprsPlugins = new ArrayList<>(); + + public static void loadPlugins() + { + try + { + ExternalPluginManager.pluginManager.loadPlugins(oprsPlugins, null); + } + catch (PluginInstantiationException e) + { + e.printStackTrace(); + } + } + + static + { + oprsPlugins.add(NeverLogoutPlugin.class); + } +} diff --git a/runelite-client/src/main/java/com/openosrs/client/plugins/neverlog/NeverLogoutPlugin.java b/runelite-client/src/main/java/com/openosrs/client/plugins/neverlog/NeverLogoutPlugin.java new file mode 100644 index 0000000000..fdb0b66d4b --- /dev/null +++ b/runelite-client/src/main/java/com/openosrs/client/plugins/neverlog/NeverLogoutPlugin.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2018, OpenOSRS + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.openosrs.client.plugins.neverlog; + +import javax.inject.Inject; +import net.runelite.api.Client; +import net.runelite.api.events.GameTick; +import net.runelite.client.eventbus.Subscribe; +import net.runelite.client.plugins.Plugin; +import net.runelite.client.plugins.PluginDescriptor; + +@PluginDescriptor( + name = "Never Logout", + enabledByDefault = false, + description = "Overrides the 5 minute AFK logout timer.", + tags = {"openosrs", "never log", "idle", "logout", "log", "never"} +) +@SuppressWarnings("unchecked") +public class NeverLogoutPlugin extends Plugin +{ + @Inject + private Client client; + + @Subscribe + private void onGameTick(GameTick gameTick) + { + if (client.getKeyboardIdleTicks() > 14900) + { + client.setKeyboardIdleTicks(0); + } + if (client.getMouseIdleTicks() > 14900) + { + client.setMouseIdleTicks(0); + } + } +} \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLite.java b/runelite-client/src/main/java/net/runelite/client/RuneLite.java index be3b14c976..cb20c2699d 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -30,6 +30,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Injector; +import com.openosrs.client.PluginManager; import java.io.File; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; @@ -68,7 +69,6 @@ import net.runelite.client.game.ItemManager; import net.runelite.client.game.LootManager; import net.runelite.client.game.chatbox.ChatboxPanelManager; import net.runelite.client.menus.MenuManager; -import net.runelite.client.plugins.PluginManager; import net.runelite.client.rs.ClientLoader; import net.runelite.client.rs.ClientUpdateCheckMode; import net.runelite.client.ui.ClientUI; @@ -107,7 +107,7 @@ public class RuneLite private static Injector injector; @Inject - private PluginManager pluginManager; + private net.runelite.client.plugins.PluginManager pluginManager; @Inject private ExternalPluginManager externalPluginManager; @@ -377,6 +377,9 @@ public class RuneLite overlayManager.add(tooltipOverlay.get()); } + //Load OPRS plugins + PluginManager.loadPlugins(); + // Start plugins pluginManager.startPlugins(); diff --git a/runelite-client/src/main/java/net/runelite/client/externalplugins/ExternalPluginManager.java b/runelite-client/src/main/java/net/runelite/client/externalplugins/ExternalPluginManager.java index 504331f166..dad7480aa8 100644 --- a/runelite-client/src/main/java/net/runelite/client/externalplugins/ExternalPluginManager.java +++ b/runelite-client/src/main/java/net/runelite/client/externalplugins/ExternalPluginManager.java @@ -76,7 +76,7 @@ import okhttp3.Response; public class ExternalPluginManager { private static final String PLUGIN_LIST_KEY = "externalPlugins"; - private static Class[] builtinExternals = null; + public static Class[] builtinExternals = null; @Inject @Named("safeMode") @@ -85,7 +85,7 @@ public class ExternalPluginManager private final ConfigManager configManager; private final ExternalPluginClient externalPluginClient; private final ScheduledExecutorService executor; - private final PluginManager pluginManager; + public static PluginManager pluginManager; private final EventBus eventBus; private final OkHttpClient okHttpClient;