Development Milestone:

Finished and ready for testing.
This commit is contained in:
BigPappa committed 2026-06-10 12:32:59 -05:00
1 parent d8e99a10d1
commit 698aceafc0
14 files changed
+321 -260

No files matched your search

@@ -1,11 +1,9 @@
package com.rsscripting.rsauger.config; package com.rsscripting.rsauger.config;
import com.rsscripting.rsauger.RSAuger; import com.rsscripting.rsauger.RSAuger;
import org.bukkit.configuration.file.FileConfiguration;
public class ConfigManager { public class ConfigManager {
private static FileConfiguration config;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@@ -18,10 +16,6 @@ public class ConfigManager {
RSAuger.getInstance() RSAuger.getInstance()
.saveDefaultConfig(); .saveDefaultConfig();
config =
RSAuger.getInstance()
.getConfig();
} }
/* /*
@@ -35,22 +29,6 @@ public class ConfigManager {
RSAuger.getInstance() RSAuger.getInstance()
.reloadConfig(); .reloadConfig();
config =
RSAuger.getInstance()
.getConfig();
}
/*
|--------------------------------------------------------------------------
| GET CONFIG
|--------------------------------------------------------------------------
*/
public static FileConfiguration get() {
return config;
} }
} }
@@ -161,14 +161,12 @@ public class DatabaseManager {
ensureColumnExists( ensureColumnExists(
connection, connection,
"machines",
"state", "state",
"TEXT DEFAULT 'ACTIVE'" "TEXT DEFAULT 'ACTIVE'"
); );
ensureColumnExists( ensureColumnExists(
connection, connection,
"machines",
"error_reason", "error_reason",
"TEXT" "TEXT"
); );
@@ -189,7 +187,6 @@ public class DatabaseManager {
private static void ensureColumnExists( private static void ensureColumnExists(
Connection connection, Connection connection,
String table,
String column, String column,
String definition String definition
) { ) {
@@ -202,7 +199,7 @@ public class DatabaseManager {
.getColumns( .getColumns(
null, null,
null, null,
table, "machines",
column column
) )
@@ -211,9 +208,7 @@ public class DatabaseManager {
if (!columns.next()) { if (!columns.next()) {
connection.createStatement().execute( connection.createStatement().execute(
"ALTER TABLE " "ALTER TABLE machines ADD COLUMN "
+ table
+ " ADD COLUMN "
+ column + column
+ " " + " "
+ definition + definition
@@ -1,9 +1,9 @@
package com.rsscripting.rsauger.gui; package com.rsscripting.rsauger.gui;
import com.rsscripting.rsauger.machine.MachineError;
import com.rsscripting.rsauger.utils.RSConstants; import com.rsscripting.rsauger.utils.RSConstants;
import com.rsscripting.rsauger.utils.RSMenuUtils; import com.rsscripting.rsauger.utils.RSMenuUtils;
import com.rsscripting.rsauger.managers.MachineManager; import com.rsscripting.rsauger.managers.MachineManager;
import com.rsscripting.rsauger.utils.RSMessageUtils;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@@ -77,45 +77,77 @@ public class RSMainMenu {
block block
); );
menu.setItem( MachineError error =
6, MachineManager.getMachineError(
RSMenuUtils.createMenuItem( block
paused
? Material.RED_DYE
: Material.GREEN_DYE,
paused
? "§cPaused"
: "§aRunning"
)
);
/*
|--------------------------------------------------------------------------
| RECALIBRATE
|--------------------------------------------------------------------------
*/
menu.setItem(
11,
RSMenuUtils.createMenuItem(
Material.LIGHTNING_ROD,
"§bRecalibrate",
List.of(
"§7Rescan the lightning rod shaft.",
"§7",
"§7Rediscover the source and",
"§7destination containers."
)
)
); );
if (error != MachineError.NONE) {
String errorMessage =
switch (error) {
case MISSING_TARGET ->
"§7Missing target container.";
case MISSING_SOURCE ->
"§7Missing source container.";
case INVALID_TARGET ->
"§7Target container is invalid.";
case INVALID_SOURCE ->
"§7Source container is invalid.";
case INVALID_CONFIGURATION ->
"§7Machine configuration is invalid.";
case SHAFT_BROKEN ->
"§7Lightning rod shaft is broken.";
default ->
"§7Unknown error.";
};
menu.setItem(
6,
RSMenuUtils.createMenuItem(
Material.RED_DYE,
"§cError",
List.of(
errorMessage,
"§7",
"§7Machine is paused.",
"§7Repair and recalibrate."
)
)
);
}
else {
menu.setItem(
6,
RSMenuUtils.createMenuItem(
paused
? Material.RED_DYE
: Material.GREEN_DYE,
paused
? "§cPaused"
: "§aRunning"
)
);
}
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| FILTER | FILTER
@@ -123,7 +155,7 @@ public class RSMainMenu {
*/ */
menu.setItem( menu.setItem(
15, 13,
RSMenuUtils.createMenuItem( RSMenuUtils.createMenuItem(
Material.HOPPER, Material.HOPPER,
@@ -2,20 +2,12 @@ package com.rsscripting.rsauger.gui.session;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import java.util.UUID;
public class GuiSession { public class GuiSession {
private final UUID playerUuid;
private Block selectedBlock; private Block selectedBlock;
public GuiSession(UUID playerUuid) { public GuiSession() {
this.playerUuid = playerUuid;
}
public UUID getPlayerUuid() {
return playerUuid;
} }
public Block getSelectedBlock() { public Block getSelectedBlock() {
@@ -17,17 +17,7 @@ public class GuiSessionManager {
return sessions.computeIfAbsent( return sessions.computeIfAbsent(
player.getUniqueId(), player.getUniqueId(),
GuiSession::new uuid -> new GuiSession()
);
}
public static void removeSession(
Player player
) {
sessions.remove(
player.getUniqueId()
); );
} }
@@ -8,7 +8,6 @@ import com.rsscripting.rsauger.gui.session.GuiSession;
import com.rsscripting.rsauger.gui.session.GuiSessionManager; import com.rsscripting.rsauger.gui.session.GuiSessionManager;
import com.rsscripting.rsauger.utils.RSMessageUtils; import com.rsscripting.rsauger.utils.RSMessageUtils;
import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -17,11 +17,6 @@ import org.bukkit.inventory.ItemStack;
public class RSFilterListener public class RSFilterListener
implements Listener { implements Listener {
private final RSConvertListener private final RSConvertListener
conversionListener; conversionListener;
@@ -1,7 +1,7 @@
package com.rsscripting.rsauger.listeners; package com.rsscripting.rsauger.listeners;
import com.rsscripting.rsauger.config.ConfigManager;
import com.rsscripting.rsauger.machine.AugerEndpoints; import com.rsscripting.rsauger.machine.AugerEndpoints;
import com.rsscripting.rsauger.machine.MachineError;
import com.rsscripting.rsauger.managers.MachineManager; import com.rsscripting.rsauger.managers.MachineManager;
import com.rsscripting.rsauger.gui.*; import com.rsscripting.rsauger.gui.*;
import com.rsscripting.rsauger.utils.RSConstants; import com.rsscripting.rsauger.utils.RSConstants;
@@ -193,15 +193,64 @@ public class RSMenuListener
if (event.getRawSlot() == 6) { if (event.getRawSlot() == 6) {
boolean paused = if (
MachineManager.isPaused(
MachineManager.getMachineError(
block
) != MachineError.NONE
) {
AugerValidationResult result =
AugerValidator.validate(
block
);
if (!result.isValid()) {
RSMessageUtils.error(
player,
"Cannot restart machine until the error is repaired."
);
RSMainMenu.open(
player,
block block
); );
MachineManager.setPaused( return;
block,
!paused }
);
MachineManager.setEndpoints(
block,
result.getEndpoints()
);
MachineManager.clearMachineError(
block
);
MachineManager.setPaused(
block,
false
);
}
else {
boolean paused =
MachineManager.isPaused(
block
);
MachineManager.setPaused(
block,
!paused
);
}
RSMainMenu.open( RSMainMenu.open(
player, player,
@@ -218,7 +267,7 @@ public class RSMenuListener
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
*/ */
if (event.getRawSlot() == 15) { if (event.getRawSlot() == 13) {
RSFilterMenu.open( RSFilterMenu.open(
player, player,
@@ -28,18 +28,9 @@ public class AugerValidator {
Block machine Block machine
) { ) {
BlockFace sourceDirection = return getSourceDirection(
getSourceDirection( machine
machine );
);
if (sourceDirection == null) {
return null;
}
return sourceDirection;
} }
@@ -119,6 +110,21 @@ public class AugerValidator {
machine machine
); );
if (destinationDirection == null) {
messages.add(
"Could not determine destination direction."
);
return new AugerValidationResult(
false,
null,
messages,
MachineError.INVALID_CONFIGURATION
);
}
Block current = Block current =
machine.getRelative( machine.getRelative(
destinationDirection destinationDirection
@@ -2,23 +2,20 @@ package com.rsscripting.rsauger.managers;
import com.rsscripting.rsauger.database.DatabaseManager; import com.rsscripting.rsauger.database.DatabaseManager;
import com.rsscripting.rsauger.machine.AugerEndpoints; import com.rsscripting.rsauger.machine.AugerEndpoints;
import com.rsscripting.rsauger.RSAuger;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.UUID; import java.util.UUID;
import java.util.Base64; import java.util.Base64;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.bukkit.util.io.BukkitObjectInputStream;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.util.io.BukkitObjectOutputStream;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
@@ -81,7 +78,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
return false; return false;
@@ -142,7 +141,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -246,7 +247,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -336,7 +339,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -403,7 +408,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -484,7 +491,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
return false; return false;
@@ -599,7 +608,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -739,7 +750,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -824,7 +837,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -836,7 +851,7 @@ public class MachineManager {
return getMachineState( return getMachineState(
block block
) == MachineState.PAUSED; ) != MachineState.ACTIVE;
} }
@@ -895,7 +910,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -960,7 +977,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1027,7 +1046,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1090,7 +1111,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1102,30 +1125,18 @@ public class MachineManager {
try { try {
ByteArrayOutputStream outputStream =
new ByteArrayOutputStream();
BukkitObjectOutputStream dataOutput =
new BukkitObjectOutputStream(
outputStream
);
dataOutput.writeObject(
itemStack
);
dataOutput.close();
return Base64.getEncoder() return Base64.getEncoder()
.encodeToString( .encodeToString(
outputStream.toByteArray() itemStack.serializeAsBytes()
); );
} }
catch (IOException e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1218,7 +1229,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1230,31 +1243,20 @@ public class MachineManager {
try { try {
byte[] data = return ItemStack.deserializeBytes(
Base64.getDecoder() Base64.getDecoder()
.decode( .decode(
serializedItem serializedItem
);
BukkitObjectInputStream inputStream =
new BukkitObjectInputStream(
new ByteArrayInputStream(
data
) )
); );
ItemStack itemStack =
(ItemStack) inputStream.readObject();
inputStream.close();
return itemStack;
} }
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1333,7 +1335,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1415,7 +1419,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1480,7 +1486,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1543,7 +1551,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1610,7 +1620,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1682,7 +1694,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1759,7 +1773,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1829,7 +1845,9 @@ public class MachineManager {
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); logException(
e
);
} }
@@ -1837,6 +1855,20 @@ public class MachineManager {
} }
private static void logException(
Exception e
) {
RSAuger.getInstance()
.getLogger()
.severe(
e.getMessage()
);
e.printStackTrace();
}
public static void clearMachineError( public static void clearMachineError(
Block block Block block
) { ) {
@@ -2,14 +2,20 @@ package com.rsscripting.rsauger.tasks;
import com.rsscripting.rsauger.machine.AugerValidationResult; import com.rsscripting.rsauger.machine.AugerValidationResult;
import com.rsscripting.rsauger.machine.AugerValidator; import com.rsscripting.rsauger.machine.AugerValidator;
import com.rsscripting.rsauger.machine.MachineState;
import com.rsscripting.rsauger.managers.MachineManager; import com.rsscripting.rsauger.managers.MachineManager;
import com.rsscripting.rsauger.machine.AugerEndpoints; import com.rsscripting.rsauger.machine.AugerEndpoints;
import com.rsscripting.rsauger.managers.RSConversionManager;
import com.rsscripting.rsauger.utils.RSKeys;
import org.bukkit.block.Container; import org.bukkit.block.Container;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.Particle;
import org.bukkit.block.data.type.LightningRod;
import org.bukkit.block.BlockFace;
public class AugerTask extends BukkitRunnable { public class AugerTask extends BukkitRunnable {
@@ -19,6 +25,43 @@ public class AugerTask extends BukkitRunnable {
for (Block machine : for (Block machine :
MachineManager.getAllMachines()) { MachineManager.getAllMachines()) {
if (
MachineManager.getMachineState(
machine
) == MachineState.ERROR
) {
LightningRod rod =
(LightningRod) machine.getBlockData();
BlockFace facing =
rod.getFacing();
double yOffset = 0.35;
if (facing == BlockFace.UP
|| facing == BlockFace.DOWN) {
yOffset = 0.2;
}
machine.getWorld().spawnParticle(
Particle.ANGRY_VILLAGER,
machine.getLocation().add(
0.5,
yOffset,
0.5
),
3
);
continue;
}
if (MachineManager.isPaused( if (MachineManager.isPaused(
machine machine
)) { )) {
@@ -99,6 +142,41 @@ public class AugerTask extends BukkitRunnable {
} }
String filterMode =
MachineManager.getFilterMode(
machine
);
boolean matchesFilter =
RSConversionManager.containsFilterItem(
machine,
item
);
if (filterMode.equals(
RSKeys.FILTER_WHITELIST
)) {
if (!matchesFilter) {
continue;
}
}
else if (filterMode.equals(
RSKeys.FILTER_BLACKLIST
)) {
if (matchesFilter) {
continue;
}
}
ItemStack transfer = ItemStack transfer =
item.clone(); item.clone();
@@ -52,16 +52,6 @@ public class RSConstants {
public static final Material REQUIRED_HELD_ITEM = public static final Material REQUIRED_HELD_ITEM =
Material.STICK; Material.STICK;
/*
|--------------------------------------------------------------------------
| REQUIRED TARGET ENTITY
|--------------------------------------------------------------------------
*/
public static final Material
REQUIRED_TARGET_BLOCK =
Material.LIGHTNING_ROD;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| MENU SETTINGS | MENU SETTINGS
@@ -59,33 +59,6 @@ public class RSMessageUtils {
} }
/*
|--------------------------------------------------------------------------
| WARNING
|--------------------------------------------------------------------------
*/
public static void warning(
Player player,
String message
) {
player.sendMessage(
PREFIX.append(
Component.text(
message
).color(
NamedTextColor.YELLOW
)
)
);
}
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| ERROR | ERROR
@@ -140,31 +113,4 @@ public class RSMessageUtils {
} }
/*
|--------------------------------------------------------------------------
| ADMIN
|--------------------------------------------------------------------------
*/
public static void admin(
Player player,
String message
) {
player.sendMessage(
PREFIX.append(
Component.text(
message
).color(
NamedTextColor.GOLD
)
)
);
}
} }
-21
View File
@@ -1,21 +0,0 @@
#### 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.