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