作者:rebot | 分类:模组
Minecraft 版本: 1.20.6 1.21 1.21.1 1.21.2 1.21.3 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 1.21.9 1.21.10 1.21.11 26.1 26.1.1 26.1.2
平台: bukkit paper purpur spigot
标签: economy game-mechanics utility
A quick announcement: This project was originally By Aoov, but after realizing its potential, I took over updating this plugin. You can support me through donations :3 as that's how your donations help me and this project.
SellGUI is a Minecraft selling plugin with a configurable GUI, /sellall, autosell, price setting tools, price evaluation, and support for custom item plugins. Version 3 focuses on cleaner configuration, multiple sell menus, menu-specific item rules, and safer item stacking behavior.
gui/sell_menus/ folder.default.yml and fishing.yml./sellgui <menu> to open a specific menu./sellgui <player> <menu> so admins can open a specific menu for another player.allowed-items allows only specific items.denied-items blocks specific items.exclusive: true locks listed items to that menu only./sellall and autosell now skip items locked to exclusive menus.gui.yml into a cleaner gui/ folder.libs/shopgui-api-3.1.0.jar so Maven builds work from a fresh clone.| Component | Notes |
|---|---|
| Java | Java 21 recommended for modern Paper/Spigot 1.20.6+ servers |
| Server | Paper/Spigot 1.20.6+, optimized for 1.21+ |
| Vault | Required for economy support |
| Economy plugin | EssentialsX, CMI, or any Vault-compatible economy plugin |
| NBTAPI | Required dependency in plugin.yml |
| Plugin | Purpose |
|---|---|
| EssentialsX | Use Essentials worth prices |
| ShopGUIPlus | Use ShopGUI+ sell prices |
| MMOItems | Detect and price MMOItems |
| Nexo | Detect and price Nexo items |
| MythicLib | Extra item/NBT metadata support |
| PlaceholderAPI | Registers %sellgui_*% placeholders |
| PacketEvents | Displays item worth lore through packets when enabled |
plugins/ folder.plugins/SellGUI/./sellgui reload or restart the server after editing configuration files.git clone https://github.com/NguyenSonhoa/SellGUI.git
cd SellGUI
git checkout v3.0
mvn -q -DskipTests package
Jar output:
target/SellGUI-3.0.1.jar
libs/shopgui-api-3.1.0.jar is committed so Maven can build immediately after cloning.
Aliases for /sellgui: /sg, /sell
| Command | Description | Permission |
|---|---|---|
/sellgui |
Open the default sell menu | sellgui.use |
/sellgui <menu> |
Open a specific sell menu, for example /sellgui fishing |
sellgui.use and the menu permission |
/sellgui <player> |
Open the default menu for another player | sellgui.others |
/sellgui <player> <menu> |
Open a specific menu for another player | sellgui.others |
/sellgui help |
Show in-game help | sellgui.use |
/sellgui reload |
Reload configs and GUIs | sellgui.reload |
/sellgui evaluate |
Open the Price Evaluation GUI | sellgui.evaluate |
/sellgui autosell |
Open the Autosell Settings GUI | sellgui.autosell |
/autosell |
Open the Autosell Settings GUI | sellgui.autosell |
/sellgui setprice <amount> |
Set a fixed price for the item in hand | sellgui.setprice |
/sellgui setrange <min> <max> |
Set a random price range for the item in hand | sellgui.setrange |
/sellguiprice |
Open the Price Setter GUI | sellgui.setprice |
/sellguiprice <price> |
Enter a price for the item in the open Price Setter GUI | sellgui.setprice |
/sellall |
Preview selling all valid inventory items | sellgui.sellall |
/sellall confirm |
Confirm /sellall |
sellgui.sellall |
| Permission | Default | Description |
|---|---|---|
sellgui.* |
plugin manager/op | Access to all declared SellGUI permissions |
sellgui.use |
true | Use the basic SellGUI command |
sellgui.admin |
op | General admin permission |
sellgui.others |
manual grant | Open SellGUI for other players |
sellgui.reload |
op | Reload the plugin |
sellgui.setprice |
op | Use the Price Setter and fixed price commands |
sellgui.setrange |
op | Set random price ranges |
sellgui.evaluate |
op | Use the Price Evaluation GUI |
sellgui.sellall |
true | Use /sellall |
sellgui.autosell |
true | Open the autosell GUI |
sellgui.menu.* |
true | Access all configured menus declared in plugin.yml |
sellgui.menu.default |
true | Open the default menu |
sellgui.menu.fishing |
true | Open the example fishing menu |
sellgui.bonus.<number> |
false | Adds a sell bonus, depending on the pricing path |
sellgui.multiplier.<number> |
false | Multiplies sell prices |
Examples:
sellgui.multiplier.2.0
sellgui.bonus.30
sellgui.menu.fishing
When adding a new menu, give it its own permission in the menu file, for example sellgui.menu.mining, then grant that permission to the ranks that should use it.
After the first server start, SellGUI creates files under plugins/SellGUI/.
plugins/SellGUI/
config.yml
itemprices.yml
mmoitems.yml
nexo.yml
customitems.yml
custommenuitems.yml
random-prices.yml
messages.yml
sounds.yml
autosell_data.yml
gui/
sell_menus/
default.yml
fishing.yml
price_setter.yml
price_evaluation.yml
autosell_settings.yml
The old root gui.yml has been removed in v3. GUI layouts and sell menus now live in the gui/ folder.
SellGUI loads and merges all .yml and .yaml files inside gui/, including files in subfolders. The recommended layout is one sell menu per file under gui/sell_menus/.
Default menu:
plugins/SellGUI/gui/sell_menus/default.yml
Example fishing menu:
plugins/SellGUI/gui/sell_menus/fishing.yml
Example mining menu:
sell_menus:
mining:
name: "Mining"
permission: "sellgui.menu.mining"
title: "&8/sellgui > Mining"
size: 36
item-filter:
allowed-items:
- "IRON_INGOT"
- "GOLD_INGOT"
- "DIAMOND"
- "EMERALD"
denied-items: []
exclusive: true
positions:
sell_button: [31]
confirm_button: [31]
filler_slots: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 26, 27, 28, 29, 30, 32, 33, 34, 35]
item_slots: [10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25]
items:
sell_button:
material: "EMERALD"
custom-model-data: 0
name: "&a&lCalculate Mining Sale"
lore:
- "&7Only mining items can be sold here."
- "&eTotal Value: &a$0.00"
glow: true
confirm_button:
material: "GREEN_CONCRETE"
custom-model-data: 0
name: "&a&lConfirm Mining Sale"
lore:
- "&fTotal: &e$%total%"
glow: true
filler:
material: "GRAY_STAINED_GLASS_PANE"
custom-model-data: 0
name: " "
lore: []
no_items:
material: "BARRIER"
custom-model-data: 0
name: "&c&lNo Items To Sell"
lore:
- "&7Add mining items to this menu."
item_total_format: "&7%amount%x &f%item% &8= &e$%total%"
evaluation_required_format: "&7%amount%x &f%item% &cNeeds Evaluation"
Open it with:
/sellgui mining
Each menu can define:
item-filter:
allowed-items: []
denied-items: []
exclusive: false
| Key | Description |
|---|---|
allowed-items |
If empty, the menu accepts any valid item except denied items and items locked to another exclusive menu. If populated, the menu only accepts listed items. |
denied-items |
Blocks specific items in that menu. |
exclusive |
When true, listed allowed items can only be sold in this menu. |
With exclusive: true, those items are:
/sellall.Vanilla items can be written by material name:
allowed-items:
- "COD"
- "SALMON"
Full identifiers are also supported:
allowed-items:
- "VANILLA:COD"
- "MMOITEMS:SWORD.EXCALIBUR"
- "NEXO:CUSTOM_FISH"
| Item type | Format |
|---|---|
| Vanilla | VANILLA:MATERIAL or just MATERIAL |
| MMOItems | MMOITEMS:TYPE.ID |
| Nexo | NEXO:ITEM_ID |
SellGUI can read prices from multiple sources:
itemprices.yml for vanilla items.mmoitems.yml for MMOItems.nexo.yml for Nexo items.use-essentials-price: true.use-shopguiplus-price: true.prices.nbt-pricing: true.random-prices.yml.Main price config:
prices:
nbt-pricing: true
calculation-method: "auto"
default-price: 0.0
multipliers:
enabled: true
permission-based: true
default-multiplier: 1.0
max-multiplier: 5.0
random-pricing:
enabled: false
variation-percent: 10.0
prices.calculation-method values:
| Value | Description |
|---|---|
auto |
Automatically choose the best available price source |
config |
Use SellGUI config prices only |
essentials |
Use Essentials worth only |
nbt |
Use NBT price only |
shopguiplus |
Use ShopGUI+ only |
Open the GUI:
/sellguiprice
Workflow:
Quick command:
/sellgui setprice 10
In most price-setting flows, price 0 can be used to remove the saved price.
Open the GUI:
/sellgui evaluate
Use this when items must be evaluated before they can be sold. Related files:
plugins/SellGUI/gui/price_evaluation.yml
plugins/SellGUI/random-prices.yml
If general.allow-player-evaluation-stack: false, players cannot evaluate a whole stack at once.
Open the GUI:
/autosell
/sellgui autosell
Autosell lets players toggle automatic selling for priced items. Player data is stored in:
plugins/SellGUI/autosell_data.yml
In v3, autosell skips items locked to exclusive sell menus so category-specific items are not sold accidentally.
Commands:
/sellall
/sellall confirm
/sellall calculates a preview. The player then confirms with /sellall confirm.
In v3, /sellall skips:
sell-all-command-sell-enchanted: false.V3 adds stack normalization to fix vanilla items that stop stacking because of temporary SellGUI metadata or lore.
Config:
stacking:
enabled: true
normalize-on-join: true
normalize-on-quit: true
normalize-on-plugin-disable: true
normalize-smelt-results: true
normalize-after-furnace-extract: true
This removes temporary SellGUI metadata such as current_price, evaluated, and Evaluated: ... lore when appropriate, then merges similar stacks in the player's inventory.
It does not intentionally remove custom NBT or metadata from other plugins, so custom items with real metadata stay intact.
When PlaceholderAPI is installed, SellGUI registers the sellgui identifier and processes PlaceholderAPI placeholders in supported GUI text.
| Placeholder | Description |
|---|---|
%sellgui_pricehand% |
Price of the item in the player's main hand |
%sellgui_pricehandfull% |
Item name and price of the item in hand |
These placeholders can be used in SellGUI text/config values. If PlaceholderAPI is installed, SellGUI lets PlaceholderAPI process placeholders first. If PlaceholderAPI is missing or fails, SellGUI falls back to these built-in placeholders.
| Placeholder | Description |
|---|---|
%player% |
Player name |
%player_name% |
Player name |
%player_displayname% |
Player display name |
%player_uuid% |
Player UUID |
%player_world% |
Player world name |
%player_x% |
Player block X position |
%player_y% |
Player block Y position |
%player_z% |
Player block Z position |
%player_health% |
Current player health |
%player_max_health% |
Max player health |
%player_food% |
Player food level |
%player_level% |
Player XP level |
%player_exp% |
Player XP progress percent |
%vault_eco_balance% |
Player Vault economy balance |
%player_balance% |
Player Vault economy balance |
%server_name% |
Server name |
%server_version% |
Full server version |
%server_bukkit_version% |
Bukkit version |
%server_online% |
Online player count |
%server_max_players% |
Max player count |
%sellgui_version% |
SellGUI plugin version |
%sellgui_author% |
SellGUI plugin authors |
%time% |
Current server local time |
%date% |
Current server local date |
%timestamp% |
Current server local date and time |
Enable in config.yml:
general:
add-worth-lore: true
PacketEvents is required. SellGUI displays worth lore through packets so the real inventory item is not constantly rewritten with lore.
GUI titles where worth lore should not be shown:
general:
worth-lore-blacklist-gui-titles:
- "ah"
- "Auction House"
- "My Chest"
If you are upgrading from a pre-v3 build:
plugins/SellGUI/.gui/ folder.gui.yml into files under gui/.gui/sell_menus/<menu>.yml./sellgui reload.Important changes:
| Old | New |
|---|---|
Root gui.yml |
gui/ folder |
| One sell GUI | Multiple sell menus under gui/sell_menus/ |
| Items sold anywhere | Items can be locked to one menu with exclusive: true |
/sellgui fishing says the player has no permissionMake sure the player has the menu permission:
sellgui.menu.fishing
Check whether the item belongs to another exclusive menu. For example, fish in fishing.yml has exclusive: true, so fish can only be sold through /sellgui fishing.
/sellall does not sell some itemsCheck:
itemprices.yml, mmoitems.yml, nexo.yml, Essentials, or ShopGUI+.sell-all-command-sell-enchanted: false.Make sure this file exists:
libs/shopgui-api-3.1.0.jar
Then build again:
mvn -q -DskipTests package
| File | Description |
|---|---|
src/main/resources/config.yml |
Default core config |
src/main/resources/gui/sell_menus/default.yml |
Default sell menu |
src/main/resources/gui/sell_menus/fishing.yml |
Example fishing sell menu |
src/main/resources/gui/price_setter.yml |
Price Setter GUI layout |
src/main/resources/gui/price_evaluation.yml |
Price Evaluation GUI layout |
src/main/resources/gui/autosell_settings.yml |
Autosell Settings GUI layout |
src/main/resources/itemprices.yml |
Vanilla item prices |
src/main/resources/mmoitems.yml |
MMOItems prices |
src/main/resources/nexo.yml |
Nexo item prices |
src/main/resources/random-prices.yml |
Random/evaluation prices |
CHANGELOG.md |
v3 changelog |
See CHANGELOG.md.
When reporting issues, include:
请登录后举报
暂无评论,抢个沙发吧~