Added Server Player Commands section.
This commit is contained in:
BigPappa committed 2026-08-15 09:08:04 -05:00
1 parent 25a83e7dc5
commit 293be5887a
128 files changed
+2182 -408

No files matched your search

@@ -0,0 +1,365 @@
package com.rsscripting.rswarehouse.dao;
import com.rsscripting.rswarehouse.RSWarehouse;
import com.rsscripting.rswarehouse.database.DatabaseManager;
import com.rsscripting.rswarehouse.model.WarehouseItem;
import com.rsscripting.rswarehouse.utils.ItemStackUtils;
import org.bukkit.inventory.ItemStack;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class ItemDAO {
public static void addItem(
String discovererUuid,
String discovererName,
ItemStack item,
long quantity,
Integer inventoryId
) {
item = ItemStackUtils.normalizeSpecialItems(item);
String serializedItem =
ItemStackUtils.serialize(
item
);
if (serializedItem == null) {
return;
}
boolean enableUncategorized =
RSWarehouse.getInstance()
.getConfig()
.getBoolean(
"allow-uncategorized-item-creation",
true
);
if (
inventoryId == null
&& !enableUncategorized
) {
return;
}
if (inventoryId != null) {
long previousQuantity =
InventoryQuantityDAO.getInventoryQuantity(
inventoryId
);
InventoryQuantityDAO.updateInventoryQuantity(
inventoryId,
quantity
);
if (previousQuantity == 0) {
DiscoveryDAO.assignDiscovererIfNull(
inventoryId,
discovererUuid,
discovererName
);
}
return;
}
inventoryId =
InventoryCreationDAO.createInventoryItem(
item,
quantity,
discovererUuid,
discovererName
);
if (inventoryId == -1) {
return;
}
WarehouseReferenceDAO.createWarehouseItemReference(
item,
inventoryId
);
}
public static WarehouseItem getItemById(
int itemId
) {
try (
Connection connection =
DatabaseManager.getConnection()
) {
PreparedStatement statement =
connection.prepareStatement(
"""
SELECT
wi.*,
inv.quantity,
inv.discoverer_uuid,
inv.discoverer_name,
inv.discovered_date
FROM warehouse_items wi
LEFT JOIN warehouse_inventory inv
ON wi.inventory_id = inv.id
WHERE wi.id = ?
"""
);
statement.setInt(
1,
itemId
);
ResultSet resultSet =
statement.executeQuery();
if (resultSet.next()) {
return new WarehouseItem(
resultSet.getInt("id"),
resultSet.getInt("category_id"),
resultSet.getString("serialized_item"),
resultSet.getString("default_lore"),
resultSet.getObject("inventory_id") == null
? null
: resultSet.getInt("inventory_id"),
resultSet.getObject("subcategory_id") == null
? null
: resultSet.getInt("subcategory_id"),
resultSet.getLong("quantity"),
resultSet.getString("discoverer_uuid"),
resultSet.getString("discoverer_name"),
resultSet.getString("discovered_date"),
resultSet.getObject("page") == null
? null
: resultSet.getInt("page"),
resultSet.getObject("slot") == null
? null
: resultSet.getInt("slot")
);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static List<WarehouseItem> getItemsForCategory(
int categoryId
) {
List<WarehouseItem> items =
new ArrayList<>();
try (
Connection connection =
DatabaseManager.getConnection()
) {
PreparedStatement statement =
connection.prepareStatement(
"""
SELECT
wi.*,
inv.quantity,
inv.discoverer_uuid,
inv.discoverer_name,
inv.discovered_date
FROM warehouse_items wi
LEFT JOIN warehouse_inventory inv
ON wi.inventory_id = inv.id
WHERE wi.category_id = ?
ORDER BY wi.id
"""
);
statement.setInt(
1,
categoryId
);
ResultSet resultSet =
statement.executeQuery();
while (resultSet.next()) {
items.add(
new WarehouseItem(
resultSet.getInt("id"),
resultSet.getInt("category_id"),
resultSet.getString("serialized_item"),
resultSet.getString("default_lore"),
resultSet.getObject("inventory_id") == null
? null
: resultSet.getInt("inventory_id"),
resultSet.getObject("subcategory_id") == null
? null
: resultSet.getInt("subcategory_id"),
resultSet.getLong("quantity"),
resultSet.getString("discoverer_uuid"),
resultSet.getString("discoverer_name"),
resultSet.getString("discovered_date"),
resultSet.getObject("page") == null
? null
: resultSet.getInt("page"),
resultSet.getObject("slot") == null
? null
: resultSet.getInt("slot")
)
);
}
} catch (Exception e) {
e.printStackTrace();
}
return items;
}
public static void removeItem(
ItemStack item,
long quantity
) {
Integer inventoryId =
InventoryLookupDAO.findInventoryId(
item
);
if (inventoryId == null) {
return;
}
InventoryQuantityDAO.removeInventoryQuantity(
inventoryId,
quantity
);
}
public static void addItem(
String discovererUuid,
String discovererName,
ItemStack item,
long quantity
) {
addItem(
discovererUuid,
discovererName,
item,
quantity,
InventoryLookupDAO.findInventoryId(
item
)
);
}
public static boolean categoryHasItems(
int categoryId
) {
try (
Connection connection =
DatabaseManager.getConnection();
PreparedStatement statement =
connection.prepareStatement(
"""
SELECT COUNT(*)
FROM warehouse_items
WHERE category_id = ?
"""
)
) {
statement.setInt(
1,
categoryId
);
ResultSet resultSet =
statement.executeQuery();
if (resultSet.next()) {
return resultSet.getInt(
1
) > 0;
}
}
catch (Exception exception) {
exception.printStackTrace();
}
return false;
}
}