package tc.oc.pgm.map; import javax.annotation.Nullable; import javax.inject.Inject; import org.bukkit.entity.Player; import org.bukkit.permissions.PermissionAttachment; import org.bukkit.plugin.Plugin; import tc.oc.api.docs.PlayerId; import tc.oc.api.util.Permissions; import tc.oc.pgm.match.MatchPlayerFacet; /** * Grant the ocn.mapmaker permission to any authors of the current {@link PGMMap}. * * TODO: If we add an isActive mechanism to MatchPlayerFacet, this one should only * be active for authors. */ public class MapmakerPlayerFacet implements MatchPlayerFacet { private final Plugin plugin; private final MapInfo mapInfo; private final PlayerId playerId; private final Player player; private @Nullable PermissionAttachment permissionAttachment; @Inject MapmakerPlayerFacet(Plugin plugin, MapInfo mapInfo, PlayerId playerId, Player player) { this.plugin = plugin; this.mapInfo = mapInfo; this.playerId = playerId; this.player = player; } @Override public void enable() { if(mapInfo.isAuthor(playerId)) { permissionAttachment = player.addAttachment(plugin, Permissions.MAPMAKER, true); } } @Override public void disable() { if(permissionAttachment != null) { player.removeAttachment(permissionAttachment); } } }