Nope Docs

Sections:

NOPE's configuration is thorough, complex, and extremely configurable.

There is an in-depth tutorial on the config available here.

Key Description Values
ConfigVersion This is set per update so when updated the plugin can inform you if the config needs to be reset Do not change
Global If false NOPE will not flag any players Boolean
Scoreboard If false no scoreboards will be enabled Boolean
Log Sets how NOPE will log logs String (NONE/file/hastebin)
UpdateChecker.Enabled If enabled NOPE will print in console when an update is available Boolean
UpdateChecker.InGame If enabled players with the permission nope.message.update will be notified when an update is available Boolean
BungeeNameOverride If not empty NOPE will replace %server% with the specified value String
BanwaveRate The amount of ticks that should be between banwaves Integer (-1 to disable)
DevMode Whether or not NOPE is in developer mode Boolean
DebugMode Whether or not NOPE is in debug mode Boolean
Webhooks Please see the Webhooks section ConfigSection
Actions Please see the Actions section ConfigSection
Commands The list of custom commands ConfigSection
Checks Here you can specify which checks are(n't) enabled ConfigSection

The next sections all support the following placeholders (including PAPI).

Placeholder Description
%player% Player's name
%uuid% Player's UUID (with -'s)
%nuuid% Player's UUID (without -'s)
%check% The check category
%debug% The check debug id
%vl% The VL the player flagged at
%world% The world name the player is in
%token% The ban token (ban(wave) action only)
%server% The name of the server

Webhooks:

Webhooks allow a server administrator to setup Discord (or potentially other websites/platforms) notifications based on in-game events.

The keys under each webhook is interpreted as a separate formatting message. Each format message is then able to be specified under the LOG action. This means that you can specify a different format for say if a player flags KillAura compared to Flight.

The only required data is the URL for the webhook. All other fields are optional or will be auto-filled with defaults.

The default example of two webhooks is below.

Webhooks:
  banExample:
    URL: 'https://discordapp.com/api/webhooks/'
    username: 'NOPE'
    avatar_url: 'https://i.imgur.com/U33fgPg.png'
    embeds:
      author:
        name: "%player% Ban"
        avatar_url: 'https://i.imgur.com/U33fgPg.png'
      title: '%player% was banned for %check%'
      color: 14483456
      fields:
        check:
          name: "Check"
          value: "%debug%"
        world:
          name: "World"
          value: "%world%"
        vl:
          name: "VL"
          value: "%vl%"
          inline: false
  flagExample:
    URL: 'https://discordapp.com/api/webhooks/'
    username: 'NOPE'
    avatar_url: 'https://i.imgur.com/U33fgPg.png'
    embeds:
      author:
        name: "%player%"
        icon_url: 'https://crafatar.com/avatars/%uuid%'
      title: '%player% flagged %check%'
      color: 751818
      fields:
        1:
          name: "Player"
          value: "%player%"
        2:
          name: "World"
          value: "%world%"
        3:
          name: "Server"
          value: "%server%"
          inline: true
        4:
          name: "VL"
          value: "%vl%"
        5:
          name: "Check"
          value: "%debug%"
        6:
          name: "UUID"
          value: "%uuid%"
     #thumbnail:
     #  url: ''
     #image:
     #  url: ''
      footer:
        text: "steviebeenz.github.io"
       #icon_url: ''

Permissions

Permission Description Example
nope.bypass.[type] Bypass a specific type of hack nope.bypass.movement
nope.bypass.[category] Bypass a specific type of category nope.bypass.flight
nope.bypass.[type].[debug] Bypass a specific check nope.bypass.movement.flight#1
nope.message.normal Be notified of INGAME log messages
nope.message.dev Be sent dev messages if dev mode is enabled
nope.message.update Be notified when an update is available for NOPE
nope.message.reports Be notified when a player reports someone
nope.scoreboard View the regular scoreboard if the scoreboard is enabled
nope.scoreboard.dev View the developer scoreboard if dev mode is enabled

Command Permissions

Command
/nope...
Description Permission Example
banwave [Player] Adds a player to the banwave nope.command.banwave /nope banwave MSWS
enablechecks Enables all checks and sets the values in the config nope.command.enablechecks
online View online information for NOPE nope.command.online
reload Reloads NOPE's files nope.command.reload /nope reload
removebanwave [Player] Removes a player from the banwave nope.command.removebanwave /nope removebanwave MSWS
reset Resets NOPE's files nope.command.reset
stats View statistics and toggle checks nope.command.stats
testanimation [Animation] Test an animation nope.command.testanimation /nope testanimation NOPE
testanimation [Animation] A player can be specified nope.command.testanimation.others /nope testanimation NOPE MSWS
testlag [Delay] Intentionally lag the server for testing purposes nope.command.testlag /nope testlag 5
time View time until the next banwave nope.command.time
vl View player VLs nope.command.vl /nope vl MSWS
warn [Player] h:[Hack] v:[VL] Manually flag a player nope.command.warn /nope warn MSWS h:Test v:50
trust View your own trust factor nope.command.trust
trust View other player's trust factor nope.command.trust.others /trust MSWS
report [Player] [Reason] Report a player for cheating nope.command.report /report MSWS Flying
toggle [Setting] Toggle specific settings for the player/plugin nope.command.toggle
toggle scoreboard Toggle the player's own scoreboard nope.command.toggle.scoreboard
toggle gscoreboard Toggle whether or not the scoreboard is enabled at all nope.command.toggle.gscoreboard
toggle notifications Toggle if the player receives INGAME log notifications nope.command.toggle.notifications
toggle reports Toggle if the player receives report notifications nope.command.toggle.reports
toggle dev Toggle the plugin's developer mode nope.command.toggle.dev
toggle log Toggle how the plugin logs logs nope.command.toggle.log /nope toggle log NONE
toggle updatechecker Toggle the plugin's update checker nope.command.toggle.updatechecker
toggle debug Toggle the plugin's debug mode nope.command.toggle.debug
toggle global Toggle the plugin's global mode nope.command.toggle.global

Actions:

Actions dictate what happens when a player flags a certain hack. There are two major types of “actions”, the type that executes an action and the type that checks if a condition is met. For all conditional actions except for delay, if the condition is not met then no remaining actions will be run/checked within the same action group.

An ActionGroup is defined as one of the lines specified under the check type. For example, a valid actiongroup would be basiclog vl>500 ikick vl>1000 cban. As a result of the config, multiple action groups can be defined for one category. Each actiongruop will be executed independently of each other linearly.

Conditional Actions:

Conditional Actions support basic comparison expressions. (<, <=, =, !=, >=, >) Conditional actions should use the key first, followed by a colon if specifying a value or a comparison expression if numerical, and then the value to compare.

Custom Commands

Custom commands are specified under the Commands section of the config. Custom commands are created and registered in order, you are able to use custom commands within custom commands, however keep in mind you cannot use a custom command that hasn’t already been specified. A custom command is required for ban animations to work. Despite the name, custom commands specify an ActionGroup.

The default configuration regarding Actions/Commands can be found below.

#               -------------------------------
#                  Action Configuration
#
#    Please note that bans are not necesssarily instantaneous.
#           Please add a delay to prevent duplicate bans.
#
# animation:[TYPE]:Action - TYPEs are NOPE or GWEN, the Action should be a custom command
# kick:Reason         Kick the player for the specified reason
# ban:Time:Reason     Ban the player for the specified time/reason
# banwave:Time:Reason Add the player to the banwave
# cancel              Teleport the player back
# pmsg:[Message]      Send a message to the player
# msg:[all/Permission]:[Message] Can also specify all
# cmd:[Command]       Run a command as the player
# ccmd:[Command]      Run a command from console
# log:type:message    Logs the message either to FILE, INGAME, or CONSOLE (perm: nope.message.normal)
# log:WEBHOOK:message Logs the message to the specified webhook
# setvl:VL            Sets the player's VL for the category hack
# addvl:VL            Adds/Modifies the player's VL for the category hack
# NOTE: PLEASE use a delay for discord webhooks otherwise you might get autoblocked
#
# Conditions: (<, <=, =, !=, >=, >)
# If a condition is not fullfilled, none of the following actions will be run
# The ones with > you can replace with the appropriate operator
#
# vl>[Amo]           If the VL matches the threshold
# tps>[Amo]          If the server's TPS matches the threshold
# ping>[Amo]         If the player's ping matches (NOT RECOMMENDED) players can spoof their ping
# delay:[Delay]      Wait X milliseconds before executing the NEXT action (eg: kick a player if the last call of this was > 60 seconds ago)
# notdev             Will not run the next actions if the in dev mode
# isdev              Will run the next actions if in dev mode
# rnd:.40            Will run the actions 40% of the time
# 
# Placeholders:

# %player%  - The name of the player that was banned
# %uuid%    - The UUID of the player (-'s included)
# %nuuid%   - The UUID of the player (-'s not included)
# %check%    - What hack the player was banned for
# %debug%   - The debug ID of the check
# %vl%      - The VL of the hack that the player was at when they were banned
# %world%   - What world the player was in when they were banned, this may be null if they were offline
# %token%   - The ban token (only for ban)
# %server%  - The server name, useful for webhooks
#
# PAPI is also supported
#               -------------------------------
Actions:
  FastBreak:
  - 'basiclog|cancel|vl>100|tpsdecrement|delay:40000|tpskick|vl>400|delay:20000|lagkick|flog|log:FILE:Kicked %player% for %check%|tps>15|vl>600|cban'
  FastClimb:
  - 'basiclog|vl>50|delay:500|cancel|vl>200|cancel|vl>400|ikick|vl>600|cban'
  Blink:
  - 'basiclog|vl>200|delay:2000|cancel|delay:15000|tpsdecrement|tps>15|vl>250|lagkick|vl>500|cancel|flog|cban'
  NoSwing:
  - 'basiclog|vl>500|ikick|vl>1000|cban'
  Speed:
  - 'basiclog|rndcancel|vl>100|cancel|vl>800|addbanwave|vl>1200|cban'
  ElytraFlight:
  - 'basiclog|vl>500|ikick|vl>800|addbanwave|vl>1000|cban'
  Timer:
  - 'basiclog|vl>300|rndcancel|delay:10000|tpsdecrement|vl>500|lagkick|vl>600|ikick|vl>800|cban'
  KillAura:
  - 'basiclog|vl>200|ikick|vl>500|delay:120000|kick:Irregular Gameplay|vl>600|cban'
  Default:
  - 'basiclog|vl>20|cancel|vl>100|flog|vl>200|lagkick|tps>15|vl>400|ikick|vl>800|addbanwave|vl>1200|cban'
  # You can specify multiple actiongroups for one category
 #- 'vl>50|delay:10000|ccmd:say %player% is suspected of using %check%'
 # This would only kick players and decrement their VL by 200
 #- 'basiclog|vl>100|cancel|vl>600|ikick|addvl:-200'

# Commands are loaded and created in order. Define a custom command first before using it in another custom command.
Commands:
 #log Logs to a file that the player failed a check, and logs in console every 5 seconds that they failed the check
  flog: 'log:FILE:%player% failed %debug% (%vl%)|delay:5000|log:CONSOLE:%player% failed %debug%'
 #the below actions log ingame an appropriate warning message to staff
  alog: 'vl>100|vl<300|delay:10000|log:INGAME:&4&l[&c&lNOPE&4&l] &e%player% &7failed a &a%check%&7 check. (VL: &e%vl%&7)'
  elog: 'vl>300|vl<500|delay:10000|log:INGAME:&4&l[&c&lNOPE&4&l] &e%player% &7failed a &e%check%&7 check. (VL: &e%vl%&7)'
  clog: 'vl>500|vl<700|delay:10000|log:INGAME:&4&l[&c&lNOPE&4&l] &e%player% &7failed a &c%check%&7 check. (VL: &e%vl%&7)'
  4log: 'vl>700|delay:500|flog|delay:10000|log:INGAME:&4&l[&c&lNOPE&4&l] &e%player% &7failed a &4%check%&7 check. (VL: &e%vl%&7)'
 #weblog Logs the action to the specified webhook (in this case flagExample) 
  weblog: "notdev|vl>400|delay:60000|log:flagExample:"
 #basiclog combines all above log commands into 1 for simple usage
  basiclog: 'alog|elog|clog|flog|4log|weblog'
 #logban Logs ingame that the player was banned both ingame and to a file
  logban: 'log:INGAME:&4&l[&c&lNOPE&4&l] &c%player% &7was banned for &b%check%&7.|log:FILE:Banned %player% for %debug% %vl%|delay:5000|log:banExample:'
 #ikick Kicks the player once every minute (to avoid constant kicking) in case they are stuck/otherwise false flagging 
  ikick: 'delay:60000|kick:Irregular Gameplay'
 #lagkick Kicks the player if their ping is too high
  lagkick: 'ping>150|kick:You seem to be very laggy, please try restarting your connection.'
 #tpskick Kicks the player if the server's TPS is too low
  tpskick: 'tps<16|kick:The server is extremely laggy, please try waiting a bit before relogging.'
  tpsdecrement: 'tps<16|addvl:-50'
 #rndcancel Has an 80% chance of teleporting the player back
  rndcancel: 'rnd:.80|cancel'
  canimate: "logban|ban:2628000000:&4NOPE Anti-Cheat&r\n&7Token: &e%token%"
 #cban Only bans the player if dev mode is disabled, it also logs the ban
 # We log the ban first so we can get the VL data first
  cban: "notdev|delay:5000|animation:NOPE:canimate"
  addbanwave: "notdev|banwave:2628000000:&4NOPE Anti-Cheat&r\n&7Token: &e%token%"