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
  • 13.9K
  • 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.