diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 68f66d5..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..40c596b --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +# Build output +target/ +build/ +.gradle/ +out/ +bin/ +*.class + +# Node (remnants of any old embedded web-panel) +node_modules/ +package-lock.json + +# IDE / tooling +.idea/ +*.iml +.vscode/ +.claude/ +.settings/ +.classpath +.project + +# OS +.DS_Store +Thumbs.db + +# Local / logs +*.log +build_output.txt +dependency-reduced-pom.xml +run/ +logs/ diff --git a/README.md b/README.md index 0fb2acb..5dca5dc 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,43 @@ # CommunityMarket -[![Modrinth Downloads](https://img.shields.io/modrinth/dt/communitymarket?logo=modrinth)](https://modrinth.com/plugin/communitymarket) +[![Modrinth Downloads](https://img.shields.io/modrinth/dt/carrageis-communitymarket?logo=modrinth)](https://modrinth.com/plugin/carrageis-communitymarket) [![GitHub License](https://img.shields.io/github/license/henrique/CommunityMarket)](LICENSE) A professional, production-ready **GUI-only marketplace plugin** for Minecraft Paper 1.21+. Players can create fixed-price listings and auctions, browse, buy, bid, claim items, and withdraw earnings — all through intuitive GUIs. **No complex commands to learn!** -## ✨ Features +Features -### 🛒 Fixed-Price Market +Fixed-Price Market - Create listings with custom prices and durations - Browse paginated listings with sorting - Safe atomic purchases to prevent double-buying - Configurable taxes on sales -### 🔨 Auction System +Auction System - Start auctions with minimum bid and optional buyout price - **Anti-snipe protection** extends auction when bids arrive near the end - Bid history and automatic outbid notifications - Safe handling of auction endings and payouts -### 📦 Claim Storage +Claim Storage - Items from expired listings go to claim storage - Won auction items are safely delivered - Handles full inventories gracefully -### 💰 Earnings Management +Earnings Management - Pending earnings from sales accumulate - Withdraw all earnings at once - Complete transaction history -### 🔐 Admin Features (GUI-based) +Admin Features (GUI-based) - View all listings and auctions - Remove any listing or cancel auctions - Force-end auctions - Reload configuration in-game -### 🎮 Intuitive GUI Flow +Intuitive GUI Flow The creation flow for listings and auctions: 1. **Main Menu** - Central hub for all actions 2. **Select Item** - Click an item from your inventory @@ -45,7 +45,7 @@ The creation flow for listings and auctions: 4. **Settings** - Set price and duration with easy click-to-adjust controls 5. **Confirm** - Review and create your listing/auction -## 📋 Requirements +Requirements | Requirement | Version | |-------------|---------| @@ -57,23 +57,23 @@ The creation flow for listings and auctions: CommunityMarket supports two economy configurations: 1. **Vault + Economy Plugin** (Recommended) - - Install [Vault](https://modrinth.com/plugin/vault-2.0-economy-plugins) + - Install [VaultUnlocked](https://modrinth.com/plugin/vaultunlocked) - Install an economy plugin: [EssentialsX](https://essentialsx.net/), CMI, or any Vault-compatible economy 2. **EssentialsX Standalone** (Fallback) - Install [EssentialsX](https://essentialsx.net/) with economy enabled - CommunityMarket will use EssentialsX directly if Vault is not present -## 📥 Installation +Installation -1. Download the latest `CommunityMarket-x.x.x.jar` from [Modrinth](https://modrinth.com/plugin/communitymarket) +1. Download the latest `CommunityMarket-x.x.x.jar` from [Modrinth](https://modrinth.com/plugin/carrageis-communitymarket) 2. Place it in your server's `plugins/` folder 3. Ensure you have an economy system installed (see above) 4. Start or restart your server 5. Edit `plugins/CommunityMarket/config.yml` as needed 6. Use `/market` to open the marketplace! -## 🎮 Commands +Commands | Command | Alias | Description | Permission | |---------|-------|-------------|------------| @@ -81,7 +81,7 @@ CommunityMarket supports two economy configurations: **That's it!** Everything else is done through GUIs. -## 🔒 Permissions +Permissions | Permission | Description | Default | |------------|-------------|---------| @@ -94,11 +94,8 @@ CommunityMarket supports two economy configurations: | `communitymarket.claim` | Claim items from storage | everyone | | `communitymarket.withdraw` | Withdraw earnings | everyone | | `communitymarket.admin` | Access admin functions | op | -| `communitymarket.admin.viewall` | View all listings/auctions | op | -| `communitymarket.admin.remove` | Remove any listing/auction | op | -| `communitymarket.admin.reload` | Reload configuration | op | -## ⚙️ Configuration +Configuration ### config.yml Highlights @@ -148,7 +145,7 @@ gui: Language files are located in `plugins/CommunityMarket/lang/` and can be customized. -## 🔧 Troubleshooting +Troubleshooting ### "No compatible economy provider found!" @@ -156,7 +153,7 @@ This error appears when CommunityMarket cannot find an economy system. **Solutions:** 1. **Install Vault + an economy plugin:** - - Download [Vault]([https://www.spigotmc.org/resources/vault.34315/](https://modrinth.com/plugin/vault-2.0-economy-plugins)) + - Download [VaultUnlocked](https://modrinth.com/plugin/vaultunlocked) - Download [EssentialsX](https://essentialsx.net/) or another economy plugin - Restart your server @@ -190,20 +187,20 @@ database: password: your_password ``` -## 📊 API +API CommunityMarket does not currently provide a public API. If you need integration capabilities, please open an issue on GitHub. -## 🤝 Support +Support -- **Issues & Bug Reports:** [GitHub Issues](https://github.com/henrique/CommunityMarket/issues) -- **Feature Requests:** [GitHub Issues](https://github.com/henrique/CommunityMarket/issues) +- **Issues & Bug Reports:** [GitHub Issues](https://github.com/henriquescrrrr/carrageis-communitymarket/issues) +- **Feature Requests:** [GitHub Issues](https://github.com/henriquescrrrr/carrageis-communitymarket/issues) -## 📜 License +License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. -## 🙏 Credits +Credits - Built for the Paper/Spigot community - Uses [Vault](https://github.com/MilkBowl/VaultAPI) for economy integration diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index 6a1bd92..fadbdd7 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -39,6 +39,14 @@ true + + + org.xerial:sqlite-jdbc + + ** + + + diff --git a/pom.xml b/pom.xml index f77ff05..e4b7e22 100644 --- a/pom.xml +++ b/pom.xml @@ -95,6 +95,20 @@ true + + + + org.xerial:sqlite-jdbc + + ** + + + diff --git a/src/.DS_Store b/src/.DS_Store deleted file mode 100644 index 042b412..0000000 Binary files a/src/.DS_Store and /dev/null differ diff --git a/src/main/.DS_Store b/src/main/.DS_Store deleted file mode 100644 index f44c852..0000000 Binary files a/src/main/.DS_Store and /dev/null differ diff --git a/src/main/java/.DS_Store b/src/main/java/.DS_Store deleted file mode 100644 index 286b91e..0000000 Binary files a/src/main/java/.DS_Store and /dev/null differ diff --git a/src/main/java/pt/.DS_Store b/src/main/java/pt/.DS_Store deleted file mode 100644 index 338b218..0000000 Binary files a/src/main/java/pt/.DS_Store and /dev/null differ diff --git a/src/main/java/pt/henrique/.DS_Store b/src/main/java/pt/henrique/.DS_Store deleted file mode 100644 index 4d73aa7..0000000 Binary files a/src/main/java/pt/henrique/.DS_Store and /dev/null differ diff --git a/src/main/java/pt/henrique/communityMarket/config/ConfigManager.java b/src/main/java/pt/henrique/communityMarket/config/ConfigManager.java index 0393458..e5efde2 100644 --- a/src/main/java/pt/henrique/communityMarket/config/ConfigManager.java +++ b/src/main/java/pt/henrique/communityMarket/config/ConfigManager.java @@ -124,8 +124,11 @@ public class ConfigManager { // Economy settings currencyFormat = config.getString("economy.currency-format", "$#,##0.00"); currencySymbol = config.getString("economy.currency-symbol", "$"); - marketTax = config.getDouble("economy.taxes.market-tax", 5.0); - auctionTax = config.getDouble("economy.taxes.auction-tax", 7.5); + // Clamp taxes to [0, 100]. A tax > 100 would make seller earnings negative + // (price * (1 - tax/100)) which the deposit path would then mint/refuse - a config + // mistake must never be able to create or destroy money. + marketTax = clampPercent(config.getDouble("economy.taxes.market-tax", 5.0)); + auctionTax = clampPercent(config.getDouble("economy.taxes.auction-tax", 7.5)); // Market settings maxListingsPerPlayer = config.getInt("market.max-listings-per-player", 20); @@ -272,6 +275,23 @@ public class ConfigManager { return blacklistedMaterials.contains(material); } + /** + * Clamps a percentage value to the valid [0, 100] range. + * Non-finite values (NaN/Infinity from a malformed config) fall back to 0. + */ + private double clampPercent(double value) { + if (Double.isNaN(value) || Double.isInfinite(value)) { + plugin.getLogger().warning("Invalid tax percentage in config; defaulting to 0."); + return 0.0; + } + if (value < 0.0) return 0.0; + if (value > 100.0) { + plugin.getLogger().warning("Tax percentage " + value + " exceeds 100; clamping to 100."); + return 100.0; + } + return value; + } + /** * Checks if text contains blacklisted keywords */ diff --git a/src/main/java/pt/henrique/communityMarket/config/MessageManager.java b/src/main/java/pt/henrique/communityMarket/config/MessageManager.java index 2efa189..8eefed9 100644 --- a/src/main/java/pt/henrique/communityMarket/config/MessageManager.java +++ b/src/main/java/pt/henrique/communityMarket/config/MessageManager.java @@ -36,8 +36,8 @@ public class MessageManager { public void reload() { messageCache.clear(); - // Get language from config - currentLanguage = plugin.getConfig().getString("language", "en_US"); + // Get language from config (default pt_PT; en_US remains bundled as a fallback) + currentLanguage = plugin.getConfig().getString("language", "pt_PT"); // Save default language files saveDefaultLanguageFiles(); diff --git a/src/main/java/pt/henrique/communityMarket/gui/CreateAuctionGui.java b/src/main/java/pt/henrique/communityMarket/gui/CreateAuctionGui.java index 22aca78..7ff436c 100644 --- a/src/main/java/pt/henrique/communityMarket/gui/CreateAuctionGui.java +++ b/src/main/java/pt/henrique/communityMarket/gui/CreateAuctionGui.java @@ -349,25 +349,45 @@ public class CreateAuctionGui implements MarketGui { // Create the auction ItemStack auctionItem = selectedItem.clone(); + int amount = auctionItem.getAmount(); // From here an async creation is in flight; block further confirms until it finishes. processing = true; + // Reserve the items NOW, atomically on the main thread, BEFORE the async DB write. + // Removing after the async round-trip is a dupe window: during the round-trip the + // player could drop/stash/hand off the items (the auction is built from a clone and + // does not need the live items), leaving them with both the items AND an auction that + // delivers the item to the winner. Remove-first + refund-on-failure closes that window. + if (!InventoryUtil.removeItem(player, auctionItem, amount)) { + processing = false; + player.sendMessage(msgManager.getPrefixed("messages.item-no-longer-available")); + SoundUtil.playSound(player, plugin.getConfigManager().getErrorSound()); + new ItemSelectionGui(plugin, guiManager, ItemSelectionGui.SelectionMode.AUCTION).open(player); + return; + } + plugin.getTransactionService().createAuctionTransaction( player, auctionItem, startPrice, buyoutPrice, durationHours ).thenAccept(result -> { Bukkit.getScheduler().runTask(plugin, () -> { processing = false; if (result.isSuccess()) { - // Remove items from inventory AFTER successful creation - InventoryUtil.removeItem(player, auctionItem, auctionItem.getAmount()); - player.sendMessage(msgManager.getPrefixed("messages.auction-created", "id", String.valueOf(result.getId()))); SoundUtil.playSound(player, plugin.getConfigManager().getSuccessSound()); player.closeInventory(); guiManager.openMainMenu(player); } else { + // Creation failed AFTER we removed the items - give them back so nothing is lost. + ItemStack refund = auctionItem.clone(); + refund.setAmount(amount); + ItemStack leftover = InventoryUtil.giveItem(player, refund); + if (leftover != null) { + plugin.getClaimService().addClaimItem(player.getUniqueId(), leftover, + pt.henrique.communityMarket.model.ClaimItem.ClaimReason.ADMIN_RETURN, + "Auction creation failed"); + } player.sendMessage(msgManager.getPrefixed("messages." + result.getErrorKey())); SoundUtil.playSound(player, plugin.getConfigManager().getErrorSound()); } diff --git a/src/main/java/pt/henrique/communityMarket/gui/CreateListingGui.java b/src/main/java/pt/henrique/communityMarket/gui/CreateListingGui.java index 3ebdaa7..41c30fa 100644 --- a/src/main/java/pt/henrique/communityMarket/gui/CreateListingGui.java +++ b/src/main/java/pt/henrique/communityMarket/gui/CreateListingGui.java @@ -298,21 +298,41 @@ public class CreateListingGui implements MarketGui { // From here an async creation is in flight; block further confirms until it finishes. processing = true; + // Reserve the items NOW, atomically on the main thread, BEFORE the async DB write. + // Removing after the async round-trip is a dupe window: during the round-trip the + // player could drop/stash/hand off the items (the listing is built from a clone and + // does not need the live items), leaving them with both the items AND a listing that + // pays out. Remove-first + refund-on-failure closes that window. + if (!InventoryUtil.removeItem(player, listItem, amount)) { + // Couldn't take the full amount (item moved between the check and here) - abort. + processing = false; + player.sendMessage(msgManager.getPrefixed("messages.item-no-longer-available")); + SoundUtil.playSound(player, plugin.getConfigManager().getErrorSound()); + new ItemSelectionGui(plugin, guiManager, ItemSelectionGui.SelectionMode.LISTING).open(player); + return; + } + plugin.getTransactionService().createListingTransaction( player, listItem, amount, price, durationHours ).thenAccept(result -> { Bukkit.getScheduler().runTask(plugin, () -> { processing = false; if (result.isSuccess()) { - // Remove items from inventory AFTER successful creation - InventoryUtil.removeItem(player, listItem, amount); - player.sendMessage(msgManager.getPrefixed("messages.listing-created", "id", String.valueOf(result.getId()))); SoundUtil.playSound(player, plugin.getConfigManager().getSuccessSound()); player.closeInventory(); guiManager.openMainMenu(player); } else { + // Creation failed AFTER we removed the items - give them back so nothing is lost. + ItemStack refund = listItem.clone(); + refund.setAmount(amount); + ItemStack leftover = InventoryUtil.giveItem(player, refund); + if (leftover != null) { + plugin.getClaimService().addClaimItem(player.getUniqueId(), leftover, + pt.henrique.communityMarket.model.ClaimItem.ClaimReason.ADMIN_RETURN, + "Listing creation failed"); + } player.sendMessage(msgManager.getPrefixed("messages." + result.getErrorKey())); SoundUtil.playSound(player, plugin.getConfigManager().getErrorSound()); } diff --git a/src/main/java/pt/henrique/communityMarket/gui/HelpGui.java b/src/main/java/pt/henrique/communityMarket/gui/HelpGui.java index 563de04..c364ab6 100644 --- a/src/main/java/pt/henrique/communityMarket/gui/HelpGui.java +++ b/src/main/java/pt/henrique/communityMarket/gui/HelpGui.java @@ -48,111 +48,24 @@ public class HelpGui implements MarketGui { inventory.setItem(i, filler); } - // Help content + // Help content (localized). Rendered as the book's lore so the Help screen + // respects the configured language instead of showing hardcoded English. List helpContent = msgManager.getList("help.content"); - // Main help book - inventory.setItem(4, new ItemBuilder(Material.WRITTEN_BOOK) + // Main help book with the localized explanation of every feature + inventory.setItem(22, new ItemBuilder(Material.WRITTEN_BOOK) .name(msgManager.getRaw("help.title")) + .lore(helpContent) .build()); - // Feature explanations - inventory.setItem(19, new ItemBuilder(Material.CHEST) - .name("&aBrowse Market") - .lore( - "&7View all fixed-price listings", - "&7from other players.", - "", - "&7Click on items to purchase them." - ) - .build()); - - inventory.setItem(20, new ItemBuilder(Material.GOLD_INGOT) - .name("&6Browse Auctions") - .lore( - "&7View all active auctions.", - "", - "&eLeft-click &7to place a bid", - "&eRight-click &7to buyout (if available)" - ) - .build()); - - inventory.setItem(21, new ItemBuilder(Material.WRITABLE_BOOK) - .name("&eCreate Listing") - .lore( - "&7Sell items at a fixed price.", - "", - "&71. Place your item in the slot", - "&72. Set the price", - "&73. Choose duration", - "&74. Click confirm" - ) - .build()); - - inventory.setItem(22, new ItemBuilder(Material.GOLDEN_HELMET) - .name("&eCreate Auction") - .lore( - "&7Auction items to the highest bidder.", - "", - "&71. Place your item in the slot", - "&72. Set starting price", - "&73. Optionally set buyout", - "&74. Choose duration", - "&75. Click confirm" - ) - .build()); - - inventory.setItem(23, new ItemBuilder(Material.BOOK) - .name("&bMy Listings") - .lore( - "&7View your active listings.", - "", - "&7Click on a listing to cancel it.", - "&7Cancelled items go to claim storage." - ) - .build()); - - inventory.setItem(24, new ItemBuilder(Material.CLOCK) - .name("&bMy Auctions") - .lore( - "&7View your active auctions.", - "", - "&7You can only cancel auctions", - "&7that have no bids yet." - ) - .build()); - - inventory.setItem(25, new ItemBuilder(Material.ENDER_CHEST) - .name("&dClaim Items") - .lore( - "&7Collect items waiting for you:", - "", - "&7- Expired listings", - "&7- Cancelled listings", - "&7- Won auctions", - "&7- Auction refunds" - ) - .build()); - - inventory.setItem(31, new ItemBuilder(Material.EMERALD) - .name("&aEarnings") - .lore( - "&7Withdraw money from sales.", - "", - "&7When you sell something, the money", - "&7goes to pending earnings first.", - "&7Withdraw it here." - ) - .build()); - - // Tax info + // Tax info (values are dynamic; labels come from the language file) inventory.setItem(40, new ItemBuilder(Material.GOLD_NUGGET) - .name("&6Tax Information") + .name(msgManager.getRaw("help.tax-title")) .lore( - "&7Market Tax: &f" + plugin.getConfigManager().getMarketTax() + "%", - "&7Auction Tax: &f" + plugin.getConfigManager().getAuctionTax() + "%", + msgManager.getRaw("help.tax-market").replace("{tax}", String.valueOf(plugin.getConfigManager().getMarketTax())), + msgManager.getRaw("help.tax-auction").replace("{tax}", String.valueOf(plugin.getConfigManager().getAuctionTax())), "", - "&7Taxes are deducted from seller earnings." + msgManager.getRaw("help.tax-note") ) .build()); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 1bd7524..31bc46d 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -4,7 +4,7 @@ # ============================================ # Language setting (available: en_US, pt_PT) -language: en_US +language: pt_PT # Database Configuration database: diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml index a3793fe..07f71ef 100644 --- a/src/main/resources/lang/en_US.yml +++ b/src/main/resources/lang/en_US.yml @@ -45,12 +45,16 @@ messages: claim-empty: "&eYou have no items to claim." claim-inventory-full: "&cYour inventory is full! Please make space." claim-all-success: "&aClaimed {count} items!" + claim-items: "&eYou have &6{count}&e item(s) waiting to be claimed. Use /market to claim them." # Earnings Messages earnings-withdrawn: "&aWithdrew {amount}! New balance: {balance}" earnings-empty: "&eYou have no pending earnings." earnings-balance: "&aYour pending earnings: {amount}" + # Generic + failed: "&cSomething went wrong. Please try again." + # Item Validation invalid-item: "&cPlease select a valid item." item-no-longer-available: "&cThe selected item is no longer in your inventory." @@ -445,4 +449,8 @@ help: - "" - "&7&oTip: All actions are done through GUIs!" - "&7&oJust click on buttons to navigate." + tax-title: "&6Tax Information" + tax-market: "&7Market Tax: &f{tax}%" + tax-auction: "&7Auction Tax: &f{tax}%" + tax-note: "&7Taxes are deducted from seller earnings." diff --git a/src/main/resources/lang/pt_PT.yml b/src/main/resources/lang/pt_PT.yml index 019e495..7b44cd3 100644 --- a/src/main/resources/lang/pt_PT.yml +++ b/src/main/resources/lang/pt_PT.yml @@ -45,12 +45,16 @@ messages: claim-empty: "&eNão tens itens para reclamar." claim-inventory-full: "&cO teu inventário está cheio! Por favor liberta espaço." claim-all-success: "&aReclamaste {count} itens!" + claim-items: "&eTens &6{count}&e item(ns) por reclamar. Usa /market para os reclamar." # Mensagens de Ganhos earnings-withdrawn: "&aLevantaste {amount}! Novo saldo: {balance}" earnings-empty: "&eNão tens ganhos pendentes." earnings-balance: "&aOs teus ganhos pendentes: {amount}" + # Genérico + failed: "&cAlgo correu mal. Tenta novamente." + # Validação de Itens invalid-item: "&cPor favor seleciona um item válido." item-no-longer-available: "&cO item selecionado já não está no teu inventário." @@ -445,4 +449,8 @@ help: - "" - "&7&oDica: Todas as ações são feitas através de GUIs!" - "&7&oBasta clicar nos botões para navegar." + tax-title: "&6Informação de Taxas" + tax-market: "&7Taxa do Mercado: &f{tax}%" + tax-auction: "&7Taxa dos Leilões: &f{tax}%" + tax-note: "&7As taxas são deduzidas dos ganhos do vendedor." diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c99954b..5e7fdef 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,7 +4,7 @@ main: pt.henrique.communityMarket.CommunityMarket api-version: '1.21' description: A GUI-only marketplace plugin for fixed-price listings and auctions author: Henrique -website: https://github.com/henrique/CommunityMarket +website: https://github.com/henriquescrrrr/carrageis-communitymarket # Soft dependencies - plugin will detect and use these if available softdepend: @@ -63,21 +63,5 @@ permissions: default: true communitymarket.admin: - description: Allows access to admin functions - default: op - children: - communitymarket.admin.viewall: true - communitymarket.admin.remove: true - communitymarket.admin.reload: true - - communitymarket.admin.viewall: - description: Allows viewing all listings/auctions - default: op - - communitymarket.admin.remove: - description: Allows removing any listing or auction - default: op - - communitymarket.admin.reload: - description: Allows reloading configuration + description: Allows access to admin functions (view all, remove listings, reload) default: op diff --git a/target/classes/pt/henrique/communityMarket/db/DatabaseManager.class b/target/classes/pt/henrique/communityMarket/db/DatabaseManager.class index 3ef9cb6..f9f22d0 100644 Binary files a/target/classes/pt/henrique/communityMarket/db/DatabaseManager.class and b/target/classes/pt/henrique/communityMarket/db/DatabaseManager.class differ diff --git a/target/classes/pt/henrique/communityMarket/gui/CreateAuctionGui.class b/target/classes/pt/henrique/communityMarket/gui/CreateAuctionGui.class index c00038b..7f11da9 100644 Binary files a/target/classes/pt/henrique/communityMarket/gui/CreateAuctionGui.class and b/target/classes/pt/henrique/communityMarket/gui/CreateAuctionGui.class differ diff --git a/target/classes/pt/henrique/communityMarket/gui/CreateListingGui.class b/target/classes/pt/henrique/communityMarket/gui/CreateListingGui.class index 62ea03f..bc110bb 100644 Binary files a/target/classes/pt/henrique/communityMarket/gui/CreateListingGui.class and b/target/classes/pt/henrique/communityMarket/gui/CreateListingGui.class differ diff --git a/target/classes/pt/henrique/communityMarket/gui/ItemSelectionGui.class b/target/classes/pt/henrique/communityMarket/gui/ItemSelectionGui.class index 29dc14c..6bf99d6 100644 Binary files a/target/classes/pt/henrique/communityMarket/gui/ItemSelectionGui.class and b/target/classes/pt/henrique/communityMarket/gui/ItemSelectionGui.class differ diff --git a/target/classes/pt/henrique/communityMarket/service/AuctionService$BidResult.class b/target/classes/pt/henrique/communityMarket/service/AuctionService$BidResult.class index 94da621..7515b19 100644 Binary files a/target/classes/pt/henrique/communityMarket/service/AuctionService$BidResult.class and b/target/classes/pt/henrique/communityMarket/service/AuctionService$BidResult.class differ diff --git a/target/classes/pt/henrique/communityMarket/service/AuctionService$CancelResult.class b/target/classes/pt/henrique/communityMarket/service/AuctionService$CancelResult.class index 33e6fb7..b59ef15 100644 Binary files a/target/classes/pt/henrique/communityMarket/service/AuctionService$CancelResult.class and b/target/classes/pt/henrique/communityMarket/service/AuctionService$CancelResult.class differ diff --git a/target/classes/pt/henrique/communityMarket/service/AuctionService.class b/target/classes/pt/henrique/communityMarket/service/AuctionService.class index dbbc037..77736f2 100644 Binary files a/target/classes/pt/henrique/communityMarket/service/AuctionService.class and b/target/classes/pt/henrique/communityMarket/service/AuctionService.class differ diff --git a/target/classes/pt/henrique/communityMarket/service/ClaimService$ClaimResult.class b/target/classes/pt/henrique/communityMarket/service/ClaimService$ClaimResult.class index 082b7eb..cd88d0d 100644 Binary files a/target/classes/pt/henrique/communityMarket/service/ClaimService$ClaimResult.class and b/target/classes/pt/henrique/communityMarket/service/ClaimService$ClaimResult.class differ diff --git a/target/classes/pt/henrique/communityMarket/service/ClaimService.class b/target/classes/pt/henrique/communityMarket/service/ClaimService.class index a9f67e0..0785264 100644 Binary files a/target/classes/pt/henrique/communityMarket/service/ClaimService.class and b/target/classes/pt/henrique/communityMarket/service/ClaimService.class differ diff --git a/target/classes/pt/henrique/communityMarket/service/ListingService$PurchaseResult.class b/target/classes/pt/henrique/communityMarket/service/ListingService$PurchaseResult.class index a13f586..4e5fce8 100644 Binary files a/target/classes/pt/henrique/communityMarket/service/ListingService$PurchaseResult.class and b/target/classes/pt/henrique/communityMarket/service/ListingService$PurchaseResult.class differ diff --git a/target/classes/pt/henrique/communityMarket/service/ListingService.class b/target/classes/pt/henrique/communityMarket/service/ListingService.class index a7dbca2..6e0e8c2 100644 Binary files a/target/classes/pt/henrique/communityMarket/service/ListingService.class and b/target/classes/pt/henrique/communityMarket/service/ListingService.class differ diff --git a/target/communitymarket-1.0.0.jar b/target/communitymarket-1.0.0.jar index 2bbf51e..03df477 100644 Binary files a/target/communitymarket-1.0.0.jar and b/target/communitymarket-1.0.0.jar differ diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 9fc2fa1..395da8d 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -4,15 +4,15 @@ pt/henrique/communityMarket/config/MessageManager.class pt/henrique/communityMarket/model/PendingEarnings.class pt/henrique/communityMarket/gui/AdminGui$AdminListingsGui.class pt/henrique/communityMarket/model/Auction.class -pt/henrique/communityMarket/economy/EconomyManager$EconomyAdapter.class pt/henrique/communityMarket/listener/PlayerListener.class +pt/henrique/communityMarket/economy/EconomyManager$EconomyAdapter.class pt/henrique/communityMarket/gui/MarketGui.class pt/henrique/communityMarket/service/AuctionService.class pt/henrique/communityMarket/util/ItemSerializer.class -pt/henrique/communityMarket/gui/MainMenuGui.class pt/henrique/communityMarket/service/EarningsService$WithdrawResult.class -pt/henrique/communityMarket/gui/ConfirmationGui.class +pt/henrique/communityMarket/gui/MainMenuGui.class pt/henrique/communityMarket/service/ListingService.class +pt/henrique/communityMarket/gui/ConfirmationGui.class pt/henrique/communityMarket/gui/HelpGui.class pt/henrique/communityMarket/db/DatabaseManager.class pt/henrique/communityMarket/gui/QuantitySelectGui$QuantityCallback.class @@ -22,12 +22,12 @@ pt/henrique/communityMarket/model/Bid.class pt/henrique/communityMarket/service/ClaimService.class pt/henrique/communityMarket/task/ExpiredListingTask.class pt/henrique/communityMarket/gui/NumberInputGui$NumberInputCallback.class -pt/henrique/communityMarket/gui/MyAuctionsGui.class pt/henrique/communityMarket/service/ClaimService$ClaimResult.class -pt/henrique/communityMarket/gui/ConfirmationGui$ConfirmCallback.class +pt/henrique/communityMarket/gui/MyAuctionsGui.class pt/henrique/communityMarket/CommunityMarket.class -pt/henrique/communityMarket/gui/BrowseMarketGui.class +pt/henrique/communityMarket/gui/ConfirmationGui$ConfirmCallback.class pt/henrique/communityMarket/model/ClaimItem$ClaimReason.class +pt/henrique/communityMarket/gui/BrowseMarketGui.class pt/henrique/communityMarket/model/Auction$AuctionStatus.class pt/henrique/communityMarket/util/SoundUtil.class pt/henrique/communityMarket/gui/BrowseMarketGui$1.class @@ -39,13 +39,13 @@ pt/henrique/communityMarket/command/MarketCommand.class pt/henrique/communityMarket/listener/GuiListener$1.class pt/henrique/communityMarket/service/AuctionService$BidResult.class pt/henrique/communityMarket/gui/CreateListingGui.class -pt/henrique/communityMarket/gui/ClaimGui$1.class pt/henrique/communityMarket/model/ClaimItem.class +pt/henrique/communityMarket/gui/ClaimGui$1.class pt/henrique/communityMarket/util/ItemBuilder.class pt/henrique/communityMarket/gui/NumberInputGui.class pt/henrique/communityMarket/gui/AdminGui.class -pt/henrique/communityMarket/gui/ItemSelectionGui$SelectionMode.class pt/henrique/communityMarket/gui/BrowseAuctionsGui.class +pt/henrique/communityMarket/gui/ItemSelectionGui$SelectionMode.class pt/henrique/communityMarket/service/TransactionService$TransactionResult.class pt/henrique/communityMarket/service/EarningsService.class pt/henrique/communityMarket/service/TransactionService$ValidationResult.class @@ -56,8 +56,8 @@ pt/henrique/communityMarket/gui/GuiManager.class pt/henrique/communityMarket/economy/EconomyManager$VaultAdapter.class pt/henrique/communityMarket/gui/ClaimGui.class pt/henrique/communityMarket/economy/EconomyManager$EssentialsAdapter.class -pt/henrique/communityMarket/gui/EarningsGui.class pt/henrique/communityMarket/service/ListingService$PurchaseResult.class +pt/henrique/communityMarket/gui/EarningsGui.class pt/henrique/communityMarket/config/ConfigManager.class pt/henrique/communityMarket/gui/MarketGui$GuiType.class pt/henrique/communityMarket/util/InventoryUtil$ItemCategory.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 10cf6bc..4c3021e 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,42 +1,42 @@ -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/CommunityMarket.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/command/MarketCommand.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/config/ConfigManager.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/config/MessageManager.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/db/DatabaseManager.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/economy/EconomyManager.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/AdminGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/BrowseAuctionsGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/BrowseMarketGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/ClaimGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/ConfirmationGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/CreateAuctionGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/CreateListingGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/EarningsGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/GuiManager.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/HelpGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/ItemSelectionGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/MainMenuGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/MarketGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/MyAuctionsGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/MyListingsGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/NumberInputGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/gui/QuantitySelectGui.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/listener/GuiListener.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/listener/PlayerListener.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/model/Auction.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/model/Bid.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/model/ClaimItem.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/model/Listing.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/model/PendingEarnings.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/service/AuctionService.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/service/ClaimService.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/service/EarningsService.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/service/ListingService.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/service/TransactionService.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/task/AuctionTask.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/task/ExpiredListingTask.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/util/InventoryUtil.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/util/ItemBuilder.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/util/ItemSerializer.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/util/SoundUtil.java -/Users/henrique/IdeaProjects/CommunityMarket/src/main/java/pt/henrique/communityMarket/util/TextUtil.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/CommunityMarket.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/command/MarketCommand.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/config/ConfigManager.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/config/MessageManager.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/db/DatabaseManager.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/economy/EconomyManager.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/AdminGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/BrowseAuctionsGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/BrowseMarketGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/ClaimGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/ConfirmationGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/CreateAuctionGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/CreateListingGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/EarningsGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/GuiManager.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/HelpGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/ItemSelectionGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/MainMenuGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/MarketGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/MyAuctionsGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/MyListingsGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/NumberInputGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/gui/QuantitySelectGui.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/listener/GuiListener.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/listener/PlayerListener.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/model/Auction.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/model/Bid.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/model/ClaimItem.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/model/Listing.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/model/PendingEarnings.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/service/AuctionService.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/service/ClaimService.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/service/EarningsService.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/service/ListingService.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/service/TransactionService.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/task/AuctionTask.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/task/ExpiredListingTask.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/util/InventoryUtil.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/util/ItemBuilder.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/util/ItemSerializer.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/util/SoundUtil.java +/root/mc-plugins-audit/repos/communitymarket/src/main/java/pt/henrique/communityMarket/util/TextUtil.java diff --git a/target/original-communitymarket-1.0.0.jar b/target/original-communitymarket-1.0.0.jar index 55af91e..03df477 100644 Binary files a/target/original-communitymarket-1.0.0.jar and b/target/original-communitymarket-1.0.0.jar differ