195 lines
5.5 KiB
Markdown
195 lines
5.5 KiB
Markdown
# CommunityMarket
|
|
|
|
A professional, production-ready GUI-only marketplace plugin for Minecraft Paper 1.21.11.
|
|
|
|
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
|
|
|
|
### 🛒 Fixed-Price Market
|
|
- Create listings with custom prices and durations
|
|
- Browse paginated listings with categories and sorting
|
|
- Safe atomic purchases to prevent double-buying
|
|
- Configurable taxes on sales
|
|
|
|
### 🔨 Auction System
|
|
- Start auctions with minimum bid and optional buyout
|
|
- 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
|
|
- Items from expired listings go to claim storage
|
|
- Won auction items are safely delivered
|
|
- Handles full inventories gracefully
|
|
|
|
### 💰 Earnings Management
|
|
- Pending earnings from sales
|
|
- Withdraw all at once
|
|
- Complete transaction history
|
|
|
|
### 🔐 Admin Features (GUI-based)
|
|
- View all listings and auctions
|
|
- Remove any listing
|
|
- Cancel/force-end auctions
|
|
- Reload configuration
|
|
|
|
### 🎮 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 to select it
|
|
3. **Select Quantity** - Choose how many to sell (skipped for unstackable items)
|
|
4. **Settings** - Set price and duration with merged, clickable elements
|
|
5. **Confirm** - Review and confirm your listing/auction
|
|
|
|
## Requirements
|
|
|
|
- **Server**: Paper 1.21.11 (or compatible)
|
|
- **Java**: Java 21
|
|
- **Economy**: One of the following:
|
|
- Vault + any Vault-compatible economy (Essentials, CMI, etc.)
|
|
- EssentialsX (fallback if Vault is not present)
|
|
|
|
## Installation
|
|
|
|
1. Download `CommunityMarket-1.0.0.jar`
|
|
2. Place it in your server's `plugins/` folder
|
|
3. Ensure you have an economy plugin installed (Vault recommended)
|
|
4. Start/restart your server
|
|
5. Edit `plugins/CommunityMarket/config.yml` as needed
|
|
6. Use `/market` to open the marketplace!
|
|
|
|
## Commands
|
|
|
|
| Command | Alias | Description | Permission |
|
|
|---------|-------|-------------|------------|
|
|
| `/market` | `/cmarket` | Opens the main market GUI | `communitymarket.use` |
|
|
|
|
**That's it!** Everything else is done through GUIs.
|
|
|
|
## Permissions
|
|
|
|
| Permission | Description | Default |
|
|
|------------|-------------|---------|
|
|
| `communitymarket.*` | All permissions | op |
|
|
| `communitymarket.use` | Access the market GUI | true |
|
|
| `communitymarket.sell` | Create fixed-price listings | true |
|
|
| `communitymarket.auction` | Create auctions | true |
|
|
| `communitymarket.buy` | Purchase from the market | true |
|
|
| `communitymarket.bid` | Bid on auctions | true |
|
|
| `communitymarket.claim` | Claim items from storage | true |
|
|
| `communitymarket.withdraw` | Withdraw earnings | true |
|
|
| `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
|
|
|
|
### config.yml
|
|
|
|
```yaml
|
|
# Language setting (available: en_US, pt_PT)
|
|
language: en_US
|
|
|
|
# Database Configuration
|
|
database:
|
|
type: sqlite # or "mysql"
|
|
sqlite:
|
|
file: database.db
|
|
mysql:
|
|
host: localhost
|
|
port: 3306
|
|
database: communitymarket
|
|
username: root
|
|
password: ""
|
|
|
|
# Economy Settings
|
|
economy:
|
|
currency-format: "$#,##0.00"
|
|
currency-symbol: "$"
|
|
taxes:
|
|
market-tax: 5.0 # 5% tax on listings
|
|
auction-tax: 7.5 # 7.5% tax on auctions
|
|
|
|
# Market Settings
|
|
market:
|
|
max-listings-per-player: 20
|
|
listing-cooldown: 0 # seconds between listings
|
|
default-duration-hours: 168 # 7 days
|
|
min-price: 1.0
|
|
max-price: 1000000000.0
|
|
|
|
# Auction Settings
|
|
auction:
|
|
max-auctions-per-player: 10
|
|
min-duration-hours: 1
|
|
max-duration-hours: 168
|
|
anti-snipe:
|
|
enabled: true
|
|
trigger-seconds: 30
|
|
extension-seconds: 30
|
|
max-extensions: 10
|
|
|
|
# GUI Settings
|
|
gui:
|
|
items-per-page: 45
|
|
show-help-button: true # Set to false to hide help button in main menu
|
|
```
|
|
|
|
See the full `config.yml` for all options.
|
|
|
|
### Languages
|
|
|
|
CommunityMarket ships with two languages:
|
|
- **English (US)**: `en_US`
|
|
- **Portuguese (Portugal)**: `pt_PT`
|
|
|
|
Change the language in `config.yml`:
|
|
```yaml
|
|
language: pt_PT
|
|
```
|
|
|
|
You can create custom language files by copying an existing one in `plugins/CommunityMarket/lang/`.
|
|
|
|
## Building from Source
|
|
|
|
```bash
|
|
git clone https://github.com/henrique/CommunityMarket.git
|
|
cd CommunityMarket
|
|
mvn clean package
|
|
```
|
|
|
|
The compiled JAR will be in `target/CommunityMarket-1.0.0.jar`.
|
|
|
|
## FAQ
|
|
|
|
### Q: The plugin says "No economy plugin found!"
|
|
**A:** Install Vault + an economy plugin (like EssentialsX) or just EssentialsX.
|
|
|
|
### Q: Can I use MySQL instead of SQLite?
|
|
**A:** Yes! Change `database.type` to `mysql` in config.yml and fill in your credentials.
|
|
|
|
### Q: How do I change the GUI titles?
|
|
**A:** Edit the language file in `plugins/CommunityMarket/lang/`.
|
|
|
|
### Q: Items aren't being removed when creating listings?
|
|
**A:** This is a known issue with some inventory plugins. Make sure you're running Paper 1.21.11.
|
|
|
|
### Q: How do taxes work?
|
|
**A:** When an item sells, the tax percentage is deducted from the seller's earnings. Buyers pay the listed price.
|
|
|
|
## Support
|
|
|
|
- **Issues**: [GitHub Issues](https://github.com/henrique/CommunityMarket/issues)
|
|
- **Discord**: Coming soon
|
|
|
|
## License
|
|
|
|
MIT License - See LICENSE file for details.
|
|
|
|
---
|
|
|
|
Made with ❤️ for the Minecraft community
|
|
|