promotional bannermobile promotional banner

Arcadia Auction House

Arcadia Auction House adds a cross-player marketplace with item listings, a mailbox for delivered purchases, and Numismatics currency support. Requires Arcadia Lib.
Back to Files

arcadia-ah-1.21.1-1.4.1

File namearcadia-ah-1.4.1.jar
Uploader
vyrrioxvyrriox
Uploaded
Oct 4, 2026
Downloads
4
Size
223.3 KB
Mod Loaders
NeoForge
File ID
9053285
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:arcadia-ah-1493501:9053285"

Learn more about Curse Maven

What's new

## [1.4.1] - 2026-10-02

### Fixed

- **Sell and bid screens wrote prices in the wrong currency** — Both screens format amounts on the client and asked `EconomyService` how. Its backend is only set where a server starts, so a client on a dedicated server fell back to "N coins" next to a server pricing in emeralds, and the live breakdown was always a Numismatics one: without Numismatics its coin names came out as raw keys (`item.numismatics.crown`). The server now tells the client how it writes an amount, in a small payload sent just before each of the two screens opens. The payload is optional and only sent to a client that knows it, so a 1.4.0 client can still join a 1.4.1 server and the other way round; such a pair simply keeps the old display.
- **Listing tooltips were dark purple and italic where the code asked for grey, gold and white** — Labels and prices were appended to an empty literal holding a legacy colour code (`"§6"`), and a code only reaches the end of the string it is written in. "Seller:", "Price:", the price itself and every label of the leaderboard fell back to the default style of a lore line, dark purple on a dark tooltip. Each piece now carries its colour as a style, and every name and line the auction house writes is upright. The filter, sort, my-listings and mailbox buttons were affected the same way.
- **About thirty chat lines were in English for everybody on a dedicated server** — They were built with `getString()` on the server, which is what made their colour codes reach the arguments, but which also resolved the translation there, where only English is loaded. Cancelling a listing, the listing cooldown, a bid placed, the refunds, moderation mode and most refusals were concerned. They are now sent as translatable components, so each client reads them in its own language. The new `AhText.tr` gives each argument the style in force at its placeholder, and the lang files restate the colour after each placeholder, so the lines keep their colours. Amounts in those lines are sent as components too: Numismatics coin names follow the player's language instead of the server's English.
- **Arguments of the other chat lines had lost their colour** — The mirror image of the previous defect: a line sent as a component was translated, but the item, the price and the names in it were not coloured as its pattern asked. The watch alert, the login summary, the undercut warning, the outbid notice, the listing broadcast, the market overview and the sale history now show them as the lang files write them.
- **A few labels were not translated at all** — "Page 1 / 1", "5 listing(s)", "3 mail", "Invalid item" and two lines of the leaderboard tooltip were hardcoded in English. They have lang entries now. The previous and next arrows were resolved on the server; they are translated on the client like the rest.
- **The mailbox kept showing entries that had just been claimed** — Claiming runs off-thread and the screen was repainted right after asking, so the claimed rows stayed until the mailbox was reopened, and a second click on one answered that the entry no longer existed. The repaint now runs once the claim has finished, for a single entry and for claim-all.
- **The fill button suggested the price floor instead of a price** — For an item with an admin minimum, `suggestPrice` returned that minimum whatever the item sold for: a floor of 5 on an item trading around 3200 offered 4. The suggestion is now what the item has been selling for, scaled by how fast it sells, and never below the floor.
- **One's own listing invited a purchase** — In the browser a player's own listing read "[Right-click to bid]" and "[Click to buy]". Both clicks then answered with an error, the left one only after the purchase had been armed. The tooltip now says where the listing is managed, and the click answers at once.
- **The sell panel could run off the bottom of the window** — The panel grows by one row per info line from a fixed top. At GUI scale 3 in a 720p window, five lines put its lower border out of view, and a longer translation its buttons. It now slides up as far as it needs to.
- **Sell, bid and search panels were drawn blurred** — The three screens paint their overlay and their panel before `super.render()`, whose stock background then blurred and dimmed both on default video settings. Each screen now owns its background.
- **The seller's bid notice had the item and the amount swapped** — A seller read "Garrun offered Ender Pearl for your 10 Crown". The arguments are now passed in the order the lang files expect.
- **Moderation mode announced a purchase** — With moderation mode on, a listing's tooltip ended with "[Click to buy]" and its armed state asked to confirm a purchase, where the click removes the listing. The tooltip follows the same order as the click handler, and the armed state has its own line.

### Changed

- **Lang files are checked in CI** — `tools/check_lang.py` fails the build on a key or an argument that one of the two files lacks, and on a pattern that does not restate its colour after a placeholder. Run it with `--write` to add the missing codes.

### Correctifs

- **Les écrans de vente et d'enchère écrivaient les prix dans la mauvaise monnaie** — Les deux écrans formatent les montants côté client et demandaient à `EconomyService` comment faire. Son backend n'est initialisé que là où un serveur démarre : un client connecté à un serveur dédié retombait donc sur « N coins » à côté d'un serveur qui compte en émeraudes, et le détail en direct était toujours celui de Numismatics, dont les noms de pièces sortaient en clés brutes (`item.numismatics.crown`) quand le mod est absent. Le serveur indique maintenant au client comment il écrit un montant, dans un petit paquet envoyé juste avant l'ouverture de chacun des deux écrans. Le paquet est optionnel et n'est envoyé qu'à un client qui le connaît : un client 1.4.0 peut toujours rejoindre un serveur 1.4.1, et inversement ; une telle paire garde simplement l'ancien affichage.
- **Les infobulles des annonces étaient en violet foncé italique là où le code demandait du gris, de l'or et du blanc** — Les libellés et les prix étaient ajoutés à un littéral vide contenant un code couleur (`"§6"`), or un code ne porte que jusqu'à la fin de la chaîne où il est écrit. « Vendeur : », « Prix : », le prix lui-même et tous les libellés du classement retombaient sur le style par défaut d'une ligne de description, violet foncé sur une infobulle sombre. Chaque morceau porte désormais sa couleur comme style, et tous les noms et lignes écrits par l'hôtel des ventes sont en caractères droits. Les boutons de filtre, de tri, « Mes annonces » et de boîte aux lettres étaient touchés de la même façon.
- **Une trentaine de lignes de chat étaient en anglais pour tout le monde sur un serveur dédié** — Elles étaient construites avec `getString()` côté serveur : c'est ce qui faisait porter leurs codes couleur jusqu'aux arguments, mais aussi ce qui résolvait la traduction sur le serveur, où seul l'anglais est chargé. Étaient concernés l'annulation d'une annonce, le délai entre deux mises en vente, l'enchère placée, les remboursements, le mode modération et la plupart des refus. Ces lignes sont maintenant envoyées comme composants traduisibles, chaque client les lit donc dans sa langue. Le nouveau `AhText.tr` donne à chaque argument le style en vigueur à son emplacement, et les fichiers de langue répètent la couleur après chaque emplacement : les lignes gardent leurs couleurs. Les montants de ces lignes sont eux aussi envoyés comme composants : les noms des pièces Numismatics suivent la langue du joueur au lieu de l'anglais du serveur.
- **Les arguments des autres lignes de chat avaient perdu leur couleur** — L'image inversée du défaut précédent : une ligne envoyée comme composant était bien traduite, mais l'objet, le prix et les pseudos n'y prenaient pas la couleur que son modèle demandait. L'alerte d'objet, le résumé à la connexion, l'alerte de sous-cotation, l'avis de surenchère, l'annonce de mise en vente, l'aperçu du marché et l'historique des ventes les affichent maintenant comme les fichiers de langue les écrivent.
- **Quelques libellés n'étaient pas traduits du tout** — « Page 1 / 1 », « 5 listing(s) », « 3 mail », « Invalid item » et deux lignes de l'infobulle du classement étaient écrits en dur en anglais. Ils ont maintenant leurs entrées de langue. Les flèches précédent et suivant étaient résolues sur le serveur ; elles sont traduites côté client comme le reste.
- **La boîte aux lettres continuait d'afficher les entrées qui venaient d'être réclamées** — La réclamation s'exécute hors du thread serveur et l'écran était repeint juste après la demande : les lignes réclamées restaient affichées jusqu'à la réouverture de la boîte, et un second clic sur l'une d'elles répondait que l'entrée n'existait plus. L'écran est maintenant repeint une fois la réclamation terminée, pour une entrée comme pour « Tout réclamer ».
- **Le bouton de remplissage proposait le prix plancher au lieu d'un prix** — Pour un objet doté d'un minimum fixé par un admin, `suggestPrice` renvoyait ce minimum quel que soit le cours de l'objet : un plancher de 5 sur un objet qui s'échange autour de 3200 proposait 4. La suggestion est maintenant le prix auquel l'objet s'est vendu, ajusté selon son rythme de vente, et jamais sous le plancher.
- **Sa propre annonce invitait à l'achat** — Dans le navigateur, l'annonce d'un joueur lui affichait « [Clic droit pour enchérir] » et « [Cliquer pour acheter] ». Les deux clics répondaient ensuite par une erreur, le clic gauche seulement après avoir armé l'achat. L'infobulle indique maintenant où l'annonce se gère, et le clic répond tout de suite.
- **Le panneau de vente pouvait sortir par le bas de la fenêtre** — Le panneau grandit d'une ligne par information à partir d'un haut fixe. En échelle d'interface 3 dans une fenêtre 720p, cinq lignes faisaient sortir sa bordure basse, et une traduction plus longue ses boutons. Il remonte maintenant autant que nécessaire.
- **Les panneaux de vente, d'enchère et de recherche étaient flous** — Les trois écrans peignent leur voile et leur panneau avant `super.render()`, dont le fond standard les floutait et les assombrissait ensuite avec les réglages vidéo par défaut. Chaque écran gère maintenant son propre fond.
- **L'avis d'enchère au vendeur inversait l'objet et le montant** — Un vendeur lisait « Garrun propose Ender Pearl pour votre 10 Crown ». Les arguments sont maintenant passés dans l'ordre attendu par les fichiers de langue.
- **Le mode modération annonçait un achat** — Mode modération actif, l'infobulle d'une annonce se terminait par « [Cliquer pour acheter] » et son état armé demandait de confirmer un achat, alors que le clic retire l'annonce. L'infobulle suit maintenant le même ordre que le gestionnaire de clic, et l'état armé a sa propre ligne.

### Modifications

- **Les fichiers de langue sont vérifiés en CI** — `tools/check_lang.py` fait échouer le build sur une clé ou un argument absent de l'un des deux fichiers, et sur un modèle qui ne répète pas sa couleur après un emplacement. Avec `--write`, il ajoute les codes manquants.

This mod has no additional files