Add runelite plugin archetype

This commit is contained in:
Adam
2017-11-18 14:41:24 -05:00
parent d047af14d0
commit 4be0d89792
7 changed files with 301 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="example-plugin"
xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<fileSets>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
</fileSets>
</archetype-descriptor>

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>\${groupId}</groupId>
<artifactId>\${artifactId}</artifactId>
<version>\${version}</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<repositories>
<repository>
<id>runelite</id>
<name>Runelite</name>
<url>http://repo.runelite.net</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>net.runelite</groupId>
<artifactId>client</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>install</phase>
<configuration>
<target>
<copy file="\${project.build.directory}/\${project.build.finalName}.jar" tofile="\${user.home}/.runelite/plugins/\${project.build.finalName}.jar"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,47 @@
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package};
import java.awt.Dimension;
import java.awt.Graphics2D;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Player;
import net.runelite.api.Point;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
public class ExampleOverlay extends Overlay
{
private final Client client;
private final ExamplePluginConfiguration config;
@Inject
public ExampleOverlay(@Nullable Client client, ExamplePluginConfiguration config)
{
super(OverlayPosition.DYNAMIC);
this.client = client;
this.config = config;
}
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
{
return null;
}
Player player = client.getLocalPlayer();
String text = player.getName() + " (Level: " + player.getCombatLevel() + ")";
Point textLocation = player.getCanvasTextLocation(graphics, text, player.getModelHeight());
graphics.drawString(text, textLocation.getX(), textLocation.getY());
return null;
}
}

View File

@@ -0,0 +1,74 @@
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package};
import com.google.common.eventbus.Subscribe;
import com.google.inject.Binder;
import com.google.inject.Provides;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.GameStateChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@PluginDescriptor(
name = "Example plugin"
)
public class ExamplePlugin extends Plugin
{
private static final Logger logger = LoggerFactory.getLogger(ExamplePlugin.class);
@Inject
@Nullable
Client client;
@Inject
ExampleOverlay overlay;
@Override
protected void startUp() throws Exception
{
logger.info("Example plugin started!");
}
@Override
protected void shutDown() throws Exception
{
logger.info("Example plugin stopped!");
}
@Subscribe
public void onGameStateChanged(GameStateChanged gameStateChanged)
{
if (gameStateChanged.getGameState() == GameState.LOGGED_IN)
{
client.sendGameMessage("Example plugin is running!");
}
}
@Override
public void configure(Binder binder)
{
binder.bind(ExampleOverlay.class);
}
@Override
public Overlay getOverlay()
{
return overlay;
}
@Provides
ExamplePluginConfiguration provideConfig(ConfigManager configManager)
{
return configManager.getConfig(ExamplePluginConfiguration.class);
}
}

View File

@@ -0,0 +1,26 @@
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package};
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
@ConfigGroup(
keyName = "exampleplugin",
name = "Example plugin",
description = "Configuration for example plugin"
)
public interface ExamplePluginConfiguration extends Config
{
@ConfigItem(
keyName = "enabled",
name = "Enable overlay",
description = "Configures whether the overlay is enabled"
)
default boolean enabled()
{
return true;
}
}