SMP Economy+

SMP Economy+ / Configuration

Configuration

Every file lives in config/smpeconomy/ and, except quiz_items.json, is written on first start. Modules that are off do not create their files, except prices.json and shop.json, which the core always loads.

/smpeco reload applies edits without a restart, with three exceptions. modules.json and quiz_items.json need a restart, and commands.json needs a restart or vanilla /reload.

If a file is invalid after an edit, the previous version stays active and the admin status shows the problem. At startup the mod falls back to the copy in config/smpeconomy/lastgood/. If there is no usable copy, the server refuses to start instead of running on default prices and limits. Repair the file, or delete it to get the defaults back.

Money values are whole cents, so 100000 means $1,000.00 with the default currency. Job rewards in jobs.json may also use fractions of a cent. Colour codes use §.

The tables below list the settings with their defaults. defaultsVersion and configVersion keys are internal; leave them alone.

Works with #

Other mods change a few settings here. The tested mods and known conflicts are in the README.

SettingFileFor
disabled, renamedcommands.jsonA command name another mod also uses
tablistWithStyledPlayerListhud.jsonSend our tab list even though Styled Player List is installed
botsEarnjobs.jsonLet Carpet's /player bots earn job pay

Placeholder API placeholders: %smpeconomy:balance%, %smpeconomy:balance_short%, %smpeconomy:bank%, %smpeconomy:job%, %smpeconomy:job_level%, %smpeconomy:currency%.

commands.json #

{
  "disabled": ["pay", "paytoggle"],
  "renamed": { "shop": "market", "ah": "auctions" }
}

disabled leaves root commands out. renamed gives them a new name, which is also how you get a name back from another mod that owns it. An alias such as bal or money is its own root. GUI buttons keep working. smpeco can be renamed but not disabled. Applied on restart or /reload.

modules.json #

true or false per module id. See the module tables in the README. Module ids missing from the file get their default. economy is locked on. market requires auction.

Content files #

FileContents
prices.jsonWhat /sell pays per item, in cents
shop.jsonShop categories and buy prices
quiz_items.jsonItems that trivia questions and the word scramble draw from. Not written on first start: the bundled list applies until you create this file.
chatgames.jsonWords, phrases and riddles for chat games
megachallenge.jsonRiddles and terms for the MEGA challenge

core.json #

Start money, treasury, time zone, branding, currency and global multipliers. startBalance and the branding, currency and multipliers keys can also be changed in game with /smpeco admin or /smpeco config set. treasuryStartCapital is paid in once on first startup. timezone takes a zone id such as Europe/Berlin, or system for the host's zone, and sets when the daily reset happens. Multipliers must be between 0.1 and 10.

KeyDefault
startBalance0
treasuryStartCapital2500000
treasuryHourlySpendPercent5.0
timezone"system"
branding.chatPrefix"§6SMP §8» "
branding.sidebarTitle"§6§lSMP Economy"
currency.symbol"$"
currency.symbolAfterfalse
currency.nameSingular"dollar"
currency.namePlural"dollars"
multipliers.sell1.0
multipliers.jobPay1.0

starter.json #

Starter kit for new players. kit is normally filled by /smpeco starterkit capture. Slots: 0 to 35 inventory (0 to 8 hotbar), 36 feet, 37 legs, 38 chest, 39 head, 40 offhand, -1 anywhere. The start balance itself is startBalance in core.json.

KeyDefault
giveKittrue
onlyNewPlayerstrue
newPlayerMaxMinutes5
kitVersion1
welcome(written to the file on first start)
kit(written to the file on first start)

sell.json #

Settings for /sell. The prices are in prices.json.

KeyDefault
confirmSeconds10
confirmPriceTolerancePercent2.0
allowCreativefalse
summaryHoverLines12

shop_settings.json #

Shop behaviour and daily deals. The categories and buy prices are in shop.json.

KeyDefault
treasurySharePercent50.0
sellInShoptrue
allowCreativeSellfalse
dailyDealCount5
dailyDealMinPercent10
dailyDealMaxPercent25
dailyDealMinBasePrice100
dailyDealExcluded[]
announceDailyDealstrue
maxFavorites45
recipeGuardSellFactor1.68
recipeGuardModifierFactor1.0

auction.json #

Limits and tax for /ah.

KeyDefault
maxListings10
maxPrice100000000000
durationHours48
taxPercent3.0
maxClaims45
allowCreativefalse
maxNpcListings150
maxNpcDurationHours48
maxItemBytes65536
maxLoreLines64
sellConfirmSeconds10
sellWarnBelowMarketPercent50.0
blockedItems(written to the file on first start)

orders.json #

Player buy orders and the NPC order board (board*, bulk*). npcConversions is a list of from, in, to, out entries.

KeyDefault
maxOrdersPerPlayer10
maxAmountPerOrder100000
deliveryFeePercent3.0
expiryDays7
allowCreativefalse
npcEnabledtrue
boardEnabledtrue
boardSize420
boardDemandMin1.05
boardDemandMax1.35
boardSupplyDropPerStack0.02
boardDemandFloor0.95
boardRecoveryHalfLifeHours3.0
boardMaxPressure1.0
boardDailyBonusPerPlayer150000
boardMinAmount64
boardMaxAmount2304
boardOrderMinValue20000
boardOrderMaxValue400000
boardMinHours6
boardMaxHours36
boardRefillPerTick6
boardCooldownMinutes30
boardCommonItems(written to the file on first start)
boardExclude[]
npcConversions(written to the file on first start)
bulkBudgetPercent40.0
bulkMinAmount16
maxBulkOrders3

jobs.json #

Bundled file. It holds the job definitions (jobs: blocks, mobs and fish with money in cents and xp) plus these settings. Mob factors multiply job pay: 0.25 for spawner mobs, 0 for spawn-egg, bred and summoned mobs and respawned dragons.

KeyDefault
switchCooldownMinutes30
maxLevel50
levelBonusPercent2.0
xpBase50.0
xpExponent1.35
payoutIntervalSeconds5
spawnerMobFactor0.25
spawnEggMobFactor0.0
bredMobFactor0.0
summonedMobFactor0.0
respawnedDragonFactor0.0
botsEarnfalse

tasks.json #

Bundled file with the daily task pool (tasks) and these settings. The slot and difficulty ids are easy, medium and hard.

KeyDefault
bonusMoney20000
bonusKeyTier"common"
bonusKeys1
countInCreativefalse

missions.json #

Bundled file with the mission pool (missions), the tiers (tiers: easy, medium, hard, elite) and these settings.

Each player's board rotates every rotationHours. Mining missions count self-mined natural blocks, and hunting missions count individual kills of mobs that weren't bred, summoned, hatched from a spawn egg or respawned. Exploration targets pay once per player. Delivery missions give no crate keys.

KeyDefault
maxActive3
rotationHours6
cancelCooldownMinutes30
rotationSeed0
announceElitetrue
progressActionbartrue
spawnerKillFactor0.25

missions_elite.json #

Bundled file with the daily elite missions (missions) and these settings.

KeyDefault
enabledtrue
seed0
keyTier"epic"
keys1
announceStarttrue
announceCompletetrue

bank.json #

Interest is a percentage per day on balance held at least holdHours, paid by the treasury. maxInterestPerDay is the cap per player.

KeyDefault
interestEnabledtrue
interestPercent1.0
maxInterestPerDay200000
holdHours24
maxTreasuryPercent5.0
hourlyBudgetSharePercent50.0
payoutHours6

hud.json #

Sidebar and tab list. lines switches individual sidebar lines. address is an optional server address line.

KeyDefault
sidebartrue
tablisttrue
tablistWithStyledPlayerListfalse
updateIntervalTicks20
address""
marketShockLine(written to the file on first start)
auctionFeverLine(written to the file on first start)
tabHeader["", "{title}", "§7Welcome, §f{player}§7!", ""]
tabFooter(written to the file on first start)
jobNames(written to the file on first start)
lines(written to the file on first start)
missionNameMaxLength20

settings.json #

Both gameplay-changing player toggles are off server-wide until you enable them here.

KeyDefault
allowMobSpawnTogglefalse
allowPhantomTogglefalse

stats.json #

/stats, /playtime and /leaderboard.

KeyDefault
pageSize10
snapshotSeconds60
importVanillaOnStarttrue
countFormerKillstrue

holo.json #

Leaderboard holograms.

KeyDefault
updateSeconds60
entries10
lineWidth300
background"80000000"
billboard"center"
shadowtrue
seeThroughfalse
fullBrighttrue
viewRange1.0
includeBanktrue
maxHolos50
removeRadius5.0

The join hint that points players to /menu.

KeyDefault
joinHinttrue
joinHintDelaySeconds4
joinHintPlaytimeHours10
joinHintTimes5

npc.json #

npcs and texts are normally managed with /smpeco npc.

KeyDefault
enabledtrue
clickCooldownTicks10
lookRange6.0
plateBackground"60101018"
textBackground"80101018"
plateHeight2.05
npcSound"minecraft:entity.villager.trade"
npcs[]
texts[]

casino.json #

Bet limits and house edges for the casino module. dailyLossLimit applies per player.

KeyDefault
enabledtrue
minBet100
maxBet2500000
maxBetTreasuryPercent2.0
maxWinTreasuryPercent50.0
dailyLossLimit5000000
minesHouseEdgePercent4.0
hiloHouseEdgePercent4.0
minesMaxMultiplier25.0
hiloMaxMultiplier25.0
minesDefaultBombs3
announceMinProfit250000
announceMinMultiplier10.0
announceMinPayoutForMultiplier50000
offerTimeoutSeconds30
idleTimeoutMinutes5

casino_crash.json #

KeyDefault
enabledtrue
houseEdgePercent4.0
maxMultiplier100.0
doublingSeconds5.0

casino_dice.json #

KeyDefault
enabledtrue
edgePercent3.0

casino_horserace.json #

KeyDefault
enabledtrue
baseHouseEdgePercent4.5
raceIntervalSeconds120
bettingWindowSeconds30
raceAnnounceCooldownMinutes10
raceAnnouncementstrue

minigames.json #

Chat games, player coinflips, treasure hunts and the MEGA challenge. Word lists are in chatgames.json and megachallenge.json.

KeyDefault
chatGames.enabledtrue
chatGames.minIntervalMinutes10
chatGames.maxIntervalMinutes10
chatGames.timeoutSeconds60
chatGames.minPlayers1
chatGames.rewardUnscramble15000
chatGames.rewardMath10000
chatGames.rewardFastType10000
chatGames.rewardRiddle20000
chatGames.keyChance0.05
chatGames.rewardsFromTreasuryfalse
chatGames.riddleHintSeconds20
chatGames.weights(written to the file on first start)
coinflip.minBet10000
coinflip.maxBet1000000000
coinflip.feePercent2.0
coinflip.maxOpenPerPlayer3
coinflip.announceMinBet500000
coinflip.announceCooldownSeconds60
coinflip.offerDoubleOrNothingtrue
treasure.enabledtrue
treasure.minIntervalMinutes120
treasure.maxIntervalMinutes240
treasure.nightFromHour1
treasure.nightToHour8
treasure.minPlayers1
treasure.minRadius300
treasure.maxRadius1500
treasure.durationMinutes30
treasure.hint2AfterMinutes5
treasure.hint3AfterMinutes10
treasure.coordinateFuzz50
treasure.minMoney100000
treasure.maxMoney500000
treasure.rewardsFromTreasuryfalse
treasure.itemRolls2
treasure.commonKeyChance0.35
treasure.rareKeyChance0.08
treasure.searchAttempts40
treasure.loot(written to the file on first start)
megaChallenge.enabledtrue
megaChallenge.intervalMinutes30
megaChallenge.minMinutesAfterStart10
megaChallenge.minPlayers1
megaChallenge.announceSeconds60
megaChallenge.reward1000000
megaChallenge.epicKeyChance0.05
megaChallenge.rewardsFromTreasuryfalse
megaChallenge.answerSeconds240
megaChallenge.minAnswerDelaySeconds12
megaChallenge.maxAnswerDelaySeconds30
megaChallenge.guessCooldownSeconds0
megaChallenge.maxGuesses1
megaChallenge.maxTextGuesses1
megaChallenge.minPlaytimeMinutes60
megaChallenge.onePerIptrue
megaChallenge.hintSeconds45
megaChallenge.chatGamePauseMinutes5
megaChallenge.bonusChance0.1
megaChallenge.bonusReward2000000
megaChallenge.weights(written to the file on first start)
megaChallenge.mathWeights(written to the file on first start)
megaChallenge.triviaWeights(written to the file on first start)
megaChallenge.races(written to the file on first start)

events.json #

Server events, trader ranks and the lottery (lotto*).

Each lottery draw has lottoTicketsPerDraw numbered tickets, and a purchase gets random unsold numbers. At the draw, a jackpot number and one number per entry in lottoPrizes are drawn. A prize only counts if its number was sold, so 50 of 1000 tickets is a 5 % jackpot chance. An unwon jackpot grows by lottoJackpotBase up to lottoJackpotMax (0 means no limit) and goes back to the base once won. Extra prizes don't roll over. With no ticket sold the draw is cancelled and the jackpot stays, unless lottoRolloverWithoutTickets is on. Tickets stop selling when the treasury can't cover the draw plus lottoTreasuryReserve. lottoFeePercent is not used.

KeyDefault
randomEventstrue
minIntervalMinutes120
maxIntervalMinutes240
minDurationMinutes20
maxDurationMinutes30
minPlayersOnline1
quietFromHour0
quietToHour0
marketDayMultiplier1.5
goldRushMultiplier2.0
luckyHourMultiplier2.0
weights(written to the file on first start)
marketDayCategories(written to the file on first start)
goldRushJobs(written to the file on first start)
traderRanks(written to the file on first start)
lottoEnabledtrue
lottoTicketPrice10000
lottoMaxTicketsPerPlayer50
lottoDrawTime"20:00"
lottoFeePercent10.0
lottoReminderMinutes10
lottoTicketsPerDraw1000
lottoJackpotBase7200000
lottoPrizes(written to the file on first start)
lottoRolloverWithoutTicketsfalse
lottoJackpotMax0
lottoTreasuryReserve2500000
lottoForcedDrawsfalse

clans.json #

KeyDefault
creationFee500000
maxMembers20
inviteExpiryMinutes10
teleportDelaySeconds3
openJoinHomeMinutes30
defaultColor(written to the file on first start)
respectForeignTeamstrue
announcetrue

bounty.json #

KeyDefault
feePercent5.0
minAmount10000
maxTotalPerTarget0
announcetrue
announceMinAmount10000
announceCooldownSeconds30
targetNoticeCooldownSeconds30
blockSameTeamtrue
blockSameIptrue
minKillerPlaytimeMinutes120
historySize20

daily.json #

Login streak rewards. rewardsCents holds the seven daily rewards.

KeyDefault
rewardsCents[25000, 50000, 75000, 100000, 150000, 200000, 250000]
day7KeyTier"rare"
day7Keys1
streakBreakHours48
remindertrue
reminderDelaySeconds3

afk.json #

AFK zone. Set the corners with /afkzone pos1 and /afkzone pos2.

KeyDefault
intervalSeconds300
rewardCents10000
keyChancePercent5.0
keyTier"common"
maxRewardsPerDay24
maxAccountsPerIp0
payFromTreasuryfalse
heightPadding2

market.json #

Market values, price drift and NPC buyers and sellers in the auction house.

KeyDefault
marketFactor1.6
recipeMarkup1.3
valueOverrides(written to the file on first start)
enchantmentValues(written to the file on first start)
minDurabilityFactor0.05
driftMin0.6
driftMax1.6
driftHalfLifeHours12.0
driftStepPerStack0.04
driftMaxStepPerTrade0.06
npcBuyersEnabledtrue
buyerRandomMin0.85
buyerRandomMax1.15
buyerMinDelayMinutes5
buyerMaxDelayMinutes90
buyerRetryMinutes15
buyerMaxRetries4
buyerPaysEnchantmentsfalse
buyerPaysFixedValuesfalse
buyerSellerHourShare0.5
buyerSellerDayShare3.0
npcSellersEnabledtrue
sellerMinOffers50
sellerMaxOffers80
offerMinHours6
offerMaxHours24
offerPriceMin0.95
offerPriceMax1.4
bargainChance0.2
bargainPriceMin0.4
bargainPriceMax0.8
bargainMinDiscount0.1
bargainHiddenChance0.35
bargainNote(written to the file on first start)
bargainMinHours4
bargainMaxHours12
bargainMaxActive12
bargainSellMargin1.15
bargainDailyBudget500000
bargainHypeHeadroom3.0
refillIntervalSeconds120
refillFastSeconds5
targetRerollHours3
traderNames(written to the file on first start)
pool(written to the file on first start)

news.json #

Breaking news: random price events, flash sales, bulk orders and auction fever.

KeyDefault
enabledtrue
minIntervalMinutes15
maxIntervalMinutes25
maxActive3
quietFromHour1
quietToHour8
minPlayersOnline1
onlineGraceMinutes3
crashFactor0.5
crashMaxFactor0.8
hypeMinFactor1.25
hypeMaxFactor2.0
hypeChance0.5
hypePreferNonShop0.85
minShopHypeEffect0.25
minBaseSellCents10
minDurationMinutes10
maxDurationMinutes20
fadeOutMinutes3
itemCountWeights[70, 25, 5]
focusItems(written to the file on first start)
focusWeight3.0
crashMarketSoldtrue
crashItems(written to the file on first start)
hypeItems(written to the file on first start)
hypeShopItems(written to the file on first start)
families(written to the file on first start)
actionChance0.3
flashSaleWeight1.0
bulkOrderWeight1.0
auctionFeverWeight1.0
flashSaleMinPercent20
flashSaleMaxPercent40
flashSaleMinutes15
flashSaleCategories[]
flashSaleExcludedItems(written to the file on first start)
bulkOrderMinutes20
bulkOrderMinAmount64
bulkOrderMaxAmount2048
bulkOrderBudgetShare0.5
bulkOrderItems(written to the file on first start)
auctionFeverMinutes15
auctionFeverRequiresMarkettrue
tickerSeconds2
historySize100
titleOnStarttrue
soundOnStarttrue

crates.json #

Bundled file with the crate definitions (crates). Each crate has an id, name, icon and weighted rewards, which can be money, items or keys. The default crate ids are common, rare and epic.

This page is generated from docs/configuration.md in the repository.