A Spigot plugin loosely based on the old Permission Signs plugin
Go to file
EpicKnarvik97 e77402c164
All checks were successful
KnarCraft/PermissionSigns/pipeline/head This commit looks good
Changes version back to snapshot
2024-01-05 16:32:05 +01:00
src/main Fixes plugin version not updating automatically 2024-01-05 16:21:02 +01:00
.gitignore Initial commit 2022-01-08 16:57:12 +01:00
HEADER Clarifies license to prevent dispute 2022-03-11 17:21:37 +01:00
Jenkinsfile Adds Jenkinsfile 2022-11-26 15:18:57 +01:00
LICENSE Adds LICENSE file 2022-01-23 00:02:05 +01:00
pom.xml Changes version back to snapshot 2024-01-05 16:32:05 +01:00
README.md Fixes some readme formatting 2024-01-04 09:59:06 +01:00

Permission Signs

This is a plugin loosely based on the permission signs plugin created by _ForgeUser7294733. As the previous plugin does not offer source code and has a restrictive license, this plugin is written from scratch, but trying to somewhat imitate the original plugin's behavior. It's not possible to load previous permission signs as they are stored without any coordinates.

Basically permission signs is a plugin that allows for the sale of permissions using signs as the interface. A sign is created with a displayed name, a description, a set of permissions, a time limit (can be infinite) and a cost (can be zero). If a player uses the sign to buy the permission, they will be granted the permission for the defined duration. Vault is used to set permissions. Permanent permissions are set normally through Vault, but permissions with a duration set as not "0" are treated as transient permissions to avoid any problems (such as the player having been granted the permission permanently by another cause) when they expire.

Commands

Command Permission Description
/ps about None Displays information about the plugin
/ps create permissionsigns.admin.create Used for creating a new permission sign
/ps cancel permissionsigns.admin.create Used for manually cancelling a permission sign creation request
/ps reload permissionsigns.admin.reload Used for reloading data and config values from disk

The create command

/ps create <name> <description> <permission,permission> <cost> <duration> - Creates a new permission sign. The name is used to describe what the permission sign does, and is displayed on the sign. The description is used to describe what the permission sign does, but without any limit on the length (use "_" between words, like: This_is_a_sentence). To use actual underscores, escape them like "_". The permission,permission is the list of comma-separated permissions the permission sign will grant to the using player. The cost is the cost to use the permission sign. The duration is the number of seconds the player should keep the permission for. Use 0 for permanent.

The create command permission list

The simplest way of using the permission field is to just specify one permission such as essentials.gamemode.creative, but you can put any number of comma-separated permissions in the field such as: essentials.gamemode.creatice,essentials.gamemode.survival,essentials.gamemode.spectator.

This plugin also supports per-world permissions. By default, permissions are set for all worlds. You can change a setting in the config to only grant the permission for the world the clicked sign belongs to. In addition to this, you can override the default behavior by specifying the world before each permission node. Any specifies that a permission should be given regardless of world, and World_Name specifies that a permission should only be set for the given world. World_Name can also be specified as a different world that the one the permission sign belongs to.

The syntax for specifying the world is: world:permission, so for a list of permissions, it would be like this: world:essentials.gamemode.creatice,any:essentials.gamemode.survival,world_nether:essentials.gamemode.spectator

Permissions

Node Description
permissionsigns.* Grants all permissions
--permissionsigns.use Allows the usage of permission signs
--permissionsigns.admin Allows the creation of permission signs and access to the /reload command
----permissionsigns.admin.reload Allows the usage of the /reload command
----permissionsigns.admin.create Allows the creation of permission signs

Configuration options

Option Description
language The language used for the plugin (en, nb-no)
perWorldPermissions Sets permissions for the current world instead of setting them globally
removePermissionSignIfMissing If enabled, permission signs that have lost their physical sign will be removed during startup. This prevents permission signs from staying in a broken state until the sign is replaced.
enableIndirectSignProtection Protects permission signs against indirect sources such as pistons and explosions. Only disable this if your permission signs are protected by another plugin.
enableExtensiveSignProtection Whether to protect signs on "unstable" blocks such as sand or anvils. Does not protect signs on "lag pyramids" or similar, but protects signs on top of, or attached to a pillar of sand.

Language customization

All strings, even time units, are customizable. If you place a strings.yml file in the plugin folder, it will take priority over built-in languages. If you want to change strings, look at PermissionSigns/src/main/resources/strings.yml for the proper keys. All strings have the format: ENUM: "Displayed string". The enum must be identical as it defines which string you have changed. All strings belonging to a language are beneath the language code and indented with two spaces.

The easiest way to add a new language is to copy an existing language and paste it into your custom strings.yml and change strings as necessary. If you don't include all strings, the remaining will use the built-in English translation. Remember to change the language code to whichever you use for your custom language.

License

PermissionSigns is licensed under the GNU Public License Version 3.0. This includes every source and resource file. See the HEADER file for a more detailed license description.