customcursor: support providing custom cursor images
Co-authored-by: Adam <Adam@sigterm.info>
This commit is contained in:
@@ -25,9 +25,11 @@
|
|||||||
package net.runelite.client.plugins.customcursor;
|
package net.runelite.client.plugins.customcursor;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.runelite.client.util.ImageUtil;
|
import net.runelite.client.util.ImageUtil;
|
||||||
|
|
||||||
|
@Getter
|
||||||
public enum CustomCursor
|
public enum CustomCursor
|
||||||
{
|
{
|
||||||
RS3_GOLD("RS3 Gold", "cursor-rs3-gold.png"),
|
RS3_GOLD("RS3 Gold", "cursor-rs3-gold.png"),
|
||||||
@@ -35,21 +37,22 @@ public enum CustomCursor
|
|||||||
DRAGON_DAGGER("Dragon Dagger", "cursor-dragon-dagger.png"),
|
DRAGON_DAGGER("Dragon Dagger", "cursor-dragon-dagger.png"),
|
||||||
DRAGON_DAGGER_POISON("Dragon Dagger (p)", "cursor-dragon-dagger-p.png"),
|
DRAGON_DAGGER_POISON("Dragon Dagger (p)", "cursor-dragon-dagger-p.png"),
|
||||||
TROUT("Trout", "cursor-trout.png"),
|
TROUT("Trout", "cursor-trout.png"),
|
||||||
DRAGON_SCIMITAR("Dragon Scimitar", "cursor-dragon-scimitar.png");
|
DRAGON_SCIMITAR("Dragon Scimitar", "cursor-dragon-scimitar.png"),
|
||||||
|
CUSTOM_IMAGE("Custom Image");
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
@Getter
|
@Nullable
|
||||||
private final BufferedImage cursorImage;
|
private final BufferedImage cursorImage;
|
||||||
|
|
||||||
|
CustomCursor(String name)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
this.cursorImage = null;
|
||||||
|
}
|
||||||
|
|
||||||
CustomCursor(String name, String icon)
|
CustomCursor(String name, String icon)
|
||||||
{
|
{
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.cursorImage = ImageUtil.getResourceStreamFromClass(CustomCursorPlugin.class, icon);
|
this.cursorImage = ImageUtil.getResourceStreamFromClass(CustomCursorPlugin.class, icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -25,10 +25,15 @@
|
|||||||
package net.runelite.client.plugins.customcursor;
|
package net.runelite.client.plugins.customcursor;
|
||||||
|
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.File;
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import net.runelite.client.events.ConfigChanged;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.runelite.client.RuneLite;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
|
import net.runelite.client.events.ConfigChanged;
|
||||||
import net.runelite.client.plugins.Plugin;
|
import net.runelite.client.plugins.Plugin;
|
||||||
import net.runelite.client.plugins.PluginDescriptor;
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
import net.runelite.client.ui.ClientUI;
|
import net.runelite.client.ui.ClientUI;
|
||||||
@@ -38,8 +43,11 @@ import net.runelite.client.ui.ClientUI;
|
|||||||
description = "Replaces your mouse cursor image",
|
description = "Replaces your mouse cursor image",
|
||||||
enabledByDefault = false
|
enabledByDefault = false
|
||||||
)
|
)
|
||||||
|
@Slf4j
|
||||||
public class CustomCursorPlugin extends Plugin
|
public class CustomCursorPlugin extends Plugin
|
||||||
{
|
{
|
||||||
|
private static final File CUSTOM_IMAGE_FILE = new File(RuneLite.RUNELITE_DIR, "cursor.png");
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ClientUI clientUI;
|
private ClientUI clientUI;
|
||||||
|
|
||||||
@@ -76,6 +84,34 @@ public class CustomCursorPlugin extends Plugin
|
|||||||
private void updateCursor()
|
private void updateCursor()
|
||||||
{
|
{
|
||||||
CustomCursor selectedCursor = config.selectedCursor();
|
CustomCursor selectedCursor = config.selectedCursor();
|
||||||
clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.toString());
|
|
||||||
|
if (selectedCursor == CustomCursor.CUSTOM_IMAGE)
|
||||||
|
{
|
||||||
|
if (CUSTOM_IMAGE_FILE.exists())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
BufferedImage image;
|
||||||
|
synchronized (ImageIO.class)
|
||||||
|
{
|
||||||
|
image = ImageIO.read(CUSTOM_IMAGE_FILE);
|
||||||
|
}
|
||||||
|
clientUI.setCursor(image, selectedCursor.getName());
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.error("error setting custom cursor", e);
|
||||||
|
clientUI.resetCursor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
clientUI.resetCursor();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert selectedCursor.getCursorImage() != null;
|
||||||
|
clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user