Sueta

XSpectate | Best Plugin on /spec For Moderators!

1.1.2

Full Customization | Asynchronous | Source Code | 1.16.5 - 1.21.1

·Plugin

This plugin is the perfect solution for moderators.
Its features include:
- Hiding coordinates in tracking mode.
- The glow of the suspect for the spectator.
- BossBar and ActionBar.
- Discord Webhook.
- Blocking interaction with chests in tracking mode.
- Blocking of certain commands in tracking mode.
- Limiting the distance of the observer's movement.
- Logging of moderator's location, entered commands and chat messages.

XSpec simplifies control and maintains order on the server,
making moderation more efficient and secure.

config.yml
# Available serializers:
# LEGACY_AMPERSAND - "&c&lExample &c&9Text".
# LEGACY_SECTION - "§c§lExample §c§9Text".
# MINIMESSAGE - "<bold><red>Example</red> <blue>Text</blue></bold>". (https://webui.adventure.kyori.net/)
# GSON - "[{"text":"Example","bold":true,"color":"red"},{"text":" ","bold":true},{"text":"Text","bold":true,"color":"blue"}]". (https://minecraft.tools/en/json_text.php/)
# GSON_COLOR_DOWNSAMPLING - Same as GSON, but uses downsampling.
serializer: LEGACY_AMPERSAND
main:
  # Lightweight and anonymous. Please keep enabled to support the author.
  bstats: true
  # Highly optimized and stress-tested update checker.
  # Please keep enabled to always stay up to date with the latest version.
  check-for-updates: true
  # After the player's nickname in the command you must enter the reason,
  # which will be stored in the logs
  need-reason: false
  reasons:
    - "cheats"
    - "report"
  # If true, you can enter any reason, otherwise
  # if false, you can only enter pre-prepared reasons from the config (TabComplete is present)
  any-reason: false
  # If true, it will require an exact match of reasons from the logged reasons, otherwise
  # if false, it will offer tab complete but will not complain that the reason is not from the logged reasons,
  # simply put, allow any reason but leave tab complete
  exact-reason: true
  off-spec-on-gamemode-change: true
  suspect-glow: true
  bossbar-enabled: true
  # Will message everyone who has xspec.notify them that someone has started spectating or finished
  notify: true
  actionbar: true # For spectator
  # When stopped, it teleports to the old location, not from the config
  return-to-old-location: false
  # When stopped, the old game mode is enabled, not from the config
  return-to-old-gamemode: false
  night-vision: true # For spectator
  stop-gamemode: "SURVIVAL"
  # World and coordinates where player teleports to after a stop spec.
  teleport-world-name: "world"
  teleport-x: 0.5
  teleport-y: 90.0
  teleport-z: 0.5
  # Leave it blank so it doesn't send anything
  webhook: ""
  bar-name: "&6Spectating behind player {0}"
  bar-color: WHITE
  bar-overlay: PROGRESS
  # Maximum distance in blocks at which a spectator can fly away.
  maximum-distance: 25.0
  # {0} - Hours
  # {1} - Minutes
  # {2} - Seconds
  # {3} - Hours in total
  # {4} - Minutes in total
  # {5} - Seconds in total
  duration-format: "{0} h, {1} min, {2} sec"
  # Recommend second precision for log naming.
  date-pattern: "dd.MM.yyyy - HH:mm:ss"
  # Available time zones:
  # UTC - Coordinated Universal Time.
  # Europe/Moscow - Moscow Time.
  # America/New_York - Eastern Time (US & Canada).
  # Asia/Tokyo - Japan Standard Time.
  # For more time zones, refer to: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
  time-zone: "Europe/Moscow"
  blocked-commands:
    - "/sethome"
    - "/setwarp"
  # Don't use \n, use {NL} for new line.
  # If the message is empty, it will not be sent.
  messages:
    usage: "Command help:{NL}/spec go (Nickname) [?Reason]{NL}/spec off"
    unknown-subcommand: "Unknown subcommand."
    specify: "Please specify the suspect's nickname."
    specify-reason: "Please specify the reason."
    suspect-not-found: "The player could not be found."
    player-bypassed: "You can't spectating this player."
    cannot-spectate-self: "You cannot spectate yourself."
    no-spectate-spectator: "You cannot spectate a player who is already spectating."
    invalid-reason: "You must write a prepared reason."
    started: "You are now spectating {0}. Date: {1}"
    started-webhook: "{\"content\":null,\"embeds\":[{\"title\":\"Spectating of `{0}` has begun.\",\"description\":\"Start date: {1}\\nReason: {2}\",\"color\":16711680}],\"attachments\":[]}"
    started-notify: "Spectator {0} started spectating for {1} for the reason {2} in {3}."
    already-started: "You are already spectating someone."
    world-not-found: "&4The world for teleportation could not be found. Please contact an administrator."
    stopped: "You have stopped spectating. Date: {0}, Suspect: {1}"
    stopped-webhook: "{\"content\":null,\"embeds\":[{\"title\":\"Spectating of `{0}` is complete.\",\"description\":\"End date: {1}\\nDuration: {2}\",\"color\":16745728}],\"attachments\":[]}"
    stopped-notify: "Spectator {0} stopped spectating for {1} at {2} the duration was {3}."
    not-spectating: "You are not currently spectating anyone."
    suspect-left: "The player you were spectating ({0}) has left the server. Date: {1}"
    too-far: "You cannot move too far away while spectating."
    actionbar: "&bSuspect's nickname {0}, suspect's ping: {1}."
    command-blocked: "You cannot use this command while spectating."
    cannot-change-gamemode: "You can't change the gamemode during the spectating."
    stopped-by-gamemode-change: "Spectating stopped by changing the game mode. Date: {0}, Suspect: {1}"

If you have any questions, ideas or have discovered bugs,
feel free to write to our Discord-server.

Similar projects

Plugin →