Hidden Entity Links
If you want to buy me a coffee
A module for FoundryVTT for hide things...
- Hides entities in the sidebar if players have Limited access to them. This means you can provide secret documents to your players without them seeing them in the sidebar, both permission and manual setting are allowed.
- Hides the soundtrack name and the playlist controls from non GM accounts (as they cant use it anyway)
- Adds an option to change the table roll to GM only.
- Hide link on the text editor tinymce based on the level of permission for that entity.
Plus has many settings for hide navigation to scene, soundtrack, ecc.,
- Hide or change name of entity
Instructions
In the module settings you will find options to hide each entity type (apart from Macros) from your players if they have limited access.
The concept is hide everything on the sidebar, but still have permissions , a classic use is a merchant in a specific scene cna be used only on that scene not on the sidebar.
The graphic interaction with new choices on the sidebar context let you decide the entity/document you want to make secret with a simple right click on the specific element or the folder of the sidebar, so you can hide , unhide multiple elements with one click.
There is a integration based on the permission applied on the entities.
Installation
It's always easiest to install modules from the in game add-on browser.
To install this module manually:
- Inside the Foundry "Configuration and Setup" screen, click "Add-on Modules"
- Click "Install Module"
- In the "Manifest URL" field, paste the following url:
https://raw.githubusercontent.com/p4535992/foundryvtt-hidden-entity-links/master/module.json
- Click 'Install' and wait for installation to complete
- Don't forget to enable the module in game using the "Manage Module" button
libWrapper
This module uses the libWrapper library for wrapping core methods. It is a hard dependency and it is recommended for the best experience and compatibility with other modules.
Known issue
Features
Hide entity with right click context integration
You can force to hide some specific entity.
NOTE: this bypass the check used with the feature "Permission manager integration".
Show entity with right click context integration
From version 1.0.7 you can force to show some entity.
NOTE: this bypass the check used with the feature "Permission manager integration".
Unhide/Unshow entity with right click context integration
From version 1.0.7 you can remove the flag of hidden with a voice on the right context.
By module settings we can apply the css style to all the entities are not hide or show
Permission manager integration
From version 1.0.7 you can hide by default the entities based on the permissions level of the player, it very hard to maintain trace of this so for this feature it is highly recommended to install and use this module together with the module Permission Viewer
On the module setting you can see a dropdown menu where to choose the permission level to set for the specific type.
Remember the permission on foundry are from lowest to highest NONE,LIMITED,OBSERVER,OWNER. and remember each level of permissions in foundry inherits the permissions of the previous lower levels, therefore the permissions of OWNER also associate the permissions of OBSERVER,LIMITED,NONE to the player, the permissions of LIMITED also associate the permissions of NONE etc.
ATTENTION: Permissions help in certain contexts, but you can still force the hide feature from the context menu for example set the value to LIMITED and all the entity with permission LIMITED for that player are "hide" by default, but maybe you want to "hide" some entity with observer permission you can still do that with the standard right click on the entity. The hide feature has priority over the "permissions control manager".
Below is an example where as GM we set the values -, NONE, LIMITED, OBSERVER, OWNER, ONLY LIMITED, ONLY OBSERVER respectively in the dropdown. Showing the view by the player that he has these exact privileges in the other distinct entities.
NOTE: the following screenshots of the example start from the fact that there are no entities set explicitly with 'hide' and 'show', the explicit configurations of 'hide' and 'show' have priority over the permissions configurations.
What GM always see:
Here what player see with the default value "-":
Here what player see with the value "NONE":
Here what player see with the value "LIMITED":
Here what player see with the value "OBSERVER":
Here what player see with the value "OWNER":
Here what player see with the value "ONLY LIMITED":
Here what player see with the value "ONLY OBSERVER":
Other features
- Hides the soundtrack name and the playlist controls from non GM accounts (as they cant use it anyway)
- Adds an option to change the table roll to GM only.
- Hide link on the text editor tinymce based on the level of permission for that entity.
- Always displays original scene name to the GM, but shows the Navigation Name for any players.
- Allows the GM to hide sidebars (Chat, Scenes, Items, etc) for players, simplifying the player UI. By default it disables Scenes, Items, Tables, Cards, Playlists, and Compendiums. Each tab can be toggled in the module settings, even the Settings tab. Removing the Settings tab for players is not recommended.
- Ovverride the dialog user configuration for hide all the hidden linked entities (even for gm)
- Specific folder actors on player list: In the list of actors to associate with the user, limit the selection to only those actors for which the user has permissions in this specific folder.
API
Update css on the folder (not ready need more developing...)
game.modules.get('hidden-entity-links').api.hiddenEntityLinks.updateFolderHiddenEntityLinks = async function (entityData, html, data)
Update css on the specific entity
game.modules.get('hidden-entity-links').api.hiddenEntityLinks.updateHiddenEntityLinks = async function (entityData, html, data)
Rendering css on the specific sidebar tab
game.modules.get('hidden-entity-links').api.hiddenEntityLinks.directoryRenderedHiddenEntityLinks = async function (sidebarTabDirectory, html, data, entities)
Hide all the reference link on the javascript editor of foundry based on the specific permissions
game.modules.get('hidden-entity-links').api.hiddenEntityLinks.hideRenderedHiddenEntityLinks = function (sheet, html, data)
Hide the specific entity
game.modules.get('hidden-entity-links').api.hiddenEntityLinks.hideEntityLink = async function (entityID, entities)
UnHide/Unshow the specific entity
game.modules.get('hidden-entity-links').api.hiddenEntityLinks.unhideEntityLink = async function (entityID, entities)
Show the specific entity
game.modules.get('hidden-entity-links').api.hiddenEntityLinks.showEntityLink = async function (entityID, entities)
Settings
- Specific folder actors on player list: In the list of actors to associate with the user, limit the selection to only those actors for which the user has permissions in this specific folder.
- Enable/disable the hidden functionality globally for Actors: If enabled and you are not a GM, users will not see hidden actors in the sidebar anymore, if you enabled/disabled this later the hidden entity regain the hidden state
- Set level permission actors to hide for non GM user: This property hide all the entities of this type for non GM user with this level of permission. ATTENTION: no css visualization is active with this setting.
- Enable/disable the hidden functionality globally for Items: If enabled and you are not a GM, users will not see hidden items in the sidebar anymore, if you enabled/disabled this later the hidden entity regain the hidden state
- Set level permission items to hide for non GM user: This property hide all the entities of this type for non GM user with this level of permission. ATTENTION: no css visualization is active with this setting.
- Enable/disable the hidden functionality globally for Journal Entries: If enabled and you are not a GM, users will not see hidden journals in the sidebar anymore, if you enabled/disabled this later the hidden entity regain the hidden state
- Set level permission journals to hide for non GM user: This property hide all the entities of this type for non GM user with this level of permission. ATTENTION: no css visualization is active with this setting.
- Enable/disable the hidden functionality globally for Roll Tables: If enabled and you are not a GM, users will not see hidden roll tables in the sidebar anymore, if you enabled/disabled this later the hidden entity regain the hidden state
- Set level permission rolltables to hide for non GM user: This property hide all the entities of this type for non GM user with this level of permission. ATTENTION: no css visualization is active with this setting.
- Enable/disable the hidden functionality globally for Cards: If enabled and you are not a GM, users will not see hidden cards in the sidebar anymore, if you enabled/disabled this later the hidden entity regain the hidden state
- Set level permission cards to hide for non GM user: This property hide all the entities of this type for non GM user with this level of permission. ATTENTION: no css visualization is active with this setting.
- Enable/disable the hidden functionality globally for Scenes: If enabled and you are not a GM, users will not see hidden scenes in the sidebar anymore, if you enabled/disabled this later the hidden entity regain the hidden state
- Set level permission scenes to hide for non GM user: This property hide all the entities of this type for non GM user with this level of permission. ATTENTION: no css visualization is active with this setting.
- Enable/disable the hidden functionality globally for Scenes on navigation bar: If enabled and you are not a GM, and the setting 'Hide Scenes' is enabled too, users will not see hidden scenes in the navigation bar and the permission on the scene wil be limited only to GM
- Navigation Bar Minimum Permission: Set a minimum role for the navigation bar to appear. Note that this does not hide the Navbar or scene name while the page is loading. Default is 'Always show Navbar'.
- Navigation Name Maximum Permission: Permissions above which the navbar will always show the real name of the scene, instead of the 'Navigation Name' configured in the Scene settings. This is useful to avoid spoilers, while still allowing the GM to distinguish between scenes. For example, the players might just see 'City', but the GM sees 'City (before attack)', 'City (during attack)' and 'City (after attack)'. Default is 'Empty'.
- Disable the background just add the symbol image: If enable the background of the entity is no more colored, will just add the symbol image like in the default scene directory, can be useful for compatibility with others modules
- Disguise unreachable links for all non GM player: When displaying journal entries or actors to players, if the linked document is not reachable then the special link presentation will be replaced by just the normal text. Thus players will not realize that there is another document to which they don't have access. By accessible, we mean that the player has at least LIMITED permission on that document
- Set level permission to show the referenced link on the javascript editor of foundry to hide for non GM user: This property hide all the referenced link on the javascript editor for non GM user with this level of permission. ATTENTION: no css visualization is active with this setting.
- Add css style to all the entity are not in the 'hide state' or the 'show state': If enable this setting enable the css background/image to all the entities on the sidebars
- Set level permission to hide for non GM user: This property hide all the entities of this type for non GM user with this level of permission. ATTENTION: no css visualization is active with this setting.
- Disable voice from the right click context entities and folders: Someone can find the permission manager just enough for their use, this setting let you the possibility to disable the voice feature. ATTENTION: It will not reset already esisting entities
- Enable/disable the hidden functionality globally for Soundtracks: If enabled and you are not a GM, users will not see the soundtrack name and the playlist controls
Build
Install all packages
npm install
dev
dev
will let you develop you own code with hot reloading on the browser
npm run dev
npm build scripts
build
build
will build and set up a symlink between dist
and your dataPath
.
npm run build
build-watch
build-watch
will build and watch for changes, rebuilding automatically.
npm run build-watch
prettier-format
prettier-format
launch the prettier plugin based on the configuration here
npm run-script prettier-format
Issues
Any issues, bugs, or feature requests are always welcome to be reported directly to the Issue Tracker, or using the Bug Reporter Module.
License
This Foundry VTT module is licensed under a Creative Commons Attribution 4.0 International License and the Foundry Virtual Tabletop Limited License Agreement for module development.
This work is licensed under Foundry Virtual Tabletop EULA - Limited License Agreement for module development v 0.1.6.
Credit
- Contribution from 'earlSt1' If you'd like to support more module of this kind, i invite you to support 'earlSt1' on his kofi