promotional bannermobile promotional banner

Arcadia Lib

Arcadia Lib is the shared foundation required by all Arcadia Pets, Prestige and AH. It provides the database layer, player data management and debug mode.

File Details

arcadia-lib-1.2.9

  • R
  • May 1, 2026
  • 2.53 MB
  • 6.1K
  • 1.21.1
  • NeoForge

File Name

arcadia-lib-1.2.9.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:arcadia-lib-1493170:8019721"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

## [1.2.9] - 2026-05-01 (latest)

### Fixed

- **Admin Panel reachable without permission via dashboard carousel arrows when LuckPerms wasn't bound** — `PermissionBackend.NOOP` returns `true` for every node by design (so singleplayer "just works" without a perm plugin). On a dedicated server where LuckPerms had not been loaded or hadn't initialized yet, that NOOP fallback meant `PermissionService.hasPermission(player, "arcadia.staff.mod")` granted access to literally every player. Two paths exploited it: (1) `ArcadiaModRegistry.resolveCarouselTarget(int, int, ServerPlayer)` filtered `visible` cards through the lenient `hasPermission`, so the Admin Panel card stayed in the carousel and the prev/next arrows in any dashboard tab (cosmetics, pets, daily, AH) navigated to it, and (2) the registered server action `adminpanel:open` re-checked the same lenient call before opening the menu — both gates failed open. New `PermissionService.hasPermissionStrict(Player, String)` returns `false` when the active backend IS the NOOP fallback (real backends honor the underlying check). The carousel filter now uses the strict variant, so any card with a `permissionNode` is hidden on a server whose perm backend is misconfigured. Lenient `hasPermission` is unchanged for non-security-sensitive call sites that want the singleplayer-friendly behavior.

### Correctifs

- **Admin Panel accessible sans permission via les flèches du carousel quand LuckPerms n'était pas branché** — `PermissionBackend.NOOP` retourne `true` pour chaque node par design (pour que le solo « marche tout seul » sans plugin de perms). Sur un serveur dédié où LuckPerms n'avait pas été chargé ou pas encore initialisé, ce fallback NOOP signifiait que `PermissionService.hasPermission(player, "arcadia.staff.mod")` accordait l'accès à littéralement tous les joueurs. Deux chemins exploitaient ça : (1) `ArcadiaModRegistry.resolveCarouselTarget(int, int, ServerPlayer)` filtrait les cards `visible` via le `hasPermission` permissif, donc la card Admin Panel restait dans le carousel et les flèches prev/next de n'importe quel onglet dashboard (cosmétiques, pets, daily, HDV) y menaient, et (2) le server action `adminpanel:open` re-vérifiait le même appel permissif avant d'ouvrir le menu — les deux gates s'ouvraient. Nouveau `PermissionService.hasPermissionStrict(Player, String)` retourne `false` quand le backend actif EST le fallback NOOP (les vrais backends honorent le check sous-jacent). Le filtre carousel utilise maintenant la variante stricte, donc toute card avec un `permissionNode` est cachée sur un serveur dont le backend de perms est mal configuré. Le `hasPermission` permissif est inchangé pour les sites d'appel non sensibles à la sécurité qui veulent le comportement singleplayer-friendly.