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_PLACE_VEHICLE_ROAD("plots.admin.vehicle.place.road"),
063    PERMISSION_ADMIN_PLACE_VEHICLE_UNOWNED("plots.admin.vehicle.place.unowned"),
064    PERMISSION_ADMIN_PLACE_VEHICLE_OTHER("plots.admin.vehicle.place.other"),
065    PERMISSION_ADMIN_PVP("plots.admin.pvp"),
066    PERMISSION_ADMIN_BUILD_ROAD("plots.admin.build.road"),
067    PERMISSION_ADMIN_PROJECTILE_ROAD("plots.admin.projectile.road"),
068    PERMISSION_ADMIN_PROJECTILE_UNOWNED("plots.admin.projectile.unowned"),
069    PERMISSION_ADMIN_PROJECTILE_OTHER("plots.admin.projectile.other"),
070    PERMISSION_ADMIN_BUILD_UNOWNED("plots.admin.build.unowned"),
071    PERMISSION_ADMIN_BUILD_OTHER("plots.admin.build.other"),
072    PERMISSION_ADMIN_INTERACT_ROAD("plots.admin.interact.road"),
073    PERMISSION_ADMIN_INTERACT_UNOWNED("plots.admin.interact.unowned"),
074    PERMISSION_ADMIN_INTERACT_OTHER("plots.admin.interact.other"),
075    PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT("plots.admin.build.heightlimit"),
076    PERMISSION_ADMIN_COMMAND_PURGE_RATINGS("plots.admin.command.purge.ratings"),
077    PERMISSION_ADMIN_COMMAND_ADD("plots.admin.command.trust"),
078    PERMISSION_ADMIN_COMMAND_TRUST("plots.admin.command.trust"),
079    PERMISSION_TRUST("plots.trust"),
080    PERMISSION_DENY("plots.deny"),
081    PERMISSION_ADD("plots.add"),
082    PERMISSION_TRUST_EVERYONE("plots.trust.everyone"),
083    PERMISSION_AREA_CREATE("plots.area.create"),
084    PERMISSION_AREA_INFO("plots.area.info"),
085    PERMISSION_AREA_INFO_FORCE("plots.admin.info.force"),
086    PERMISSION_AREA_LIST("plots.area.list"),
087    PERMISSION_AREA_REGEN("plots.area.regen"),
088    PERMISSION_AREA_TP("plots.area.tp"),
089    PERMISSION_AREA("plots.area"),
090    PERMISSION_AUTO_MEGA("plots.auto.mega"),
091    PERMISSION_CLAIM_SCHEMATIC("plots.claim.%s"),
092    PERMISSION_ADMIN_COMMAND_SCHEMATIC("plots.admin.command.schematic"),
093    PERMISSION_ADMIN_COMMAND_CLEAR("plots.admin.command.clear"),
094    PERMISSION_CONTINUE("plots.continue"),
095    PERMISSION_CLUSTER("plots.cluster"),
096    PERMISSION_CLUSTER_LIST("plots.cluster.list"),
097    PERMISSION_CLUSTER_CREATE("plots.cluster.create"),
098    PERMISSION_CLUSTER_CREATE_OTHER("plots.cluster.create.other"),
099    PERMISSION_CLUSTER_SIZE("plots.cluster.size"),
100    PERMISSION_CLUSTER_DELETE("plots.cluster.delete"),
101    PERMISSION_CLUSTER_DELETE_OTHER("plots.cluster.delete.other"),
102    PERMISSION_CLUSTER_RESIZE("plots.cluster.resize"),
103    PERMISSION_CLUSTER_RESIZE_OTHER("plots.cluster.resize.other"),
104    PERMISSION_CLUSTER_RESIZE_SHRINK("plots.cluster.resize.shrink"),
105    PERMISSION_CLUSTER_RESIZE_EXPAND("plots.cluster.resize.expand"),
106    PERMISSION_CLUSTER_INVITE("plots.cluster.invite"),
107    PERMISSION_CLUSTER_INVITE_OTHER("plots.cluster.invite.other"),
108    PERMISSION_CLUSTER_KICK("plots.cluster.kick"),
109    PERMISSION_CLUSTER_KICK_OTHER("plots.cluster.kick.other"),
110    PERMISSION_CLUSTER_LEAVE("plots.cluster.leave"),
111    PERMISSION_CLUSTER_HELPERS("plots.cluster.helpers"),
112    PERMISSION_CLUSTER_TP("plots.cluster.tp"),
113    PERMISSION_CLUSTER_TP_OTHER("plots.cluster.tp.other"),
114    PERMISSION_CLUSTER_INFO("plots.cluster.info"),
115    PERMISSION_CLUSTER_SETHOME("plots.cluster.sethome"),
116    PERMISSION_CLUSTER_SETHOME_OTHER("plots.cluster.sethome.other"),
117    PERMISSION_ADMIN_COMMAND_CONTINUE("plots.admin.command.continue"),
118    PERMISSION_ADMIN_COMMAND_DELETE("plots.admin.command.delete"),
119    PERMISSION_ADMIN_COMMAND_DENY("plots.admin.command.deny"),
120    PERMISSION_DENY_EVERYONE("plots.deny.everyone"),
121    PERMISSION_ADMIN_COMMAND_DONE("plots.admin.command.done"),
122    PERMISSION_ADMIN_COMMAND_DOWNLOAD("plots.admin.command.download"),
123    PERMISSION_DOWNLOAD("plots.download"),
124    PERMISSION_DOWNLOAD_WORLD("plots.download.world"),
125    PERMISSION_SET_FLAG_OTHER("plots.set.flag.other"),
126    PERMISSION_SET_FLAG("plots.set.flag"),
127    PERMISSION_SET_FLAG_KEY("plots.set.flag.%s"),
128    PERMISSION_SET_FLAG_KEY_VALUE("plots.set.flag.%s.%s"),
129    PERMISSION_SET("plots.set"),
130    PERMISSION_SET_BIOME("plots.set.biome"),
131    PERMISSION_SET_ALIAS("plots.set.alias"),
132    PERMISSION_SET_HOME("plots.set.home"),
133    PERMISSION_SET_MAIN("plots.set.main"),
134    PERMISSION_SET_FLOOR("plots.set.floor"),
135    PERMISSION_SET_AIR("plots.set.air"),
136    PERMISSION_SET_ALL("plots.set.all"),
137    PERMISSION_SET_BORDER("plots.set.border"),
138    PERMISSION_SET_WALL("plots.set.wall"),
139    PERMISSION_SET_OUTLINE("plots.set.outline"),
140    PERMISSION_SET_MIDDLE("plots.set.middle"),
141    PERMISSION_TARGET("plots.target"),
142    PERMISSION_TEMPLATE("plots.template"),
143    PERMISSION_TEMPLATE_IMPORT("plots.template.import"),
144    PERMISSION_TEMPLATE_EXPORT("plots.template.import"),
145    PERMISSION_FLAG_REMOVE("plots.flag.remove"),
146    PERMISSION_FLAG_ADD("plots.flag.add"),
147    PERMISSION_FLAG_LIST("plots.flag.list"),
148    PERMISSION_ADMIN_COMMAND_KICK("plots.admin.command.kick"),
149    PERMISSION_GRANT_SINGLE("plots.grant"),
150    PERMISSION_GRANT("plots.grant.%s"),
151    PERMISSION_GRANT_ADD("plots.grant.add"),
152    PERMISSION_GRANT_CHECK("plots.grant.check"),
153    PERMISSION_LIST_FOR_SALE("plots.list.forsale"),
154    PERMISSION_LIST_MINE("plots.list.mine"),
155    PERMISSION_LIST_SHARED("plots.list.shared"),
156    PERMISSION_LIST_WORLD("plots.list.world"),
157    PERMISSION_LIST_WORLD_NAME("plots.list.world.%s"),
158    PERMISSION_LIST_TOP("plots.list.top"),
159    PERMISSION_LIST_ALL("plots.list.all"),
160    PERMISSION_LIST_UNOWNED("plots.list.unowned"),
161    PERMISSION_LIST_PLAYER("plots.list.player"),
162    PERMISSION_LIST_DONE("plots.list.done"),
163    PERMISSION_LIST_EXPIRED("plots.list.expired"),
164    PERMISSION_LIST_FUZZY("plots.list.fuzzy"),
165    PERMISSION_LIST_AREA("plots.list.area"),
166    PERMISSION_ADMIN_COMMAND_LOAD("plots.admin.command.load"),
167    PERMISSION_ADMIN_COMMAND_MERGE("plots.admin.command.merge"),
168    PERMISSION_ADMIN_COMMAND_MERGE_OTHER_OFFLINE("plots.admin.command.merge.other.offline"),
169    PERMISSION_ADMIN_COMMAND_SET_OWNER("plots.admin.command.setowner"),
170    PERMISSION_COMMENT("plots.comment"),
171    PERMISSION_INBOX("plots.inbox"),
172    PERMISSION_INBOX_READ_OWNER("plots.inbox.read.owner"),
173    PERMISSION_INBOX_READ_PUBLIC("plots.inbox.read.public"),
174    PERMISSION_INBOX_READ_REPORT("plots.inbox.read.report"),
175    PERMISSION_ADMIN_COMMAND_REMOVE("plots.admin.command.remove"),
176    PERMISSION_ADMIN_COMMAND_SAVE("plots.admin.command.save"),
177    PERMISSION_ADMIN_COMMAND_SCHEMATIC_PASTE("plots.admin.command.schematic.paste"),
178    PERMISSION_SCHEMATIC("plots.schematic.paste"),
179    PERMISSION_SCHEMATIC_PASTE("plots.schematic.paste"),
180    PERMISSION_SCHEMATIC_LIST("plots.schematic.list"),
181    PERMISSION_SCHEMATIC_SAVE("plots.schematic.save"),
182    PERMISSION_ADMIN_COMMAND_SCHEMATIC_SAVE("plots.admin.command.schematic.save"),
183    PERMISSION_SET_COMPONENT("plots.set.%s"),
184    PERMISSION_ADMIN_COMMAND("plots.admin.command.%s"),
185    PERMISSION_ADMIN_COMMAND_UNLINK("plots.admin.command.unlink"),
186    PERMISSION_VISIT_UNOWNED("plots.visit.unowned"),
187    PERMISSION_VISIT_OWNED("plots.visit.owned"),
188    PERMISSION_SHARED("plots.visit.shared"),
189    PERMISSION_VISIT_DENIED("plots.visit.denied"),
190    PERMISSION_VISIT_OTHER("plots.visit.other"),
191    PERMISSION_HOME("plots.home"),
192    PERMISSION_ALIAS_SET("plots.alias.set"),
193    PERMISSION_ADMIN_ALIAS_SET("plots.admin.alias.set"),
194    PERMISSION_ALIAS_REMOVE("plots.alias.remove"),
195    PERMISSION_ADMIN_ALIAS_REMOVE("plots.admin.alias.remove"),
196    PERMISSION_ADMIN_CHAT_BYPASS("plots.admin.chat.bypass"),
197    PERMISSION_BACKUP("plots.backup"),
198    PERMISSION_BACKUP_SAVE("plots.backup.save"),
199    PERMISSION_BACKUP_LIST("plots.backup.list"),
200    PERMISSION_BACKUP_LOAD("plots.backup.load"),
201    PERMISSION_ADMIN_BACKUP_OTHER("plots.admin.backup.other"),
202    PERMISSION_ADMIN_ALLOW_UNSAFE("plots.admin.unsafe"),
203    PERMISSION_ADMIN_DEBUG_OTHER("plots.admin.debug.other"),
204    PERMISSION_RATE("plots.rate"),
205    PERMISSION_ADMIN_FLIGHT("plots.admin.flight"),
206    PERMISSION_ADMIN_COMPONENTS_OTHER("plots.admin.component.other"),
207    PERMISSION_ADMIN_BYPASS_BORDER("plots.admin.border.bypass"),
208    PERMISSION_ADMIN_BYPASS_ECON("plots.admin.econ.bypass");
209    //</editor-fold>
210
211    private final String text;
212
213    Permission(final @NonNull String text) {
214        this.text = text;
215    }
216
217    @Override
218    public String toString() {
219        return this.text;
220    }
221
222    public String format(Object... replacements) {
223        return String.format(this.toString(), replacements);
224    }
225
226    @Override
227    public @NotNull Component asComponent() {
228        return Component.text(text);
229    }
230
231}