Initial RS-Auger project conversion from SQLite template
This commit is contained in:
commit
1d7ae38388
37 files changed
+4978
No files matched your search
+39
@@ -0,0 +1,39 @@
|
|||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
!**/src/main/**/target/
|
||||||
|
!**/src/test/**/target/
|
||||||
|
.kotlin
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea/modules.xml
|
||||||
|
.idea/jarRepositories.xml
|
||||||
|
.idea/compiler.xml
|
||||||
|
.idea/libraries/
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### Eclipse ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
build/
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
### Mac OS ###
|
||||||
|
.DS_Store
|
||||||
Generated
+10
@@ -0,0 +1,10 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Ignored default folder with query files
|
||||||
|
/queries/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding">
|
||||||
|
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
||||||
|
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+11
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
|
<component name="MavenProjectsManager">
|
||||||
|
<option name="originalFiles">
|
||||||
|
<list>
|
||||||
|
<option value="$PROJECT_DIR$/pom.xml" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
<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>com.rsscripting</groupId>
|
||||||
|
<artifactId>RS-Auger</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>21</maven.compiler.source>
|
||||||
|
<maven.compiler.target>21</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>papermc-repo</id>
|
||||||
|
<url>https://repo.papermc.io/repository/maven-public/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.papermc.paper</groupId>
|
||||||
|
<artifactId>paper-api</artifactId>
|
||||||
|
<version>1.21.6-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.xerial</groupId>
|
||||||
|
<artifactId>sqlite-jdbc</artifactId>
|
||||||
|
<version>3.50.3.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,186 @@
|
|||||||
|
package com.rsscripting.rsauger;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.commands.RSPluginCommand;
|
||||||
|
import com.rsscripting.rsauger.commands.RSTabCompleter;
|
||||||
|
import com.rsscripting.rsauger.config.ConfigManager;
|
||||||
|
import com.rsscripting.rsauger.database.DatabaseManager;
|
||||||
|
import com.rsscripting.rsauger.listeners.*;
|
||||||
|
import com.rsscripting.rsauger.utils.GitHubUpdateChecker;
|
||||||
|
import com.rsscripting.rsauger.utils.RSConstants;
|
||||||
|
import org.bukkit.command.PluginCommand;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
public class RSAuger
|
||||||
|
extends JavaPlugin {
|
||||||
|
|
||||||
|
private static RSAuger instance;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
|
||||||
|
saveDefaultConfig();
|
||||||
|
|
||||||
|
|
||||||
|
instance = this;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CONFIG
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
ConfigManager.setup();
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Database
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
DatabaseManager.initialize(
|
||||||
|
this
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| LISTENERS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Convert */
|
||||||
|
RSConvertListener
|
||||||
|
conversionListener =
|
||||||
|
new RSConvertListener();
|
||||||
|
|
||||||
|
getServer().getPluginManager().registerEvents(
|
||||||
|
|
||||||
|
conversionListener,
|
||||||
|
|
||||||
|
this
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Main Menu */
|
||||||
|
getServer().getPluginManager().registerEvents(
|
||||||
|
|
||||||
|
new RSMenuListener(
|
||||||
|
conversionListener
|
||||||
|
),
|
||||||
|
|
||||||
|
this
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Radius */
|
||||||
|
RSRadiusListener radiusListener =
|
||||||
|
new RSRadiusListener(
|
||||||
|
conversionListener
|
||||||
|
);
|
||||||
|
|
||||||
|
getServer()
|
||||||
|
.getPluginManager()
|
||||||
|
.registerEvents(
|
||||||
|
radiusListener,
|
||||||
|
this
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Admin */
|
||||||
|
RSAdminListener adminListener =
|
||||||
|
new RSAdminListener(
|
||||||
|
conversionListener
|
||||||
|
);
|
||||||
|
|
||||||
|
getServer()
|
||||||
|
.getPluginManager()
|
||||||
|
.registerEvents(
|
||||||
|
adminListener,
|
||||||
|
this
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Filter */
|
||||||
|
RSFilterListener filterListener =
|
||||||
|
new RSFilterListener(
|
||||||
|
conversionListener
|
||||||
|
);
|
||||||
|
|
||||||
|
getServer()
|
||||||
|
.getPluginManager()
|
||||||
|
.registerEvents(
|
||||||
|
filterListener,
|
||||||
|
this
|
||||||
|
);
|
||||||
|
|
||||||
|
getServer()
|
||||||
|
.getPluginManager()
|
||||||
|
.registerEvents(
|
||||||
|
new RSBlockBreakListener(),
|
||||||
|
this
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| COMMANDS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
PluginCommand command =
|
||||||
|
getCommand(
|
||||||
|
RSConstants.COMMAND_ALIAS
|
||||||
|
);
|
||||||
|
|
||||||
|
if (command != null) {
|
||||||
|
|
||||||
|
command.setExecutor(
|
||||||
|
new RSPluginCommand()
|
||||||
|
);
|
||||||
|
|
||||||
|
command.setTabCompleter(
|
||||||
|
new RSTabCompleter()
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| UPDATE CHECKER
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
GitHubUpdateChecker.checkForUpdates();
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| ENABLE MESSAGE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
getLogger().info(
|
||||||
|
RSConstants.PLUGIN_NAME
|
||||||
|
+ " Enabled"
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
|
||||||
|
getLogger().info(
|
||||||
|
RSConstants.PLUGIN_NAME
|
||||||
|
+ " Disabled"
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| GET INSTANCE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static RSAuger getInstance() {
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
package com.rsscripting.rsauger.commands;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.config.ConfigManager;
|
||||||
|
import com.rsscripting.rsauger.utils.RSConstants;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class RSPluginCommand
|
||||||
|
implements CommandExecutor {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(
|
||||||
|
|
||||||
|
@NotNull CommandSender sender,
|
||||||
|
@NotNull Command command,
|
||||||
|
@NotNull String label,
|
||||||
|
@NotNull String @NotNull [] args
|
||||||
|
|
||||||
|
) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| BASE COMMAND
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (args.length == 0) {
|
||||||
|
|
||||||
|
sender.sendMessage(
|
||||||
|
RSConstants.PREFIX
|
||||||
|
+ "Running "
|
||||||
|
+ RSConstants.PLUGIN_NAME
|
||||||
|
);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| RELOAD COMMAND
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (args[0].equalsIgnoreCase(
|
||||||
|
"reload"
|
||||||
|
)) {
|
||||||
|
|
||||||
|
if (!sender.hasPermission(
|
||||||
|
RSConstants.ADMIN_PERMISSION
|
||||||
|
)) {
|
||||||
|
|
||||||
|
sender.sendMessage(
|
||||||
|
RSConstants.PREFIX
|
||||||
|
+ "No permission."
|
||||||
|
);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigManager.reload();
|
||||||
|
|
||||||
|
sender.sendMessage(
|
||||||
|
RSConstants.PREFIX
|
||||||
|
+ "Configuration reloaded."
|
||||||
|
);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| VERSION COMMAND
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (args[0].equalsIgnoreCase(
|
||||||
|
"version"
|
||||||
|
)) {
|
||||||
|
|
||||||
|
sender.sendMessage(
|
||||||
|
RSConstants.PREFIX
|
||||||
|
+ RSConstants.PLUGIN_NAME
|
||||||
|
+ " v"
|
||||||
|
+ RSConstants.VERSION
|
||||||
|
);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package com.rsscripting.rsauger.commands;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabCompleter;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class RSTabCompleter
|
||||||
|
implements TabCompleter {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(
|
||||||
|
|
||||||
|
@NotNull CommandSender sender,
|
||||||
|
@NotNull Command command,
|
||||||
|
@NotNull String label,
|
||||||
|
@NotNull String @NotNull [] args
|
||||||
|
|
||||||
|
|
||||||
|
) {
|
||||||
|
|
||||||
|
List<String> completions =
|
||||||
|
new ArrayList<>();
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FIRST ARGUMENT
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (args.length == 1) {
|
||||||
|
|
||||||
|
completions.add("reload");
|
||||||
|
|
||||||
|
completions.add("version");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return completions;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package com.rsscripting.rsauger.config;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.RSAuger;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
|
||||||
|
public class ConfigManager {
|
||||||
|
|
||||||
|
private static FileConfiguration config;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| SETUP
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void setup() {
|
||||||
|
|
||||||
|
RSAuger.getInstance()
|
||||||
|
.saveDefaultConfig();
|
||||||
|
|
||||||
|
config =
|
||||||
|
RSAuger.getInstance()
|
||||||
|
.getConfig();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| RELOAD
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void reload() {
|
||||||
|
|
||||||
|
RSAuger.getInstance()
|
||||||
|
.reloadConfig();
|
||||||
|
|
||||||
|
config =
|
||||||
|
RSAuger.getInstance()
|
||||||
|
.getConfig();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| GET CONFIG
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static FileConfiguration get() {
|
||||||
|
|
||||||
|
return config;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,241 @@
|
|||||||
|
package com.rsscripting.rsauger.database;
|
||||||
|
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
public class DatabaseManager {
|
||||||
|
|
||||||
|
private static JavaPlugin plugin;
|
||||||
|
|
||||||
|
private static String databaseUrl;
|
||||||
|
|
||||||
|
public static void initialize(
|
||||||
|
JavaPlugin pluginInstance
|
||||||
|
) {
|
||||||
|
|
||||||
|
plugin = pluginInstance;
|
||||||
|
|
||||||
|
createDatabase();
|
||||||
|
|
||||||
|
createTables();
|
||||||
|
|
||||||
|
updateDatabase();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void createDatabase() {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
File databaseFile =
|
||||||
|
new File(
|
||||||
|
plugin.getDataFolder(),
|
||||||
|
"database.db"
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!plugin.getDataFolder().exists()) {
|
||||||
|
|
||||||
|
if (!plugin.getDataFolder().mkdirs()) {
|
||||||
|
|
||||||
|
plugin.getLogger().severe(
|
||||||
|
"Failed to create plugin data folder."
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
databaseUrl =
|
||||||
|
"jdbc:sqlite:"
|
||||||
|
+ databaseFile.getAbsolutePath();
|
||||||
|
|
||||||
|
Connection connection =
|
||||||
|
DriverManager.getConnection(
|
||||||
|
databaseUrl
|
||||||
|
);
|
||||||
|
|
||||||
|
connection.close();
|
||||||
|
|
||||||
|
plugin.getLogger().info(
|
||||||
|
"SQLite database initialized."
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (Exception e) {
|
||||||
|
|
||||||
|
plugin.getLogger().log(
|
||||||
|
Level.SEVERE,
|
||||||
|
"Failed to initialize database.",
|
||||||
|
e
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void createTables() {
|
||||||
|
|
||||||
|
try (
|
||||||
|
|
||||||
|
Connection connection =
|
||||||
|
DriverManager.getConnection(
|
||||||
|
databaseUrl
|
||||||
|
)
|
||||||
|
|
||||||
|
) {
|
||||||
|
|
||||||
|
connection.createStatement().execute(
|
||||||
|
"""
|
||||||
|
CREATE TABLE IF NOT EXISTS machines (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
world TEXT NOT NULL,
|
||||||
|
x INTEGER NOT NULL,
|
||||||
|
y INTEGER NOT NULL,
|
||||||
|
z INTEGER NOT NULL,
|
||||||
|
owner_uuid TEXT,
|
||||||
|
owner_name TEXT,
|
||||||
|
machine_type TEXT,
|
||||||
|
radius INTEGER DEFAULT 5,
|
||||||
|
paused INTEGER DEFAULT 0,
|
||||||
|
state TEXT DEFAULT 'ACTIVE',
|
||||||
|
filter_mode TEXT DEFAULT 'ALLOW_ALL',
|
||||||
|
created_at TEXT
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
);
|
||||||
|
|
||||||
|
connection.createStatement().execute(
|
||||||
|
"""
|
||||||
|
CREATE TABLE IF NOT EXISTS machine_filters (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
machine_id INTEGER NOT NULL,
|
||||||
|
page INTEGER NOT NULL,
|
||||||
|
slot INTEGER NOT NULL,
|
||||||
|
item_data TEXT NOT NULL
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
);
|
||||||
|
|
||||||
|
plugin.getLogger().info(
|
||||||
|
"Database tables initialized."
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (Exception e) {
|
||||||
|
|
||||||
|
plugin.getLogger().log(
|
||||||
|
Level.SEVERE,
|
||||||
|
"Failed to create tables.",
|
||||||
|
e
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void updateDatabase() {
|
||||||
|
|
||||||
|
try (
|
||||||
|
|
||||||
|
Connection connection =
|
||||||
|
DriverManager.getConnection(
|
||||||
|
databaseUrl
|
||||||
|
)
|
||||||
|
|
||||||
|
) {
|
||||||
|
|
||||||
|
ensureColumnExists(
|
||||||
|
connection,
|
||||||
|
"machines",
|
||||||
|
"state",
|
||||||
|
"TEXT DEFAULT 'ACTIVE'"
|
||||||
|
);
|
||||||
|
|
||||||
|
ensureColumnExists(
|
||||||
|
connection,
|
||||||
|
"machines",
|
||||||
|
"error_reason",
|
||||||
|
"TEXT"
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (Exception e) {
|
||||||
|
|
||||||
|
plugin.getLogger().log(
|
||||||
|
Level.SEVERE,
|
||||||
|
"Failed to update database.",
|
||||||
|
e
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ensureColumnExists(
|
||||||
|
Connection connection,
|
||||||
|
String table,
|
||||||
|
String column,
|
||||||
|
String definition
|
||||||
|
) {
|
||||||
|
|
||||||
|
try (
|
||||||
|
|
||||||
|
var columns =
|
||||||
|
connection
|
||||||
|
.getMetaData()
|
||||||
|
.getColumns(
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
table,
|
||||||
|
column
|
||||||
|
)
|
||||||
|
|
||||||
|
) {
|
||||||
|
|
||||||
|
if (!columns.next()) {
|
||||||
|
|
||||||
|
connection.createStatement().execute(
|
||||||
|
"ALTER TABLE "
|
||||||
|
+ table
|
||||||
|
+ " ADD COLUMN "
|
||||||
|
+ column
|
||||||
|
+ " "
|
||||||
|
+ definition
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (Exception e) {
|
||||||
|
|
||||||
|
plugin.getLogger().log(
|
||||||
|
Level.SEVERE,
|
||||||
|
"Failed updating column "
|
||||||
|
+ column,
|
||||||
|
e
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Connection getConnection()
|
||||||
|
throws Exception {
|
||||||
|
|
||||||
|
return DriverManager.getConnection(
|
||||||
|
databaseUrl
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,131 @@
|
|||||||
|
package com.rsscripting.rsauger.gui;
|
||||||
|
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.utils.RSMenuUtils;
|
||||||
|
import com.rsscripting.rsauger.utils.VersionUtils;
|
||||||
|
import com.rsscripting.rsauger.utils.GitHubUpdateChecker;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class RSAdminMenu {
|
||||||
|
|
||||||
|
public static final String MENU_TITLE = "Admin";
|
||||||
|
|
||||||
|
public static void open(
|
||||||
|
Player player
|
||||||
|
) {
|
||||||
|
|
||||||
|
Inventory menu =
|
||||||
|
Bukkit.createInventory(
|
||||||
|
new RSMenuHolder(
|
||||||
|
"ADMIN"
|
||||||
|
),
|
||||||
|
18,
|
||||||
|
Component.text(
|
||||||
|
MENU_TITLE
|
||||||
|
).color(
|
||||||
|
NamedTextColor.GOLD
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FILLER
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
ItemStack filler =
|
||||||
|
RSMenuUtils.createFillerPane();
|
||||||
|
|
||||||
|
for (int i = 0; i < menu.getSize(); i++) {
|
||||||
|
|
||||||
|
menu.setItem(i, filler);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| BACK
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
4,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
|
||||||
|
Material.OAK_DOOR,
|
||||||
|
|
||||||
|
"§eBack"
|
||||||
|
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| RELOAD
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
12,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
|
||||||
|
Material.ENCHANTED_BOOK,
|
||||||
|
|
||||||
|
"§cReload Plugin"
|
||||||
|
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| VERSION
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
14,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
|
||||||
|
Material.BOOK,
|
||||||
|
|
||||||
|
"§ePlugin Version",
|
||||||
|
|
||||||
|
List.of(
|
||||||
|
|
||||||
|
"§7Installed: §f"
|
||||||
|
+ VersionUtils.getVersion(),
|
||||||
|
|
||||||
|
"",
|
||||||
|
|
||||||
|
"§7Status: §f"
|
||||||
|
+ GitHubUpdateChecker.getUpdateStatus(),
|
||||||
|
|
||||||
|
"",
|
||||||
|
|
||||||
|
"§7Latest: §f"
|
||||||
|
+ (
|
||||||
|
GitHubUpdateChecker.getLatestVersion()
|
||||||
|
== null
|
||||||
|
? "Unknown"
|
||||||
|
: GitHubUpdateChecker.getLatestVersion()
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
player.openInventory(menu);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
package com.rsscripting.rsauger.gui;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.utils.RSMenuUtils;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class RSConversionMenu {
|
||||||
|
|
||||||
|
public static final String MENU_TITLE = "Activate Item Magnet";
|
||||||
|
|
||||||
|
public static void open(
|
||||||
|
Player player
|
||||||
|
) {
|
||||||
|
|
||||||
|
Inventory menu =
|
||||||
|
Bukkit.createInventory(
|
||||||
|
new RSMenuHolder(
|
||||||
|
"CONVERT"
|
||||||
|
),
|
||||||
|
9,
|
||||||
|
Component.text(
|
||||||
|
MENU_TITLE
|
||||||
|
).color(
|
||||||
|
NamedTextColor.BLUE
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FILLER
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
ItemStack filler =
|
||||||
|
RSMenuUtils.createFillerPane();
|
||||||
|
|
||||||
|
for (int i = 0; i < menu.getSize(); i++) {
|
||||||
|
|
||||||
|
menu.setItem(i, filler);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CONVERT BUTTON
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
4,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
Material.CRAFTING_TABLE,
|
||||||
|
"§aConvert"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
player.openInventory(menu);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,227 @@
|
|||||||
|
package com.rsscripting.rsauger.gui;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.managers.MachineManager;
|
||||||
|
import com.rsscripting.rsauger.utils.RSKeys;
|
||||||
|
import com.rsscripting.rsauger.utils.RSMenuUtils;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class RSFilterMenu {
|
||||||
|
|
||||||
|
public static final String MENU_TITLE =
|
||||||
|
"Filter";
|
||||||
|
|
||||||
|
public static void open(
|
||||||
|
Player player,
|
||||||
|
Block block
|
||||||
|
) {
|
||||||
|
|
||||||
|
open(
|
||||||
|
player,
|
||||||
|
block,
|
||||||
|
1
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void open(
|
||||||
|
Player player,
|
||||||
|
Block block,
|
||||||
|
int page
|
||||||
|
) {
|
||||||
|
|
||||||
|
RSMenuHolder holder =
|
||||||
|
new RSMenuHolder(
|
||||||
|
"FILTER"
|
||||||
|
);
|
||||||
|
|
||||||
|
holder.setPage(
|
||||||
|
page
|
||||||
|
);
|
||||||
|
|
||||||
|
Inventory menu =
|
||||||
|
Bukkit.createInventory(
|
||||||
|
holder,
|
||||||
|
54,
|
||||||
|
Component.text(
|
||||||
|
MENU_TITLE
|
||||||
|
+ " ["
|
||||||
|
+ holder.getPage()
|
||||||
|
+ "]"
|
||||||
|
).color(
|
||||||
|
NamedTextColor.BLUE
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| TOP ROW FILLER
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
ItemStack filler =
|
||||||
|
RSMenuUtils.createFillerPane();
|
||||||
|
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
i,
|
||||||
|
filler
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FILTER MODE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
String filterMode =
|
||||||
|
MachineManager.getFilterMode(
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
Material filterMaterial;
|
||||||
|
|
||||||
|
String filterName;
|
||||||
|
|
||||||
|
if (filterMode.equals(
|
||||||
|
RSKeys.FILTER_WHITELIST
|
||||||
|
)) {
|
||||||
|
|
||||||
|
filterMaterial =
|
||||||
|
Material.WHITE_WOOL;
|
||||||
|
|
||||||
|
filterName =
|
||||||
|
"§aWhitelist";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (filterMode.equals(
|
||||||
|
RSKeys.FILTER_BLACKLIST
|
||||||
|
)) {
|
||||||
|
|
||||||
|
filterMaterial =
|
||||||
|
Material.BLACK_WOOL;
|
||||||
|
|
||||||
|
filterName =
|
||||||
|
"§cBlacklist";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
|
||||||
|
filterMaterial =
|
||||||
|
Material.LIME_WOOL;
|
||||||
|
|
||||||
|
filterName =
|
||||||
|
"§aAllow All";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
3,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
filterMaterial,
|
||||||
|
filterName
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| PREVIOUS PAGE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (holder.getPage() > 1) {
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
0,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
Material.ARROW,
|
||||||
|
"§ePrevious Page (" + holder.getPage() + ")"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FILTER ITEMS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
Map<Integer, ItemStack> filterItems =
|
||||||
|
MachineManager.getFilterItems(
|
||||||
|
block,
|
||||||
|
holder.getPage()
|
||||||
|
);
|
||||||
|
|
||||||
|
for (Integer slot : filterItems.keySet()) {
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
slot,
|
||||||
|
filterItems.get(
|
||||||
|
slot
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| NEXT PAGE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
int highestPage =
|
||||||
|
MachineManager.getHighestFilterPage(
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
if (holder.getPage()
|
||||||
|
<= highestPage) {
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
8,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
Material.ARROW,
|
||||||
|
"§eNext Page (" + holder.getPage() + ")"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| BACK
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
5,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
|
||||||
|
Material.OAK_DOOR,
|
||||||
|
|
||||||
|
"§eBack"
|
||||||
|
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
player.openInventory(
|
||||||
|
menu
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
package com.rsscripting.rsauger.gui;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.utils.RSConstants;
|
||||||
|
import com.rsscripting.rsauger.utils.RSMenuUtils;
|
||||||
|
import com.rsscripting.rsauger.managers.MachineManager;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class RSMainMenu {
|
||||||
|
|
||||||
|
public static final String MENU_TITLE = "Main";
|
||||||
|
|
||||||
|
public static void open(
|
||||||
|
Player player,
|
||||||
|
Block block
|
||||||
|
) {
|
||||||
|
|
||||||
|
Inventory menu =
|
||||||
|
Bukkit.createInventory(
|
||||||
|
new RSMenuHolder(
|
||||||
|
"MAIN"
|
||||||
|
),
|
||||||
|
18,
|
||||||
|
Component.text(
|
||||||
|
MENU_TITLE
|
||||||
|
).color(
|
||||||
|
NamedTextColor.BLUE
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FILLER
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
ItemStack filler =
|
||||||
|
RSMenuUtils.createFillerPane();
|
||||||
|
|
||||||
|
for (int i = 0; i < menu.getSize(); i++) {
|
||||||
|
|
||||||
|
menu.setItem(i, filler);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CONVERT BACK
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
2,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
Material.COMPOSTER,
|
||||||
|
"§6Convert Back"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| PAUSE / RESUME
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
boolean paused =
|
||||||
|
MachineManager.isPaused(
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
6,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
|
||||||
|
paused
|
||||||
|
? Material.RED_DYE
|
||||||
|
: Material.GREEN_DYE,
|
||||||
|
|
||||||
|
paused
|
||||||
|
? "§cPaused"
|
||||||
|
: "§aRunning"
|
||||||
|
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| RADIUS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
11,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
|
||||||
|
Material.COMPASS,
|
||||||
|
|
||||||
|
"§bRadius",
|
||||||
|
|
||||||
|
List.of(
|
||||||
|
"§7Current Radius: §f"
|
||||||
|
+ MachineManager.getRadius(block)
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FILTER
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
15,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
|
||||||
|
Material.HOPPER,
|
||||||
|
|
||||||
|
"§eFilter",
|
||||||
|
|
||||||
|
List.of(
|
||||||
|
"§7Mode: §f"
|
||||||
|
+ MachineManager.getFilterMode(block)
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| ADMIN
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (player.hasPermission(
|
||||||
|
RSConstants.ADMIN_PERMISSION
|
||||||
|
)) {
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
4,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
Material.COMMAND_BLOCK,
|
||||||
|
"§cAdmin"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
player.openInventory(menu);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package com.rsscripting.rsauger.gui;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.InventoryHolder;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class RSMenuHolder
|
||||||
|
implements InventoryHolder {
|
||||||
|
|
||||||
|
private final String menuId;
|
||||||
|
|
||||||
|
private int page = 1;
|
||||||
|
|
||||||
|
public RSMenuHolder(
|
||||||
|
String menuId
|
||||||
|
) {
|
||||||
|
|
||||||
|
this.menuId = menuId;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMenuId() {
|
||||||
|
|
||||||
|
return menuId;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPage() {
|
||||||
|
|
||||||
|
return page;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPage(
|
||||||
|
int page
|
||||||
|
) {
|
||||||
|
|
||||||
|
if (page < 1) {
|
||||||
|
|
||||||
|
page = 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
this.page = page;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Inventory getInventory() {
|
||||||
|
|
||||||
|
throw new UnsupportedOperationException(
|
||||||
|
"RSMenuHolder does not store an inventory."
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,158 @@
|
|||||||
|
package com.rsscripting.rsauger.gui;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.managers.MachineManager;
|
||||||
|
import com.rsscripting.rsauger.utils.RSMenuUtils;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class RSRadiusMenu {
|
||||||
|
|
||||||
|
|
||||||
|
public static void open(
|
||||||
|
Player player,
|
||||||
|
Block block
|
||||||
|
) {
|
||||||
|
|
||||||
|
Inventory menu =
|
||||||
|
Bukkit.createInventory(
|
||||||
|
new RSMenuHolder(
|
||||||
|
"RADIUS"
|
||||||
|
),
|
||||||
|
18,
|
||||||
|
Component.text(
|
||||||
|
"Radius: "
|
||||||
|
+ MachineManager.getRadius(
|
||||||
|
block
|
||||||
|
)
|
||||||
|
).color(NamedTextColor.BLUE)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FILLER
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
ItemStack filler =
|
||||||
|
RSMenuUtils.createFillerPane();
|
||||||
|
|
||||||
|
for (int i = 0; i < menu.getSize(); i++) {
|
||||||
|
|
||||||
|
menu.setItem(i, filler);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| BACK
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
4,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
|
||||||
|
Material.OAK_DOOR,
|
||||||
|
|
||||||
|
"§eBack"
|
||||||
|
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CURRENT RADIUS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
13,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
|
||||||
|
Material.COMPASS,
|
||||||
|
|
||||||
|
"§bCurrent Radius",
|
||||||
|
|
||||||
|
List.of(
|
||||||
|
"§7Radius: §f"
|
||||||
|
+ MachineManager.getRadius(
|
||||||
|
block
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| NEGATIVE BUTTONS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
10,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
Material.RED_WOOL,
|
||||||
|
"§c-10"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
11,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
Material.RED_WOOL,
|
||||||
|
"§c-5"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
12,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
Material.RED_WOOL,
|
||||||
|
"§c-1"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| POSITIVE BUTTONS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
14,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
Material.GREEN_WOOL,
|
||||||
|
"§a+1"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
15,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
Material.GREEN_WOOL,
|
||||||
|
"§a+5"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
menu.setItem(
|
||||||
|
16,
|
||||||
|
RSMenuUtils.createMenuItem(
|
||||||
|
Material.GREEN_WOOL,
|
||||||
|
"§a+10"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
player.openInventory(menu);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.rsscripting.rsauger.gui.session;
|
||||||
|
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class GuiSession {
|
||||||
|
|
||||||
|
private final UUID playerUuid;
|
||||||
|
|
||||||
|
private Block selectedBlock;
|
||||||
|
|
||||||
|
public GuiSession(UUID playerUuid) {
|
||||||
|
this.playerUuid = playerUuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getPlayerUuid() {
|
||||||
|
return playerUuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Block getSelectedBlock() {
|
||||||
|
return selectedBlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedBlock(Block selectedBlock) {
|
||||||
|
this.selectedBlock = selectedBlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package com.rsscripting.rsauger.gui.session;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class GuiSessionManager {
|
||||||
|
|
||||||
|
private static final Map<UUID, GuiSession> sessions =
|
||||||
|
new HashMap<>();
|
||||||
|
|
||||||
|
public static GuiSession getSession(
|
||||||
|
Player player
|
||||||
|
) {
|
||||||
|
|
||||||
|
return sessions.computeIfAbsent(
|
||||||
|
player.getUniqueId(),
|
||||||
|
GuiSession::new
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void removeSession(
|
||||||
|
Player player
|
||||||
|
) {
|
||||||
|
|
||||||
|
sessions.remove(
|
||||||
|
player.getUniqueId()
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
package com.rsscripting.rsauger.listeners;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.config.ConfigManager;
|
||||||
|
import com.rsscripting.rsauger.gui.RSAdminMenu;
|
||||||
|
import com.rsscripting.rsauger.gui.RSMenuHolder;
|
||||||
|
import com.rsscripting.rsauger.utils.RSConstants;
|
||||||
|
import com.rsscripting.rsauger.gui.RSMainMenu;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import com.rsscripting.rsauger.utils.RSMessageUtils;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
|
||||||
|
public class RSAdminListener
|
||||||
|
implements Listener {
|
||||||
|
|
||||||
|
private final RSConvertListener
|
||||||
|
conversionListener;
|
||||||
|
|
||||||
|
public RSAdminListener(
|
||||||
|
RSConvertListener conversionListener
|
||||||
|
) {
|
||||||
|
|
||||||
|
this.conversionListener =
|
||||||
|
conversionListener;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInventoryClick(
|
||||||
|
InventoryClickEvent event
|
||||||
|
) {
|
||||||
|
|
||||||
|
if (!(event.getWhoClicked()
|
||||||
|
instanceof Player player)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(event.getInventory()
|
||||||
|
.getHolder()
|
||||||
|
instanceof RSMenuHolder holder)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!holder.getMenuId()
|
||||||
|
.equals(
|
||||||
|
"ADMIN"
|
||||||
|
)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| SECURITY
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!player.isOp()
|
||||||
|
||
|
||||||
|
|
||||||
|
!player.hasPermission(
|
||||||
|
RSConstants.ADMIN_PERMISSION
|
||||||
|
)) {
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| BACK
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 4) {
|
||||||
|
|
||||||
|
Block block =
|
||||||
|
conversionListener.getSelectedBlock(player);
|
||||||
|
|
||||||
|
if (block == null) {
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
RSMainMenu.open(
|
||||||
|
player,
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| RELOAD
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 12) {
|
||||||
|
|
||||||
|
ConfigManager.reload();
|
||||||
|
|
||||||
|
RSMessageUtils.success(
|
||||||
|
player,
|
||||||
|
"Configuration reloaded."
|
||||||
|
);
|
||||||
|
|
||||||
|
RSAdminMenu.open(
|
||||||
|
player
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.rsscripting.rsauger.listeners;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.managers.MachineManager;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
|
|
||||||
|
public class RSBlockBreakListener
|
||||||
|
implements Listener {
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onBlockBreak(
|
||||||
|
BlockBreakEvent event
|
||||||
|
) {
|
||||||
|
|
||||||
|
if (MachineManager.machineExists(
|
||||||
|
event.getBlock()
|
||||||
|
)) {
|
||||||
|
|
||||||
|
event.setCancelled(
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,216 @@
|
|||||||
|
package com.rsscripting.rsauger.listeners;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.gui.RSConversionMenu;
|
||||||
|
import com.rsscripting.rsauger.gui.RSMainMenu;
|
||||||
|
import com.rsscripting.rsauger.managers.MachineManager;
|
||||||
|
import com.rsscripting.rsauger.utils.RSConstants;
|
||||||
|
import com.rsscripting.rsauger.gui.session.GuiSession;
|
||||||
|
import com.rsscripting.rsauger.gui.session.GuiSessionManager;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.utils.RSMessageUtils;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class RSConvertListener
|
||||||
|
implements Listener {
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerInteractBlock(
|
||||||
|
PlayerInteractEvent event
|
||||||
|
) {
|
||||||
|
|
||||||
|
Player player =
|
||||||
|
event.getPlayer();
|
||||||
|
|
||||||
|
Block block =
|
||||||
|
event.getClickedBlock();
|
||||||
|
|
||||||
|
if (block == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| REQUIRE SNEAKING
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!player.isSneaking()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| VALIDATE TARGET ENTITY
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (block.getType() !=
|
||||||
|
RSConstants.REQUIRED_TARGET_BLOCK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| VALIDATE HELD ITEM
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
ItemStack heldItem =
|
||||||
|
player.getInventory()
|
||||||
|
.getItemInMainHand();
|
||||||
|
|
||||||
|
if (heldItem.getType() !=
|
||||||
|
RSConstants.REQUIRED_HELD_ITEM) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CANCEL VANILLA ACTION
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| STORE SELECTED ENTITY
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
GuiSession session =
|
||||||
|
GuiSessionManager.getSession(
|
||||||
|
player
|
||||||
|
);
|
||||||
|
|
||||||
|
session.setSelectedBlock(
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| ALREADY CONVERTED
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (MachineManager.machineExists(
|
||||||
|
block
|
||||||
|
)) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| OWNER CHECK
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!MachineManager.isOwner(
|
||||||
|
block,
|
||||||
|
player
|
||||||
|
)
|
||||||
|
|
||||||
|
&&
|
||||||
|
|
||||||
|
!player.hasPermission(
|
||||||
|
RSConstants.BYPASS_PERMISSION
|
||||||
|
)
|
||||||
|
|
||||||
|
) {
|
||||||
|
|
||||||
|
RSMessageUtils.error(
|
||||||
|
player,
|
||||||
|
"You are not the owner."
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| OPEN MAIN MENU
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
RSMainMenu.open(
|
||||||
|
player,
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| OPEN CONVERSION MENU
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
RSConversionMenu.open(player);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| GET SELECTED ENTITY
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public Block getSelectedBlock(
|
||||||
|
Player player
|
||||||
|
) {
|
||||||
|
|
||||||
|
GuiSession session =
|
||||||
|
GuiSessionManager.getSession(
|
||||||
|
player
|
||||||
|
);
|
||||||
|
|
||||||
|
return session.getSelectedBlock();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Convert Back
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public void convertBack(
|
||||||
|
Player player
|
||||||
|
) {
|
||||||
|
|
||||||
|
GuiSession session =
|
||||||
|
GuiSessionManager.getSession(
|
||||||
|
player
|
||||||
|
);
|
||||||
|
|
||||||
|
Block block =
|
||||||
|
session.getSelectedBlock();
|
||||||
|
|
||||||
|
if (block == null) {
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
MachineManager.deleteMachine(
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
RSMessageUtils.success(
|
||||||
|
player,
|
||||||
|
"Machine removed."
|
||||||
|
);
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,295 @@
|
|||||||
|
package com.rsscripting.rsauger.listeners;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.gui.RSFilterMenu;
|
||||||
|
import com.rsscripting.rsauger.gui.RSMainMenu;
|
||||||
|
import com.rsscripting.rsauger.gui.RSMenuHolder;
|
||||||
|
import com.rsscripting.rsauger.managers.MachineManager;
|
||||||
|
import com.rsscripting.rsauger.managers.RSConversionManager;
|
||||||
|
import com.rsscripting.rsauger.utils.RSKeys;
|
||||||
|
import com.rsscripting.rsauger.utils.RSMessageUtils;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class RSFilterListener
|
||||||
|
implements Listener {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private final RSConvertListener
|
||||||
|
conversionListener;
|
||||||
|
|
||||||
|
public RSFilterListener(
|
||||||
|
RSConvertListener conversionListener
|
||||||
|
) {
|
||||||
|
|
||||||
|
this.conversionListener =
|
||||||
|
conversionListener;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInventoryClick(
|
||||||
|
InventoryClickEvent event
|
||||||
|
) {
|
||||||
|
|
||||||
|
if (!(event.getWhoClicked()
|
||||||
|
instanceof Player player)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(event.getInventory()
|
||||||
|
.getHolder()
|
||||||
|
instanceof RSMenuHolder holder)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!holder.getMenuId()
|
||||||
|
.equals(
|
||||||
|
"FILTER"
|
||||||
|
)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Block block =
|
||||||
|
conversionListener.getSelectedBlock(player);
|
||||||
|
|
||||||
|
if (block == null) {
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| TOP ROW
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() < 9) {
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FILTER MODE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 3) {
|
||||||
|
|
||||||
|
String currentMode =
|
||||||
|
MachineManager.getFilterMode(
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
String nextMode;
|
||||||
|
|
||||||
|
if (currentMode.equals(
|
||||||
|
RSKeys.FILTER_ALLOW_ALL
|
||||||
|
)) {
|
||||||
|
|
||||||
|
nextMode =
|
||||||
|
RSKeys.FILTER_WHITELIST;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (currentMode.equals(
|
||||||
|
RSKeys.FILTER_WHITELIST
|
||||||
|
)) {
|
||||||
|
|
||||||
|
nextMode =
|
||||||
|
RSKeys.FILTER_BLACKLIST;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
|
||||||
|
nextMode =
|
||||||
|
RSKeys.FILTER_ALLOW_ALL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
MachineManager.setFilterMode(
|
||||||
|
block,
|
||||||
|
nextMode
|
||||||
|
);
|
||||||
|
|
||||||
|
RSFilterMenu.open(
|
||||||
|
player,
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| PREVIOUS PAGE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 0
|
||||||
|
&& event.getCurrentItem() != null
|
||||||
|
&& event.getCurrentItem().getType()
|
||||||
|
== Material.ARROW) {
|
||||||
|
|
||||||
|
if (holder.getPage() > 1) {
|
||||||
|
|
||||||
|
holder.setPage(
|
||||||
|
holder.getPage() - 1
|
||||||
|
);
|
||||||
|
|
||||||
|
RSFilterMenu.open(
|
||||||
|
player,
|
||||||
|
block,
|
||||||
|
holder.getPage()
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| NEXT PAGE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 8
|
||||||
|
&& event.getCurrentItem() != null
|
||||||
|
&& event.getCurrentItem().getType()
|
||||||
|
== Material.ARROW) {
|
||||||
|
|
||||||
|
int highestPage =
|
||||||
|
MachineManager.getHighestFilterPage(
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
if (holder.getPage()
|
||||||
|
<= highestPage) {
|
||||||
|
|
||||||
|
holder.setPage(
|
||||||
|
holder.getPage() + 1
|
||||||
|
);
|
||||||
|
|
||||||
|
RSFilterMenu.open(
|
||||||
|
player,
|
||||||
|
block,
|
||||||
|
holder.getPage()
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| BACK
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 5) {
|
||||||
|
|
||||||
|
RSMainMenu.open(
|
||||||
|
player,
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getRawSlot() >= event.getInventory().getSize()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FILTER STORAGE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
if (event.getCursor().getType()
|
||||||
|
!= Material.AIR) {
|
||||||
|
|
||||||
|
ItemStack filterItem =
|
||||||
|
event.getCursor().clone();
|
||||||
|
|
||||||
|
filterItem.setAmount(1);
|
||||||
|
|
||||||
|
if (RSConversionManager.containsFilterItem(
|
||||||
|
block,
|
||||||
|
filterItem
|
||||||
|
)) {
|
||||||
|
|
||||||
|
RSMessageUtils.info(
|
||||||
|
player,
|
||||||
|
"That item is already in the filter."
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
event.getInventory().setItem(
|
||||||
|
event.getRawSlot(),
|
||||||
|
filterItem
|
||||||
|
);
|
||||||
|
|
||||||
|
MachineManager.saveFilterItem(
|
||||||
|
block,
|
||||||
|
holder.getPage(),
|
||||||
|
event.getRawSlot(),
|
||||||
|
filterItem
|
||||||
|
);
|
||||||
|
|
||||||
|
RSFilterMenu.open(
|
||||||
|
player,
|
||||||
|
block,
|
||||||
|
holder.getPage()
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
event.getInventory().setItem(
|
||||||
|
event.getRawSlot(),
|
||||||
|
null
|
||||||
|
);
|
||||||
|
|
||||||
|
MachineManager.removeFilterItem(
|
||||||
|
block,
|
||||||
|
holder.getPage(),
|
||||||
|
event.getRawSlot()
|
||||||
|
);
|
||||||
|
|
||||||
|
RSFilterMenu.open(
|
||||||
|
player,
|
||||||
|
block,
|
||||||
|
holder.getPage()
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,275 @@
|
|||||||
|
package com.rsscripting.rsauger.listeners;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.config.ConfigManager;
|
||||||
|
import com.rsscripting.rsauger.managers.MachineManager;
|
||||||
|
import com.rsscripting.rsauger.gui.*;
|
||||||
|
import com.rsscripting.rsauger.utils.RSConstants;
|
||||||
|
import com.rsscripting.rsauger.utils.RSKeys;
|
||||||
|
import com.rsscripting.rsauger.utils.RSMessageUtils;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
|
||||||
|
public class RSMenuListener
|
||||||
|
implements Listener {
|
||||||
|
|
||||||
|
private final RSConvertListener
|
||||||
|
conversionListener;
|
||||||
|
|
||||||
|
public RSMenuListener(
|
||||||
|
RSConvertListener conversionListener
|
||||||
|
) {
|
||||||
|
|
||||||
|
this.conversionListener =
|
||||||
|
conversionListener;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInventoryClick(
|
||||||
|
InventoryClickEvent event
|
||||||
|
) {
|
||||||
|
|
||||||
|
Player player =
|
||||||
|
(Player) event.getWhoClicked();
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CONVERSION MENU
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getInventory()
|
||||||
|
.getHolder()
|
||||||
|
instanceof RSMenuHolder holder
|
||||||
|
&& holder.getMenuId()
|
||||||
|
.equals(
|
||||||
|
"CONVERT"
|
||||||
|
)) {
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
if (event.getCurrentItem() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 4) {
|
||||||
|
|
||||||
|
Block block =
|
||||||
|
conversionListener.getSelectedBlock(player);
|
||||||
|
|
||||||
|
if (block == null){
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
MachineManager.insertMachine(
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
MachineManager.setOwner(
|
||||||
|
block,
|
||||||
|
player
|
||||||
|
);
|
||||||
|
|
||||||
|
MachineManager.setPaused(
|
||||||
|
block,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
MachineManager.setRadius(
|
||||||
|
block,
|
||||||
|
|
||||||
|
(int) ConfigManager.get().getDouble(
|
||||||
|
"default-radius"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
MachineManager.setFilterMode(
|
||||||
|
block,
|
||||||
|
RSKeys.FILTER_ALLOW_ALL
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| ENTITY DISPLAY NAME
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Intentionally disabled.
|
||||||
|
|
|
||||||
|
| Some future entity-based plugins (villager systems, escorts,
|
||||||
|
| traders, guards, etc.) may want visible custom names.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
entity.customName(
|
||||||
|
net.kyori.adventure.text.Component.text(
|
||||||
|
RSConstants.ENTITY_DISPLAY_NAME
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
entity.setCustomNameVisible(true);
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
RSMessageUtils.success(
|
||||||
|
player,
|
||||||
|
"Converted Successfully."
|
||||||
|
);
|
||||||
|
|
||||||
|
RSMainMenu.open(
|
||||||
|
player,
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| MAIN MENU
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getInventory()
|
||||||
|
.getHolder()
|
||||||
|
instanceof RSMenuHolder holder
|
||||||
|
&& holder.getMenuId()
|
||||||
|
.equals(
|
||||||
|
"MAIN"
|
||||||
|
)) {
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
if (event.getCurrentItem() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Block block =
|
||||||
|
conversionListener.getSelectedBlock(player);
|
||||||
|
|
||||||
|
if (block == null) {
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CONVERT BACK
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 2) {
|
||||||
|
|
||||||
|
conversionListener.convertBack(
|
||||||
|
player
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| PAUSE / RESUME
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 6) {
|
||||||
|
|
||||||
|
boolean paused =
|
||||||
|
MachineManager.isPaused(
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
MachineManager.setPaused(
|
||||||
|
block,
|
||||||
|
!paused
|
||||||
|
);
|
||||||
|
|
||||||
|
RSMainMenu.open(
|
||||||
|
player,
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| RADIUS MENU
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 11) {
|
||||||
|
|
||||||
|
RSRadiusMenu.open(
|
||||||
|
player,
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FILTER
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 15) {
|
||||||
|
|
||||||
|
RSFilterMenu.open(
|
||||||
|
player,
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| ADMIN MENU
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 4) {
|
||||||
|
|
||||||
|
if (!player.isOp()
|
||||||
|
||
|
||||||
|
|
||||||
|
!player.hasPermission(
|
||||||
|
RSConstants.ADMIN_PERMISSION
|
||||||
|
)) {
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
RSAdminMenu.open(
|
||||||
|
player
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
package com.rsscripting.rsauger.listeners;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.config.ConfigManager;
|
||||||
|
import com.rsscripting.rsauger.gui.RSMainMenu;
|
||||||
|
import com.rsscripting.rsauger.gui.RSMenuHolder;
|
||||||
|
import com.rsscripting.rsauger.gui.RSRadiusMenu;
|
||||||
|
import com.rsscripting.rsauger.managers.MachineManager;
|
||||||
|
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
|
||||||
|
public class RSRadiusListener
|
||||||
|
implements Listener {
|
||||||
|
|
||||||
|
private final RSConvertListener
|
||||||
|
conversionListener;
|
||||||
|
|
||||||
|
public RSRadiusListener(
|
||||||
|
RSConvertListener conversionListener
|
||||||
|
) {
|
||||||
|
|
||||||
|
this.conversionListener =
|
||||||
|
conversionListener;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInventoryClick(
|
||||||
|
InventoryClickEvent event
|
||||||
|
) {
|
||||||
|
|
||||||
|
if (!(event.getWhoClicked()
|
||||||
|
instanceof Player player)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(event.getInventory()
|
||||||
|
.getHolder()
|
||||||
|
instanceof RSMenuHolder holder)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!holder.getMenuId()
|
||||||
|
.equals(
|
||||||
|
"RADIUS"
|
||||||
|
)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
if (event.getCurrentItem() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Block block =
|
||||||
|
conversionListener.getSelectedBlock(player);
|
||||||
|
|
||||||
|
if (block == null) {
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| BACK
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (event.getRawSlot() == 4) {
|
||||||
|
|
||||||
|
RSMainMenu.open(
|
||||||
|
player,
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int radius =
|
||||||
|
MachineManager.getRadius(
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
int change;
|
||||||
|
|
||||||
|
switch (event.getRawSlot()) {
|
||||||
|
|
||||||
|
case 10:
|
||||||
|
change = -10;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 11:
|
||||||
|
change = -5;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 12:
|
||||||
|
change = -1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 14:
|
||||||
|
change = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 15:
|
||||||
|
change = 5;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 16:
|
||||||
|
change = 10;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
radius += change;
|
||||||
|
|
||||||
|
if (radius < 1) {
|
||||||
|
radius = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int maxRadius =
|
||||||
|
(int) ConfigManager.get()
|
||||||
|
.getDouble(
|
||||||
|
"max-radius"
|
||||||
|
);
|
||||||
|
if (maxRadius > 0
|
||||||
|
&& radius > maxRadius) {
|
||||||
|
|
||||||
|
radius = maxRadius;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
MachineManager.setRadius(
|
||||||
|
block,
|
||||||
|
radius
|
||||||
|
);
|
||||||
|
|
||||||
|
RSRadiusMenu.open(
|
||||||
|
player,
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.rsscripting.rsauger.machine;
|
||||||
|
|
||||||
|
public enum MachineError {
|
||||||
|
|
||||||
|
NONE,
|
||||||
|
|
||||||
|
MISSING_TARGET,
|
||||||
|
|
||||||
|
MISSING_SOURCE,
|
||||||
|
|
||||||
|
INVALID_TARGET,
|
||||||
|
|
||||||
|
INVALID_SOURCE,
|
||||||
|
|
||||||
|
INVALID_CONFIGURATION
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.rsscripting.rsauger.machine;
|
||||||
|
|
||||||
|
public enum MachineState {
|
||||||
|
|
||||||
|
ACTIVE,
|
||||||
|
|
||||||
|
PAUSED,
|
||||||
|
|
||||||
|
ERROR,
|
||||||
|
|
||||||
|
WAITING_SETUP
|
||||||
|
|
||||||
|
}
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,41 @@
|
|||||||
|
package com.rsscripting.rsauger.managers;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class RSConversionManager {
|
||||||
|
|
||||||
|
public static boolean containsFilterItem(
|
||||||
|
Block block,
|
||||||
|
ItemStack item
|
||||||
|
) {
|
||||||
|
|
||||||
|
Map<Integer, ItemStack> filterItems =
|
||||||
|
MachineManager.getAllFilterItems(
|
||||||
|
block
|
||||||
|
);
|
||||||
|
|
||||||
|
for (ItemStack filterItem
|
||||||
|
: filterItems.values()) {
|
||||||
|
|
||||||
|
if (filterItem == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filterItem.isSimilar(
|
||||||
|
item
|
||||||
|
)) {
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
package com.rsscripting.rsauger.utils;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.RSAuger;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
public class GitHubUpdateChecker {
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| UPDATE STATUS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static String latestVersion = null;
|
||||||
|
|
||||||
|
private static String updateStatus =
|
||||||
|
"Checking...";
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CHECK FOR UPDATES
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void checkForUpdates() {
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTaskAsynchronously(
|
||||||
|
|
||||||
|
RSAuger.getInstance(),
|
||||||
|
|
||||||
|
() -> {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
String apiURL =
|
||||||
|
"https://api.github.com/repos/"
|
||||||
|
+ RSConstants.GITHUB_USER
|
||||||
|
+ "/"
|
||||||
|
+ RSConstants.GITHUB_REPOSITORY
|
||||||
|
+ "/releases/latest";
|
||||||
|
|
||||||
|
HttpURLConnection connection =
|
||||||
|
(HttpURLConnection)
|
||||||
|
URI.create(apiURL)
|
||||||
|
.toURL()
|
||||||
|
.openConnection();
|
||||||
|
|
||||||
|
connection.setRequestMethod("GET");
|
||||||
|
|
||||||
|
BufferedReader reader =
|
||||||
|
new BufferedReader(
|
||||||
|
new InputStreamReader(
|
||||||
|
connection.getInputStream()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
StringBuilder response =
|
||||||
|
new StringBuilder();
|
||||||
|
|
||||||
|
String line;
|
||||||
|
|
||||||
|
while ((line = reader.readLine()) != null) {
|
||||||
|
|
||||||
|
response.append(line);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
reader.close();
|
||||||
|
|
||||||
|
String json =
|
||||||
|
response.toString();
|
||||||
|
|
||||||
|
latestVersion =
|
||||||
|
json.split("\"tag_name\":\"")[1]
|
||||||
|
.split("\"")[0];
|
||||||
|
|
||||||
|
String currentVersion =
|
||||||
|
VersionUtils.getVersion();
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| UPDATE AVAILABLE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!latestVersion.equalsIgnoreCase(
|
||||||
|
currentVersion
|
||||||
|
)) {
|
||||||
|
|
||||||
|
updateStatus =
|
||||||
|
"Update Available";
|
||||||
|
|
||||||
|
Bukkit.getConsoleSender().sendMessage(
|
||||||
|
|
||||||
|
RSConstants.PREFIX
|
||||||
|
+ "Update available: "
|
||||||
|
+ latestVersion
|
||||||
|
+ " (Current: "
|
||||||
|
+ currentVersion
|
||||||
|
+ ")"
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| UP TO DATE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
else {
|
||||||
|
|
||||||
|
updateStatus =
|
||||||
|
"Up To Date";
|
||||||
|
|
||||||
|
Bukkit.getConsoleSender().sendMessage(
|
||||||
|
|
||||||
|
RSConstants.PREFIX
|
||||||
|
+ "Plugin is up to date."
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (Exception exception) {
|
||||||
|
|
||||||
|
updateStatus =
|
||||||
|
"Unable To Check";
|
||||||
|
|
||||||
|
Bukkit.getConsoleSender().sendMessage(
|
||||||
|
|
||||||
|
RSConstants.PREFIX
|
||||||
|
+ "Failed to check for updates."
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| GET LATEST VERSION
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static String getLatestVersion() {
|
||||||
|
|
||||||
|
return latestVersion;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| GET UPDATE STATUS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static String getUpdateStatus() {
|
||||||
|
|
||||||
|
return updateStatus;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
package com.rsscripting.rsauger.utils;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
public class RSConstants {
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| PLUGIN INFO
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static final String PLUGIN_NAME =
|
||||||
|
"RS-Auger";
|
||||||
|
|
||||||
|
public static final String PREFIX =
|
||||||
|
"§7[§cRS-RSAuger§7] §r";
|
||||||
|
|
||||||
|
public static final String COMMAND_ALIAS =
|
||||||
|
"rsauger";
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| GITHUB
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static final String GITHUB_USER =
|
||||||
|
"YourGitHubUsername";
|
||||||
|
|
||||||
|
public static final String GITHUB_REPOSITORY =
|
||||||
|
"RS-ItemMagnet";
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| PERMISSIONS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static final String ADMIN_PERMISSION =
|
||||||
|
"rsauger.admin";
|
||||||
|
|
||||||
|
public static final String BYPASS_PERMISSION =
|
||||||
|
"rsauger.bypass";
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| REQUIRED CONVERSION ITEMS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static final Material REQUIRED_HELD_ITEM =
|
||||||
|
Material.STICK;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| REQUIRED TARGET ENTITY
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static final Material
|
||||||
|
REQUIRED_TARGET_BLOCK =
|
||||||
|
Material.LODESTONE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| MENU SETTINGS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static final Material MENU_FILLER_MATERIAL =
|
||||||
|
Material.WHITE_STAINED_GLASS_PANE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Version
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static final String VERSION =
|
||||||
|
"1.0.0";
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.rsscripting.rsauger.utils;
|
||||||
|
|
||||||
|
public class RSKeys {
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| FILTER MODES
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static final String FILTER_ALLOW_ALL =
|
||||||
|
"allow_all";
|
||||||
|
|
||||||
|
public static final String FILTER_WHITELIST =
|
||||||
|
"whitelist";
|
||||||
|
|
||||||
|
public static final String FILTER_BLACKLIST =
|
||||||
|
"blacklist";
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
package com.rsscripting.rsauger.utils;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class RSMenuUtils {
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CREATE FILLER PANE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static ItemStack createFillerPane() {
|
||||||
|
|
||||||
|
ItemStack item =
|
||||||
|
new ItemStack(
|
||||||
|
RSConstants.MENU_FILLER_MATERIAL
|
||||||
|
);
|
||||||
|
|
||||||
|
ItemMeta meta =
|
||||||
|
item.getItemMeta();
|
||||||
|
|
||||||
|
if (meta != null) {
|
||||||
|
|
||||||
|
meta.displayName(
|
||||||
|
Component.empty()
|
||||||
|
);
|
||||||
|
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return item;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CREATE MENU ITEM
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static ItemStack createMenuItem(
|
||||||
|
|
||||||
|
Material material,
|
||||||
|
|
||||||
|
String name
|
||||||
|
|
||||||
|
) {
|
||||||
|
|
||||||
|
ItemStack item =
|
||||||
|
new ItemStack(material);
|
||||||
|
|
||||||
|
ItemMeta meta =
|
||||||
|
item.getItemMeta();
|
||||||
|
|
||||||
|
if (meta != null) {
|
||||||
|
|
||||||
|
meta.displayName(
|
||||||
|
Component.text(
|
||||||
|
name
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return item;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CREATE MENU ITEM WITH LORE
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static ItemStack createMenuItem(
|
||||||
|
|
||||||
|
Material material,
|
||||||
|
|
||||||
|
String name,
|
||||||
|
|
||||||
|
List<String> lore
|
||||||
|
|
||||||
|
) {
|
||||||
|
|
||||||
|
ItemStack item =
|
||||||
|
new ItemStack(material);
|
||||||
|
|
||||||
|
ItemMeta meta =
|
||||||
|
item.getItemMeta();
|
||||||
|
|
||||||
|
if (meta != null) {
|
||||||
|
|
||||||
|
meta.displayName(
|
||||||
|
Component.text(
|
||||||
|
name
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
meta.lore(
|
||||||
|
lore.stream()
|
||||||
|
.map(Component::text)
|
||||||
|
.toList()
|
||||||
|
);
|
||||||
|
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return item;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
package com.rsscripting.rsauger.utils;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class RSMessageUtils {
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| PREFIX
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static final Component PREFIX =
|
||||||
|
|
||||||
|
Component.text("[")
|
||||||
|
.color(NamedTextColor.GRAY)
|
||||||
|
|
||||||
|
.append(
|
||||||
|
Component.text(
|
||||||
|
"RS-Plugin"
|
||||||
|
).color(
|
||||||
|
NamedTextColor.RED
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
.append(
|
||||||
|
Component.text("] ")
|
||||||
|
.color(
|
||||||
|
NamedTextColor.GRAY
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| SUCCESS
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void success(
|
||||||
|
Player player,
|
||||||
|
String message
|
||||||
|
) {
|
||||||
|
|
||||||
|
player.sendMessage(
|
||||||
|
|
||||||
|
PREFIX.append(
|
||||||
|
|
||||||
|
Component.text(
|
||||||
|
message
|
||||||
|
).color(
|
||||||
|
NamedTextColor.GREEN
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| WARNING
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void warning(
|
||||||
|
Player player,
|
||||||
|
String message
|
||||||
|
) {
|
||||||
|
|
||||||
|
player.sendMessage(
|
||||||
|
|
||||||
|
PREFIX.append(
|
||||||
|
|
||||||
|
Component.text(
|
||||||
|
message
|
||||||
|
).color(
|
||||||
|
NamedTextColor.YELLOW
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| ERROR
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void error(
|
||||||
|
Player player,
|
||||||
|
String message
|
||||||
|
) {
|
||||||
|
|
||||||
|
player.sendMessage(
|
||||||
|
|
||||||
|
PREFIX.append(
|
||||||
|
|
||||||
|
Component.text(
|
||||||
|
message
|
||||||
|
).color(
|
||||||
|
NamedTextColor.RED
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| INFO
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void info(
|
||||||
|
Player player,
|
||||||
|
String message
|
||||||
|
) {
|
||||||
|
|
||||||
|
player.sendMessage(
|
||||||
|
|
||||||
|
PREFIX.append(
|
||||||
|
|
||||||
|
Component.text(
|
||||||
|
message
|
||||||
|
).color(
|
||||||
|
NamedTextColor.AQUA
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| ADMIN
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void admin(
|
||||||
|
Player player,
|
||||||
|
String message
|
||||||
|
) {
|
||||||
|
|
||||||
|
player.sendMessage(
|
||||||
|
|
||||||
|
PREFIX.append(
|
||||||
|
|
||||||
|
Component.text(
|
||||||
|
message
|
||||||
|
).color(
|
||||||
|
NamedTextColor.GOLD
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.rsscripting.rsauger.utils;
|
||||||
|
|
||||||
|
import com.rsscripting.rsauger.RSAuger;
|
||||||
|
|
||||||
|
public class VersionUtils {
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| GET INSTALLED VERSION
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static String getVersion() {
|
||||||
|
|
||||||
|
return RSAuger.getInstance()
|
||||||
|
.getDescription()
|
||||||
|
.getVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
#### To Do list
|
||||||
|
|
||||||
|
# Plugin Specific (RS-ItemMagnet)
|
||||||
|
- Refactor to RS-ItemMagnet.
|
||||||
|
- Set plugin name/version/permissions
|
||||||
|
- set up GitHub version for version checker.
|
||||||
|
- add in target assigned hopper on convert
|
||||||
|
- add in magnet logic
|
||||||
|
- add in filter logic
|
||||||
|
|
||||||
|
# Optional (Needs discussion with partner)
|
||||||
|
|
||||||
|
- identifier when RS-ItemMagnet inoperable. (Sparkles?)
|
||||||
|
|
||||||
|
|
||||||
|
# Additional menu options
|
||||||
|
|
||||||
|
- Select new hopper target.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#
|
||||||
|
# ----------------------------------------
|
||||||
|
# RS Plugin Template Configuration
|
||||||
|
# ----------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
debug-mode: false
|
||||||
|
|
||||||
|
default-radius: 5
|
||||||
|
|
||||||
|
max-radius: 0
|
||||||
|
|
||||||
|
admin-bypass: true
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
name: RS-Auger
|
||||||
|
version: 1.0.0
|
||||||
|
main: com.rsscripting.rsauger.RSAuger
|
||||||
|
api-version: '1.21'
|
||||||
|
|
||||||
|
author: RSScripting
|
||||||
|
description: Lightning Rod item transport machine for the RS ecosystem
|
||||||
|
|
||||||
|
commands:
|
||||||
|
rsauger:
|
||||||
|
description: Main plugin command
|
||||||
|
usage: /rsauger
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
rsauger.admin:
|
||||||
|
description: Admin access
|
||||||
|
default: op
|
||||||
|
|
||||||
|
rsauger.bypass:
|
||||||
|
description: Bypass ownership protection
|
||||||
|
default: op
|
||||||
Reference in new issue
Block a user