Add support for disabling/enabling the plugin
And autostart can be disabled too
This commit is contained in:
parent
6058842b61
commit
2c6eb3a610
5 changed files with 77 additions and 3 deletions
|
@ -364,5 +364,6 @@ public final class Computer {
|
||||||
}
|
}
|
||||||
session.unlockMachine();
|
session.unlockMachine();
|
||||||
}
|
}
|
||||||
|
instance = null; //Allow setting it again
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package sznp.virtualcomputer;
|
||||||
|
|
||||||
import buttondevteam.lib.chat.Command2;
|
import buttondevteam.lib.chat.Command2;
|
||||||
import buttondevteam.lib.chat.CommandClass;
|
import buttondevteam.lib.chat.CommandClass;
|
||||||
|
import buttondevteam.lib.chat.CustomTabComplete;
|
||||||
import buttondevteam.lib.chat.ICommand2MC;
|
import buttondevteam.lib.chat.ICommand2MC;
|
||||||
import lombok.var;
|
import lombok.var;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
@ -30,6 +31,7 @@ import java.util.Objects;
|
||||||
public class ComputerCommand extends ICommand2MC {
|
public class ComputerCommand extends ICommand2MC {
|
||||||
@Command2.Subcommand
|
@Command2.Subcommand
|
||||||
public void status(CommandSender sender) {
|
public void status(CommandSender sender) {
|
||||||
|
if (checkDisabled(sender)) return;
|
||||||
Computer.getInstance().Status(sender);
|
Computer.getInstance().Status(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,36 +41,43 @@ public class ComputerCommand extends ICommand2MC {
|
||||||
"Use /c list to see the index of the machines."
|
"Use /c list to see the index of the machines."
|
||||||
})
|
})
|
||||||
public void start(CommandSender sender, @Command2.OptionalArg int index) {
|
public void start(CommandSender sender, @Command2.OptionalArg int index) {
|
||||||
|
if (checkDisabled(sender)) return;
|
||||||
Computer.getInstance().Start(sender, index);
|
Computer.getInstance().Start(sender, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command2.Subcommand
|
@Command2.Subcommand
|
||||||
public void list(CommandSender sender) {
|
public void list(CommandSender sender) {
|
||||||
|
if (checkDisabled(sender)) return;
|
||||||
Computer.getInstance().List(sender);
|
Computer.getInstance().List(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command2.Subcommand(aliases = {"poweroff", "off", "kill"})
|
@Command2.Subcommand(aliases = {"poweroff", "off", "kill"})
|
||||||
public void stop(CommandSender sender) {
|
public void stop(CommandSender sender) {
|
||||||
|
if (checkDisabled(sender)) return;
|
||||||
Computer.getInstance().Stop(sender);
|
Computer.getInstance().Stop(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command2.Subcommand(aliases = {"powerbtn", "pwrbtn"})
|
@Command2.Subcommand(aliases = {"powerbtn", "pwrbtn"})
|
||||||
public void powerbutton(CommandSender sender, @Command2.OptionalArg int index) {
|
public void powerbutton(CommandSender sender, @Command2.OptionalArg int index) {
|
||||||
|
if (checkDisabled(sender)) return;
|
||||||
Computer.getInstance().PowerButton(sender, index);
|
Computer.getInstance().PowerButton(sender, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command2.Subcommand(aliases = "restart")
|
@Command2.Subcommand(aliases = "restart")
|
||||||
public void reset(CommandSender sender) {
|
public void reset(CommandSender sender) {
|
||||||
|
if (checkDisabled(sender)) return;
|
||||||
Computer.getInstance().Reset(sender);
|
Computer.getInstance().Reset(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command2.Subcommand(aliases = "save state")
|
@Command2.Subcommand(aliases = "save state")
|
||||||
public void save(CommandSender sender) {
|
public void save(CommandSender sender) {
|
||||||
|
if (checkDisabled(sender)) return;
|
||||||
Computer.getInstance().SaveState(sender);
|
Computer.getInstance().SaveState(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command2.Subcommand(aliases = "fix screen")
|
@Command2.Subcommand(aliases = "fix screen")
|
||||||
public void fix(CommandSender sender) {
|
public void fix(CommandSender sender) {
|
||||||
|
if (checkDisabled(sender)) return;
|
||||||
Computer.getInstance().FixScreen(sender);
|
Computer.getInstance().FixScreen(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,6 +86,7 @@ public class ComputerCommand extends ICommand2MC {
|
||||||
"Presses the specified key. Valid values for the last param are 'down', 'up' and amount of ticks to hold."
|
"Presses the specified key. Valid values for the last param are 'down', 'up' and amount of ticks to hold."
|
||||||
})
|
})
|
||||||
public void key(CommandSender sender, String key, @Command2.OptionalArg String stateorduration) {
|
public void key(CommandSender sender, String key, @Command2.OptionalArg String stateorduration) {
|
||||||
|
if (checkDisabled(sender)) return;
|
||||||
if (stateorduration == null) stateorduration = "";
|
if (stateorduration == null) stateorduration = "";
|
||||||
Computer.getInstance().PressKey(sender, key, stateorduration);
|
Computer.getInstance().PressKey(sender, key, stateorduration);
|
||||||
}
|
}
|
||||||
|
@ -86,6 +96,7 @@ public class ComputerCommand extends ICommand2MC {
|
||||||
"Move the mouse by the specified offset or press the given button."
|
"Move the mouse by the specified offset or press the given button."
|
||||||
})
|
})
|
||||||
public void mouse(CommandSender sender, String keyOrX, @Command2.OptionalArg int y, @Command2.OptionalArg int z, @Command2.OptionalArg int w) {
|
public void mouse(CommandSender sender, String keyOrX, @Command2.OptionalArg int y, @Command2.OptionalArg int z, @Command2.OptionalArg int w) {
|
||||||
|
if (checkDisabled(sender)) return;
|
||||||
try {
|
try {
|
||||||
if (y != 0 || z != 0 || w != 0) {
|
if (y != 0 || z != 0 || w != 0) {
|
||||||
int x = Integer.parseInt(keyOrX);
|
int x = Integer.parseInt(keyOrX);
|
||||||
|
@ -139,6 +150,7 @@ public class ComputerCommand extends ICommand2MC {
|
||||||
"Locks the mouse to where you're looking. If you move your mouse, the computer's mouse will be moved."
|
"Locks the mouse to where you're looking. If you move your mouse, the computer's mouse will be moved."
|
||||||
})
|
})
|
||||||
public void lock_mouse(Player player) {
|
public void lock_mouse(Player player) {
|
||||||
|
if (checkDisabled(player)) return;
|
||||||
MouseLockerPlayerListener.toggleLock(player);
|
MouseLockerPlayerListener.toggleLock(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,6 +159,7 @@ public class ComputerCommand extends ICommand2MC {
|
||||||
"Sets the mouse speed when locked. The default is 5."
|
"Sets the mouse speed when locked. The default is 5."
|
||||||
})
|
})
|
||||||
public void lock_speed(CommandSender sender, float speed) {
|
public void lock_speed(CommandSender sender, float speed) {
|
||||||
|
if (checkDisabled(sender)) return;
|
||||||
MouseLockerPlayerListener.LockedSpeed = speed;
|
MouseLockerPlayerListener.LockedSpeed = speed;
|
||||||
sender.sendMessage("§aMouse speed set to " + MouseLockerPlayerListener.LockedSpeed);
|
sender.sendMessage("§aMouse speed set to " + MouseLockerPlayerListener.LockedSpeed);
|
||||||
}
|
}
|
||||||
|
@ -156,6 +169,7 @@ public class ComputerCommand extends ICommand2MC {
|
||||||
"Spawns a computer screen near you. All of them show the same thing."
|
"Spawns a computer screen near you. All of them show the same thing."
|
||||||
})
|
})
|
||||||
public void spawn(Player player) {
|
public void spawn(Player player) {
|
||||||
|
if (checkDisabled(player)) return;
|
||||||
var loc = player.getLocation();
|
var loc = player.getLocation();
|
||||||
var world = Objects.requireNonNull(loc.getWorld());
|
var world = Objects.requireNonNull(loc.getWorld());
|
||||||
short id = PluginMain.Instance.startID.get();
|
short id = PluginMain.Instance.startID.get();
|
||||||
|
@ -200,4 +214,34 @@ public class ComputerCommand extends ICommand2MC {
|
||||||
System.out.println("item: " + item);
|
System.out.println("item: " + item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Command2.Subcommand(helpText = {
|
||||||
|
"Plugin enable/disable",
|
||||||
|
"Use this command to enable or disable the plugin.",
|
||||||
|
"This can be useful to save resources if it is unused."
|
||||||
|
})
|
||||||
|
public boolean plugin(CommandSender sender, @CustomTabComplete({"enable", "disable"}) String enableDisable) {
|
||||||
|
switch (enableDisable) {
|
||||||
|
case "enable":
|
||||||
|
sender.sendMessage("§bEnabling plugin...");
|
||||||
|
PluginMain.Instance.pluginEnableInternal();
|
||||||
|
sender.sendMessage("§bPlugin enabled! More info on console.");
|
||||||
|
break;
|
||||||
|
case "disable":
|
||||||
|
sender.sendMessage("§aDisabling plugin...");
|
||||||
|
PluginMain.Instance.pluginDisableInternal();
|
||||||
|
sender.sendMessage("§aPlugin disabled! More info on console.");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkDisabled(CommandSender sender) {
|
||||||
|
boolean disabled = !PluginMain.isPluginEnabled();
|
||||||
|
if (disabled)
|
||||||
|
sender.sendMessage("The plugin is currently disabled. Do /c plugin enable to enable it.");
|
||||||
|
return disabled;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package sznp.virtualcomputer;
|
||||||
import buttondevteam.lib.architecture.ButtonPlugin;
|
import buttondevteam.lib.architecture.ButtonPlugin;
|
||||||
import buttondevteam.lib.architecture.ConfigData;
|
import buttondevteam.lib.architecture.ConfigData;
|
||||||
import jnr.ffi.LibraryLoader;
|
import jnr.ffi.LibraryLoader;
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.val;
|
import lombok.val;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
@ -28,6 +29,7 @@ public class PluginMain extends ButtonPlugin {
|
||||||
public static final int MCY = 4;
|
public static final int MCY = 4;
|
||||||
private BukkitTask mousetask;
|
private BukkitTask mousetask;
|
||||||
private VBoxEventHandler listener;
|
private VBoxEventHandler listener;
|
||||||
|
private VirtualBoxManager manager;
|
||||||
|
|
||||||
public static PluginMain Instance;
|
public static PluginMain Instance;
|
||||||
/**
|
/**
|
||||||
|
@ -37,6 +39,8 @@ public class PluginMain extends ButtonPlugin {
|
||||||
private static final ArrayList<IRenderer> renderers = new ArrayList<>();
|
private static final ArrayList<IRenderer> renderers = new ArrayList<>();
|
||||||
public static boolean direct;
|
public static boolean direct;
|
||||||
public static boolean sendAll;
|
public static boolean sendAll;
|
||||||
|
@Getter
|
||||||
|
private static boolean pluginEnabled; //The Bukkit plugin has to be enabled for the enable command to work
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The first map ID to use for the screen.
|
* The first map ID to use for the screen.
|
||||||
|
@ -52,13 +56,28 @@ public class PluginMain extends ButtonPlugin {
|
||||||
*/
|
*/
|
||||||
private final ConfigData<String> kbLayout = getIConfig().getData("kbLayout", "en");
|
private final ConfigData<String> kbLayout = getIConfig().getData("kbLayout", "en");
|
||||||
public File layoutFolder = new File(getDataFolder(), "layouts");
|
public File layoutFolder = new File(getDataFolder(), "layouts");
|
||||||
|
/**
|
||||||
|
* When set to false, the plugin will not initialize on server startup and its only valid command will be /c plugin enable.
|
||||||
|
* This can be useful to save resources as the plugin keeps the VirtualBox interface running while enabled.
|
||||||
|
*/
|
||||||
|
private final ConfigData<Boolean> autoEnable = getIConfig().getData("autoEnable", true);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void pluginEnable() {
|
public void pluginEnable() {
|
||||||
|
registerCommand(new ComputerCommand());
|
||||||
|
if (autoEnable.get())
|
||||||
|
pluginEnableInternal();
|
||||||
|
else
|
||||||
|
getLogger().info("Auto-enable is disabled. Enable with /c plugin enable.");
|
||||||
|
}
|
||||||
|
|
||||||
|
void pluginEnableInternal() {
|
||||||
|
if (pluginEnabled)
|
||||||
|
return;
|
||||||
|
pluginEnabled = true;
|
||||||
Instance = this;
|
Instance = this;
|
||||||
try {
|
try {
|
||||||
ConsoleCommandSender ccs = getServer().getConsoleSender();
|
ConsoleCommandSender ccs = getServer().getConsoleSender();
|
||||||
registerCommand(new ComputerCommand());
|
|
||||||
sendAll = getConfig().getBoolean("sendAll", true);
|
sendAll = getConfig().getBoolean("sendAll", true);
|
||||||
ccs.sendMessage("§bInitializing VirtualBox...");
|
ccs.sendMessage("§bInitializing VirtualBox...");
|
||||||
String osname = System.getProperty("os.name").toLowerCase();
|
String osname = System.getProperty("os.name").toLowerCase();
|
||||||
|
@ -95,6 +114,7 @@ public class PluginMain extends ButtonPlugin {
|
||||||
IVirtualBox vbox = manager.getVBox();
|
IVirtualBox vbox = manager.getVBox();
|
||||||
(listener = new VBoxEventHandler()).registerTo(vbox.getEventSource());
|
(listener = new VBoxEventHandler()).registerTo(vbox.getEventSource());
|
||||||
new Computer(this, manager, vbox); //Saves itself
|
new Computer(this, manager, vbox); //Saves itself
|
||||||
|
this.manager = manager;
|
||||||
ccs.sendMessage("§bLoading Screen...");
|
ccs.sendMessage("§bLoading Screen...");
|
||||||
try {
|
try {
|
||||||
if (useGPU.get())
|
if (useGPU.get())
|
||||||
|
@ -140,6 +160,13 @@ public class PluginMain extends ButtonPlugin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void pluginDisable() {
|
public void pluginDisable() {
|
||||||
|
pluginDisableInternal();
|
||||||
|
}
|
||||||
|
|
||||||
|
void pluginDisableInternal() {
|
||||||
|
if (!pluginEnabled)
|
||||||
|
return;
|
||||||
|
pluginEnabled = false;
|
||||||
ConsoleCommandSender ccs = getServer().getConsoleSender();
|
ConsoleCommandSender ccs = getServer().getConsoleSender();
|
||||||
if (mousetask != null)
|
if (mousetask != null)
|
||||||
mousetask.cancel();
|
mousetask.cancel();
|
||||||
|
@ -154,6 +181,8 @@ public class PluginMain extends ButtonPlugin {
|
||||||
Computer.getInstance().pluginDisable(ccs);
|
Computer.getInstance().pluginDisable(ccs);
|
||||||
ccs.sendMessage("§aHuh.");
|
ccs.sendMessage("§aHuh.");
|
||||||
saveConfig();
|
saveConfig();
|
||||||
|
renderers.clear();
|
||||||
|
manager.cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,4 +8,4 @@ commands:
|
||||||
aliases: c
|
aliases: c
|
||||||
api-version: '1.13'
|
api-version: '1.13'
|
||||||
depend:
|
depend:
|
||||||
- ChromaCore
|
- Chroma-Core
|
2
pom.xml
2
pom.xml
|
@ -83,7 +83,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.TBMCPlugins.ChromaCore</groupId>
|
<groupId>com.github.TBMCPlugins.ChromaCore</groupId>
|
||||||
<artifactId>Chroma-Core</artifactId>
|
<artifactId>Chroma-Core</artifactId>
|
||||||
<version>master-SNAPSHOT</version>
|
<version>v1.0.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue