001/*
002 * PlotSquared, a land and world management plugin for Minecraft.
003 * Copyright (C) IntellectualSites <https://intellectualsites.com>
004 * Copyright (C) IntellectualSites team and contributors
005 *
006 * This program is free software: you can redistribute it and/or modify
007 * it under the terms of the GNU General Public License as published by
008 * the Free Software Foundation, either version 3 of the License, or
009 * (at your option) any later version.
010 *
011 * This program is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014 * GNU General Public License for more details.
015 *
016 * You should have received a copy of the GNU General Public License
017 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
018 */
019package com.plotsquared.core.permissions;
020
021import net.kyori.adventure.text.Component;
022import net.kyori.adventure.text.ComponentLike;
023import org.checkerframework.checker.nullness.qual.NonNull;
024import org.jetbrains.annotations.NotNull;
025
026/**
027 * Permission class.
028 */
029public enum Permission implements ComponentLike {
030
031    //@formatter:off
032    //<editor-fold desc="Static Permission">
033    PERMISSION_STAR("*"),
034    PERMISSION_ADMIN("plots.admin"),
035    PERMISSION_ADMIN_AREA_SUDO("plots.admin.area.sudo"),
036    PERMISSION_ADMIN_INTERACT_BLOCKED_CMDS("plots.admin.interact.blockedcommands"),
037    PERMISSION_WORLDEDIT_BYPASS("plots.worldedit.bypass"),
038    PERMISSION_PLOT_TOGGLE_TITLES("plots.toggle.titles"),
039    PERMISSION_PLOT_TOGGLE_CHAT("plots.toggle.chat"),
040    PERMISSION_PLOT_TOGGLE_TIME("plots.toggle.time"),
041    PERMISSION_ADMIN_UPDATE_NOTIFICATION("plots.admin.update.notify"),
042    PERMISSION_ADMIN_EXIT_DENIED("plots.admin.exit.denied"),
043    PERMISSION_ADMIN_ENTRY_DENIED("plots.admin.entry.denied"),
044    PERMISSION_ADMIN_VISIT_UNTRUSTED("plots.admin.visit.untrusted"),
045    PERMISSION_ADMIN_ENTRY_FORCEFIELD("plots.admin.entry.forcefield"),
046    PERMISSION_ADMIN_COMMANDS_CHATSPY("plots.admin.command.chatspy"),
047    PERMISSION_MERGE("plots.merge"),
048    PERMISSION_MERGE_ALL("plots.merge.all"),
049    PERMISSION_MERGE_OTHER("plots.merge.other"),
050    PERMISSION_MERGE_KEEP_ROAD("plots.merge.keeproad"),
051    PERMISSION_ADMIN_CAPS_OTHER("plots.admin.caps.other"),
052    PERMISSION_ADMIN_MUSIC_OTHER("plots.admin.music.other"),
053    PERMISSION_ADMIN_DESTROY("plots.admin.destroy"),
054    PERMISSION_ADMIN_DESTROY_UNOWNED("plots.admin.destroy.unowned"),
055    PERMISSION_ADMIN_DESTROY_GROUNDLEVEL("plots.admin.destroy.groundlevel"),
056    PERMISSION_ADMIN_DESTROY_OTHER("plots.admin.destroy.other"),
057    PERMISSION_ADMIN_DESTROY_ROAD("plots.admin.destroy.road"),
058    PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD("plots.admin.vehicle.break.road"),
059    PERMISSION_ADMIN_DESTROY_VEHICLE_UNOWNED("plots.admin.vehicle.break.unowned"),
060    PERMISSION_ADMIN_DESTROY_VEHICLE_OTHER("plots.admin.vehicle.break.other"),
061    PERMISSION_ADMIN_PVE("plots.admin.pve"),
062    PERMISSION_ADMIN_PVP("plots.admin.pvp"),
063    PERMISSION_ADMIN_BUILD_ROAD("plots.admin.build.road"),
064    PERMISSION_ADMIN_PROJECTILE_ROAD("plots.admin.projectile.road"),
065    PERMISSION_ADMIN_PROJECTILE_UNOWNED("plots.admin.projectile.unowned"),
066    PERMISSION_ADMIN_PROJECTILE_OTHER("plots.admin.projectile.other"),
067    PERMISSION_ADMIN_BUILD_UNOWNED("plots.admin.build.unowned"),
068    PERMISSION_ADMIN_BUILD_OTHER("plots.admin.build.other"),
069    PERMISSION_ADMIN_INTERACT_ROAD("plots.admin.interact.road"),
070    PERMISSION_ADMIN_INTERACT_UNOWNED("plots.admin.interact.unowned"),
071    PERMISSION_ADMIN_INTERACT_OTHER("plots.admin.interact.other"),
072    PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT("plots.admin.build.heightlimit"),
073    PERMISSION_ADMIN_COMMAND_PURGE_RATINGS("plots.admin.command.purge.ratings"),
074    PERMISSION_ADMIN_COMMAND_ADD("plots.admin.command.trust"),
075    PERMISSION_ADMIN_COMMAND_TRUST("plots.admin.command.trust"),
076    PERMISSION_TRUST("plots.trust"),
077    PERMISSION_DENY("plots.deny"),
078    PERMISSION_ADD("plots.add"),
079    PERMISSION_TRUST_EVERYONE("plots.trust.everyone"),
080    PERMISSION_AREA_CREATE("plots.area.create"),
081    PERMISSION_AREA_INFO("plots.area.info"),
082    PERMISSION_AREA_INFO_FORCE("plots.admin.info.force"),
083    PERMISSION_AREA_LIST("plots.area.list"),
084    PERMISSION_AREA_REGEN("plots.area.regen"),
085    PERMISSION_AREA_TP("plots.area.tp"),
086    PERMISSION_AREA("plots.area"),
087    PERMISSION_AUTO_MEGA("plots.auto.mega"),
088    PERMISSION_CLAIM_SCHEMATIC("plots.claim.%s"),
089    PERMISSION_ADMIN_COMMAND_SCHEMATIC("plots.admin.command.schematic"),
090    PERMISSION_ADMIN_COMMAND_CLEAR("plots.admin.command.clear"),
091    PERMISSION_CONTINUE("plots.continue"),
092    PERMISSION_CLUSTER("plots.cluster"),
093    PERMISSION_CLUSTER_LIST("plots.cluster.list"),
094    PERMISSION_CLUSTER_CREATE("plots.cluster.create"),
095    PERMISSION_CLUSTER_CREATE_OTHER("plots.cluster.create.other"),
096    PERMISSION_CLUSTER_SIZE("plots.cluster.size"),
097    PERMISSION_CLUSTER_DELETE("plots.cluster.delete"),
098    PERMISSION_CLUSTER_DELETE_OTHER("plots.cluster.delete.other"),
099    PERMISSION_CLUSTER_RESIZE("plots.cluster.resize"),
100    PERMISSION_CLUSTER_RESIZE_OTHER("plots.cluster.resize.other"),
101    PERMISSION_CLUSTER_RESIZE_SHRINK("plots.cluster.resize.shrink"),
102    PERMISSION_CLUSTER_RESIZE_EXPAND("plots.cluster.resize.expand"),
103    PERMISSION_CLUSTER_INVITE("plots.cluster.invite"),
104    PERMISSION_CLUSTER_INVITE_OTHER("plots.cluster.invite.other"),
105    PERMISSION_CLUSTER_KICK("plots.cluster.kick"),
106    PERMISSION_CLUSTER_KICK_OTHER("plots.cluster.kick.other"),
107    PERMISSION_CLUSTER_LEAVE("plots.cluster.leave"),
108    PERMISSION_CLUSTER_HELPERS("plots.cluster.helpers"),
109    PERMISSION_CLUSTER_TP("plots.cluster.tp"),
110    PERMISSION_CLUSTER_TP_OTHER("plots.cluster.tp.other"),
111    PERMISSION_CLUSTER_INFO("plots.cluster.info"),
112    PERMISSION_CLUSTER_SETHOME("plots.cluster.sethome"),
113    PERMISSION_CLUSTER_SETHOME_OTHER("plots.cluster.sethome.other"),
114    PERMISSION_ADMIN_COMMAND_CONTINUE("plots.admin.command.continue"),
115    PERMISSION_ADMIN_COMMAND_DELETE("plots.admin.command.delete"),
116    PERMISSION_ADMIN_COMMAND_DENY("plots.admin.command.deny"),
117    PERMISSION_DENY_EVERYONE("plots.deny.everyone"),
118    PERMISSION_ADMIN_COMMAND_DONE("plots.admin.command.done"),
119    PERMISSION_ADMIN_COMMAND_DOWNLOAD("plots.admin.command.download"),
120    PERMISSION_DOWNLOAD("plots.download"),
121    PERMISSION_DOWNLOAD_WORLD("plots.download.world"),
122    PERMISSION_SET_FLAG_OTHER("plots.set.flag.other"),
123    PERMISSION_SET_FLAG("plots.set.flag"),
124    PERMISSION_SET_FLAG_KEY("plots.set.flag.%s"),
125    PERMISSION_SET_FLAG_KEY_VALUE("plots.set.flag.%s.%s"),
126    PERMISSION_SET("plots.set"),
127    PERMISSION_SET_BIOME("plots.set.biome"),
128    PERMISSION_SET_ALIAS("plots.set.alias"),
129    PERMISSION_SET_HOME("plots.set.home"),
130    PERMISSION_SET_MAIN("plots.set.main"),
131    PERMISSION_SET_FLOOR("plots.set.floor"),
132    PERMISSION_SET_AIR("plots.set.air"),
133    PERMISSION_SET_ALL("plots.set.all"),
134    PERMISSION_SET_BORDER("plots.set.border"),
135    PERMISSION_SET_WALL("plots.set.wall"),
136    PERMISSION_SET_OUTLINE("plots.set.outline"),
137    PERMISSION_SET_MIDDLE("plots.set.middle"),
138    PERMISSION_TARGET("plots.target"),
139    PERMISSION_TEMPLATE("plots.template"),
140    PERMISSION_TEMPLATE_IMPORT("plots.template.import"),
141    PERMISSION_TEMPLATE_EXPORT("plots.template.import"),
142    PERMISSION_FLAG_REMOVE("plots.flag.remove"),
143    PERMISSION_FLAG_ADD("plots.flag.add"),
144    PERMISSION_FLAG_LIST("plots.flag.list"),
145    PERMISSION_ADMIN_COMMAND_KICK("plots.admin.command.kick"),
146    PERMISSION_GRANT_SINGLE("plots.grant"),
147    PERMISSION_GRANT("plots.grant.%s"),
148    PERMISSION_GRANT_ADD("plots.grant.add"),
149    PERMISSION_GRANT_CHECK("plots.grant.check"),
150    PERMISSION_LIST_FOR_SALE("plots.list.forsale"),
151    PERMISSION_LIST_MINE("plots.list.mine"),
152    PERMISSION_LIST_SHARED("plots.list.shared"),
153    PERMISSION_LIST_WORLD("plots.list.world"),
154    PERMISSION_LIST_WORLD_NAME("plots.list.world.%s"),
155    PERMISSION_LIST_TOP("plots.list.top"),
156    PERMISSION_LIST_ALL("plots.list.all"),
157    PERMISSION_LIST_UNOWNED("plots.list.unowned"),
158    PERMISSION_LIST_PLAYER("plots.list.player"),
159    PERMISSION_LIST_DONE("plots.list.done"),
160    PERMISSION_LIST_EXPIRED("plots.list.expired"),
161    PERMISSION_LIST_FUZZY("plots.list.fuzzy"),
162    PERMISSION_LIST_AREA("plots.list.area"),
163    PERMISSION_ADMIN_COMMAND_LOAD("plots.admin.command.load"),
164    PERMISSION_ADMIN_COMMAND_MERGE("plots.admin.command.merge"),
165    PERMISSION_ADMIN_COMMAND_MERGE_OTHER_OFFLINE("plots.admin.command.merge.other.offline"),
166    PERMISSION_ADMIN_COMMAND_SET_OWNER("plots.admin.command.setowner"),
167    PERMISSION_COMMENT("plots.comment"),
168    PERMISSION_INBOX("plots.inbox"),
169    PERMISSION_INBOX_READ_OWNER("plots.inbox.read.owner"),
170    PERMISSION_INBOX_READ_PUBLIC("plots.inbox.read.public"),
171    PERMISSION_INBOX_READ_REPORT("plots.inbox.read.report"),
172    PERMISSION_ADMIN_COMMAND_REMOVE("plots.admin.command.remove"),
173    PERMISSION_ADMIN_COMMAND_SAVE("plots.admin.command.save"),
174    PERMISSION_ADMIN_COMMAND_SCHEMATIC_PASTE("plots.admin.command.schematic.paste"),
175    PERMISSION_SCHEMATIC("plots.schematic.paste"),
176    PERMISSION_SCHEMATIC_PASTE("plots.schematic.paste"),
177    PERMISSION_SCHEMATIC_LIST("plots.schematic.list"),
178    PERMISSION_SCHEMATIC_SAVE("plots.schematic.save"),
179    PERMISSION_ADMIN_COMMAND_SCHEMATIC_SAVE("plots.admin.command.schematic.save"),
180    PERMISSION_SET_COMPONENT("plots.set.%s"),
181    PERMISSION_ADMIN_COMMAND("plots.admin.command.%s"),
182    PERMISSION_ADMIN_COMMAND_UNLINK("plots.admin.command.unlink"),
183    PERMISSION_VISIT_UNOWNED("plots.visit.unowned"),
184    PERMISSION_VISIT_OWNED("plots.visit.owned"),
185    PERMISSION_SHARED("plots.visit.shared"),
186    PERMISSION_VISIT_DENIED("plots.visit.denied"),
187    PERMISSION_VISIT_OTHER("plots.visit.other"),
188    PERMISSION_HOME("plots.home"),
189    PERMISSION_ALIAS_SET("plots.alias.set"),
190    PERMISSION_ADMIN_ALIAS_SET("plots.admin.alias.set"),
191    PERMISSION_ALIAS_REMOVE("plots.alias.remove"),
192    PERMISSION_ADMIN_ALIAS_REMOVE("plots.admin.alias.remove"),
193    PERMISSION_ADMIN_CHAT_BYPASS("plots.admin.chat.bypass"),
194    PERMISSION_BACKUP("plots.backup"),
195    PERMISSION_BACKUP_SAVE("plots.backup.save"),
196    PERMISSION_BACKUP_LIST("plots.backup.list"),
197    PERMISSION_BACKUP_LOAD("plots.backup.load"),
198    PERMISSION_ADMIN_BACKUP_OTHER("plots.admin.backup.other"),
199    PERMISSION_ADMIN_ALLOW_UNSAFE("plots.admin.unsafe"),
200    PERMISSION_ADMIN_DEBUG_OTHER("plots.admin.debug.other"),
201    PERMISSION_RATE("plots.rate"),
202    PERMISSION_ADMIN_FLIGHT("plots.admin.flight"),
203    PERMISSION_ADMIN_COMPONENTS_OTHER("plots.admin.component.other"),
204    PERMISSION_ADMIN_BYPASS_BORDER("plots.admin.border.bypass"),
205    PERMISSION_ADMIN_BYPASS_ECON("plots.admin.econ.bypass");
206    //</editor-fold>
207
208    private final String text;
209
210    Permission(final @NonNull String text) {
211        this.text = text;
212    }
213
214    @Override
215    public String toString() {
216        return this.text;
217    }
218
219    public String format(Object... replacements) {
220        return String.format(this.toString(), replacements);
221    }
222
223    @Override
224    public @NotNull Component asComponent() {
225        return Component.text(text);
226    }
227
228}