@Override
    public void luckperms$initializePermissions(User user) {
        if (user == null) {
            return;
        }

        this.luckperms$user = user;

        // ensure query options cache is initialised too.
        if (this.luckperms$queryOptions == null) {
            this.luckperms$getQueryOptionsCache((FabricContextManager) user.getPlugin().getContextManager());
        }
    }
Hold a QueryOptionsCache instance on the player itself, so we can just cast instead of
having to maintain a map of Player->Cache.
fabric/src/main/java/me/lucko/luckperms/fabric/mixin/ServerPlayerEntityMixin.java