Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
253 commits
Select commit Hold shift + click to select a range
1d02c82
Fix ShopManager compilation errors
fakexzh Oct 18, 2026
95e311f
Enforce loan grace period and safe partial repayment
fakexzh Oct 18, 2026
54f1832
Expand all block and seed shop categories and rebalance resale
fakexzh Oct 18, 2026
4d8ee4a
Replace blanket resale formula with item-group anti-farming values
fakexzh Oct 18, 2026
9e0d1f5
Rebuild quests into random singles, achievement packs, and global quests
fakexzh Oct 18, 2026
bdbe0ad
Set diamond example price and document anti-farming resale rules
fakexzh Oct 18, 2026
d97df7f
Generate a unique randomized single quest variant per purchase
fakexzh Oct 18, 2026
97b2589
Run two-hour quest shop refresh independently of menu visits
fakexzh Oct 18, 2026
4b8131c
Clarify partial loan repayment in bank GUI
fakexzh Oct 18, 2026
4a69cc9
Charge TPA and back fees only after successful teleport
fakexzh Oct 18, 2026
2ceaa74
Configure TPA and death-return fees
fakexzh Oct 18, 2026
ecccd66
Add configurable server day and night cycle controls
fakexzh Oct 19, 2026
7cac6de
Route /xzh time controls to utility manager
fakexzh Oct 19, 2026
ea116b2
Correct independent timing accumulator for each world
fakexzh Oct 19, 2026
7b2a1d1
Configure 30-minute day and night cycle
fakexzh Oct 19, 2026
5328001
Add bank opening, closing, and five-minute warning announcements
fakexzh Oct 19, 2026
81630aa
Enable bank schedule announcements by default
fakexzh Oct 19, 2026
5220fee
Add clickable /helpxzh server guide command
fakexzh Oct 19, 2026
88d9a10
Register /helpxzh command
fakexzh Oct 19, 2026
f4fbefd
Declare /helpxzh command in plugin metadata
fakexzh Oct 19, 2026
cb51f65
Migrate away from retired quest objectives on startup
fakexzh Oct 19, 2026
ee0625d
Keep eggs and common seeds at farm-resistant stack resale values
fakexzh Oct 19, 2026
c458170
Keep loan HUD debt accurate after offline auto-collection
fakexzh Oct 19, 2026
ff797a9
Cap all block resale at one coin per stack and protect valuable resou…
fakexzh Oct 19, 2026
30dadea
Reduce unlisted-item resale to about one coin per stack
fakexzh Oct 19, 2026
472901e
Exclude non-item and air blocks from dynamic shop catalog
fakexzh Oct 19, 2026
8b139cc
Keep creative-only and command blocks out of the survival shop
fakexzh Oct 19, 2026
077d092
Show loan grace period accurately in bank GUI
fakexzh Oct 19, 2026
80456ef
Migrate existing server configs to revised economy defaults
fakexzh Oct 19, 2026
3c0ca1f
Refine building blocks, XP bottles and XP selling, food resale, nethe…
fakexzh Oct 19, 2026
987ea3a
Expand quests to five random offers and 30 achievement packs with fis…
fakexzh Oct 19, 2026
59ddb94
Fix shop GUI lore helper and register XP and Sell Hand confirmation s…
fakexzh Oct 19, 2026
b9c7121
Fix random quest icon material
fakexzh Oct 19, 2026
6f4d433
Enforce optional timers on selected random quests as well as achievem…
fakexzh Oct 19, 2026
f742733
Keep Sell Hand preview and payout identical and use configured XP value
fakexzh Oct 19, 2026
11ba3d5
Show exact timer limits in single quest offers and achievement pack d…
fakexzh Oct 19, 2026
37c87fa
Count animal-feeding quests only for valid food and adult animals
fakexzh Oct 19, 2026
56a766f
Add secret rotating quest and readable pack unlock requirements
fakexzh Oct 19, 2026
4c6ab33
Redesign XZH denomination coin textures
fakexzh Oct 19, 2026
f74b0de
Fix secret quest menu initialization and click handler
fakexzh Oct 19, 2026
4f10a0b
Improve coin denomination text contrast
fakexzh Oct 19, 2026
34b3b4a
Publish the XZH coin resource pack as a separate artifact
fakexzh Oct 19, 2026
8c31b6a
Keep secret quest offers until their scheduled 30-minute refresh
fakexzh Oct 19, 2026
1464d53
Fix XP shop actions and organize shop categories and resale prices
fakexzh Oct 19, 2026
c50d98f
Allow requested rare-item resale and include more lighting in Essentials
fakexzh Oct 19, 2026
f0cf0c7
Upgrade XZH coin textures to bold premium pixel-art designs
fakexzh Oct 19, 2026
1b5ec39
Fix coin custom model data component for Minecraft 26.3
fakexzh Oct 19, 2026
ec44546
Add premium boats shop category
fakexzh Oct 19, 2026
890c5de
Register premium boat manager
fakexzh Oct 19, 2026
6249b8e
Implement premium XZH boat shop and speed tiers
fakexzh Oct 19, 2026
dce6953
Document premium boat configuration
fakexzh Oct 19, 2026
b6649c0
Document XZH premium boat pack direction
fakexzh Oct 19, 2026
94895ed
Run plugin build for feature branches and pull requests
fakexzh Oct 19, 2026
addde3a
Fix premium boats category branch syntax
fakexzh Oct 19, 2026
8f3c274
Rename boats category to Travel and fix menu syntax
fakexzh Oct 19, 2026
b55ed11
Add horse and donkey eggs to Travel shop
fakexzh Oct 19, 2026
45ea577
Configure horse and donkey travel restrictions
fakexzh Oct 19, 2026
412fda7
Add explicit horse and donkey egg purchase confirmation
fakexzh Oct 19, 2026
980df93
Fix premium boat speed tiers using Bukkit boat max speed
fakexzh Oct 19, 2026
f26e76b
Set premium boat speeds to vanilla, 2x, and 3x
fakexzh Oct 19, 2026
a507bec
Add 50 achievement quest packs and paginate quest menu
fakexzh Oct 19, 2026
370970a
Fix achievement pack list syntax
fakexzh Oct 19, 2026
a2a08ed
Allow all potion variants to sell for 20 percent of shop price
fakexzh Oct 19, 2026
aa55e62
Hide red score numbers on economy sidebar
fakexzh Oct 19, 2026
2903cde
Fix Paper scoreboard number format import
fakexzh Oct 19, 2026
ea34860
Add XZH premium boat model assets
fakexzh Oct 20, 2026
b0a1416
Add XZH premium boat model assets
fakexzh Oct 20, 2026
f538bde
Add XZH premium boat model assets
fakexzh Oct 20, 2026
390a2c7
Add XZH premium boat model assets
fakexzh Oct 20, 2026
5653823
Add XZH premium boat model assets
fakexzh Oct 20, 2026
1cb59dd
Connect premium boat shop items to resource-pack models
fakexzh Oct 20, 2026
74a47f6
Add premium model overrides for boat variants
fakexzh Oct 20, 2026
81185be
Add premium model overrides for boat variants
fakexzh Oct 20, 2026
e345cad
Add Minecraft 26.3 item definitions for premium boats
fakexzh Oct 20, 2026
1654838
Add Minecraft 26.3 item definitions for premium boats
fakexzh Oct 20, 2026
a9324eb
Add Minecraft 26.3 item definitions for premium boats
fakexzh Oct 20, 2026
296c1df
Fix premium boat movement speed handling
fakexzh Oct 20, 2026
b62f790
Align shop categories and refresh menu icons
fakexzh Oct 20, 2026
2f98063
Use blue concrete for boat purchase confirmation
fakexzh Oct 20, 2026
f5a607a
Update XZH resource pack metadata for boats and coins
fakexzh Oct 20, 2026
54d4153
Add custom model mapping for oak_chest_boat
fakexzh Oct 20, 2026
a2c58ee
Add custom model mapping for birch_chest_boat
fakexzh Oct 20, 2026
ba20bee
Add custom model mapping for dark_oak_chest_boat
fakexzh Oct 20, 2026
b81e6d9
Replace speed boats with priced vanilla wood variants
fakexzh Oct 20, 2026
651539f
Group shop categories and reserve bottom row for Sell Hand
fakexzh Oct 20, 2026
1e46c41
Rename economy sidebar title to eco
fakexzh Oct 20, 2026
4981240
Expose global quest progress for TAB footer
fakexzh Oct 20, 2026
e10a6af
Expose quest manager to integrated survival HUD
fakexzh Oct 20, 2026
90151e4
Highlight global quest percentage in TAB progress
fakexzh Oct 20, 2026
6f0628d
Balance crop and fish selling, reorder shop, add TNT and sellable mob…
fakexzh Oct 20, 2026
7a875af
Add TNT and power 1-3 fireworks to Essentials shop
fakexzh Oct 20, 2026
1a4cda4
Increase rare book stock and enforce two-book daily player limit
fakexzh Oct 20, 2026
6450956
Configure fishing values, TNT and rocket stock, and rare book stock
fakexzh Oct 20, 2026
5b36021
Include harvested wheat in crop selling
fakexzh Oct 20, 2026
0f4136a
Use per-enchantment daily book limits and 12-hour cooldown
fakexzh Oct 20, 2026
7a15b93
Lower TNT price and allow balanced TNT resale
fakexzh Oct 20, 2026
a999908
Configure 12-hour book cooldown and TNT resale prices
fakexzh Oct 20, 2026
2548d67
Add Treasure & Bounty map shop items
fakexzh Oct 20, 2026
daf62bc
Polish bounty map purchase quantities and ordering
fakexzh Oct 20, 2026
22e81e1
Show bounty map instructions after purchase
fakexzh Oct 20, 2026
297ce0e
Use filled maps for every bounty tier with distinct contract metadata
fakexzh Oct 20, 2026
51486a0
Add adjustable shop quantities and update bounty map prices
fakexzh Oct 20, 2026
7ae451b
Rotate shared global quests every four hours and reward contributors …
fakexzh Oct 20, 2026
23301da
Increase global quest contributor reward
fakexzh Oct 20, 2026
7b57eba
Remove manual global claims and enforce automatic contributor rewards
fakexzh Oct 20, 2026
26a6e9b
Count hostile mobs for the shared monster quest
fakexzh Oct 20, 2026
8737a81
Add back navigation and adjustable purchase quantities to travel shop
fakexzh Oct 20, 2026
2211723
Keep each bounty map tier's configured price independent
fakexzh Oct 20, 2026
4429340
Start the next global quest immediately after community completion
fakexzh Oct 20, 2026
d37c387
Charge 30 coins for safe random teleport and add clickable TPA responses
fakexzh Oct 20, 2026
69a1d53
Lower death recovery fee multiplier default to ten percent
fakexzh Oct 20, 2026
1dc3cdc
Add online player suggestions to TPA command
fakexzh Oct 20, 2026
12ecb99
Replace money request prompt with clickable chat options
fakexzh Oct 20, 2026
1eb3178
Handle clickable money request accept and decline responses
fakexzh Oct 20, 2026
45d638d
Register chat-based money response command handling
fakexzh Oct 20, 2026
eb4b162
Add chat response command for money requests
fakexzh Oct 20, 2026
9bfdc90
Show global quest objective in TAB footer
fakexzh Oct 20, 2026
6a511c9
Add separate Treasure Hunt map to shop
fakexzh Oct 20, 2026
48efa55
Rearrange shop categories and add purchase history
fakexzh Oct 20, 2026
1b1c0d1
Separate Armor and Tools shop categories
fakexzh Oct 20, 2026
c267867
Split bounty and treasure shop categories and disable mission global …
fakexzh Oct 20, 2026
2c65d7d
Finish bounty and treasure shop details and mission timing
fakexzh Oct 20, 2026
5f48be3
Render a custom treasure map with a visible red X
fakexzh Oct 20, 2026
4f6b96a
Open XZH Shop when right-clicking official coins
fakexzh Oct 20, 2026
ae5bc97
Remove treasure hunt and add six cooldown-gated bounty maps
fakexzh Oct 20, 2026
bb7aa68
Add Nautilus spawn egg to Travel shop for 2000 coins
fakexzh Oct 20, 2026
d6bafcb
Restore shop helpers and finalize bounty-only categories
fakexzh Oct 20, 2026
4f84c85
Make bounty maps non-sellable
fakexzh Oct 20, 2026
ec4af81
Share bounty tier cooldowns across dimensions
fakexzh Oct 20, 2026
25241cd
Align shared tier cooldown storage key
fakexzh Oct 20, 2026
fc7a3f9
Add shared 12-hour sell stock limits for farmable items
fakexzh Oct 21, 2026
63a4e91
Configure minimum 200 shared farmable sell stock and 12-hour restock
fakexzh Oct 21, 2026
2a82d4a
Make farmable sell stock personal per player
fakexzh Oct 21, 2026
b96f2b2
Clarify personal farmable sell quota settings
fakexzh Oct 21, 2026
bdfbc4d
Add multi-item hand sell inventory with safe returns
fakexzh Oct 21, 2026
e55f869
Disable book-related villager and wandering trader trades
fakexzh Oct 21, 2026
b468e6f
Keep personal sell-stock cooldown aligned to real time across downtime
fakexzh Oct 21, 2026
596da7b
Fix Merchant import for book-trade listener
fakexzh Oct 21, 2026
92ca038
Improve quest variety, rewards, and travel progress
fakexzh Oct 21, 2026
ff76ef6
Set 6-hour sell stock and enchanted book resale
fakexzh Oct 21, 2026
ffdc88a
Set personal sell stock restock to six hours
fakexzh Oct 21, 2026
33ccef2
Guarantee varied quest offers and improve quest payouts
fakexzh Oct 21, 2026
03e5cd8
Count deepslate variants for mining quest objectives
fakexzh Oct 21, 2026
d7c4206
Show timed quest countdown and warnings
fakexzh Oct 21, 2026
cc7359b
Expand global quest variety and randomize rewards by grind difficulty
fakexzh Oct 21, 2026
7cdeccf
Make achievement quest packs one-time and improve rewards
fakexzh Oct 21, 2026
f8ac914
Persist completed achievement packs outside active quest state
fakexzh Oct 21, 2026
9cef457
Remove named homes and custom time controls
fakexzh Oct 21, 2026
213c4fc
Enforce bed-only /home and block removed home commands
fakexzh Oct 21, 2026
aae63d0
Remove custom time entry point and named home commands
fakexzh Oct 21, 2026
65d9e75
Remove sethome and delhome command registrations
fakexzh Oct 21, 2026
2bef446
Remove custom time configuration
fakexzh Oct 21, 2026
e8e947d
Calculate bank warnings using vanilla time speed
fakexzh Oct 21, 2026
f7e8574
Stop recreating removed custom time settings
fakexzh Oct 21, 2026
ee9d3ca
Document bed-only /home command
fakexzh Oct 21, 2026
00271ec
Remove 500-coin bank withdrawal option
fakexzh Oct 21, 2026
89c50f4
Align shop utility row and add online player balances
fakexzh Oct 21, 2026
8bc35b9
Apply distinct colors to utility messages
fakexzh Oct 21, 2026
3bc8076
Add 4-second bed-home teleport countdown
fakexzh Oct 21, 2026
0ded88d
Restore shop-compatible quest pack tiers and preserve global quest sy…
fakexzh Oct 22, 2026
3bf6ad6
Count only mature crops for harvest quests
fakexzh Oct 22, 2026
52e2661
Raise enchanted-book shop prices and set Mending to 3000 coins
fakexzh Oct 22, 2026
6d1070a
Update configured enchantment book prices
fakexzh Oct 22, 2026
060f1e3
Add confirmation sounds to money requests
fakexzh Oct 22, 2026
58f46e6
Play a soft confirmation sound when pocket balance increases
fakexzh Oct 22, 2026
421e489
Add bank-credit confirmation sound without duplicating deposit sound
fakexzh Oct 22, 2026
d49cdd1
Move Withdraw All into the freed bank menu slot
fakexzh Oct 22, 2026
199380d
Preserve timed challenges in generated achievement packs
fakexzh Oct 22, 2026
45cdbf3
Align configured book prices with the latest economy values
fakexzh Oct 22, 2026
2800354
Count crafted outputs toward collection quests
fakexzh Oct 22, 2026
d9ada20
Finalize 300 tiered quest pack generation
fakexzh Oct 22, 2026
42ff949
Make all crop quests count harvested crops rather than collected items
fakexzh Oct 22, 2026
f586260
Rebalance prices and fix quest access, cancellation, and TPA sounds
fakexzh Oct 22, 2026
8c91840
Show locked quest packs with their achievement requirements
fakexzh Oct 22, 2026
5053f5d
Migrate approved prices into existing server configs once
fakexzh Oct 22, 2026
7d3f3c1
Update bank loan amount options to 500, 1000, 5000, 10000
fakexzh Oct 22, 2026
3b715ba
Keep death recovery from overriding survival death handling
fakexzh Oct 22, 2026
e275354
Remove duplicate private death reminder
fakexzh Oct 22, 2026
0cfb86f
Prevent player-dropped items farming collection quests
fakexzh Oct 22, 2026
10222c4
Fix quest collection tracking for smelted furnace output
fakexzh Oct 22, 2026
efefec8
Fix FurnaceExtractEvent compilation error
fakexzh Oct 22, 2026
1cc08cf
Add vanilla villager market with shared profession stock and 2-hour r…
fakexzh Oct 23, 2026
19ede5a
Register vanilla global villager trade manager
fakexzh Oct 23, 2026
56be5d5
Expose tagged coin creation for vanilla villager trades
fakexzh Oct 23, 2026
ada88c3
Keep exhausted global offers visible and add rare skull trade
fakexzh Oct 23, 2026
52b14ee
Fix profession registry map compatibility for Paper 26.3
fakexzh Oct 23, 2026
067666e
Round villager coin payouts cleanly and prevent underpriced coin inputs
fakexzh Oct 23, 2026
2f1e39d
Keep villager market focused on survival resources and remove sword o…
fakexzh Oct 23, 2026
f431d42
Keep trade offers focused on ordinary survival resources
fakexzh Oct 23, 2026
2b813f2
Enforce per-player villager market limits and 4-hour rotations
fakexzh Oct 23, 2026
700029c
Migrate old villager market data to 4-hour personal limits
fakexzh Oct 23, 2026
c3ef5b3
Clarify villager market persistence log message
fakexzh Oct 23, 2026
b9d10b4
Expand profession villager market with balanced barter and potion offers
fakexzh Oct 23, 2026
6fa96a0
Add cleric potion buy/sell market and block professionless trades
fakexzh Oct 23, 2026
59358da
Match potion metadata when enforcing villager trade limits
fakexzh Oct 23, 2026
a5e02a3
Merge pull request #5 from fakexzh/feature/cleric-potion-market-fixes
fakexzh Oct 23, 2026
fe68974
Lock villager market offers and add per-player two-hour red-X cooldowns
fakexzh Oct 23, 2026
3c46460
Isolate villager market offers per player so red-X cooldowns cannot a…
fakexzh Oct 23, 2026
849592e
Add distance-priced TPA preview and clickable send/decline buttons
fakexzh Oct 23, 2026
db6f6af
Register internal TPA preview confirmation commands and migrate dista…
fakexzh Oct 23, 2026
c306b88
Register clickable TPA preview actions
fakexzh Oct 23, 2026
ed4cdb3
Add configurable distance-based TPA price tiers
fakexzh Oct 23, 2026
4e106f5
Clean up personal merchant sessions and document fixed cooldown behavior
fakexzh Oct 23, 2026
86f621b
Complete fixed villager offers and Cleric potion barter trades
fakexzh Oct 23, 2026
8ac0bcc
Trigger validation for the fixed market and TPA changes
fakexzh Oct 23, 2026
b0776bb
Fix missing Player import in villager market
fakexzh Oct 23, 2026
0020f29
Add shop quantity controls, item icons, and navigation
fakexzh Oct 24, 2026
79a315b
Lock TPA distance and cost at command submission
fakexzh Oct 24, 2026
2deeb1c
Prevent official XZH coins from entering storage inventories
fakexzh Oct 24, 2026
420cda6
Register official coin storage protection
fakexzh Oct 24, 2026
f513491
Move clock from action bar to TAB footer
fakexzh Oct 24, 2026
4894103
Move game clock to bottom of economy scoreboard
fakexzh Oct 24, 2026
7bd908f
Freeze villagers only while XZH trade menu is open
fakexzh Oct 25, 2026
1d5bff3
Document villager behavior safeguards
fakexzh Oct 25, 2026
e611e34
Add searchable item results to XZH shop GUI
fakexzh Oct 26, 2026
69686f2
Harden shop search input handling
fakexzh Oct 26, 2026
d7b1281
Clear pending shop searches when players leave
fakexzh Oct 26, 2026
6bd8e93
Rebalance shop prices and close resale exploits
fakexzh Oct 26, 2026
2e275a2
Migrate existing servers to rebalanced shop prices
fakexzh Oct 26, 2026
2a9dd92
Update default shop prices and potion sell quotas
fakexzh Oct 26, 2026
7898da2
Apply rebalanced fixed villager market
fakexzh Oct 26, 2026
243fe44
Tune default block pricing by contents and effort
fakexzh Oct 26, 2026
7d1f628
Rearrange shop menu and update icons
fakexzh Oct 26, 2026
44e22bb
Remove horse eggs from travel menu and standardize buy icon
fakexzh Oct 26, 2026
06fb10e
Use slimeball for enchantment-book buy button
fakexzh Oct 26, 2026
79a12a9
Use slimeball for quest-pack buy button
fakexzh Oct 26, 2026
187d0ff
Keep purchase-history menu named Transition
fakexzh Oct 26, 2026
30a7876
Refine six-row shop layout and navigation icons
fakexzh Oct 26, 2026
fad23fd
Use ghast tear and copper nugget quantity controls
fakexzh Oct 26, 2026
4ed395d
Standardize book page navigation and confirmation icons
fakexzh Oct 26, 2026
3c9e145
Standardize quest page navigation and confirmation icons
fakexzh Oct 26, 2026
c3ac687
Add arrow back buttons to shop confirmation pages
fakexzh Oct 26, 2026
1d84c20
Return quest-pack cancel to the correct pack tier
fakexzh Oct 26, 2026
48e94b6
Fix villager offer cooldown on latest shop menu build
fakexzh Oct 26, 2026
fb4d818
Map villager cooldowns to exact merchant recipe offers
fakexzh Oct 26, 2026
ebf6b50
Correct villager recipe uses and cooldown exhaustion
fakexzh Oct 26, 2026
04745eb
Refresh villager recipes after trade event completes
fakexzh Oct 26, 2026
8c5edcb
Repair villager cooldown migration and offer matching
fakexzh Oct 26, 2026
068a643
Fix reversed MerchantRecipe uses and maxUses arguments
fakexzh Oct 26, 2026
6734e3f
Ensure villager trades resolve player sessions and apply per-offer co…
fakexzh Oct 26, 2026
59a01d4
Add result-click fallback for villager offer cooldowns
fakexzh Oct 26, 2026
53f9f6d
Enforce one trade per villager offer at recipe level
fakexzh Oct 26, 2026
a87b810
Tell players villager offers refresh every two hours
fakexzh Oct 26, 2026
6b1781a
Redesign quests, rewards, announcements, and exploit guards
fakexzh Oct 28, 2026
df26c14
Update quest cancellation help text
fakexzh Oct 28, 2026
2549b0c
Harden quest offer consistency and tier progression
fakexzh Oct 28, 2026
445048f
Batch quest marker saves and flush quest data on shutdown
fakexzh Oct 28, 2026
7d2647c
Fix tier template selection compilation
fakexzh Oct 28, 2026
1936ecd
Add item delivery contracts and turn-in handling
fakexzh Oct 28, 2026
1138dea
Count quest item pickups only after successful collection
fakexzh Oct 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ name: Build plugin
on:
workflow_dispatch:
push:
branches: [ main, master ]
branches: [ main, master, integrated-release, 'feature/**' ]
pull_request:
branches: [ main, master, integrated-release ]
permissions:
contents: read
actions: read
Expand All @@ -18,8 +20,25 @@ jobs:
- uses: gradle/actions/setup-gradle@v4
- name: Build with Gradle
run: gradle clean build
- name: Package source archive
run: git archive --format=zip --output=build/XZHEconomySystem-source.zip HEAD
- name: Upload plugin JAR
uses: actions/upload-artifact@v4
with:
name: XZHEconomySystem-1.0.0
path: build/libs/XZHEconomySystem-1.0.0.jar
- name: Package coin resource pack
run: |
mkdir -p build
cd resource-pack
zip -r ../build/XZH-Coin-Resource-Pack.zip .
- name: Upload coin resource pack
uses: actions/upload-artifact@v4
with:
name: XZH-Coin-Resource-Pack
path: build/XZH-Coin-Resource-Pack.zip
- name: Upload source archive
uses: actions/upload-artifact@v4
with:
name: XZHEconomySystem-source
path: build/XZHEconomySystem-source.zip
24 changes: 24 additions & 0 deletions BUILD_STATUS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# XZHEconomySystem — Fix Draft Status

**Status: source draft only. Not a release JAR.**

The source draft contains the current reported fixes and additions. It has not been compiled against the Purpur/Paper 26.3 API in this environment because only Java 21 is installed, the project requires Java 25, Gradle is not installed, and downloading build tools is unavailable here.

## Included in this draft
- Admin utility commands restricted by `xzh.admin`: `/gmc`, `/gms`, `/gma`, `/gmsp`, `/gamemode`, `/day`, `/night`, `/heal`, `/feed`, `/fly`, `/weather`.
- In-game world clock in the action bar, configurable under `hud.clock`.
- Bed-based `/home`: place a bed to set it, and breaking either half clears that bed home; named homes remain available by name.
- Full potion-type listings for regular, splash, and lingering potions, with separate variant pricing and variant-aware selling.
- XP bottle shop entry retained.
- Revised quest pack objectives and restricted global stock for several rare items.
- Netherite Upgrade template is buyable; all smithing templates and selected exploit-prone rare items are blocked from selling.
- `/pay` spends pocket coins first and bank funds second; existing bank and loan code was left intact.
- Custom XZH coin resource-pack assets and CustomModelData assignment.
- Very cheap default sell value for unfeatured items; values under 1 coin total cannot be sold.

## Before release
1. Build using JDK 25 and Gradle (`gradle clean build`).
2. Fix any compile errors against the exact Purpur 26.3 API.
3. Install the JAR on a disposable Purpur 26.3 server and complete `docs/TEST_CHECKLIST.md`.
4. Validate `resource-pack/` on a matching client version; `pack_format` is marked as a candidate until checked in-game.
5. Only then publish a release JAR.
83 changes: 64 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,67 @@
# XZHEconomySystem 1.0.0
# XZHEconomySystem 1.0.0 — integrated development branch

A first deployable baseline for Paper/Purpur 26.3. This is **not yet the complete planned EssentialsX/economy/shop/quest replacement**; it is a small real-API build intended to verify loading and basic economy behavior first.
A Java plugin project targeting Purpur 26.3 (Java 25). This branch combines the economy, shop, loans, quests, death recovery, HUD, admin tools, and selected Essentials-style utilities. It is still under development and must be tested on a separate Purpur server before production use.

## Current features

- Physical, server-tagged XZH pocket coins in 1/10/100/1000 denominations that naturally drop on death, separate persistent bank balances, `/balance`, `/pay`, admin `/eco`, and an optional Vault bridge.
- Recipient-confirmed `/sendmoney <player> <amount>` and `/askmoney <player> <amount>` requests with accept/decline GUI and 60-second expiry.
- Configurable global announcements for expensive/rare shop purchases, progression unlocks, new loans, and full loan repayments.
- Shop GUI with confirmation dialogs, quantities, curated products, global stock, daily restock, and cheap sell-hand support for unfeatured items.
- Enchantment-book GUI with confirmation, 24-hour per-player cooldown per enchantment, and daily global limits for selected useful/rare books.
- Elytra purchase lock until the player has visited the End.
- `/bank` opens the separate `XZH BANK` GUI with persistent bank balances, 09:00–20:00 Minecraft-time deposit/withdrawal hours, and the Loans menu. Shop purchases and loan repayments spend pocket funds first, then bank funds; bank-funded purchases and repayments remain available after closing time.
- Loan GUI inside the bank, configured terms/rates, 12-hour grace period, automatic repayment from combined pocket/bank funds when sufficient, and shop purchase restriction once overdue.
- Quest packs with shared daily stock, active quest boss bar/progress, 30-minute actionbar reminders, and a daily global community ore event.
- Paid death inventory recovery: 30-minute window, two recoveries per day, configured recovery fee, and death money penalty.
- HUD sidebar for pocket/bank balance, amount owed, and due/overdue time; an in-game clock appears in the action bar. The clock can be disabled or reformatted in `hud.clock`.
- Admin GUI `/xzhadmin` for balance updates, shop stock management, transaction history, and diagnostics.
- Essentials-style commands: spawn, bed home, named homes, warps, TPA, back, private messages, ignore, AFK, near, list, top, RTP, configurable starter kit, and help. Admin utilities include `/gmc`, `/gms`, `/gma`, `/gmsp`, `/gamemode`, `/day`, `/night`, `/heal`, `/feed`, `/fly`, and `/weather` (permission `xzh.admin`).
- Librarian enchanted-book trade blocking.
- YAML persistence for balances, loans, quests, shop stock, book cooldowns/stock, death recovery, and locations; balance changes are appended to a transaction log.

## Commands
- `/xzh` — help
- `/balance` or `/bal` — own balance
- `/balance <online-player>` — another online player's balance
- `/pay <online-player> <amount>` — transfer coins
- `/eco set <online-player> <amount>` and `/eco add <online-player> <amount>` — admin economy commands (`xzh.admin`, default OP)

Balances persist in `plugins/XZHEconomySystem/balances.yml`. The default starting balance is 100 coins and can be changed in `config.yml`.

## Build
Requires JDK 25 and an internet connection. Run `gradle build` or use the included GitHub Actions workflow. The Paper API is a compile-only dependency; it is supplied by the server at runtime.

## Falix install
1. Make sure the server software is Paper or Purpur 26.3 and its Java runtime is Java 25.
2. Upload `XZHEconomySystem-1.0.0.jar` to `plugins/`.
3. Fully stop and start the server.
4. Check `/plugins`, then run `/xzh` and `/balance`.
5. If it fails, send the startup error from the console.

Player:
- `/xzh`
- `/balance`, `/bal`, `/money`
- `/pay <player> <amount>`
- `/sendmoney <player> <amount>`, `/askmoney <player> <amount>` (recipient confirmation required)
- `/shop`, `/bank`, `/books`
- `/loan` (opens the bank), `/loan repay`
- `/quests`
- `/deathinventory`
- `/spawn`, `/sethome [name]`, `/home [name]`, `/delhome [name]`
- `/warp <name>`, `/tpa <player>`, `/tpaccept`, `/tpdeny`, `/back`
- `/msg <player> <message>`, `/reply <message>`, `/ignore <player>`
- `/afk`, `/near`, `/list`, `/top`, `/rtp`, `/kit starter`, `/help

Admin (permission `xzh.admin`, default OP):
- `/eco <set|add> <online-player> <amount>`
- `/xzhadmin`
- `/shopadmin restock`
- `/shopadmin stock <MATERIAL> <amount>`
- `/setspawn`, `/setwarp <name>`, `/delwarp <name>`

## Pocket coin texture

The companion `XZHEconomySystem-coin-resource-pack.zip` adds custom denomination art for physical XZH coins. Install it client-side; the plugin sets CustomModelData on official coin items. The included pack is a candidate for Minecraft 26.3 and still needs a live-client version check.

## Build and install

Requires JDK 25. Run `gradle clean build` or use the GitHub Actions workflow. Successful workflow runs publish a JAR artifact and a source ZIP.

See [configuration documentation](docs/CONFIGURATION.md), the [manual test checklist](docs/TEST_CHECKLIST.md), and the [Falix install guide](docs/FALIX_INSTALL.md).

## Release validation still required

The previously integrated base version has a GitHub Actions build workflow, but this local fix draft has not yet been compiled against the Purpur 26.3 API. See `BUILD_STATUS.md` for the exact limitation. A green build confirms compilation and packaging only; it does **not** prove runtime behavior on Purpur 26.3.

Before production use, run [the manual test checklist](docs/TEST_CHECKLIST.md) on a disposable Purpur 26.3 server, especially:
- GUI buy/sell confirmation, inventory-full handling, global stock and daily resets.
- Loan due time, 12-hour grace countdown, overdue purchase restrictions, and auto-repayment with both sufficient and insufficient funds.
- Death inventory and XP recovery through deaths, full inventories, expiry, and server restarts.
- Vault compatibility with the economy plugins you intend to run.
- Librarian trade restrictions, End-visit Elytra unlock, quest progress/event claims, and all utility commands.

No live Purpur server is attached to this workflow, so these runtime checks must be performed on your test server before calling this a production release.
4 changes: 4 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,14 @@ version = "1.0.0"

repositories {
maven("https://repo.papermc.io/repository/maven-public/")
maven("https://jitpack.io")
}

dependencies {
compileOnly("io.papermc.paper:paper-api:26.3.build.195-stable")
compileOnly("com.github.MilkBowl:VaultAPI:1.7") {
exclude(group = "org.bukkit", module = "bukkit")
}
}

java {
Expand Down
209 changes: 209 additions & 0 deletions docs/CONFIGURATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,209 @@
# XZHEconomySystem configuration

This document describes the settings currently implemented by the development branch for Purpur 26.3.

## Economy

The plugin registers as a Vault economy provider when Vault is installed. If another economy plugin is installed too, make sure XZHEconomySystem is intended to be the primary provider.

```yaml
currency-name: coins
currency-name-singular: coin
starting-balance: 100.0
minimum-pay: 1.0
maximum-pay: 1000000.0
```

- `currency-name`: label used in balance messages.
- `starting-balance`: initial balance for a UUID that has never had a saved balance.
- `minimum-pay` / `maximum-pay`: accepted range for `/pay`.

## Global announcements

```yaml
announcements:
shop:
enabled: true
minimum-purchase-total: 1000
rare-items:
- ELYTRA
- NETHERITE_INGOT
- ENCHANTED_GOLDEN_APPLE
- TOTEM_OF_UNDYING
- TRIDENT
- MACE
- WITHER_SKELETON_SKULL
- SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE
progression-items:
- ELYTRA
loan:
borrowing: true
full-repayment: true
```

Shop announcements are limited to purchases at or above the configured total, listed rare items, or progression items. Loan announcements are sent when a loan is granted and when the full balance is repaid, including automatic repayment.

## Bank

The separate `/bank` GUI is titled `XZH BANK`. Bank balances are stored in `bank-balances.yml`; pocket money is represented by tagged physical XZH coin items, with `balances.yml` holding migration/offline snapshots and `wallets.yml` tracking wallet initialization. Deposits and withdrawals are available only between the configured Minecraft-time hours; the bank menu and loan details remain accessible outside those hours. Shop purchases and loan repayments can spend pocket funds first and then bank funds at any time.

```yaml
bank:
clock-world: world
open-hour: 9
close-hour: 20
```

- `clock-world`: world whose Minecraft day/night clock determines bank opening hours; if missing, the first loaded world is used.
- `open-hour` / `close-hour`: 24-hour Minecraft time. The default is 09:00–20:00.
- Pocket coins use server-tagged denominations of 1, 10, 100, and 1000 coins. They cannot be crafted or placed as blocks and naturally drop with inventory on death in worlds where items drop.
- The default pocket carrying limit is 1,000,000 coins; overflow is secured in the bank. Withdrawals are limited by available pocket capacity.
- Bank balance is saved separately. Deposit/withdraw buttons are disabled by server-side checks while the bank is closed; direct inventory clicks cannot bypass the hours.
- The Loans menu is accessed from the bank. `/loan` opens the bank for compatibility, and `/loan repay` remains available as a direct repayment command.

## Pocket wallet

```yaml
wallet:
max-pocket-coins: 1000000
```

`max-pocket-coins` limits the physical currency carried in inventory. Any excess credited to the pocket is automatically secured in the bank. The server migrates an existing saved balance into physical coins when a player first joins after this feature is installed.

## HUD

```yaml
hud:
scoreboard:
enabled: true
position: sidebar
quest-bossbar:
enabled: true
```

The sidebar shows pocket balance, bank balance, active loan amount owed, and time remaining/overdue state. The active quest boss bar is driven by quest progress.

## Shop global stock

```yaml
shop:
stock-limits:
coal: 2000
iron_ingot: 1000
gold_ingot: 500
diamond: 250
obsidian: 250
bread: 1000
cooked_beef: 1000
iron_pickaxe: 100
diamond_pickaxe: 30
elytra: 3
```

Stock is shared across all players and saved in `shop-stock.yml`. Each configured value is the daily restock cap. Buy/sell prices can be overridden under `shop.prices.<material>.buy` and `shop.prices.<material>.sell`; unfeatured held items use `shop.default-sell-price`. The administrator command `/shopadmin stock <MATERIAL> <amount>` changes current stock; `/shopadmin restock` refills configured shop products immediately.

## Death recovery

```yaml
death-recovery:
overworld-only: true
fee-multiplier: 1.5
xp-value-per-point: 0.25
material-values:
elytra: 2500
netherite_ingot: 600
netherite_scrap: 150
diamond: 125
diamond_block: 720
ancient_debris: 120
```

- Recovery window: 30 minutes after death.
- Daily limit: 2 successful recoveries per player.
- Fee: estimated lost value multiplied by `fee-multiplier`.
- On death, the money penalty is 10% of estimated lost value, bounded to 10–1000 coins and capped by the player's available balance.
- Per-material entries override the built-in estimate. Use lowercase material names.

## Quests and global event

```yaml
quests:
pack-stock:
beginner: 50
miner: 30
hunter: 25
explorer: 15
nether: 10
end: 5
global-event:
goal: 500
reward: 100
claims-per-day: 25
```

Quest pack stock resets to these configured values each server-local day. The global event uses a shared ore goal, pays the configured reward, and allows the configured number of successful claims per day. `/xzhadmin` can also change the current pack stock until the next daily reset.

## Gameplay restrictions

```yaml
restrictions:
disable-librarian-enchanted-book-trades: true
elytra-requires-end-visit: true
buy-only-spawn-eggs: true
```

- `disable-librarian-enchanted-book-trades`: when enabled, librarian enchanted-book offers are blocked and existing offers are removed when interacted with. Turning it off allows future offers, but recipes removed while the restriction was enabled may not be restored automatically.
- `elytra-requires-end-visit`: when enabled, players must unlock the vanilla End-visit advancement before buying an Elytra.
- `buy-only-spawn-eggs`: when enabled, spawn eggs cannot be sold back to the shop. When disabled, eggs default to a 30% sellback unless a material-specific sell price overrides it.

## Enchantment books

The book shop is available through `/books` and the main `/shop` menu. Each player has a configurable cooldown per enchantment, while selected useful/rare books have a shared global daily stock cap.

```yaml
book-shop:
cooldown-hours: 24
rare-daily-stock: 3
normal-daily-stock: 100
prices:
mending: 1200
wind_burst: 1500
swift_sneak: 700
soul_speed: 700
frost_walker: 700
```

Price entries are optional overrides; omitted entries use built-in defaults. Selected rare books (including Mending) reset to the rare daily stock limit each day. Administrators can clear an individual player's book cooldowns from `/xzhadmin`.

## Player utilities

```yaml
utilities:
max-homes: 3
rtp-radius: 3000
rtp-cooldown-seconds: 600
```

The random teleport search is centered on the configured spawn when available and uses a safe-location check. The cooldown is currently in-memory and resets on a server restart.

## Starter kit

```yaml
kits:
starter:
cooldown-hours: 24
items:
- STONE_PICKAXE:1
- BREAD:8
- TORCH:16
```

Item entries use `MATERIAL:AMOUNT`. The kit cooldown is persisted per player in `locations.yml`. The `xzh.kit.starter` permission defaults to true.

## Data files

The plugin maintains separate YAML files for pocket-balance snapshots and wallet migration status (`balances.yml`, `wallets.yml`), bank savings (`bank-balances.yml`), loans, quests, shop stock, book cooldowns, and death recovery. Back up the server and these files before testing a development build.

## Important scope note

These docs describe settings that exist in the current branch. They do not mean every item from the full release specification is complete. The branch still requires additional feature work and in-server testing before it should be treated as a finished production release.
Loading