LKShopMarket-1.21.1-1.4.0.jar
Curse Maven Snippet
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:
- Set
cashSystemMode = "DEPOSIT_ONLY". - Let players deposit their notes.
- Wait until
/market admin cash infoshows 0 in circulation. - Back up the world.
- Only then install 1.3.x.
- Set
- 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
/bankopens the bank from anywhere, no villager needed./market bankworks 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()andgetCurrencyName().
🐞 Fixes
/bankand 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 asDEPOSIT_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
/tradecould 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í:
- Pon
cashSystemMode = "DEPOSIT_ONLY". - Deja que los jugadores ingresen sus billetes.
- Espera a que
/market admin cash infomarque 0 en circulación. - Haz una copia del mundo.
- Solo entonces instala la 1.3.x.
- Pon
- 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
/bankabre 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()ygetCurrencyName().
🐞 Arreglos
/banky 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 enDEPOSIT_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
/tradepodí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! 💚
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

