F-ItemShop - is a simple yet powerful plugin that ensures every purchased item, rank, or kit—whether from Twebshops, or donations—is stored for the player to collect later, even if they bought while offline.
There is just one command:
/claim
Using this single, easy command, players instantly open an interactive GUI that displays all their unclaimed rewards and lets them collect them efficiently and safely, whenever they like.
Key Features
- Single Command Simplicity: Players claim their rewards with /claim – it always opens the same, clear GUI with all pending items.
- Pending Rewards for Offline Players: All store purchases are stored securely—even if bought while offline—and claimed later.
- Intuitive Item Claim GUI: All pending rewards are visually presented; players take what’s theirs at their preferred time.
- Player-Friendly Notifications: Upon joining, players get sounds and messages if they have items waiting.
- Admin Integration: Staff, webshops, or automations can easily add rewards to any player, online or not.
Configurable & Customizable: All items, messages, lore, commands, and GUIs easily customized in YAML.
config.yml:
Code (YAML):
# Notification settings
notifications
:
# Enable title notification when player joins
title:
enabled
: true
title
:
"&6&lItemShop"
subtitle
:
"&eYou have items waiting to be claimed!"
fade_in
: 10
stay
: 40
fade_out
: 10
# Enable sound notification when player joins
sound:
enabled
: true
sound
:
"ENTITY_EXPERIENCE_ORB_PICKUP"
volume
: 1.0
pitch
: 1.0
# Broadcast messages settings
broadcast_messages
:
# Message when a player claims multiple items at once
# Placeholders: {player} - player name, {count} - number of items
unified_claim
:
"&8[&6ItemShop&8] &ePlayer &6{player} &eclaimed &f{count} items &efrom the shop!"
# GUI settings
gui_settings
:
# Enable claiming single items individually (left-click on an item)
# WARNING: Disable this if you want players to claim all items at once only
allow_single_item_claim
: true
# List of products available to grant via /giveitemshop command
products
:
# Product ID, used in commands, e.g. /giveitemshop anarchic_key Steve 1
common_key
:
# Display name in GUI
display_name
:
"&cCommon Key"
# Icon in GUI
material
:
"TRIPWIRE_HOOK"
# Maximum amount allowed per player
max_amount
: 10
# Description (lore) shown in GUI
lore
:
-
"&7Receive a key to the Common chest"
-
"&7plus a bonus of 100 coins!"
-
""
- "&c&lWARNING
:
&7Make sure you have enough inventory space!
"
- "
"
- "&eClick the button below to claim!
"
# Commands executed by console after player claims the item
# Placeholders: {player} - player name
commands:
- "crate give
{player
} common 1
"
- "eco give
{player
} 100
"
# Chat message broadcast to all players
# Placeholders: {player}
broadcast_message: "&8
[&6ItemShop&8
] &ePlayer &6
{player
} &epurchased an &cAnarchy Key&e!
"
vip_30_days:
display_name: "&6VIP Rank
(30 Days
)
"
material: "GOLDEN_APPLE
"
max_amount: 1
lore:
- "&7Grants you VIP rank for 30 days!
"
- "&7Access to exclusive features
"
- "&7and additional permissions.
"
- "
"
- "
"
- "&eClick the button below to claim!
"
commands:
- "lp user
{player
} parent set vip
"
broadcast_message: "&8
[&6ItemShop&8
] &ePlayer &6
{player
} &epurchased the &6VIP Rank&e!
"
diamond_stack:
display_name: "&bDiamond Stack
"
material: "DIAMOND
"
max_amount: 64
lore:
- "&7Receive a full stack of diamonds!
"
- "&764 pieces of the rarest resource.
"
- "
"
- "&c&lWARNING
:
&7Make sure you have enough inventory space!
"
- "
"
- "&eClick the button below to claim!
"
commands:
- "give
{player
} diamond 64
"
broadcast_message: "&8
[&6ItemShop&8
] &ePlayer &6
{player
} &epurchased a &bDiamond Stack&e!
"
premium_kit:
display_name: "&dPremium Kit
"
material: "DIAMOND_SWORD
"
max_amount: 1
lore:
- "&7Receive the premium starter kit:
"
- "&8• &fDiamond Sword
"
- "&8• &fDiamond Armor Set
"
- "&8• &e500 Coins
"
- "
"
- "&c&lWARNING
:
&7Make sure you have enough inventory space!
"
- "
"
- "&eClick the button below to claim!
"
commands:
- "give
{player
} diamond_sword 1
"
- "give
{player
} diamond_chestplate 1
"
- "eco give
{player
} 500
"
broadcast_message: "&8
[&6ItemShop&8
] &ePlayer &6
{player
} &epurchased the &dPremium Kit&e!
"
messages.yml:
Code (YAML):
# Plugin message prefix
prefix
:
"&8[&6ItemShop&8] &r"
# GUI Messages
gui:
title
:
"&8Claim Items (Page %d/%d)"
buttons:
claim_all
:
"&aClaim All"
claim_all_lore
:
"&7Click to claim all items."
previous_page
:
"&aPrevious Page"
next_page
:
"&aNext Page"
item_lore:
amount_to_claim
:
"&7Amount to claim: &e%d"
click_to_claim
:
"&e▶ &7Click to claim all &e%d &7pcs."
errors:
loading_error
:
"&cAn error occurred while loading items."
unknown_product
:
"&cUnknown product: %s"
product_removed
:
"&7This product has been removed from the config."
invalid_material
:
"&cInvalid material for product: %s -> %s"
# Error Messages for Players
errors:
database_error
:
"&cDatabase error occurred"
database_error_add_item
:
"&cDatabase error: Unable to add item to queue"
database_error_claim
:
"&cError occurred while claiming items"
config_reload_error
:
"&cDatabase error: Error during configuration reload"
amount_limit_exceeded
:
"&cThe product &f{display_name} &ccan be owned up to &e{max_amount}&c! Player already has &e{current_amount}&c in queue, adding &e{amount}&c would exceed the limit."
player_messages:
no_permission
:
"&cYou do not have permission to use this command."
no_items_to_claim
:
"&cYou have no items to claim."
items_claimed_successfully
:
"&aSuccessfully claimed all items from the shop!"
items_waiting_notification
:
"&eYou have items waiting to claim! Type &6/claim&e to receive them."
admin_messages:
item_added_to_queue
:
"&aAdded {amount}x {display_name} to queue for player {player}."
player_not_found
:
"&cPlayer with name {player} was not found."
product_not_found
:
"&cProduct with ID '{product_id}' does not exist in config.yml."
command_usage
:
"&cUsage: /giveitemshop <product_id> <player_name> <amount>"
reload_usage
:
"&cUsage: /fitemshop reload"
config_reloaded
:
"&aConfiguration has been successfully reloaded!"
general:
only_player
:
"&cThis command can only be used by a player."
Polish translate:
config.yml:
Code (YAML):
# Ustawienia powiadomień
notifications
:
# Czy włączyć powiadomienia title przy dołączeniu gracza
title:
enabled
: true
title
:
"&6&lItemShop"
subtitle
:
"&eMasz przedmioty do odebrania!"
fade_in
: 10
stay
: 40
fade_out
: 10
# Czy włączyć dźwięk przy dołączeniu gracza
sound:
enabled
: true
sound
:
"ENTITY_EXPERIENCE_ORB_PICKUP"
volume
: 1.0
pitch
: 1.0
# Ustawienia wiadomości broadcast
broadcast_messages
:
# Wiadomość gdy gracz odbiera więcej niż 1 przedmiot naraz
# Dostępne placeholdery: {player} - nick gracza, {count} - liczba przedmiotów
unified_claim
:
"&8[&6ItemShop&8] &eGracz &6{player} &eodebrał &f{count} przedmiotów &ez sklepu!"
# Ustawienia GUI
gui_settings
:
# Czy włączyć odbieranie pojedynczych przedmiotów (LPM na przedmiot)
# UWAGA: Wyłącz to jeśli nie chcesz żeby gracze odbierali po kolei zamiast wszystko naraz
allow_single_item_claim
: true
# Lista produktów dostępnych do przyznania przez komendę /giveitemshop
products
:
# ID produktu, używane w komendzie, np. /giveitemshop klucz_anarchiczny Bober 1
klucz_anarchiczny
:
# Nazwa wyświetlana w gui
display_name
:
"&cKlucz Anarchiczny"
# ikonka w gui
material
:
"TRIPWIRE_HOOK"
# Maksymalna ilość
max_amount
: 10
# Opis wyświetlany w GUI
lore
:
-
"&7Otrzymujesz klucz do skrzyni Anarchia"
-
"&7oraz bonus 100 monet!"
-
""
- "&c&lUWAGA
:
&7Upewnij się że masz miejsce w ekwipunku!
"
- "
"
- "&eKliknij przycisk poniżej, aby odebrać!
"
# Komendy, które zostaną wykonane przez konsolę po odebraniu itemu przez gracza
# Dostępne placeholdery: {player} - nick gracza
commands:
- "crate give
{player
} Anarchia 1
"
- "eco give
{player
} 100
"
# Wiadomość, która pojawi się na czacie dla wszystkich graczy
# Dostępne placeholdery: {player}
broadcast_message: "&8
[&6ItemShop&8
] &eGracz &6
{player
} &ezakupił &cKlucz Anarchiczny&e!
"
vip_na_miesiac:
display_name: "&6Ranga VIP
(30 dni
)
"
material: "GOLDEN_APPLE
"
max_amount: 1
lore:
- "&7Otrzymujesz rangę VIP na 30 dni!
"
- "&7Dostęp do ekskluzywnych funkcji
"
- "&7i dodatkowych uprawnień.
"
- "
"
- "
"
- "&eKliknij przycisk poniżej, aby odebrać!
"
commands:
- "lp user
{player
} parent set vip
"
broadcast_message: "&8
[&6ItemShop&8
] &eGracz &6
{player
} &ezakupił &6rangę VIP&e!
"
diament_stack:
display_name: "&bStack Diamentów
"
material: "DIAMOND
"
max_amount: 64
lore:
- "&7Otrzymujesz pełny stack diamentów!
"
- "&764 sztuki najcenniejszego surowca.
"
- "
"
- "&c&lUWAGA
:
&7Upewnij się że masz miejsce w ekwipunku!
"
- "
"
- "&eKliknij przycisk poniżej, aby odebrać!
"
commands:
- "give
{player
} diamond 64
"
broadcast_message: "&8
[&6ItemShop&8
] &eGracz &6
{player
} &ezakupił &bStack Diamentów&e!
"
premium_kit:
display_name: "&dPremium Kit
"
material: "DIAMOND_SWORD
"
max_amount: 1
lore:
- "&7Otrzymujesz premium zestaw:
"
- "&8• &fDiamentowy miecz
"
- "&8• &fDiamentowa zbroja
"
- "&8• &e500 monet
"
- "
"
- "&c&lUWAGA
:
&7Upewnij się że masz miejsce w ekwipunku!
"
- "
"
- "&eKliknij przycisk poniżej, aby odebrać!
"
commands:
- "give
{player
} diamond_sword 1
"
- "give
{player
} diamond_chestplate 1
"
- "eco give
{player
} 500
"
broadcast_message: "&8
[&6ItemShop&8
] &eGracz &6
{player
} &ezakupił &dPremium Kit&e!
"
messages.yml:
Code (YAML):
# Prefix dla wiadomości pluginu
prefix
:
"&8[&6ItemShop&8] &r"
# GUI Messages
gui:
title
:
"&8Odbierz przedmioty (Strona %d/%d)"
buttons:
claim_all
:
"&aOdbierz wszystko"
claim_all_lore
:
"&7Kliknij, aby odebrać wszystkie przedmioty."
previous_page
:
"&aPoprzednia strona"
next_page
:
"&aNastępna strona"
item_lore:
amount_to_claim
:
"&7Ilość do odebrania: &e%d"
click_to_claim
:
"&e▶ &7Kliknij, aby odebrać wszystkie &e%d &7szt."
errors:
loading_error
:
"&cWystąpił błąd podczas ładowania przedmiotów."
unknown_product
:
"&cNieznany produkt: %s"
product_removed
:
"&7Ten produkt został usunięty z konfiguracji."
invalid_material
:
"&cNieprawidłowy materiał dla produktu: %s -> %s"
# Error Messages for Players
errors:
database_error
:
"&cWystąpił błąd bazy danych"
database_error_add_item
:
"&cBłąd bazy danych: Nie można dodać przedmiotu do kolejki"
database_error_claim
:
"&cBłąd podczas odbierania przedmiotów"
config_reload_error
:
"&cBłąd bazy danych: Błąd podczas przeładowywania konfiguracji"
amount_limit_exceeded
:
"&cProdukt &f{display_name} &cmoże być posiadany maksymalnie w ilości &e{max_amount}&c! Gracz ma już &e{current_amount}&c w kolejce, próba dodania &e{amount}&c przekroczyłaby limit."
player_messages:
no_permission
:
"&cNie masz uprawnień do tej komendy."
no_items_to_claim
:
"&cNie masz żadnych przedmiotów do odebrania."
items_claimed_successfully
:
"&aPomyślnie odebrano wszystkie przedmioty ze sklepu!"
items_waiting_notification
:
"&eMasz przedmioty oczekujące na odbiór! Wpisz &6/odbierz&e, aby je odebrać."
admin_messages:
item_added_to_queue
:
"&aDodano {amount}x {display_name} do kolejki dla gracza {player}."
player_not_found
:
"&cGracz o nicku {player} nie został znaleziony."
product_not_found
:
"&cProdukt o ID '{product_id}' nie istnieje w config.yml."
command_usage
:
"&cPoprawne użycie: /giveitemshop <id_produktu> <nick_gracza> <ilosc>"
reload_usage
:
"&cPoprawne użycie: /fitemshop reload"
config_reloaded
:
"&aKonfiguracja została przeładowana pomyślnie!"
general:
only_player
:
"&cTa komenda może być użyta tylko przez gracza."
----
If you encounter any issues with the plugin, please contact me on Discord: xfrisky02