promotional bannermobile promotional banner

LK: Shop and Market

A player-driven marketplace inspired by Albion Online featuring global buy/sell orders and villager-linked server shops.
Back to Files

LKShopMarket-1.21.1-1.4.0.jar

File nameLKShopMarket-1.21.1-1.4.0.jar
Uploaded
Nov 2, 2026
Downloads
9
Size
2.1 MB
Mod Loaders
NeoForge
File ID
9401260
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:lk-shop-market-1650513:9401260"

Learn more about Curse Maven

What's new

💵 LK Shop & Market 1.4.0 — Physical Cash & the Bank

Minecraft 1.21.1 · NeoForge 21.1.250

1.4.0 is the biggest update to the mod so far. Your money is no longer just a number: you can carry it as banknotes, keep them, hand them to friends and pay them into the bank. Here is everything that's new, how to use it, and what to know before you update.


⚠️ Before you update (please read this)

  • Update the server and every player's game. This version changes how client and server talk to each other, so mismatched versions can't connect.
  • Don't go back to 1.3.x while banknotes exist. 1.3.x doesn't know banknotes or wallets: when it loads a chest, an inventory or a mailbox holding them, it deletes them for good. Coming back to 1.4.0 afterwards won't bring them back. Balances are kept.
  • If you need to downgrade, do it in this order:
    1. Set cashSystemMode = "DEPOSIT_ONLY".
    2. Let players deposit their notes.
    3. Wait until /market admin cash info shows 0 in circulation.
    4. Back up the world.
    5. Only then install 1.3.x.
  • Cash ships switched off. No new notes come out until an admin turns it on (see below).

💵 Banknotes

  • Notes of 5, 10, 50, 100, 1,000 and 10,000 ("5 LK Cash" … "10,000 LK Cash"), each with its own color and look.
  • Every note has a serial number the server checks. Copied or spawned notes (creative mode, /give, duplication bugs from other mods) are worth nothing, and the bank keeps them if you try to deposit them.
  • Clear tooltips: a note shows its serial. One without a serial shows "Unregistered · no value". Heads-up: only the bank can tell a real note from a copy, when you deposit it.
  • Merging notes: drop a note onto another one of the same value and they join into one stack (up to 64). If one of them isn't backed, nothing merges and nothing changes.

👛 Wallet ("LK Wallet")

  • Holds up to 9 stacks of notes (notes only). You can own more than one.
  • Right-click it in your hand to open it: a leather wallet with a 3×3 grid.
  • You can also drag notes in and out, just like a bundle.
  • Its tooltip shows how much money is inside and how full it is.
  • Recipe: 5 leather + 1 string (two leather on top; leather, string, leather below).
  • While it's open, its slot can't be picked up, dropped with Q or swapped.

🏦 The bank

  • /bank opens the bank from anywhere, no villager needed. /market bank works too.
  • Clicking your balance (the coin badge on the market screen) also opens it.
  • Inside is the cashier:
    • Withdraw: take money out as notes, in multiples of 5, always using the biggest notes possible. You're only charged if they all fit in your inventory.
    • Deposit and Deposit all: reads the notes in your inventory and inside your wallets.
  • If another mod already owns /bank, LK Shop & Market leaves it alone: use /market bank.

🔒 Fair play

  • Cash can't be bought or sold in the market or in server shops, not even hidden inside shulker boxes or bundles.
  • You can give it to another player with /trade, like any other item.
  • In creative mode you can't use the cashier or merge notes (unless the server allows it).
  • Your cash and your balance are saved together when you log out, so they never drift apart.

🛠️ For server admins

Turning cash on

In lkshopmarket-server.toml (can be changed while the server is running):

Option What it does
cashSystemMode = "ENABLED" Everything works: withdraw, deposit, merge.
cashSystemMode = "DEPOSIT_ONLY" (default) No new notes, but existing ones can be deposited. Great for phasing cash out without trapping anyone's money.
cashSystemMode = "FROZEN" Notes do nothing.
defaultBankShop = "bank" (default) Which shop acts as the bank. The mod ships its own.

Taking notes out of a wallet always works, in every mode.

⚠️ If you already had a config file, it keeps its old values. If it says cashSystemMode = "FROZEN" and defaultBankShop = "", change them by hand.

New commands

  • /market admin cash info → cash mode and how much money is out there as notes.
  • /market admin cash prune <days> → writes off old notes that will never come back (lava, void…). It can't be undone and it's logged.
  • /market admin cash validate held → backs the unregistered notes in your hand. This creates new money and it's logged.

Reports, backups and logs

  • Money reports (market status, market report) now count notes too.
  • Backups (data backup / data restore) include the cash records. Older backups from before cash are still accepted; the preview warns you.
  • The audit log records withdrawals, deposits, fake notes (with a console warning too), prunes and validations.
  • If the bank is misconfigured, you'll see it in chat and in the console.

💥 If the server crashes

We mean a forced shutdown (crash, kill), not a normal /stop.

  • Every ~5 seconds, if anyone used cash, the mod saves together the inventories of whoever traded, all balances, orders, mailboxes and the cash records. A crash takes everyone back to that moment, without mixing moments.
  • Open trades (/trade) survive a crash: whatever a player had put in the offer goes back to their inventory when they log in again (or to the mailbox if it doesn't fit), exactly once.
  • What's left: a window of milliseconds while that save is being written. If the server dies right then, the deposits from that cycle can be lost. It never creates money.

Do I need to migrate data?

No. Open trades are stored under a new key in each player's file; a file without it simply has no open trade. Nothing to do on your side.

Performance

At the moment of that save, each player who traded costs about 8 ms. With 50 players trading at once, that tick can reach 0.3–0.4 s.


🧩 For mod developers

  • New event MarketEvent.BalanceChanged: fires on every balance change, with the old balance, the new one and the reason (market_trade, server_shop, cash_deposit, admin, api…).
  • In LKShopMarketAPI: formatMoney(amount), getCurrencySymbol() and getCurrencyName().

🐞 Fixes

  • /bank and the balance badge did nothing on a new world. They now open the bank.
  • Cash used to ship as FROZEN, which also blocked deposits. It now ships as DEPOSIT_ONLY.
  • The wallet's locked slot no longer has a weird gold glow.
  • After cash validate, the note shows its new serial right away, no relog needed.
  • Spam-clicking the balance badge no longer gets you kicked.
  • With a locked trade, clicking the offers no longer resets the other player's trade.
  • A payment that doesn't fit in the receiver's balance is refused before anyone is charged, instead of silently losing the extra.
  • If the server crashed before the autosave, a /trade could duplicate items and a market purchase could end up paid but not delivered. Not anymore.
  • The bank's title is now translated.

🧪 How it was tested

  • Automated conservation tests: wallet, cashier, trade, market and shop check that balance + notes never changes and that no note exists more times than the bank backs it.
  • Real crashes: the server was killed on every tick of the save cycle, with three players trading and with an open trade: no money or items lost or duplicated.
  • Dedicated server with 3 real clients: trade, market, shop, wallet and crashes mid-operation, all green; 200 operations in 2 minutes without dropping below 20 TPS (worst tick: 25.5 ms).

🔍 Still to be confirmed

  • Looks and sound: note and wallet tooltips, textures, wallet sounds, and the bank, wallet and trade screens. They build and work in the tests, but nobody has checked them by eye in-game yet.
  • Real clicks in the UI: in the tests with real clients, actions were triggered from the server; dragging, Q and real clicks haven't been tried by hand yet.
  • Other NeoForge versions: only tested on NeoForge 21.1.250.

Thanks for playing! 💚

💵 LK Shop & Market 1.4.0 — Dinero físico y banco

Minecraft 1.21.1 · NeoForge 21.1.250

La 1.4.0 es la actualización más grande del mod hasta ahora: tu dinero deja de ser solo un número y puede ir en el bolsillo, en forma de billetes que se guardan, se regalan y se ingresan en el banco. Aquí tienes todo lo que trae, cómo usarlo y qué conviene saber antes de actualizar.


⚠️ Antes de actualizar (léelo, de verdad)

  • Actualiza el servidor y el juego de todos los jugadores. Esta versión cambia cómo hablan cliente y servidor: si las versiones no coinciden, no podrás conectarte.
  • No vuelvas a la 1.3.x mientras haya billetes. La 1.3.x no conoce los billetes ni la cartera y, al cargar un cofre, un inventario o un buzón que los tenga, los borra para siempre. Volver luego a la 1.4.0 no los recupera. Los saldos sí se conservan.
  • Si tienes que bajar de versión, hazlo así:
    1. Pon cashSystemMode = "DEPOSIT_ONLY".
    2. Deja que los jugadores ingresen sus billetes.
    3. Espera a que /market admin cash info marque 0 en circulación.
    4. Haz una copia del mundo.
    5. Solo entonces instala la 1.3.x.
  • El efectivo viene apagado. Hasta que un admin no lo active, no sale ningún billete nuevo (más abajo te contamos cómo).

💵 Billetes

  • Hay billetes de 5, 10, 50, 100, 1.000 y 10.000 («5 LK Cash» … «10,000 LK Cash»), cada uno con su color y su aspecto.
  • Cada billete tiene un número de serie que el servidor comprueba. Un billete copiado o sacado de la nada (modo creativo, /give, fallos de duplicación de otros mods) no vale nada, y el banco se lo queda si intentas ingresarlo.
  • Descripción clara: el billete muestra su número de serie. Uno sin serie aparece como «Sin registro · sin valor». Ojo: solo el banco distingue un billete auténtico de una copia, y lo hace al ingresarlo.
  • Juntar billetes: suelta un billete sobre otro del mismo valor y se unen en una sola pila (hasta 64). Si alguno no tiene respaldo, no se juntan y no se toca nada.

👛 Cartera («Cartera LK»)

  • Guarda hasta 9 pilas de billetes (solo billetes). Puedes tener más de una.
  • Clic derecho con ella en la mano para abrirla: una cartera de cuero con una rejilla de 3×3.
  • También puedes meter y sacar billetes arrastrando, como con un bundle.
  • Su descripción muestra cuánto dinero lleva dentro y cuánto espacio ocupa.
  • Receta: 5 de cuero + 1 de cuerda (cuero arriba en dos casillas; abajo cuero, cuerda, cuero).
  • Mientras está abierta, su casilla no se puede coger, tirar con Q ni intercambiar.

🏦 El banco

  • /bank abre el banco desde cualquier sitio, sin aldeano. También funciona /market bank.
  • Clic en tu saldo (la placa de la moneda en la pantalla del mercado) también lo abre.
  • Dentro está el cajero:
    • Retirar: saca dinero en billetes, en múltiplos de 5, siempre con los billetes más grandes posibles. Solo te cobra si caben todos en el inventario.
    • Ingresar e Ingresar todo: lee los billetes del inventario y también los de dentro de tus carteras.
  • Si otro mod ya usa /bank, LK Shop & Market no lo pisa: usa /market bank.

🔒 Juego limpio

  • El efectivo no se puede comprar ni vender en el mercado ni en las tiendas del servidor, ni siquiera escondido dentro de shulkers o bundles.
  • Lo que sí puedes es dárselo a otro jugador con /trade, como cualquier objeto.
  • En modo creativo no se puede usar el cajero ni juntar billetes (salvo que el servidor lo permita).
  • Tu efectivo y tu saldo se guardan juntos al desconectarte, para que nunca se descuadren.

🛠️ Para administradores

Activar el efectivo

En lkshopmarket-server.toml (se puede cambiar en caliente):

Opción Qué hace
cashSystemMode = "ENABLED" Todo funciona: retirar, ingresar, juntar.
cashSystemMode = "DEPOSIT_ONLY" (por defecto) No salen billetes nuevos, pero los que existen se pueden ingresar. Ideal para retirar el efectivo sin atrapar el dinero de nadie.
cashSystemMode = "FROZEN" Los billetes no hacen nada.
defaultBankShop = "bank" (por defecto) Qué tienda hace de banco. El mod ya trae la suya.

Sacar billetes de una cartera funciona siempre, en cualquier modo.

⚠️ Si ya tenías el archivo de configuración, conserva sus valores antiguos. Si pone cashSystemMode = "FROZEN" y defaultBankShop = "", cámbialos a mano.

Comandos nuevos

  • /market admin cash info → modo del efectivo y cuánto dinero hay en billetes.
  • /market admin cash prune <días> → da por perdidos los billetes antiguos que ya no volverán (lava, vacío…). Es irreversible y queda registrado.
  • /market admin cash validate held → da respaldo a los billetes sin registro de tu mano. Crea dinero nuevo y queda registrado.

Informes, copias y registro

  • Los informes de dinero (market status, market report) cuentan también los billetes.
  • Las copias de seguridad (data backup / data restore) incluyen el registro de billetes. Una copia antigua, de antes del efectivo, se sigue aceptando; la vista previa te avisa.
  • El registro de auditoría anota retiros, ingresos, billetes falsos (también avisa por consola), purgas y validaciones.
  • Si el banco está mal configurado, lo verás en el chat y en la consola.

💥 Si el servidor se cae

Hablamos de un cierre forzado (crash, kill), no de un /stop normal.

  • Cada ~5 segundos, si alguien ha usado el efectivo, el mod guarda a la vez los inventarios de quien ha operado, todos los saldos, las órdenes, los buzones y el registro de billetes. Una caída devuelve a todos a ese momento, sin mezclar instantes.
  • Los tratos abiertos (/trade) sobreviven a una caída: lo que un jugador tenía puesto en la oferta vuelve a su inventario al volver a entrar (o al buzón si no cabe), y solo una vez.
  • Lo que queda: una ventana de milisegundos mientras se escribe ese guardado. Si el servidor cae justo ahí, puede perderse lo ingresado en ese ciclo. No crea dinero.

¿Hay que migrar datos?

No. Los tratos abiertos se guardan en una clave nueva dentro de la ficha de cada jugador; una ficha sin esa clave es simplemente una ficha sin trato abierto. No hace falta hacer nada.

Rendimiento

En el momento de ese guardado, cada jugador que ha operado cuesta unos 8 ms. Con 50 jugadores operando a la vez, ese tick puede llegar a 0,3–0,4 s.


🧩 Para desarrolladores de mods

  • Evento nuevo MarketEvent.BalanceChanged: salta cada vez que cambia un saldo, con el saldo anterior, el nuevo y el motivo (market_trade, server_shop, cash_deposit, admin, api…).
  • En LKShopMarketAPI: formatMoney(cantidad), getCurrencySymbol() y getCurrencyName().

🐞 Arreglos

  • /bank y la placa del saldo no hacían nada en un mundo nuevo. Ahora abren el banco.
  • El efectivo venía en FROZEN, que también bloqueaba los ingresos. Ahora viene en DEPOSIT_ONLY.
  • La casilla bloqueada de la cartera ya no tiene un brillo dorado raro.
  • Tras cash validate, el billete muestra su serie nueva al momento, sin reconectar.
  • Hacer muchos clics seguidos en la placa del saldo ya no te expulsa por spam.
  • Con un trato bloqueado, hacer clic en las ofertas ya no reinicia el trato del otro.
  • Un pago que no cabe en el saldo de quien lo recibe se rechaza antes de cobrar, en vez de perder el sobrante en silencio.
  • Si el servidor caía antes del autoguardado, un /trade podía duplicar objetos y una compra del mercado podía quedar pagada sin entregar. Ya no.
  • El título del banco ahora está traducido.

🧪 Cómo se ha probado

  • Pruebas automáticas de conservación: cartera, cajero, trato, mercado y tienda comprueban que saldo + billetes no cambia y que ningún billete existe más veces de las que respalda el banco.
  • Caídas reales: se ha matado el servidor en cada tick del ciclo de guardado, con tres jugadores operando y con un trato abierto: ni se pierde ni se duplica dinero ni objetos.
  • Servidor dedicado con 3 clientes reales: trato, mercado, tienda, cartera y caídas en plena operación, todo en verde; 200 operaciones en 2 minutos sin bajar de 20 TPS (peor tick: 25,5 ms).

🔍 Pendiente de confirmar

  • El aspecto visual y el sonido: descripciones de billetes y cartera, texturas, sonidos de la cartera y las pantallas del banco, la cartera y el trato. Compilan y funcionan en las pruebas, pero nadie los ha revisado a ojo en el juego.
  • Los clics reales en la interfaz: en las pruebas con clientes reales, las operaciones se lanzaron desde el servidor; arrastrar, Q y los clics de verdad aún no se han probado a mano.
  • Otras versiones de NeoForge: solo se ha probado con NeoForge 21.1.250.

¡Gracias por jugar! 💚

This mod has no related projects